rpc: add wallet txs.
This commit is contained in:
parent
ce7f300260
commit
0a217e7be2
@ -2378,6 +2378,47 @@ RPC.prototype.getreceivedbyaddress = function getreceivedbyaddress(args, callbac
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
RPC.prototype._toWalletTX = function _toWalletTX(tx, callback) {
|
||||||
|
var self = this;
|
||||||
|
var receive, member, json;
|
||||||
|
|
||||||
|
this.walletdb.tx.getMap(tx, function(err, map) {
|
||||||
|
if (err)
|
||||||
|
return callback(err);
|
||||||
|
|
||||||
|
if (!map)
|
||||||
|
return callback(new Error('TX not found.'));
|
||||||
|
|
||||||
|
receive = map.inputs.length === 0;
|
||||||
|
member = receive ? map.outputs[0] : map.inputs[0];
|
||||||
|
assert(member);
|
||||||
|
|
||||||
|
json = {
|
||||||
|
amount: +utils.btc(tx.getOutputValue()),
|
||||||
|
confirmations: tx.getConfirmations(),
|
||||||
|
blockhash: tx.block ? utils.revHex(tx.block) : null,
|
||||||
|
blockindex: tx.index,
|
||||||
|
blocktime: tx.ts,
|
||||||
|
txid: tx.rhash,
|
||||||
|
walletconflicts: [],
|
||||||
|
time: tx.ps,
|
||||||
|
timereceived: tx.ps,
|
||||||
|
'bip125-replaceable': 'no',
|
||||||
|
details: [{
|
||||||
|
account: member.name,
|
||||||
|
address: member.address.toBase58(),
|
||||||
|
category: receive ? 'receive' : 'send',
|
||||||
|
amount: +utils.btc(member.value),
|
||||||
|
label: member.name,
|
||||||
|
vout: 0
|
||||||
|
}],
|
||||||
|
hex: tx.toRaw().toString('hex')
|
||||||
|
};
|
||||||
|
|
||||||
|
callback(null, json);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
RPC.prototype.gettransaction = function gettransaction(args, callback) {
|
RPC.prototype.gettransaction = function gettransaction(args, callback) {
|
||||||
var hash;
|
var hash;
|
||||||
|
|
||||||
@ -2391,8 +2432,15 @@ RPC.prototype.gettransaction = function gettransaction(args, callback) {
|
|||||||
|
|
||||||
hash = utils.revHex(hash);
|
hash = utils.revHex(hash);
|
||||||
|
|
||||||
// XXX TODO
|
this.walletdb.getTX(hash, function(err, tx) {
|
||||||
callback(new Error('Not implemented.'));
|
if (err)
|
||||||
|
return callback(err);
|
||||||
|
|
||||||
|
if (!tx)
|
||||||
|
return callback(new Error('TX not found.'));
|
||||||
|
|
||||||
|
self._toWalletTX(tx, callback);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
RPC.prototype.abandontransaction = function abandontransaction(args, callback) {
|
RPC.prototype.abandontransaction = function abandontransaction(args, callback) {
|
||||||
@ -2531,8 +2579,84 @@ RPC.prototype.listsinceblock = function listsinceblock(args, callback) {
|
|||||||
callback(new Error('Not implemented.'));
|
callback(new Error('Not implemented.'));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
RPC.prototype._toListTX = function _toListTX(tx, callback) {
|
||||||
|
var self = this;
|
||||||
|
var receive, member, json;
|
||||||
|
|
||||||
|
this.walletdb.tx.getMap(tx, function(err, map) {
|
||||||
|
if (err)
|
||||||
|
return callback(err);
|
||||||
|
|
||||||
|
if (!map)
|
||||||
|
return callback(new Error('TX not found.'));
|
||||||
|
|
||||||
|
receive = map.inputs.length === 0;
|
||||||
|
member = receive ? map.outputs[0] : map.inputs[0];
|
||||||
|
assert(member);
|
||||||
|
|
||||||
|
json = {
|
||||||
|
account: member.name,
|
||||||
|
address: member.address.toBase58(),
|
||||||
|
category: receive ? 'receive' : 'send',
|
||||||
|
amount: +utils.btc(member.value),
|
||||||
|
label: member.name,
|
||||||
|
vout: 0,
|
||||||
|
confirmations: tx.getConfirmations(),
|
||||||
|
blockhash: tx.block ? utils.revHex(tx.block) : null,
|
||||||
|
blockindex: tx.index,
|
||||||
|
blocktime: tx.ts,
|
||||||
|
txid: tx.rhash,
|
||||||
|
walletconflicts: [],
|
||||||
|
time: tx.ps,
|
||||||
|
timereceived: tx.ps,
|
||||||
|
'bip125-replaceable': 'no'
|
||||||
|
};
|
||||||
|
|
||||||
|
callback(null, json);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
RPC.prototype.listtransactions = function listtransactions(args, callback) {
|
RPC.prototype.listtransactions = function listtransactions(args, callback) {
|
||||||
callback(new Error('Not implemented.'));
|
var account, count;
|
||||||
|
|
||||||
|
if (args.help || args.length > 4) {
|
||||||
|
return callback(new Error('listtransactions'
|
||||||
|
+ ' ( "account" count from includeWatchonly)'));
|
||||||
|
}
|
||||||
|
|
||||||
|
account = null;
|
||||||
|
|
||||||
|
if (args.length > 0) {
|
||||||
|
account = String(args[0]);
|
||||||
|
if (!account)
|
||||||
|
account = 'default';
|
||||||
|
}
|
||||||
|
|
||||||
|
count = 10;
|
||||||
|
|
||||||
|
if (args.length > 1)
|
||||||
|
count = Number(args[1]);
|
||||||
|
|
||||||
|
if (!utils.isNumber(count) || count < 0)
|
||||||
|
count = 10;
|
||||||
|
|
||||||
|
this.wallet.getHistory(account, function(err, txs) {
|
||||||
|
if (err)
|
||||||
|
return callback(err);
|
||||||
|
|
||||||
|
utils.forEachSerial(txs, function(tx, next, i) {
|
||||||
|
self._toListTX(tx, function(err, json) {
|
||||||
|
if (err)
|
||||||
|
return next(err);
|
||||||
|
txs[i] = json;
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
}, function(err) {
|
||||||
|
if (err)
|
||||||
|
return callback(err);
|
||||||
|
callback(null, txs);
|
||||||
|
});
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
RPC.prototype.listunspent = function listunspent(args, callback) {
|
RPC.prototype.listunspent = function listunspent(args, callback) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user