mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 10:43:19 -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)
|
if (confirms > 0)
|
||||||
{
|
{
|
||||||
entry.pushKV("blockhash", wtx.m_confirm.hashBlock.GetHex());
|
entry.pushKV("blockhash", wtx.m_confirm.hashBlock.GetHex());
|
||||||
|
entry.pushKV("blockheight", wtx.m_confirm.block_height);
|
||||||
entry.pushKV("blockindex", wtx.m_confirm.nIndex);
|
entry.pushKV("blockindex", wtx.m_confirm.nIndex);
|
||||||
int64_t block_time;
|
int64_t block_time;
|
||||||
bool found_block = chain.findBlock(wtx.m_confirm.hashBlock, nullptr /* block */, &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"
|
" \"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"
|
" \"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"
|
" \"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"
|
" \"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"
|
" \"blocktime\": xxx, (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).\n"
|
||||||
" \"txid\": \"transactionid\", (string) The transaction id.\n"
|
" \"txid\": \"transactionid\", (string) The transaction id.\n"
|
||||||
|
|
|
@ -40,6 +40,7 @@ class ListSinceBlockTest(BitcoinTestFramework):
|
||||||
def test_no_blockhash(self):
|
def test_no_blockhash(self):
|
||||||
txid = self.nodes[2].sendtoaddress(self.nodes[0].getnewaddress(), 1)
|
txid = self.nodes[2].sendtoaddress(self.nodes[0].getnewaddress(), 1)
|
||||||
blockhash, = self.nodes[2].generate(1)
|
blockhash, = self.nodes[2].generate(1)
|
||||||
|
blockheight = self.nodes[2].getblockheader(blockhash)['height']
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
|
|
||||||
txs = self.nodes[0].listtransactions()
|
txs = self.nodes[0].listtransactions()
|
||||||
|
@ -47,6 +48,7 @@ class ListSinceBlockTest(BitcoinTestFramework):
|
||||||
"category": "receive",
|
"category": "receive",
|
||||||
"amount": 1,
|
"amount": 1,
|
||||||
"blockhash": blockhash,
|
"blockhash": blockhash,
|
||||||
|
"blockheight": blockheight,
|
||||||
"confirmations": 1,
|
"confirmations": 1,
|
||||||
})
|
})
|
||||||
assert_equal(
|
assert_equal(
|
||||||
|
@ -276,7 +278,8 @@ class ListSinceBlockTest(BitcoinTestFramework):
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
|
|
||||||
# gettransaction should work for txid1
|
# 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
|
# listsinceblock(lastblockhash) should now include txid1 in transactions
|
||||||
# as well as in removed
|
# as well as in removed
|
||||||
|
|
|
@ -40,14 +40,15 @@ class ListTransactionsTest(BitcoinTestFramework):
|
||||||
{"txid": txid},
|
{"txid": txid},
|
||||||
{"category": "receive", "amount": Decimal("0.1"), "confirmations": 0})
|
{"category": "receive", "amount": Decimal("0.1"), "confirmations": 0})
|
||||||
# mine a block, confirmations should change:
|
# 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()
|
self.sync_all()
|
||||||
assert_array_result(self.nodes[0].listtransactions(),
|
assert_array_result(self.nodes[0].listtransactions(),
|
||||||
{"txid": txid},
|
{"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(),
|
assert_array_result(self.nodes[1].listtransactions(),
|
||||||
{"txid": txid},
|
{"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:
|
# send-to-self:
|
||||||
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 0.2)
|
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 0.2)
|
||||||
|
|
Loading…
Add table
Reference in a new issue