Merge #7774: RPC: add versionHex in getblock and getblockheader JSON results
92107d5
RPC: add versionHex in getblock and getblockheader JSON results; expand data in getblockchaininfo bip9_softforks field. (mruddy)
This commit is contained in:
commit
916b15a87a
2 changed files with 16 additions and 1 deletions
|
@ -82,6 +82,7 @@ class BlockchainTest(BitcoinTestFramework):
|
||||||
assert isinstance(header['mediantime'], int)
|
assert isinstance(header['mediantime'], int)
|
||||||
assert isinstance(header['nonce'], int)
|
assert isinstance(header['nonce'], int)
|
||||||
assert isinstance(header['version'], int)
|
assert isinstance(header['version'], int)
|
||||||
|
assert isinstance(int(header['versionHex'], 16), int)
|
||||||
assert isinstance(header['difficulty'], Decimal)
|
assert isinstance(header['difficulty'], Decimal)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -70,6 +70,7 @@ UniValue blockheaderToJSON(const CBlockIndex* blockindex)
|
||||||
result.push_back(Pair("confirmations", confirmations));
|
result.push_back(Pair("confirmations", confirmations));
|
||||||
result.push_back(Pair("height", blockindex->nHeight));
|
result.push_back(Pair("height", blockindex->nHeight));
|
||||||
result.push_back(Pair("version", blockindex->nVersion));
|
result.push_back(Pair("version", blockindex->nVersion));
|
||||||
|
result.push_back(Pair("versionHex", strprintf("%08x", blockindex->nVersion)));
|
||||||
result.push_back(Pair("merkleroot", blockindex->hashMerkleRoot.GetHex()));
|
result.push_back(Pair("merkleroot", blockindex->hashMerkleRoot.GetHex()));
|
||||||
result.push_back(Pair("time", (int64_t)blockindex->nTime));
|
result.push_back(Pair("time", (int64_t)blockindex->nTime));
|
||||||
result.push_back(Pair("mediantime", (int64_t)blockindex->GetMedianTimePast()));
|
result.push_back(Pair("mediantime", (int64_t)blockindex->GetMedianTimePast()));
|
||||||
|
@ -98,6 +99,7 @@ UniValue blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool tx
|
||||||
result.push_back(Pair("size", (int)::GetSerializeSize(block, SER_NETWORK, PROTOCOL_VERSION)));
|
result.push_back(Pair("size", (int)::GetSerializeSize(block, SER_NETWORK, PROTOCOL_VERSION)));
|
||||||
result.push_back(Pair("height", blockindex->nHeight));
|
result.push_back(Pair("height", blockindex->nHeight));
|
||||||
result.push_back(Pair("version", block.nVersion));
|
result.push_back(Pair("version", block.nVersion));
|
||||||
|
result.push_back(Pair("versionHex", strprintf("%08x", block.nVersion)));
|
||||||
result.push_back(Pair("merkleroot", block.hashMerkleRoot.GetHex()));
|
result.push_back(Pair("merkleroot", block.hashMerkleRoot.GetHex()));
|
||||||
UniValue txs(UniValue::VARR);
|
UniValue txs(UniValue::VARR);
|
||||||
BOOST_FOREACH(const CTransaction&tx, block.vtx)
|
BOOST_FOREACH(const CTransaction&tx, block.vtx)
|
||||||
|
@ -316,6 +318,7 @@ UniValue getblockheader(const UniValue& params, bool fHelp)
|
||||||
" \"confirmations\" : n, (numeric) The number of confirmations, or -1 if the block is not on the main chain\n"
|
" \"confirmations\" : n, (numeric) The number of confirmations, or -1 if the block is not on the main chain\n"
|
||||||
" \"height\" : n, (numeric) The block height or index\n"
|
" \"height\" : n, (numeric) The block height or index\n"
|
||||||
" \"version\" : n, (numeric) The block version\n"
|
" \"version\" : n, (numeric) The block version\n"
|
||||||
|
" \"versionHex\" : \"00000000\", (string) The block version formatted in hexadecimal\n"
|
||||||
" \"merkleroot\" : \"xxxx\", (string) The merkle root\n"
|
" \"merkleroot\" : \"xxxx\", (string) The merkle root\n"
|
||||||
" \"time\" : ttt, (numeric) The block time in seconds since epoch (Jan 1 1970 GMT)\n"
|
" \"time\" : ttt, (numeric) The block time in seconds since epoch (Jan 1 1970 GMT)\n"
|
||||||
" \"mediantime\" : ttt, (numeric) The median block time in seconds since epoch (Jan 1 1970 GMT)\n"
|
" \"mediantime\" : ttt, (numeric) The median block time in seconds since epoch (Jan 1 1970 GMT)\n"
|
||||||
|
@ -375,6 +378,7 @@ UniValue getblock(const UniValue& params, bool fHelp)
|
||||||
" \"size\" : n, (numeric) The block size\n"
|
" \"size\" : n, (numeric) The block size\n"
|
||||||
" \"height\" : n, (numeric) The block height or index\n"
|
" \"height\" : n, (numeric) The block height or index\n"
|
||||||
" \"version\" : n, (numeric) The block version\n"
|
" \"version\" : n, (numeric) The block version\n"
|
||||||
|
" \"versionHex\" : \"00000000\", (string) The block version formatted in hexadecimal\n"
|
||||||
" \"merkleroot\" : \"xxxx\", (string) The merkle root\n"
|
" \"merkleroot\" : \"xxxx\", (string) The merkle root\n"
|
||||||
" \"tx\" : [ (array of string) The transaction ids\n"
|
" \"tx\" : [ (array of string) The transaction ids\n"
|
||||||
" \"transactionid\" (string) The transaction id\n"
|
" \"transactionid\" (string) The transaction id\n"
|
||||||
|
@ -608,13 +612,20 @@ static UniValue BIP9SoftForkDesc(const std::string& name, const Consensus::Param
|
||||||
{
|
{
|
||||||
UniValue rv(UniValue::VOBJ);
|
UniValue rv(UniValue::VOBJ);
|
||||||
rv.push_back(Pair("id", name));
|
rv.push_back(Pair("id", name));
|
||||||
switch (VersionBitsTipState(consensusParams, id)) {
|
const ThresholdState thresholdState = VersionBitsTipState(consensusParams, id);
|
||||||
|
switch (thresholdState) {
|
||||||
case THRESHOLD_DEFINED: rv.push_back(Pair("status", "defined")); break;
|
case THRESHOLD_DEFINED: rv.push_back(Pair("status", "defined")); break;
|
||||||
case THRESHOLD_STARTED: rv.push_back(Pair("status", "started")); break;
|
case THRESHOLD_STARTED: rv.push_back(Pair("status", "started")); break;
|
||||||
case THRESHOLD_LOCKED_IN: rv.push_back(Pair("status", "locked_in")); break;
|
case THRESHOLD_LOCKED_IN: rv.push_back(Pair("status", "locked_in")); break;
|
||||||
case THRESHOLD_ACTIVE: rv.push_back(Pair("status", "active")); break;
|
case THRESHOLD_ACTIVE: rv.push_back(Pair("status", "active")); break;
|
||||||
case THRESHOLD_FAILED: rv.push_back(Pair("status", "failed")); break;
|
case THRESHOLD_FAILED: rv.push_back(Pair("status", "failed")); break;
|
||||||
}
|
}
|
||||||
|
if (THRESHOLD_STARTED == thresholdState)
|
||||||
|
{
|
||||||
|
rv.push_back(Pair("bit", consensusParams.vDeployments[id].bit));
|
||||||
|
}
|
||||||
|
rv.push_back(Pair("startTime", consensusParams.vDeployments[id].nStartTime));
|
||||||
|
rv.push_back(Pair("timeout", consensusParams.vDeployments[id].nTimeout));
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -653,6 +664,9 @@ UniValue getblockchaininfo(const UniValue& params, bool fHelp)
|
||||||
" {\n"
|
" {\n"
|
||||||
" \"id\": \"xxxx\", (string) name of the softfork\n"
|
" \"id\": \"xxxx\", (string) name of the softfork\n"
|
||||||
" \"status\": \"xxxx\", (string) one of \"defined\", \"started\", \"lockedin\", \"active\", \"failed\"\n"
|
" \"status\": \"xxxx\", (string) one of \"defined\", \"started\", \"lockedin\", \"active\", \"failed\"\n"
|
||||||
|
" \"bit\": xx, (numeric) the bit, 0-28, in the block version field used to signal this soft fork\n"
|
||||||
|
" \"startTime\": xx, (numeric) the minimum median time past of a block at which the bit gains its meaning\n"
|
||||||
|
" \"timeout\": xx (numeric) the median time past of a block at which the deployment is considered failed if not yet locked in\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
" ]\n"
|
" ]\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
|
|
Loading…
Reference in a new issue