insight-ui-zcash/lib/TransactionRpc.js

63 lines
1.3 KiB
JavaScript
Raw Normal View History

2014-01-29 10:10:36 -08:00
'use strict';
require('classtool');
2014-02-05 10:08:39 -08:00
function spec(b) {
2014-01-29 10:10:36 -08:00
var RpcClient = require('bitcore/RpcClient').class(),
BitcoreTransaction = require('bitcore/Transaction').class(),
util = require('bitcore/util/util'),
config = require('../config/config');
2014-02-05 10:08:39 -08:00
var rpc = b.rpc || new RpcClient(config.bitcoind);
2014-01-29 10:10:36 -08:00
function TransactionRpc() {
}
TransactionRpc._parseRpcResult = function(info) {
var b = new Buffer(info.hex,'hex');
var tx = new BitcoreTransaction();
tx.parse(b);
// Inputs
if (tx.isCoinBase()) {
info.isCoinBase = true;
}
var n =0;
info.vin.forEach(function(i) {
i.n = n++;
});
// Outputs
2014-02-10 10:49:33 -08:00
var valueOutSat = 0;
2014-01-29 10:10:36 -08:00
info.vout.forEach( function(o) {
2014-02-10 10:49:33 -08:00
valueOutSat += o.value * util.COIN;
2014-01-29 10:10:36 -08:00
});
2014-02-10 10:49:33 -08:00
info.valueOut = parseInt(valueOutSat) / util.COIN;
2014-01-29 10:10:36 -08:00
info.size = b.length;
return info;
};
TransactionRpc.getRpcInfo = function(txid, cb) {
var Self = this;
rpc.getRawTransaction(txid, 1, function(err, txInfo) {
// Not found?
if (err && err.code === -5) return cb();
if (err) return cb(err);
var info = Self._parseRpcResult(txInfo.result);
return cb(null,info);
});
};
return TransactionRpc;
}
module.defineClass(spec);