aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2016-10-22 16:43:51 -0700
committerAdam Soltys <[email protected]>2016-12-26 14:22:39 -0800
commita3cc882cee6afcfa4b278e653b3927b0cf79df9a (patch)
treee910e4e6c72bbbbcd1ea32e4e853ee318277e4c9
parentee15cbc89fa8f3202d20ffbb787c8f8927ac310a (diff)
downloadcoinos-server-a3cc882cee6afcfa4b278e653b3927b0cf79df9a.tar.gz
coinos-server-a3cc882cee6afcfa4b278e653b3927b0cf79df9a.zip
wip
-rw-r--r--app.js24
-rw-r--r--bcoin.js44
-rw-r--r--package.json2
-rw-r--r--public/js/wallet.coffee1
-rw-r--r--public/js/wallet.js1
-rw-r--r--src/app.coffee26
-rw-r--r--src/bcoin.coffee38
-rw-r--r--util/set_addresses.coffee23
-rw-r--r--views/users/wallet.html4
9 files changed, 117 insertions, 46 deletions
diff --git a/app.js b/app.js
index acbc9cb4..85654598 100644
--- a/app.js
+++ b/app.js
@@ -1,5 +1,5 @@
(function() {
- var RedisStore, app, authorize, bcoin, bodyParser, cache, config, cookieParser, express, fetchRates, fs, passport, path, proxy, proxyContext, proxyMiddleware, proxyOptions, request, session, sessionStore, sessions, startBcoin, transactions, users,
+ var RedisStore, app, authorize, bodyParser, cache, config, cookieParser, express, fetchRates, fs, passport, path, proxy, proxyContext, proxyMiddleware, proxyOptions, request, session, sessionStore, sessions, startBcoin, transactions, users,
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
request = require('request');
@@ -18,8 +18,6 @@
fs = require('fs');
- bcoin = require('bcoin').set('testnet');
-
proxyMiddleware = require('http-proxy-middleware');
sessions = require("./routes/sessions")(passport);
@@ -126,25 +124,7 @@
})();
(startBcoin = function() {
- var chain, pool;
- chain = new bcoin.chain({
- db: 'leveldb',
- location: process.env.HOME + '/chain.db',
- spv: true
- });
- pool = new bcoin.pool({
- chain: chain,
- spv: true
- });
- return pool.open(function(err) {
- pool.watchAddress('mhwWUZAmP4ycvwj4DdfGRy2JNRwDXeuwtj');
- pool.connect();
- pool.startSync();
- pool.on('error', function(err) {});
- return pool.on('tx', function(tx) {
- return console.log(tx);
- });
- });
+ return require('./bcoin').init();
})();
app.get('/', cache, sessions["new"]);
diff --git a/bcoin.js b/bcoin.js
new file mode 100644
index 00000000..ece78ec3
--- /dev/null
+++ b/bcoin.js
@@ -0,0 +1,44 @@
+(function() {
+ var bcoin, db;
+
+ bcoin = require('bcoin');
+
+ db = require('./redis');
+
+ module.exports = {
+ init: function() {
+ var addresses, chain, pool;
+ addresses = {};
+ chain = new bcoin.chain({
+ db: 'leveldb',
+ location: __dirname + 'mainchain/mainchain.db',
+ spv: true
+ });
+ pool = new bcoin.pool({
+ chain: chain,
+ spv: true
+ });
+ return pool.open(function(err) {
+ db.keys("user:*", function(err, users) {
+ return users.map(function(key) {
+ return db.hgetall(key, function(err, user) {
+ addresses[user.address] = user.username;
+ pool.watchAddress(user.address);
+ return console.log(user.address);
+ });
+ });
+ });
+ pool.connect();
+ pool.startSync();
+ pool.on('error', function(err) {
+ debugger;
+ return console.log(err);
+ });
+ return pool.on('tx', function(tx) {
+ return console.log(tx);
+ });
+ });
+ }
+ };
+
+}).call(this);
diff --git a/package.json b/package.json
index 9f907a10..160a298b 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"bcoin": "git+https://github.com/bcoin-org/bcoin.git#0ca843e3cabd4920546a9947f15954e2b7ede195",
"bcryptjs": "^2.3.0",
"bip39": "^2.2.0",
+ "bitcoinjs-lib": "^2.3.0",
"bluebird": "^3.4.6",
"body-parser": "^1.5.0",
"browser-sync": "^2.11.0",
@@ -38,7 +39,6 @@
"grunt": "^1.0.1",
"grunt-browser-sync": "^2.2.0",
"grunt-browserify": "^5.0.0",
- "grunt-coffeeify": "^0.1.3",
"grunt-contrib-coffee": "^1.0.0",
"grunt-contrib-less": "^1.1.0",
"grunt-contrib-watch": "^1.0.0",
diff --git a/public/js/wallet.coffee b/public/js/wallet.coffee
index 6fa0bac1..a5ba6efb 100644
--- a/public/js/wallet.coffee
+++ b/public/js/wallet.coffee
@@ -237,6 +237,7 @@ getUser = ->
$('#pubkey').val(user.pubkey)
$('#privkey').val(user.privkey)
$('#address').val(user.address)
+ $('.address').html(user.address)
$('#unit').html(user.unit)
$('#currency_toggle').html(user.unit)
$('#amount').attr('step', 0.00000001 * multiplier())
diff --git a/public/js/wallet.js b/public/js/wallet.js
index cd513202..dd10b22f 100644
--- a/public/js/wallet.js
+++ b/public/js/wallet.js
@@ -278,6 +278,7 @@
$('#pubkey').val(user.pubkey);
$('#privkey').val(user.privkey);
$('#address').val(user.address);
+ $('.address').html(user.address);
$('#unit').html(user.unit);
$('#currency_toggle').html(user.unit);
$('#amount').attr('step', 0.00000001 * multiplier());
diff --git a/src/app.coffee b/src/app.coffee
index 1c11fa05..d51eaa99 100644
--- a/src/app.coffee
+++ b/src/app.coffee
@@ -6,9 +6,7 @@ path = require('path')
passport = require('./passport')
config = require('./config')
fs = require('fs')
-bcoin = require('bcoin').set('testnet')
proxyMiddleware = require('http-proxy-middleware')
-
sessions = require("./routes/sessions")(passport)
transactions = require("./routes/transactions")
users = require("./routes/users")(sessions)
@@ -17,6 +15,7 @@ session = require('express-session')
RedisStore = require('connect-redis')(session)
sessionStore = new RedisStore(require('./redis').host, ttl: 172800)
+
proxyContext = '/blockcypher'
proxyOptions =
target: 'https://api.blockcypher.com'
@@ -76,27 +75,8 @@ do fetchRates = ->
)
setTimeout(fetchRates, 120000)
-do startBcoin = ->
- chain = new bcoin.chain(
- db: 'leveldb'
- location: process.env.HOME + '/chain.db'
- spv: true
- )
-
- pool = new bcoin.pool(
- chain: chain
- spv: true
- )
-
- pool.open((err) ->
- pool.watchAddress('mhwWUZAmP4ycvwj4DdfGRy2JNRwDXeuwtj')
-
- pool.connect()
- pool.startSync()
-
- pool.on('error', (err) -> return)
- pool.on('tx', (tx) -> console.log(tx))
- )
+do startBcoin = ->
+ require('./bcoin').init()
app.get('/', cache, sessions.new)
diff --git a/src/bcoin.coffee b/src/bcoin.coffee
new file mode 100644
index 00000000..31bd7ca1
--- /dev/null
+++ b/src/bcoin.coffee
@@ -0,0 +1,38 @@
+bcoin = require('bcoin')
+db = require('./redis')
+
+module.exports =
+ init: ->
+ addresses = {}
+
+ chain = new bcoin.chain(
+ db: 'leveldb'
+ location: __dirname + 'mainchain/mainchain.db'
+ spv: true
+ )
+
+ pool = new bcoin.pool(
+ chain: chain
+ spv: true
+ )
+
+ pool.open((err) ->
+ db.keys("user:*", (err, users) ->
+ users.map((key) ->
+ db.hgetall(key, (err, user) ->
+ addresses[user.address] = user.username
+ pool.watchAddress(user.address)
+ console.log(user.address)
+ )
+ )
+ )
+
+ pool.connect()
+ pool.startSync()
+
+ pool.on('error', (err) ->
+ debugger
+ console.log(err)
+ )
+ pool.on('tx', (tx) -> console.log(tx))
+ )
diff --git a/util/set_addresses.coffee b/util/set_addresses.coffee
new file mode 100644
index 00000000..d87cf72d
--- /dev/null
+++ b/util/set_addresses.coffee
@@ -0,0 +1,23 @@
+db = require('../redis')
+bitcoin = require('bitcoinjs-lib')
+
+db.keys('user:*', (err, keys) ->
+ for key in keys
+ do (key) ->
+ db.hgetall(key, (err, user) ->
+ address = ''
+ try
+ bitcoin.address.fromBase58Check(user.pubkey)
+ address = user.pubkey
+ catch
+ try
+ master = bitcoin.HDNode.fromBase58(user.pubkey)
+ child = master.derive(0).derive(0)
+ address = child.getAddress().toString()
+ catch
+ db.del(key)
+
+ if address
+ db.hmset(key, address: address)
+ )
+)
diff --git a/views/users/wallet.html b/views/users/wallet.html
index a7d850e1..22c6ffbe 100644
--- a/views/users/wallet.html
+++ b/views/users/wallet.html
@@ -9,6 +9,10 @@
<h1>Wallet</h1>
+<div class="well">
+ Your address is <span class="address"></span>
+</div>
+
<div class="form-group has-feedback" style="display: none">
<div class="input-group" style="width: 100%">
<label for="password">Password:</label>