show spend status on outputs

This commit is contained in:
Matias Alejo Garcia 2014-02-11 14:50:19 -03:00
parent daa8327a5e
commit 5a8a06e0dd
4 changed files with 43 additions and 6 deletions

View File

@ -134,6 +134,27 @@ function spec(b) {
});
};
TransactionDb.prototype._fillSpend = function(info, cb) {
var self = this;
if (!info) return cb();
var k = SPEND_PREFIX + info.txid;
db.createReadStream({start: k, end: k + '~'})
.on('data', function (data) {
var k = data.key.split('-');
self._addSpendInfo(info.vout[k[3]], k[4], k[5]);
})
.on('error', function (err) {
return cb(err);
})
.on('end', function (err) {
return cb(err);
});
};
TransactionDb.prototype._fillOutpoints = function(info, cb) {
var self = this;
@ -205,7 +226,9 @@ function spec(b) {
if (err) return next(err);
self._fillOutpoints(info, function() {
return next(null, info);
self._fillSpend(info, function() {
return next(null, info);
});
});
});
};
@ -226,8 +249,6 @@ function spec(b) {
var k = OUTS_PREFIX + txid + '-' + n;
db.get(k, function (err,val) {
console.log('[TransactionDb.js.230]'); //TODO
if (!val || (err && err.notFound) ) {
return cb(null, { unconfirmedInput: 1} );
}

View File

@ -52,6 +52,7 @@ function($scope, $rootScope, $routeParams, $location, Global, Transaction, Trans
tmp[addr].addr = addr;
tmp[addr].items = [];
}
tmp[addr].isSpend = items[i].spendTxId;
tmp[addr].doubleSpendTxID = tmp[addr].doubleSpendTxID || items[i].doubleSpendTxID;
tmp[addr].doubleSpendIndex = tmp[addr].doubleSpendIndex || items[i].doubleSpendIndex;

View File

@ -64,7 +64,7 @@ that need more advanced blockchain queries than provided by bitcoind RPC.
Check out the <a href="http://github.com/bitpay/insight" target="_blank">source code</a>.
<p> Power by
<p> Powered by
<p class="text-center">
<a href="http://bitcore.io/"><img src="http://bitcore.io/images/logo.svg" width="150px"></a>
<p class="text-center">

View File

@ -73,7 +73,15 @@
<div class="row">
<div data-ng-repeat="vout in tx.voutSimple" data-ng-show="!itemsExpanded">
<div class="col-md-12 transaction-vin-vout">
<div class="text-muted pull-right btc-value" data-ng-class="{'text-success': $root.currentAddr == vout.addr}"><small>{{$root.currency.getConvertion(vout.value)}}</small></div>
<div class="text-muted pull-right btc-value" data-ng-class="{'text-success': $root.currentAddr == vout.addr}">
<small>
{{$root.currency.getConvertion(vout.value)}}
<span class="text-danger" data-ng-show="vout.isSpend" tooltip="Output is spend" tooltip-placement="left">(S)</span>
<span class="text-success" data-ng-show="!vout.isSpend" tooltip="Output is unspend" tooltip-placement="left">(U)</span>
</small>
</div>
<div class="ellipsis">
<span data-ng-show="vout.notAddr">{{vout.addr}}</span>
<span class="text-muted" title="Current Bitcoin Address" data-ng-show="address == $root.currentAddr" data-ng-repeat="address in vout.addr.split(',')">{{vout.addr}}</span>
@ -85,7 +93,14 @@
</div>
<div data-ng-repeat="vout in tx.vout" data-ng-show="itemsExpanded">
<div class="col-md-12 transaction-vin-vout">
<div class="text-muted pull-right btc-value"><small>{{$root.currency.getConvertion(vout.value)}}</small></div>
<div class="text-muted pull-right btc-value"><small>{{$root.currency.getConvertion(vout.value)}}
<span class="text-success" data-ng-show="!vout.spendTxId" tooltip="Output is unspend" tooltip-placement="left">(U)</span>
<a class="glyphicon glyphicon-chevron-right" data-ng-show="vout.spendTxId" href="/#!/tx/{{vout.spendTxId}}" title="Spent at: {{vout.spendTxId}},{{vout.spendIndex}}"></a>&nbsp;&nbsp;
</small>
</div>
<div class="ellipsis">
<a href="/address/{{address}}" data-ng-repeat="address in vout.scriptPubKey.addresses">{{address}}</a>
</div>