test_double_kill()
Documentation for tests/frontier/opcodes/test_selfdestruct.py::test_double_kill@8db70f93.
Generate fixtures for these test cases for Homestead with:
fill -v tests/frontier/opcodes/test_selfdestruct.py::test_double_kill --fork Homestead
Test that when two transactions attempt to destruct a contract, the second
transaction actually resurrects the contract as an empty account (prior to
Spurious Dragon).
Source code in tests/frontier/opcodes/test_selfdestruct.py
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 | @pytest.mark.valid_from("Frontier")
@pytest.mark.valid_before("SpuriousDragon")
def test_double_kill(
blockchain_test: BlockchainTestFiller, pre: Alloc
) -> None:
"""
Test that when two transactions attempt to destruct a contract, the second
transaction actually resurrects the contract as an empty account (prior to
Spurious Dragon).
"""
sender = pre.fund_eoa()
deploy_code = Op.SELFDESTRUCT(Op.ADDRESS)
initcode = Initcode(deploy_code=deploy_code)
create_tx = Transaction(
gas_limit=100_000,
protected=False,
to=None,
data=initcode,
sender=sender,
)
block_1 = Block(txs=[create_tx])
first_kill = Transaction(
gas_limit=100_000,
protected=False,
to=create_tx.created_contract,
sender=sender,
)
second_kill = Transaction(
gas_limit=100_000,
protected=False,
to=create_tx.created_contract,
sender=sender,
)
block_2 = Block(txs=[first_kill, second_kill])
post = {
create_tx.created_contract: Account(
nonce=0,
balance=0,
code=b"",
storage={},
),
}
blockchain_test(pre=pre, post=post, blocks=[block_1, block_2])
|
Parametrized Test Cases
This test generates 1 parametrized test case across 2 forks.