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
+
+
+
Transaction Output Set Information
-
+
+
+
+
+
+
- Last Block
-
+
+
Bitcoin node information
@@ -118,11 +130,7 @@
Connections to other nodes |
{{info.connections}} |
-
- Proxy setting |
- {{info.proxy}} |
-
-
+
Mining Difficulty |
{{info.difficulty}} |
@@ -131,16 +139,8 @@
{{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 |
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);