|
|
@ -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" |
|
|
|