MCPcopy Create free account
hub / github.com/LUX-Core/lux / BlockToString

Function BlockToString

src/qt/blockexplorer.cpp:323–412  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

321}
322
323static std::string BlockToString(CBlockIndex* pBlock)
324{
325 if (!pBlock)
326 return "";
327
328 CBlock block;
329 ReadBlockFromDisk(block, pBlock, Params().GetConsensus());
330
331 std::string TxLabels[] = {_("Hash"), _("From"), _("Amount"), _("To"), _("Amount")};
332 std::string TxContent = table + "<thead>" + makeHTMLTableRow(TxLabels, sizeof(TxLabels) / sizeof(std::string)) + "</thead>";
333 TxContent += "<tbody class=\"b\">";
334
335 CAmount InVolume = 0, OutVolume = 0;
336 for (size_t i = 0; i < block.vtx.size(); i++) {
337 const CTransaction& tx = block.vtx[i];
338 if (!tx.IsCoinBase()) {
339 InVolume += getTxIn(tx);
340 OutVolume += tx.GetValueOut();
341 }
342 TxContent += TxToRow(tx, &block);
343 }
344 TxContent += "</tbody></table>";
345
346 CAmount Fees = InVolume - OutVolume;
347 CAmount Generated;
348 if (pBlock->nHeight == 0)
349 Generated = OutVolume;
350 else if (pBlock->IsProofOfStake())
351 Generated = GetProofOfStakeReward(0, pBlock->nHeight);
352 else
353 Generated = GetProofOfWorkReward(0, pBlock->nHeight);
354
355 std::string BlockContentCells[] = {
356 _("Type"), pBlock->IsProofOfStake() ? "PoS" : "PoW",
357 _("Timestamp"), TimeToString(block.nTime),
358 _("Generated"), ValueToString(Generated),
359 //_("Value Out"), ValueToString(OutVolume),
360 _("Value In"), ValueToString(InVolume),
361 _("Fees"), Fees > 0 ? ValueToString(Fees) : "-",
362 _("Size"), itostr(GetSerializeSize(block, SER_NETWORK, PROTOCOL_VERSION)),
363 _("Difficulty"), strprintf("%.4f", GetDifficulty(pBlock)),
364 _("Bits"), "<tt>" + strprintf("%08x", block.nBits) + "</tt>",
365 _("Nonce"), "<tt>" + strprintf("%08x", block.nNonce) + "</tt>",
366 _("Version"), "<tt>" + strprintf("%08x", block.nVersion) + "</tt>",
367 _("Hash"), "<tt>" + block.GetHash(pBlock->nHeight).GetHex() + "</tt>",
368 _("Merkle Root"), "<tt>" + block.hashMerkleRoot.GetHex() + "</tt>",
369 _("State Root"), "<tt>" + block.hashStateRoot.GetHex() + "</tt>",
370 _("UTXO Root"), "<tt>" + block.hashUTXORoot.GetHex() + "</tt>",
371 _("Number of Transactions"), itostr(block.vtx.size())
372 //_("Miner Signature"), "<tt>" + block.MinerSignature.ToString() + "</tt>"
373 };
374
375 std::string BlockContent = makeHTMLTable(BlockContentCells, sizeof(BlockContentCells) / (2 * sizeof(std::string)), 2);
376
377 std::string Content;
378 Content += "<h2><a class=\"nav\" href=";
379 Content += itostr(pBlock->nHeight - 1);
380 Content += ">◄&nbsp;</a>";

Callers 1

setBlockMethod · 0.85

Calls 15

ReadBlockFromDiskFunction · 0.85
_Function · 0.85
makeHTMLTableRowFunction · 0.85
getTxInFunction · 0.85
TxToRowFunction · 0.85
GetProofOfStakeRewardFunction · 0.85
GetProofOfWorkRewardFunction · 0.85
TimeToStringFunction · 0.85
ValueToStringFunction · 0.85
itostrFunction · 0.85
GetSerializeSizeFunction · 0.85
GetDifficultyFunction · 0.85

Tested by

no test coverage detected