fix tx properties.

This commit is contained in:
Christopher Jeffrey 2014-11-18 15:38:44 -08:00
parent b668cfbb0a
commit d8701332c0
2 changed files with 34 additions and 21 deletions

View File

@ -374,7 +374,11 @@ Bitcoin.prototype.getTx = function(txHash, blockHash, callback) {
blockHash = ''; blockHash = '';
} }
if (typeof blockHash !== 'string') { if (typeof blockHash !== 'string') {
blockHash = ''; if (blockHash) {
blockHash = blockHash.hash || blockHash.blockhash || '';
} else {
blockHash = '';
}
} }
return bitcoindjs.getTx(txHash, blockHash, function(err, tx) { return bitcoindjs.getTx(txHash, blockHash, function(err, tx) {
if (err) return callback(err); if (err) return callback(err);

View File

@ -392,7 +392,7 @@ static inline void
cblock_to_jsblock(const CBlock& cblock, CBlockIndex* cblock_index, Local<Object> jsblock, bool is_new); cblock_to_jsblock(const CBlock& cblock, CBlockIndex* cblock_index, Local<Object> jsblock, bool is_new);
static inline void static inline void
ctx_to_jstx(const CTransaction& ctx, uint256 block_hash, Local<Object> jstx /*, bool parent=false*/ ); ctx_to_jstx(const CTransaction& ctx, uint256& block_hash, Local<Object> jstx);
static inline void static inline void
jsblock_to_cblock(const Local<Object> jsblock, CBlock& cblock); jsblock_to_cblock(const Local<Object> jsblock, CBlock& cblock);
@ -1567,7 +1567,8 @@ NAN_METHOD(FillTransaction) {
// Turn our CTransaction into a javascript Transaction // Turn our CTransaction into a javascript Transaction
Local<Object> new_jstx = NanNew<Object>(); Local<Object> new_jstx = NanNew<Object>();
ctx_to_jstx(ctx, 0, new_jstx); uint256 block_hash = uint256(0);
ctx_to_jstx(ctx, block_hash, new_jstx);
NanReturnValue(new_jstx); NanReturnValue(new_jstx);
} }
@ -2290,7 +2291,8 @@ NAN_METHOD(TxFromHex) {
} }
Local<Object> jstx = NanNew<Object>(); Local<Object> jstx = NanNew<Object>();
ctx_to_jstx(ctx, 0, jstx); uint256 block_hash = uint256(0);
ctx_to_jstx(ctx, block_hash, jstx);
NanReturnValue(jstx); NanReturnValue(jstx);
} }
@ -2555,8 +2557,8 @@ NAN_METHOD(HookPackets) {
CTransaction tx; CTransaction tx;
vRecv >> tx; vRecv >> tx;
Local<Object> jstx = NanNew<Object>(); Local<Object> jstx = NanNew<Object>();
ctx_to_jstx(tx, 0, jstx); uint256 block_hash = uint256(0);
// ctx_to_jstx(tx, 0, o); ctx_to_jstx(tx, block_hash, jstx);
o->Set(NanNew<String>("tx"), jstx); o->Set(NanNew<String>("tx"), jstx);
} else if (strCommand == "block" && !fImporting && !fReindex) { } else if (strCommand == "block" && !fImporting && !fReindex) {
// XXX May be able to do prev_list asynchronously // XXX May be able to do prev_list asynchronously
@ -2565,6 +2567,7 @@ NAN_METHOD(HookPackets) {
Local<Object> jsblock = NanNew<Object>(); Local<Object> jsblock = NanNew<Object>();
cblock_to_jsblock(block, NULL, jsblock, true); cblock_to_jsblock(block, NULL, jsblock, true);
// cblock_to_jsblock(block, NULL, o, true); // cblock_to_jsblock(block, NULL, o, true);
// last_block_hash = block.GetHash();
o->Set(NanNew<String>("block"), jsblock); o->Set(NanNew<String>("block"), jsblock);
} else if (strCommand == "getaddr") { } else if (strCommand == "getaddr") {
; // not much other information in getaddr as long as we know we got a getaddr ; // not much other information in getaddr as long as we know we got a getaddr
@ -5520,7 +5523,9 @@ cblock_to_jsblock(const CBlock& cblock, CBlockIndex* cblock_index, Local<Object>
cblock_index = find_new_block_index(cblock.GetHash(), cblock.hashPrevBlock, &is_allocated); cblock_index = find_new_block_index(cblock.GetHash(), cblock.hashPrevBlock, &is_allocated);
} }
jsblock->Set(NanNew<String>("hash"), NanNew<String>(cblock.GetHash().GetHex())); uint256 block_hash = cblock.GetHash();
jsblock->Set(NanNew<String>("hash"), NanNew<String>(block_hash.GetHex()));
CMerkleTx txGen(cblock.vtx[0]); CMerkleTx txGen(cblock.vtx[0]);
txGen.SetMerkleBranch(cblock); txGen.SetMerkleBranch(cblock);
jsblock->Set(NanNew<String>("confirmations"), NanNew<Number>((int)txGen.GetDepthInMainChain())->ToInt32()); jsblock->Set(NanNew<String>("confirmations"), NanNew<Number>((int)txGen.GetDepthInMainChain())->ToInt32());
@ -5569,8 +5574,7 @@ cblock_to_jsblock(const CBlock& cblock, CBlockIndex* cblock_index, Local<Object>
int ti = 0; int ti = 0;
BOOST_FOREACH(const CTransaction& ctx, cblock.vtx) { BOOST_FOREACH(const CTransaction& ctx, cblock.vtx) {
Local<Object> jstx = NanNew<Object>(); Local<Object> jstx = NanNew<Object>();
const uint256 block_hash = cblock.GetHash(); ctx_to_jstx(ctx, block_hash, jstx);
ctx_to_jstx(ctx, block_hash, jstx /*, true*/ );
txs->Set(ti, jstx); txs->Set(ti, jstx);
ti++; ti++;
} }
@ -5589,7 +5593,7 @@ cblock_to_jsblock(const CBlock& cblock, CBlockIndex* cblock_index, Local<Object>
} }
static inline void static inline void
ctx_to_jstx(const CTransaction& ctx, uint256 block_hash, Local<Object> jstx /*, bool parent=false*/ ) { ctx_to_jstx(const CTransaction& ctx, uint256& block_hash, Local<Object> jstx) {
// With v0.9.0 // With v0.9.0
// jstx->Set(NanNew<String>("mintxfee"), NanNew<Number>((int64_t)ctx.nMinTxFee)->ToInteger()); // jstx->Set(NanNew<String>("mintxfee"), NanNew<Number>((int64_t)ctx.nMinTxFee)->ToInteger());
// jstx->Set(NanNew<String>("minrelaytxfee"), NanNew<Number>((int64_t)ctx.nMinRelayTxFee)->ToInteger()); // jstx->Set(NanNew<String>("minrelaytxfee"), NanNew<Number>((int64_t)ctx.nMinRelayTxFee)->ToInteger());
@ -5680,7 +5684,21 @@ ctx_to_jstx(const CTransaction& ctx, uint256 block_hash, Local<Object> jstx /*,
} }
jstx->Set(NanNew<String>("vout"), vout); jstx->Set(NanNew<String>("vout"), vout);
if (block_hash != 0) { if (block_hash != uint256(0)) {
jstx->Set(NanNew<String>("blockhash"), NanNew<String>(block_hash.GetHex()));
jstx->Set(NanNew<String>("confirmations"), NanNew<Number>(0));
if (ctx.IsCoinBase()) {
jstx->Set(NanNew<String>("generated"), NanNew<Boolean>(true));
}
jstx->Set(NanNew<String>("blockindex"), NanNew<Number>(mapBlockIndex[block_hash]->nHeight));
jstx->Set(NanNew<String>("blocktime"), NanNew<Number>(mapBlockIndex[block_hash]->GetBlockTime()));
Local<Array> conflicts = NanNew<Array>();
jstx->Set(NanNew<String>("walletconflicts"), conflicts);
jstx->Set(NanNew<String>("time"),
NanNew<Number>((uint32_t)mapBlockIndex[block_hash]->GetBlockTime())->ToUint32());
jstx->Set(NanNew<String>("timereceived"),
NanNew<Number>((uint32_t)mapBlockIndex[block_hash]->GetBlockTime())->ToUint32());
#if 0
jstx->Set(NanNew<String>("blockhash"), NanNew<String>(block_hash.GetHex())); jstx->Set(NanNew<String>("blockhash"), NanNew<String>(block_hash.GetHex()));
CWalletTx cwtx(pwalletMain, ctx); CWalletTx cwtx(pwalletMain, ctx);
int confirms = cwtx.GetDepthInMainChain(); int confirms = cwtx.GetDepthInMainChain();
@ -5705,16 +5723,7 @@ ctx_to_jstx(const CTransaction& ctx, uint256 block_hash, Local<Object> jstx /*,
jstx->Set(NanNew<String>("walletconflicts"), conflicts); jstx->Set(NanNew<String>("walletconflicts"), conflicts);
jstx->Set(NanNew<String>("time"), NanNew<Number>(cwtx.GetTxTime())); jstx->Set(NanNew<String>("time"), NanNew<Number>(cwtx.GetTxTime()));
jstx->Set(NanNew<String>("timereceived"), NanNew<Number>((int64_t)cwtx.nTimeReceived)); jstx->Set(NanNew<String>("timereceived"), NanNew<Number>((int64_t)cwtx.nTimeReceived));
// if (!parent) { #endif
// CBlock cblock;
// //CBlockIndex *cblock_index = mapBlockIndex[cwtx.hashBlock];
// CBlockIndex *cblock_index = mapBlockIndex[block_hash];
// if (ReadBlockFromDisk(cblock, cblock_index)) {
// Local<Object> jsblock = NanNew<Object>();
// cblock_to_jsblock(cblock, cblock_index, jsblock, false);
// jstx->Set(NanNew<String>("_block"), jsblock);
// }
// }
} else { } else {
jstx->Set(NanNew<String>("blockhash"), NanNew<String>(uint256(0).GetHex())); jstx->Set(NanNew<String>("blockhash"), NanNew<String>(uint256(0).GetHex()));
jstx->Set(NanNew<String>("confirmations"), NanNew<Number>(-1)); jstx->Set(NanNew<String>("confirmations"), NanNew<Number>(-1));