static void parseInput( const Block *block, const uint8_t *&p, const uint8_t *txHash, uint64_t inputIndex ) { if(!skip) { startInput(p); } auto upTXHash = p; const Chunk *upTX = 0; if(gNeedTXHash && !skip) { auto isGenTX = (0==memcmp(gNullHash.v, upTXHash, sizeof(gNullHash))); if(likely(false==isGenTX)) { auto i = gTXOMap.find(upTXHash); if(unlikely(gTXOMap.end()==i)) { errFatal("failed to locate upstream transaction"); } upTX = i->second; } } SKIP(uint256_t, dummyUpTXhash, p); LOAD(uint32_t, upOutputIndex, p); LOAD_VARINT(inputScriptSize, p); if(!skip && 0!=upTX) { auto inputScript = p; auto upTXOutputs = upTX->getData(); parseOutputs<false, true>( upTXOutputs, upTXHash, upOutputIndex, txHash, inputIndex, inputScript, inputScriptSize ); upTX->releaseData(); } p += inputScriptSize; SKIP(uint32_t, sequence, p); if(!skip) { endInput(p); } }
static void initHashtables() { info("initializing hash tables"); gTXOMap.setEmptyKey(empty); gBlockMap.setEmptyKey(empty); auto kAvgBytesPerTX = 542.0; auto nbTxEstimate = (size_t)(1.1 * (gChainSize / kAvgBytesPerTX)); if(gNeedUpstream) { gTXOMap.resize(nbTxEstimate); } auto kAvgBytesPerBlock = 140000; auto nbBlockEstimate = (size_t)(1.1 * (gChainSize / kAvgBytesPerBlock)); gBlockMap.resize(nbBlockEstimate); info("estimated number of blocks = %.2fK", 1e-3*nbBlockEstimate); info("estimated number of transactions = %.2fM", 1e-6*nbTxEstimate); info("done initializing hash tables - mem = %.3f Gigs", getMem()); }
static void initHashtables() { info("initializing hash tables"); gTXOMap.setEmptyKey(empty); gBlockMap.setEmptyKey(empty); gChainSize = 0; for(const auto &map : mapVec) { gChainSize += map.size; } auto txPerBytes = (52149122.0 / 26645195995.0); auto nbTxEstimate = (size_t)(1.1 * txPerBytes * gChainSize); gTXOMap.resize(nbTxEstimate); auto blocksPerBytes = (331284.0 / 26645195995.0); auto nbBlockEstimate = (size_t)(1.1 * blocksPerBytes * gChainSize); gBlockMap.resize(nbBlockEstimate); info("estimated number of blocks = %.2fK", 1e-3*nbBlockEstimate); info("estimated number of transactions = %.2fM", 1e-6*nbTxEstimate); }