mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-17 13:07:54 +02:00
Merge da1e6d5911 into merged_master (Bitcoin PR bitcoin/bitcoin#14604)
This commit is contained in:
commit
0de2551429
1 changed files with 19 additions and 2 deletions
|
|
@ -597,6 +597,8 @@ class FullBlockTest(BitcoinTestFramework):
|
|||
b44.nTime = self.tip.nTime + 1
|
||||
b44.hashPrevBlock = self.tip.sha256
|
||||
b44.vtx.append(coinbase)
|
||||
tx = self.create_and_sign_transaction(out[14], 1)
|
||||
b44.vtx.append(tx)
|
||||
b44.block_height = height
|
||||
b44.hashMerkleRoot = b44.calc_merkle_root()
|
||||
b44.solve()
|
||||
|
|
@ -687,7 +689,7 @@ class FullBlockTest(BitcoinTestFramework):
|
|||
# Test block timestamps
|
||||
# -> b31 (8) -> b33 (9) -> b35 (10) -> b39 (11) -> b42 (12) -> b43 (13) -> b53 (14) -> b55 (15)
|
||||
# \-> b54 (15)
|
||||
#
|
||||
# -> b44 (14)\-> b48 ()
|
||||
self.move_tip(43)
|
||||
b53 = self.next_block(53, spend=out[14])
|
||||
self.send_blocks([b53], False)
|
||||
|
|
@ -707,6 +709,21 @@ class FullBlockTest(BitcoinTestFramework):
|
|||
self.send_blocks([b55], True)
|
||||
self.save_spendable_output()
|
||||
|
||||
# The block which was previously rejected because of being "too far(3 hours)" must be accepted 2 hours later.
|
||||
# The new block is only 1 hour into future now and we must reorg onto to the new longer chain.
|
||||
# The new bestblock b48p is invalidated manually.
|
||||
# -> b31 (8) -> b33 (9) -> b35 (10) -> b39 (11) -> b42 (12) -> b43 (13) -> b53 (14) -> b55 (15)
|
||||
# \-> b54 (15)
|
||||
# -> b44 (14)\-> b48 () -> b48p ()
|
||||
self.log.info("Accept a previously rejected future block at a later time")
|
||||
node.setmocktime(int(time.time()) + 2*60*60)
|
||||
self.move_tip(48)
|
||||
self.block_heights[b48.sha256] = self.block_heights[b44.sha256] + 1 # b48 is a parent of b44
|
||||
b48p = self.next_block("48p")
|
||||
self.send_blocks([b48, b48p], success=True) # Reorg to the longer chain
|
||||
node.invalidateblock(b48p.hash) # mark b48p as invalid
|
||||
node.setmocktime(0)
|
||||
|
||||
# Test Merkle tree malleability
|
||||
#
|
||||
# -> b42 (12) -> b43 (13) -> b53 (14) -> b55 (15) -> b57p2 (16)
|
||||
|
|
@ -1345,7 +1362,7 @@ class FullBlockTest(BitcoinTestFramework):
|
|||
tx.calc_sha256()
|
||||
|
||||
# sign a transaction, using the key we know about
|
||||
# this signs input 0 in tx, which is assumed to be spending output n in spend_tx
|
||||
# this signs input 0 in tx, which is assumed to be spending output 0 in spend_tx
|
||||
def sign_tx(self, tx, spend_tx):
|
||||
scriptPubKey = bytearray(spend_tx.vout[0].scriptPubKey)
|
||||
if (scriptPubKey[0] == OP_TRUE): # an anyone-can-spend
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue