Merge d73245abc7 into merged_master (Bitcoin PR bitcoin/bitcoin#29120)

This commit is contained in:
ivanlele 2026-02-19 13:25:49 +00:00
commit ac016af13b
No known key found for this signature in database
2 changed files with 26 additions and 4 deletions

View file

@ -647,7 +647,7 @@ void SetupServerArgs(ArgsManager& argsman)
MAX_OP_RETURN_RELAY),
ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
argsman.AddArg("-mempoolfullrbf", strprintf("Accept transaction replace-by-fee without requiring replaceability signaling (default: %u)", DEFAULT_MEMPOOL_FULL_RBF), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
argsman.AddArg("-permitbaremultisig", strprintf("Relay non-P2SH multisig (default: %u)", DEFAULT_PERMIT_BAREMULTISIG), ArgsManager::ALLOW_ANY,
argsman.AddArg("-permitbaremultisig", strprintf("Relay transactions creating non-P2SH multisig outputs (default: %u)", DEFAULT_PERMIT_BAREMULTISIG), ArgsManager::ALLOW_ANY,
OptionsCategory::NODE_RELAY);
argsman.AddArg("-minrelaytxfee=<amt>", strprintf("Fees (in %s/kvB) smaller than this are considered zero fee for relaying, mining and transaction creation (default: %s)",
CURRENCY_UNIT, FormatMoney(DEFAULT_MIN_RELAY_TX_FEE)), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);

View file

@ -13,7 +13,7 @@ from test_framework.messages import (
MAX_BIP125_RBF_SEQUENCE,
COIN,
COutPoint,
# CTransaction,
CTransaction,
CTxIn,
# CTxInWitness,
CTxOut,
@ -28,7 +28,9 @@ from test_framework.script import (
OP_0,
OP_HASH160,
OP_RETURN,
# OP_TRUE,
OP_TRUE,
SIGHASH_ALL,
sign_input_legacy,
)
from test_framework.script_util import (
# DUMMY_MIN_OP_RETURN_SCRIPT,
@ -36,7 +38,7 @@ from test_framework.script_util import (
# MIN_PADDING,
MIN_STANDARD_TX_NONWITNESS_SIZE,
script_to_p2sh_script,
# script_to_p2wsh_script,
script_to_p2wsh_script,
)
from test_framework.util import (
assert_equal,
@ -376,5 +378,25 @@ class MempoolAcceptanceTest(BitcoinTestFramework):
# CVE-2017-12842 does not affect elements transactions
assert_equal(MIN_STANDARD_TX_NONWITNESS_SIZE - 1, 64)
self.log.info('Spending a confirmed bare multisig is okay')
address = self.wallet.get_address()
tx = tx_from_hex(raw_tx_reference)
privkey, pubkey = generate_keypair()
tx.vout[0].scriptPubKey = keys_to_multisig_script([pubkey] * 3, k=1) # Some bare multisig script (1-of-3)
tx.rehash()
self.generateblock(node, address, [tx.serialize().hex()])
tx_spend = CTransaction()
tx_spend.vin.append(CTxIn(COutPoint(tx.sha256, 0), b""))
tx_spend.vout.append(CTxOut(tx.vout[0].nValue.getAmount() - int(fee*COIN), script_to_p2wsh_script(CScript([OP_TRUE]))))
tx_spend.vout.append(CTxOut(int(fee*COIN), b''))
tx_spend.rehash()
sign_input_legacy(tx_spend, 0, tx.vout[0].scriptPubKey, privkey, sighash_type=SIGHASH_ALL)
tx_spend.vin[0].scriptSig = bytes(CScript([OP_0])) + tx_spend.vin[0].scriptSig
self.check_mempool_result(
result_expected=[{'txid': tx_spend.rehash(), 'allowed': True, 'vsize': tx_spend.get_vsize(), 'fees': { 'base': Decimal('0.00000700')}}],
rawtxs=[tx_spend.serialize().hex()],
maxfeerate=0,
)
if __name__ == '__main__':
MempoolAcceptanceTest().main()