MCPcopy Create free account
hub / github.com/ElementsProject/elements / blockToJSON

Function blockToJSON

src/rpc/blockchain.cpp:255–290  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

253}
254
255UniValue blockToJSON(const CBlock& block, const CBlockIndex* tip, const CBlockIndex* blockindex, TxVerbosity verbosity)
256{
257 UniValue result = blockheaderToJSON(tip, blockindex);
258
259 result.pushKV("strippedsize", (int)::GetSerializeSize(block, PROTOCOL_VERSION | SERIALIZE_TRANSACTION_NO_WITNESS));
260 result.pushKV("size", (int)::GetSerializeSize(block, PROTOCOL_VERSION));
261 result.pushKV("weight", (int)::GetBlockWeight(block));
262 UniValue txs(UniValue::VARR);
263
264 switch (verbosity) {
265 case TxVerbosity::SHOW_TXID:
266 for (const CTransactionRef& tx : block.vtx) {
267 txs.push_back(tx->GetHash().GetHex());
268 }
269 break;
270
271 case TxVerbosity::SHOW_DETAILS:
272 case TxVerbosity::SHOW_DETAILS_AND_PREVOUT:
273 CBlockUndo blockUndo;
274 const bool have_undo{WITH_LOCK(::cs_main, return !IsBlockPruned(blockindex) && UndoReadFromDisk(blockUndo, blockindex))};
275
276 for (size_t i = 0; i < block.vtx.size(); ++i) {
277 const CTransactionRef& tx = block.vtx.at(i);
278 // coinbase transaction (i.e. i == 0) doesn't have undo data
279 const CTxUndo* txundo = (have_undo && i > 0) ? &blockUndo.vtxundo.at(i - 1) : nullptr;
280 UniValue objTx(UniValue::VOBJ);
281 TxToUniv(*tx, uint256(), objTx, true, RPCSerializationFlags(), txundo, verbosity);
282 txs.push_back(std::move(objTx));
283 }
284 break;
285 }
286
287 result.pushKV("tx", std::move(txs));
288
289 return result;
290}
291
292static RPCHelpMan getblockcount()
293{

Callers 4

rest_blockFunction · 0.85
getblockFunction · 0.85
BlockToJsonVerboseFunction · 0.85
BlockToJsonVerboseWriteFunction · 0.85

Calls 13

blockheaderToJSONFunction · 0.85
GetSerializeSizeFunction · 0.85
GetBlockWeightFunction · 0.85
IsBlockPrunedFunction · 0.85
UndoReadFromDiskFunction · 0.85
TxToUnivFunction · 0.85
RPCSerializationFlagsFunction · 0.85
uint256Class · 0.50
pushKVMethod · 0.45
push_backMethod · 0.45
GetHexMethod · 0.45
GetHashMethod · 0.45

Tested by

no test coverage detected