From 65c711b27894182259ed760d953037d3a31c67b4 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Wed, 12 Feb 2014 13:11:27 -0300 Subject: [PATCH] fixes #266 and #264 --- Gruntfile.js | 4 +-- lib/HistoricSync.js | 40 +------------------------- lib/PeerSync.js | 16 +++++++++++ lib/Sync.js | 44 ++++++++++++++++++++++++++++ lib/TransactionDb.js | 8 +----- public/src/css/common.css | 21 ++++++++++++++ public/views/status.html | 60 +++++++++++++++++++-------------------- util/sync.js | 2 -- 8 files changed, 115 insertions(+), 80 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index d0d2afa8..7b04ccef 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -35,8 +35,8 @@ module.exports = function(grunt) { livereload: true, }, }, - js2: { - files: ['public/src/**/*.js'], + assets: { + files: ['public/src/**/*.js', 'public/**/*.css'], tasks: ['compile'], options: { livereload: true, diff --git a/lib/HistoricSync.js b/lib/HistoricSync.js index 4b8dcf3f..87c671ff 100644 --- a/lib/HistoricSync.js +++ b/lib/HistoricSync.js @@ -7,8 +7,6 @@ require('classtool'); function spec() { var util = require('util'); var RpcClient = require('bitcore/RpcClient').class(); - var bitutil = require('bitcore/util/util'); - var Address = require('bitcore/Address').class(); var Script = require('bitcore/Script').class(); var networks = require('bitcore/networks'); var async = require('async'); @@ -219,42 +217,6 @@ function spec() { }; - // TODO. replace with - // Script.prototype.getAddrStrs if that one get merged in bitcore - HistoricSync.prototype.getAddrStr = function(s) { - var self = this; - - var addrStrs = []; - var type = s.classify(); - var addr; - - switch(type) { - case Script.TX_PUBKEY: - var chunk = s.captureOne(); - addr = new Address(self.network.addressPubkey, bitutil.sha256ripe160(chunk)); - addrStrs = [ addr.toString() ]; - break; - case Script.TX_PUBKEYHASH: - addr = new Address(self.network.addressPubkey, s.captureOne()); - addrStrs = [ addr.toString() ]; - break; - case Script.TX_SCRIPTHASH: - addr = new Address(self.network.addressScript, s.captureOne()); - addrStrs = [ addr.toString() ]; - break; - case Script.TX_MULTISIG: - var chunks = s.capture(); - chunks.forEach(function(chunk) { - var a = new Address(self.network.addressPubkey, bitutil.sha256ripe160(chunk)); - addrStrs.push(a.toString()); - }); - break; - case Script.TX_UNKNOWN: - break; - } - - return addrStrs; - }; HistoricSync.prototype.getBlockFromFile = function(cb) { var self = this; @@ -285,7 +247,7 @@ function spec() { var s = new Script(o.s); - var addrs = self.getAddrStr(s); + var addrs = self.sync.getAddrStr(s); // support only for p2pubkey p2pubkeyhash and p2sh if (addrs.length === 1) { diff --git a/lib/PeerSync.js b/lib/PeerSync.js index c5651763..090b4de3 100644 --- a/lib/PeerSync.js +++ b/lib/PeerSync.js @@ -6,6 +6,7 @@ function spec() { var CoinConst = require('bitcore/const'); var coinUtil = require('bitcore/util/util'); var Sync = require('./Sync').class(); + var Script = require('bitcore/Script').class(); var Peer = require('bitcore/Peer').class(); var config = require('../config/config'); var networks = require('bitcore/networks'); @@ -51,8 +52,23 @@ function spec() { }; PeerSync.prototype.handleTx = function(info) { + var self =this; var tx = info.message.tx.getStandardizedObject(); console.log('[p2p_sync] Handle tx: ' + tx.hash); + tx.time = tx.time || Math.round(new Date().getTime() / 1000); + + var to=0; + info.message.tx.outs.forEach( function(o) { + var s = new Script(o.s); + var addrs = self.sync.getAddrStr(s); + + // support only for p2pubkey p2pubkeyhash and p2sh + if (addrs.length === 1) { + tx.out[to].addrStr = addrs[0]; + tx.out[to].n = to; + } + to++; + }); this.sync.storeTxs([tx], function(err) { if (err) { diff --git a/lib/Sync.js b/lib/Sync.js index d69bc120..d343fd0d 100644 --- a/lib/Sync.js +++ b/lib/Sync.js @@ -6,7 +6,12 @@ require('classtool'); function spec() { var sockets = require('../app/controllers/socket.js'); var BlockDb = require('./BlockDb').class(); + var bitutil = require('bitcore/util/util'); + var Address = require('bitcore/Address').class(); var TransactionDb = require('./TransactionDb').class(); + var config = require('../config/config'); + var networks = require('bitcore/networks'); + var Script = require('bitcore/Script').class(); var async = require('async'); @@ -18,6 +23,7 @@ function spec() { self.opts = opts; this.bDb = new BlockDb(opts); this.txDb = new TransactionDb(opts); + this.network = config.network === 'testnet' ? networks.testnet: networks.livenet; return cb(); }; @@ -276,6 +282,44 @@ function spec() { return cb(err); }); }; + + + // TODO. replace with + // Script.prototype.getAddrStrs if that one get merged in bitcore + Sync.prototype.getAddrStr = function(s) { + var self = this; + + var addrStrs = []; + var type = s.classify(); + var addr; + + switch(type) { + case Script.TX_PUBKEY: + var chunk = s.captureOne(); + addr = new Address(self.network.addressPubkey, bitutil.sha256ripe160(chunk)); + addrStrs = [ addr.toString() ]; + break; + case Script.TX_PUBKEYHASH: + addr = new Address(self.network.addressPubkey, s.captureOne()); + addrStrs = [ addr.toString() ]; + break; + case Script.TX_SCRIPTHASH: + addr = new Address(self.network.addressScript, s.captureOne()); + addrStrs = [ addr.toString() ]; + break; + case Script.TX_MULTISIG: + var chunks = s.capture(); + chunks.forEach(function(chunk) { + var a = new Address(self.network.addressPubkey, bitutil.sha256ripe160(chunk)); + addrStrs.push(a.toString()); + }); + break; + case Script.TX_UNKNOWN: + break; + } + + return addrStrs; + }; return Sync; } module.defineClass(spec); diff --git a/lib/TransactionDb.js b/lib/TransactionDb.js index 05b3e46f..a06ae455 100644 --- a/lib/TransactionDb.js +++ b/lib/TransactionDb.js @@ -442,13 +442,7 @@ function spec(b) { .write(next_out); }, function (err) { - if (err) { - if (!err.message.match(/E11000/)) { - console.log('ERR at TX %s: %s', tx.txid, err); - return cb(err); - } - } - return p_c(); + return p_c(err); }); }, // Parse Outputs diff --git a/public/src/css/common.css b/public/src/css/common.css index 4e8ea714..c8e24c1f 100644 --- a/public/src/css/common.css +++ b/public/src/css/common.css @@ -557,3 +557,24 @@ h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { width: 20%; } +@keyframes rotateThis { + from { transform: scale( 1 ) rotate( 0deg ); } + to { transform: scale( 1 ) rotate( 360deg ); } +} + +@-webkit-keyframes rotateThis { + from { -webkit-transform: scale( 1 ) rotate( 0deg ); } + to { -webkit-transform: scale( 1 ) rotate( 360deg ); } +} + +.icon-rotate { + animation-name: rotateThis; + animation-duration: 2s; + animation-iteration-count: infinite; + animation-timing-function: linear; + -webkit-animation-name: rotateThis; + -webkit-animation-duration: 2s; + -webkit-animation-iteration-count: infinite; + -webkit-animation-timing-function: linear; +} + diff --git a/public/views/status.html b/public/views/status.html index 7f7f4e23..a8403623 100644 --- a/public/views/status.html +++ b/public/views/status.html @@ -42,8 +42,31 @@ +

Last Block

+ + + + + + + + + + + + +
Last Block Hash (Bitcoind){{lastblockhash}}
Current Blockchain Tip(Insight){{syncTipHash}}
+ +

Transaction Output Set Information

- + +
+ + +
@@ -76,23 +99,12 @@
+ -

Last Block

- - - - - - - - - - - - -
Last Block Hash (Bitcoind){{lastblockhash}}
Current Blockchain Tip(Insight){{syncTipHash}}
+ +

Bitcoin node information

@@ -118,11 +130,7 @@ - - - - - + @@ -131,16 +139,8 @@ - - - - - - - - - - + + diff --git a/util/sync.js b/util/sync.js index 99ddb85c..02da6609 100755 --- a/util/sync.js +++ b/util/sync.js @@ -35,8 +35,6 @@ async.series([ function(cb) { if (typeof program.smart === 'undefined' || parseInt(program.smart) ) { - -console.log('[sync.js.38]'); //TODO historicSync.smartImport({ destroy: program.destroy, },cb);
Connections to other nodes {{info.connections}}
Proxy setting{{info.proxy}}
Mining Difficulty {{info.difficulty}}
{{info.testnet}}
Keypool Oldest Date{{info.keypoololdest*1000 | date:'medium' }}
Keypool Size{{info.keypoolsize}}
Default Transaction Fee (BTC){{info.paytxfee}}Proxy setting{{info.proxy}}
Info Errors