Changeset View
Changeset View
Standalone View
Standalone View
test/functional/feature_block.py
#!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||
# Copyright (c) 2015-2017 The Bitcoin Core developers | # Copyright (c) 2015-2017 The Bitcoin Core developers | ||||
# Copyright (c) 2019 The Bitcoin developers | # Copyright (c) 2019 The Bitcoin developers | ||||
# Distributed under the MIT software license, see the accompanying | # Distributed under the MIT software license, see the accompanying | ||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. | # file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
"""Test block processing.""" | """Test block processing.""" | ||||
import copy | import copy | ||||
import struct | import struct | ||||
import time | import time | ||||
from data import invalid_txs | |||||
from test_framework.blocktools import ( | from test_framework.blocktools import ( | ||||
create_block, | create_block, | ||||
create_coinbase, | create_coinbase, | ||||
create_tx_with_script, | create_tx_with_script, | ||||
make_conform_to_ctor, | make_conform_to_ctor, | ||||
) | ) | ||||
from test_framework.cdefs import LEGACY_MAX_BLOCK_SIZE | from test_framework.cdefs import LEGACY_MAX_BLOCK_SIZE | ||||
from test_framework.key import ECKey | from test_framework.key import ECKey | ||||
from test_framework.messages import ( | from test_framework.messages import ( | ||||
CBlock, | |||||
COIN, | COIN, | ||||
CBlock, | |||||
COutPoint, | COutPoint, | ||||
CTransaction, | CTransaction, | ||||
CTxIn, | CTxIn, | ||||
CTxOut, | CTxOut, | ||||
uint256_from_compact, | uint256_from_compact, | ||||
uint256_from_str, | uint256_from_str, | ||||
) | ) | ||||
from test_framework.p2p import P2PDataStore | from test_framework.p2p import P2PDataStore | ||||
from test_framework.script import ( | from test_framework.script import ( | ||||
CScript, | |||||
OP_ELSE, | OP_ELSE, | ||||
OP_ENDIF, | OP_ENDIF, | ||||
OP_FALSE, | OP_FALSE, | ||||
OP_IF, | OP_IF, | ||||
OP_INVALIDOPCODE, | OP_INVALIDOPCODE, | ||||
OP_RETURN, | OP_RETURN, | ||||
OP_TRUE, | OP_TRUE, | ||||
SIGHASH_ALL, | SIGHASH_ALL, | ||||
SIGHASH_FORKID, | SIGHASH_FORKID, | ||||
CScript, | |||||
SignatureHashForkId, | SignatureHashForkId, | ||||
) | ) | ||||
from test_framework.test_framework import BitcoinTestFramework | from test_framework.test_framework import BitcoinTestFramework | ||||
from test_framework.txtools import pad_tx | from test_framework.txtools import pad_tx | ||||
from test_framework.util import assert_equal | from test_framework.util import assert_equal | ||||
from data import invalid_txs | |||||
# Use this class for tests that require behavior other than normal p2p behavior. | # Use this class for tests that require behavior other than normal p2p behavior. | ||||
# For now, it is used to serialize a bloated varint (b64). | # For now, it is used to serialize a bloated varint (b64). | ||||
class CBrokenBlock(CBlock): | class CBrokenBlock(CBlock): | ||||
def initialize(self, base_block): | def initialize(self, base_block): | ||||
self.vtx = copy.deepcopy(base_block.vtx) | self.vtx = copy.deepcopy(base_block.vtx) | ||||
self.hashMerkleRoot = self.calc_merkle_root() | self.hashMerkleRoot = self.calc_merkle_root() | ||||
▲ Show 20 Lines • Show All 1,248 Lines • Show Last 20 Lines |