mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-13 12:33:42 +02:00
Merge d24318a40c into merged_master (Bitcoin PR bitcoin/bitcoin#24941)
This commit is contained in:
commit
33fdfa36b1
2 changed files with 9 additions and 10 deletions
|
|
@ -112,6 +112,7 @@ class BIP68_112_113Test(BitcoinTestFramework):
|
|||
tx.nVersion = txversion
|
||||
self.miniwallet.sign_tx(tx)
|
||||
tx.vin[0].scriptSig = CScript([-1, OP_CHECKSEQUENCEVERIFY, OP_DROP] + list(CScript(tx.vin[0].scriptSig)))
|
||||
tx.rehash()
|
||||
return tx
|
||||
|
||||
def create_bip112emptystack(self, input, txversion):
|
||||
|
|
@ -119,6 +120,7 @@ class BIP68_112_113Test(BitcoinTestFramework):
|
|||
tx.nVersion = txversion
|
||||
self.miniwallet.sign_tx(tx)
|
||||
tx.vin[0].scriptSig = CScript([OP_CHECKSEQUENCEVERIFY] + list(CScript(tx.vin[0].scriptSig)))
|
||||
tx.rehash()
|
||||
return tx
|
||||
|
||||
def send_generic_input_tx(self, coinbases):
|
||||
|
|
@ -136,7 +138,6 @@ class BIP68_112_113Test(BitcoinTestFramework):
|
|||
tx.nVersion = txversion
|
||||
tx.vin[0].nSequence = locktime + locktime_delta
|
||||
self.miniwallet.sign_tx(tx)
|
||||
tx.rehash()
|
||||
txs.append({'tx': tx, 'sdf': sdf, 'stf': stf})
|
||||
|
||||
return txs
|
||||
|
|
@ -339,20 +340,16 @@ class BIP68_112_113Test(BitcoinTestFramework):
|
|||
# BIP 113 tests should now fail regardless of version number if nLockTime isn't satisfied by new rules
|
||||
bip113tx_v1.nLockTime = self.last_block_time - 600 * 5 # = MTP of prior block (not <) but < time put on current block
|
||||
self.miniwallet.sign_tx(bip113tx_v1)
|
||||
bip113tx_v1.rehash()
|
||||
bip113tx_v2.nLockTime = self.last_block_time - 600 * 5 # = MTP of prior block (not <) but < time put on current block
|
||||
self.miniwallet.sign_tx(bip113tx_v2)
|
||||
bip113tx_v2.rehash()
|
||||
for bip113tx in [bip113tx_v1, bip113tx_v2]:
|
||||
self.send_blocks([self.create_test_block([bip113tx])], success=False, reject_reason='bad-txns-nonfinal')
|
||||
|
||||
# BIP 113 tests should now pass if the locktime is < MTP
|
||||
bip113tx_v1.nLockTime = self.last_block_time - 600 * 5 - 1 # < MTP of prior block
|
||||
self.miniwallet.sign_tx(bip113tx_v1)
|
||||
bip113tx_v1.rehash()
|
||||
bip113tx_v2.nLockTime = self.last_block_time - 600 * 5 - 1 # < MTP of prior block
|
||||
self.miniwallet.sign_tx(bip113tx_v2)
|
||||
bip113tx_v2.rehash()
|
||||
for bip113tx in [bip113tx_v1, bip113tx_v2]:
|
||||
self.send_blocks([self.create_test_block([bip113tx])])
|
||||
self.nodes[0].invalidateblock(self.nodes[0].getbestblockhash())
|
||||
|
|
@ -477,7 +474,6 @@ class BIP68_112_113Test(BitcoinTestFramework):
|
|||
for tx in [tx['tx'] for tx in bip112txs_vary_OP_CSV_v2 if not tx['sdf'] and tx['stf']]:
|
||||
tx.vin[0].nSequence = BASE_RELATIVE_LOCKTIME | SEQ_TYPE_FLAG
|
||||
self.miniwallet.sign_tx(tx)
|
||||
tx.rehash()
|
||||
time_txs.append(tx)
|
||||
|
||||
self.send_blocks([self.create_test_block(time_txs)])
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ class MiniWallet:
|
|||
if not fixed_length:
|
||||
break
|
||||
tx.vin[0].scriptSig = CScript([der_sig + bytes(bytearray([SIGHASH_ALL]))])
|
||||
tx.rehash()
|
||||
|
||||
def generate(self, num_blocks, **kwargs):
|
||||
"""Generate blocks with coinbase outputs to the internal address, and append the outputs to the internal list"""
|
||||
|
|
@ -247,7 +248,8 @@ class MiniWallet:
|
|||
return tx
|
||||
|
||||
def create_self_transfer(self, *, fee_rate=Decimal("0.003"), from_node=None, utxo_to_spend=None, mempool_valid=True, locktime=0, sequence=0):
|
||||
"""Create and return a tx with the specified fee_rate. Fee may be exact or at most one satoshi higher than needed."""
|
||||
"""Create and return a tx with the specified fee_rate. Fee may be exact or at most one satoshi higher than needed.
|
||||
Checking mempool validity via the testmempoolaccept RPC can be skipped by setting mempool_valid to False."""
|
||||
from_node = from_node or self._test_node
|
||||
utxo_to_spend = utxo_to_spend or self.get_utxo()
|
||||
if self._priv_key is None:
|
||||
|
|
@ -275,12 +277,13 @@ class MiniWallet:
|
|||
tx.wit.vtxinwit[0].scriptWitness.stack = [CScript([OP_TRUE]), bytes([LEAF_VERSION_TAPSCRIPT]) + self._internal_key]
|
||||
tx_hex = tx.serialize().hex()
|
||||
|
||||
tx_info = from_node.testmempoolaccept([tx_hex])[0]
|
||||
assert_equal(mempool_valid, tx_info['allowed'])
|
||||
if mempool_valid:
|
||||
tx_info = from_node.testmempoolaccept([tx_hex])[0]
|
||||
assert_equal(tx_info['allowed'], True)
|
||||
assert_equal(tx_info['vsize'], vsize)
|
||||
assert_equal(tx_info['fees']['base'], utxo_to_spend['value'] - Decimal(send_value) / COIN)
|
||||
return {'txid': tx_info['txid'], 'wtxid': tx_info['wtxid'], 'hex': tx_hex, 'tx': tx}
|
||||
|
||||
return {'txid': tx.rehash(), 'wtxid': tx.getwtxid(), 'hex': tx_hex, 'tx': tx}
|
||||
|
||||
def sendrawtransaction(self, *, from_node, tx_hex, **kwargs):
|
||||
txid = from_node.sendrawtransaction(hexstring=tx_hex, **kwargs)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue