From 2d18a078a2d9eaa53b8b7acc7600141c69f0d742 Mon Sep 17 00:00:00 2001 From: Sjors Provoost Date: Sat, 4 Jan 2025 14:40:16 +0100 Subject: [PATCH] rpc: add target and bits to getchainstates --- src/rpc/blockchain.cpp | 4 ++++ test/functional/feature_assumeutxo.py | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 26b93c920fd..33d05e1d438 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -3308,6 +3308,8 @@ static RPCHelpMan loadtxoutset() const std::vector RPCHelpForChainstate{ {RPCResult::Type::NUM, "blocks", "number of blocks in this chainstate"}, {RPCResult::Type::STR_HEX, "bestblockhash", "blockhash of the tip"}, + {RPCResult::Type::STR_HEX, "bits", "nBits: compact representation of the block difficulty target"}, + {RPCResult::Type::STR_HEX, "target", "The difficulty target"}, {RPCResult::Type::NUM, "difficulty", "difficulty of the tip"}, {RPCResult::Type::NUM, "verificationprogress", "progress towards the network tip"}, {RPCResult::Type::STR_HEX, "snapshot_blockhash", /*optional=*/true, "the base block of the snapshot this chainstate is based on, if any"}, @@ -3350,6 +3352,8 @@ return RPCHelpMan{ data.pushKV("blocks", (int)chain.Height()); data.pushKV("bestblockhash", tip->GetBlockHash().GetHex()); + data.pushKV("bits", strprintf("%08x", tip->nBits)); + data.pushKV("target", GetTarget(*tip, chainman.GetConsensus().powLimit).GetHex()); data.pushKV("difficulty", GetDifficulty(*tip)); data.pushKV("verificationprogress", chainman.GuessVerificationProgress(tip)); data.pushKV("coins_db_cache_bytes", cs.m_coinsdb_cache_size_bytes); diff --git a/test/functional/feature_assumeutxo.py b/test/functional/feature_assumeutxo.py index 8addb7e2385..2d4e33e5d87 100755 --- a/test/functional/feature_assumeutxo.py +++ b/test/functional/feature_assumeutxo.py @@ -38,6 +38,12 @@ from test_framework.wallet import ( getnewdestination, MiniWallet, ) +from test_framework.blocktools import ( + REGTEST_N_BITS, + REGTEST_TARGET, + nbits_str, + target_str, +) START_HEIGHT = 199 SNAPSHOT_BASE_HEIGHT = 299 @@ -229,6 +235,12 @@ class AssumeutxoTest(BitcoinTestFramework): assert_equal(normal['blocks'], START_HEIGHT + 99) assert_equal(snapshot['blocks'], SNAPSHOT_BASE_HEIGHT) + # Both states should have the same nBits and target + assert_equal(normal['bits'], nbits_str(REGTEST_N_BITS)) + assert_equal(normal['bits'], snapshot['bits']) + assert_equal(normal['target'], target_str(REGTEST_TARGET)) + assert_equal(normal['target'], snapshot['target']) + # Now lets sync the nodes and wait for the background validation to finish self.connect_nodes(0, 3) self.sync_blocks(nodes=(n0, n3))