mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-11 20:32:35 -03:00
[RPC] Return witness data in blockchain RPCs
Includes RPC field name changes by Luke-jr.
This commit is contained in:
parent
3dd410294d
commit
7c4bf779e8
2 changed files with 22 additions and 2 deletions
|
@ -99,6 +99,7 @@ UniValue blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool tx
|
||||||
if (chainActive.Contains(blockindex))
|
if (chainActive.Contains(blockindex))
|
||||||
confirmations = chainActive.Height() - blockindex->nHeight + 1;
|
confirmations = chainActive.Height() - blockindex->nHeight + 1;
|
||||||
result.push_back(Pair("confirmations", confirmations));
|
result.push_back(Pair("confirmations", confirmations));
|
||||||
|
result.push_back(Pair("strippedsize", (int)::GetSerializeSize(block, SER_NETWORK, PROTOCOL_VERSION | SERIALIZE_TRANSACTION_NO_WITNESS)));
|
||||||
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));
|
||||||
|
@ -558,6 +559,7 @@ UniValue getblock(const UniValue& params, bool fHelp)
|
||||||
" \"hash\" : \"hash\", (string) the block hash (same as provided)\n"
|
" \"hash\" : \"hash\", (string) the block hash (same as provided)\n"
|
||||||
" \"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"
|
||||||
" \"size\" : n, (numeric) The block size\n"
|
" \"size\" : n, (numeric) The block size\n"
|
||||||
|
" \"strippedsize\" : n, (numeric) The block size excluding witness data\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"
|
" \"versionHex\" : \"00000000\", (string) The block version formatted in hexadecimal\n"
|
||||||
|
|
|
@ -62,11 +62,14 @@ void ScriptPubKeyToJSON(const CScript& scriptPubKey, UniValue& out, bool fInclud
|
||||||
void TxToJSON(const CTransaction& tx, const uint256 hashBlock, UniValue& entry)
|
void TxToJSON(const CTransaction& tx, const uint256 hashBlock, UniValue& entry)
|
||||||
{
|
{
|
||||||
entry.push_back(Pair("txid", tx.GetHash().GetHex()));
|
entry.push_back(Pair("txid", tx.GetHash().GetHex()));
|
||||||
|
entry.push_back(Pair("hash", tx.GetWitnessHash().GetHex()));
|
||||||
entry.push_back(Pair("size", (int)::GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION)));
|
entry.push_back(Pair("size", (int)::GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION)));
|
||||||
entry.push_back(Pair("version", tx.nVersion));
|
entry.push_back(Pair("version", tx.nVersion));
|
||||||
entry.push_back(Pair("locktime", (int64_t)tx.nLockTime));
|
entry.push_back(Pair("locktime", (int64_t)tx.nLockTime));
|
||||||
|
|
||||||
UniValue vin(UniValue::VARR);
|
UniValue vin(UniValue::VARR);
|
||||||
BOOST_FOREACH(const CTxIn& txin, tx.vin) {
|
for (unsigned int i = 0; i < tx.vin.size(); i++) {
|
||||||
|
const CTxIn& txin = tx.vin[i];
|
||||||
UniValue in(UniValue::VOBJ);
|
UniValue in(UniValue::VOBJ);
|
||||||
if (tx.IsCoinBase())
|
if (tx.IsCoinBase())
|
||||||
in.push_back(Pair("coinbase", HexStr(txin.scriptSig.begin(), txin.scriptSig.end())));
|
in.push_back(Pair("coinbase", HexStr(txin.scriptSig.begin(), txin.scriptSig.end())));
|
||||||
|
@ -78,6 +81,17 @@ void TxToJSON(const CTransaction& tx, const uint256 hashBlock, UniValue& entry)
|
||||||
o.push_back(Pair("hex", HexStr(txin.scriptSig.begin(), txin.scriptSig.end())));
|
o.push_back(Pair("hex", HexStr(txin.scriptSig.begin(), txin.scriptSig.end())));
|
||||||
in.push_back(Pair("scriptSig", o));
|
in.push_back(Pair("scriptSig", o));
|
||||||
}
|
}
|
||||||
|
if (!tx.wit.IsNull()) {
|
||||||
|
if (!tx.wit.vtxinwit[i].IsNull()) {
|
||||||
|
UniValue txinwitness(UniValue::VARR);
|
||||||
|
for (unsigned int j = 0; j < tx.wit.vtxinwit[i].scriptWitness.stack.size(); j++) {
|
||||||
|
std::vector<unsigned char> item = tx.wit.vtxinwit[i].scriptWitness.stack[j];
|
||||||
|
txinwitness.push_back(HexStr(item.begin(), item.end()));
|
||||||
|
}
|
||||||
|
in.push_back(Pair("txinwitness", txinwitness));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
in.push_back(Pair("sequence", (int64_t)txin.nSequence));
|
in.push_back(Pair("sequence", (int64_t)txin.nSequence));
|
||||||
vin.push_back(in);
|
vin.push_back(in);
|
||||||
}
|
}
|
||||||
|
@ -134,7 +148,8 @@ UniValue getrawtransaction(const UniValue& params, bool fHelp)
|
||||||
"{\n"
|
"{\n"
|
||||||
" \"hex\" : \"data\", (string) The serialized, hex-encoded data for 'txid'\n"
|
" \"hex\" : \"data\", (string) The serialized, hex-encoded data for 'txid'\n"
|
||||||
" \"txid\" : \"id\", (string) The transaction id (same as provided)\n"
|
" \"txid\" : \"id\", (string) The transaction id (same as provided)\n"
|
||||||
" \"size\" : n, (numeric) The transaction size\n"
|
" \"hash\" : \"id\", (string) The transaction hash (differs from txid for witness transactions)\n"
|
||||||
|
" \"size\" : n, (numeric) The serialized transaction size\n"
|
||||||
" \"version\" : n, (numeric) The version\n"
|
" \"version\" : n, (numeric) The version\n"
|
||||||
" \"locktime\" : ttt, (numeric) The lock time\n"
|
" \"locktime\" : ttt, (numeric) The lock time\n"
|
||||||
" \"vin\" : [ (array of json objects)\n"
|
" \"vin\" : [ (array of json objects)\n"
|
||||||
|
@ -146,6 +161,7 @@ UniValue getrawtransaction(const UniValue& params, bool fHelp)
|
||||||
" \"hex\": \"hex\" (string) hex\n"
|
" \"hex\": \"hex\" (string) hex\n"
|
||||||
" },\n"
|
" },\n"
|
||||||
" \"sequence\": n (numeric) The script sequence number\n"
|
" \"sequence\": n (numeric) The script sequence number\n"
|
||||||
|
" \"txinwitness\": [\"hex\", ...] (array of string) hex-encoded witness data (if any)\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
" ,...\n"
|
" ,...\n"
|
||||||
" ],\n"
|
" ],\n"
|
||||||
|
@ -443,6 +459,7 @@ UniValue decoderawtransaction(const UniValue& params, bool fHelp)
|
||||||
"\nResult:\n"
|
"\nResult:\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" \"txid\" : \"id\", (string) The transaction id\n"
|
" \"txid\" : \"id\", (string) The transaction id\n"
|
||||||
|
" \"hash\" : \"id\", (string) The transaction hash (differs from txid for witness transactions)\n"
|
||||||
" \"size\" : n, (numeric) The transaction size\n"
|
" \"size\" : n, (numeric) The transaction size\n"
|
||||||
" \"version\" : n, (numeric) The version\n"
|
" \"version\" : n, (numeric) The version\n"
|
||||||
" \"locktime\" : ttt, (numeric) The lock time\n"
|
" \"locktime\" : ttt, (numeric) The lock time\n"
|
||||||
|
@ -454,6 +471,7 @@ UniValue decoderawtransaction(const UniValue& params, bool fHelp)
|
||||||
" \"asm\": \"asm\", (string) asm\n"
|
" \"asm\": \"asm\", (string) asm\n"
|
||||||
" \"hex\": \"hex\" (string) hex\n"
|
" \"hex\": \"hex\" (string) hex\n"
|
||||||
" },\n"
|
" },\n"
|
||||||
|
" \"txinwitness\": [\"hex\", ...] (array of string) hex-encoded witness data (if any)\n"
|
||||||
" \"sequence\": n (numeric) The script sequence number\n"
|
" \"sequence\": n (numeric) The script sequence number\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
" ,...\n"
|
" ,...\n"
|
||||||
|
|
Loading…
Reference in a new issue