mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-11 14:38:29 +01:00
Exclude witness transactions in addPackageTxs() pre-segwit activation
This commit is contained in:
@@ -236,14 +236,19 @@ bool BlockAssembler::TestPackage(uint64_t packageSize, int64_t packageSigOpsCost
|
||||
return true;
|
||||
}
|
||||
|
||||
// Block size and sigops have already been tested. Check that all transactions
|
||||
// are final.
|
||||
bool BlockAssembler::TestPackageFinalityAndSerializedSize(const CTxMemPool::setEntries& package)
|
||||
// Perform transaction-level checks before adding to block:
|
||||
// - transaction finality (locktime)
|
||||
// - premature witness (in case segwit transactions are added to mempool before
|
||||
// segwit activation)
|
||||
// - serialized size (in case -blockmaxsize is in use)
|
||||
bool BlockAssembler::TestPackageTransactions(const CTxMemPool::setEntries& package)
|
||||
{
|
||||
uint64_t nPotentialBlockSize = nBlockSize; // only used with fNeedSizeAccounting
|
||||
BOOST_FOREACH (const CTxMemPool::txiter it, package) {
|
||||
if (!IsFinalTx(it->GetTx(), nHeight, nLockTimeCutoff))
|
||||
return false;
|
||||
if (!fIncludeWitness && !it->GetTx().wit.IsNull())
|
||||
return false;
|
||||
if (fNeedSizeAccounting) {
|
||||
uint64_t nTxSize = ::GetSerializeSize(it->GetTx(), SER_NETWORK, PROTOCOL_VERSION);
|
||||
if (nPotentialBlockSize + nTxSize >= nBlockMaxSize) {
|
||||
@@ -542,7 +547,7 @@ void BlockAssembler::addPackageTxs()
|
||||
ancestors.insert(iter);
|
||||
|
||||
// Test if all tx's are Final
|
||||
if (!TestPackageFinalityAndSerializedSize(ancestors)) {
|
||||
if (!TestPackageTransactions(ancestors)) {
|
||||
if (fUsingModified) {
|
||||
mapModifiedTx.get<ancestor_score>().erase(modit);
|
||||
failedTx.insert(iter);
|
||||
|
||||
Reference in New Issue
Block a user