|
|
|
@ -52,7 +52,8 @@ ReadStatus PartiallyDownloadedBlock::InitData(const CBlockHeaderAndShortTxIDs& c
|
|
|
|
|
if (cmpctblock.shorttxids.size() + cmpctblock.prefilledtxn.size() > MAX_BLOCK_WEIGHT / MIN_SERIALIZABLE_TRANSACTION_WEIGHT)
|
|
|
|
|
return READ_STATUS_INVALID;
|
|
|
|
|
|
|
|
|
|
assert(header.IsNull() && txn_available.empty());
|
|
|
|
|
if (!header.IsNull() || !txn_available.empty()) return READ_STATUS_INVALID;
|
|
|
|
|
|
|
|
|
|
header = cmpctblock.header;
|
|
|
|
|
txn_available.resize(cmpctblock.BlockTxCount());
|
|
|
|
|
|
|
|
|
@ -167,14 +168,18 @@ ReadStatus PartiallyDownloadedBlock::InitData(const CBlockHeaderAndShortTxIDs& c
|
|
|
|
|
return READ_STATUS_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PartiallyDownloadedBlock::IsTxAvailable(size_t index) const {
|
|
|
|
|
assert(!header.IsNull());
|
|
|
|
|
bool PartiallyDownloadedBlock::IsTxAvailable(size_t index) const
|
|
|
|
|
{
|
|
|
|
|
if (header.IsNull()) return false;
|
|
|
|
|
|
|
|
|
|
assert(index < txn_available.size());
|
|
|
|
|
return txn_available[index] != nullptr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ReadStatus PartiallyDownloadedBlock::FillBlock(CBlock& block, const std::vector<CTransactionRef>& vtx_missing) {
|
|
|
|
|
assert(!header.IsNull());
|
|
|
|
|
ReadStatus PartiallyDownloadedBlock::FillBlock(CBlock& block, const std::vector<CTransactionRef>& vtx_missing)
|
|
|
|
|
{
|
|
|
|
|
if (header.IsNull()) return READ_STATUS_INVALID;
|
|
|
|
|
|
|
|
|
|
uint256 hash = header.GetHash();
|
|
|
|
|
block = header;
|
|
|
|
|
block.vtx.resize(txn_available.size());
|
|
|
|
|