mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 20:03:34 -03:00
Merge #17437: rpc: Expose block height of wallet transactions
a5e77959c8
rpc: Expose block height of wallet transactions (João Barbosa) Pull request description: Closes #17296. ACKs for top commit: practicalswift: ACKa5e77959c8
-- diff looks correct now (good catch @theStack!) theStack: ACKa5e77959c8
ryanofsky: Code review ACKa5e77959c8
. Changes since last review getblockhash python test fixes, and removing the last hardcoded height Tree-SHA512: 57dcd0e4e7083f34016bf9cf8ef578fbfde49e882b6cd8623dd1c64716e096e62f6177a4c2ed94f5de304e751fe23fb9d11cf107a86fbf0a3c5f539cd2844916
This commit is contained in:
commit
1028882eea
4 changed files with 15 additions and 4 deletions
5
doc/release-notes-17437.md
Normal file
5
doc/release-notes-17437.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
Low-level RPC Changes
|
||||
===
|
||||
|
||||
- The RPC gettransaction, listtransactions and listsinceblock responses now also
|
||||
includes the height of the block that contains the wallet transaction, if any.
|
|
@ -142,6 +142,7 @@ static void WalletTxToJSON(interfaces::Chain& chain, interfaces::Chain::Lock& lo
|
|||
if (confirms > 0)
|
||||
{
|
||||
entry.pushKV("blockhash", wtx.m_confirm.hashBlock.GetHex());
|
||||
entry.pushKV("blockheight", wtx.m_confirm.block_height);
|
||||
entry.pushKV("blockindex", wtx.m_confirm.nIndex);
|
||||
int64_t block_time;
|
||||
bool found_block = chain.findBlock(wtx.m_confirm.hashBlock, nullptr /* block */, &block_time);
|
||||
|
@ -1367,6 +1368,7 @@ static const std::string TransactionDescriptionString()
|
|||
" \"generated\": xxx, (bool) Only present if transaction only input is a coinbase one.\n"
|
||||
" \"trusted\": xxx, (bool) Only present if we consider transaction to be trusted and so safe to spend from.\n"
|
||||
" \"blockhash\": \"hashvalue\", (string) The block hash containing the transaction.\n"
|
||||
" \"blockheight\": n, (numeric) The block height containing the transaction.\n"
|
||||
" \"blockindex\": n, (numeric) The index of the transaction in the block that includes it.\n"
|
||||
" \"blocktime\": xxx, (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).\n"
|
||||
" \"txid\": \"transactionid\", (string) The transaction id.\n"
|
||||
|
|
|
@ -40,6 +40,7 @@ class ListSinceBlockTest(BitcoinTestFramework):
|
|||
def test_no_blockhash(self):
|
||||
txid = self.nodes[2].sendtoaddress(self.nodes[0].getnewaddress(), 1)
|
||||
blockhash, = self.nodes[2].generate(1)
|
||||
blockheight = self.nodes[2].getblockheader(blockhash)['height']
|
||||
self.sync_all()
|
||||
|
||||
txs = self.nodes[0].listtransactions()
|
||||
|
@ -47,6 +48,7 @@ class ListSinceBlockTest(BitcoinTestFramework):
|
|||
"category": "receive",
|
||||
"amount": 1,
|
||||
"blockhash": blockhash,
|
||||
"blockheight": blockheight,
|
||||
"confirmations": 1,
|
||||
})
|
||||
assert_equal(
|
||||
|
@ -276,7 +278,8 @@ class ListSinceBlockTest(BitcoinTestFramework):
|
|||
self.sync_all()
|
||||
|
||||
# gettransaction should work for txid1
|
||||
self.nodes[0].gettransaction(txid1)
|
||||
tx1 = self.nodes[0].gettransaction(txid1)
|
||||
assert_equal(tx1['blockheight'], self.nodes[0].getblockheader(tx1['blockhash'])['height'])
|
||||
|
||||
# listsinceblock(lastblockhash) should now include txid1 in transactions
|
||||
# as well as in removed
|
||||
|
|
|
@ -40,14 +40,15 @@ class ListTransactionsTest(BitcoinTestFramework):
|
|||
{"txid": txid},
|
||||
{"category": "receive", "amount": Decimal("0.1"), "confirmations": 0})
|
||||
# mine a block, confirmations should change:
|
||||
self.nodes[0].generate(1)
|
||||
blockhash = self.nodes[0].generate(1)[0]
|
||||
blockheight = self.nodes[0].getblockheader(blockhash)['height']
|
||||
self.sync_all()
|
||||
assert_array_result(self.nodes[0].listtransactions(),
|
||||
{"txid": txid},
|
||||
{"category": "send", "amount": Decimal("-0.1"), "confirmations": 1})
|
||||
{"category": "send", "amount": Decimal("-0.1"), "confirmations": 1, "blockhash": blockhash, "blockheight": blockheight})
|
||||
assert_array_result(self.nodes[1].listtransactions(),
|
||||
{"txid": txid},
|
||||
{"category": "receive", "amount": Decimal("0.1"), "confirmations": 1})
|
||||
{"category": "receive", "amount": Decimal("0.1"), "confirmations": 1, "blockhash": blockhash, "blockheight": blockheight})
|
||||
|
||||
# send-to-self:
|
||||
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 0.2)
|
||||
|
|
Loading…
Reference in a new issue