Skip to content

Commit bf7da58

Browse files
committed
convert test to latest notation
1 parent 3cdb648 commit bf7da58

File tree

5 files changed

+395
-484
lines changed

5 files changed

+395
-484
lines changed

tests/cancun/eip1153_tstore/test_basic_tload.py

Lines changed: 105 additions & 166 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,7 @@
77

88
import pytest
99

10-
from ethereum_test_tools import (
11-
Account,
12-
Address,
13-
Environment,
14-
StateTestFiller,
15-
TestAddress,
16-
Transaction,
17-
)
10+
from ethereum_test_tools import Account, Address, Alloc, Environment, StateTestFiller, Transaction
1811
from ethereum_test_tools.vm.opcode import Opcodes as Op
1912

2013
from .spec import Spec, ref_spec_1153
@@ -26,6 +19,7 @@
2619
@pytest.mark.valid_from("Cancun")
2720
def test_basic_tload_transaction_begin(
2821
state_test: StateTestFiller,
22+
pre: Alloc,
2923
):
3024
"""
3125
Ported .json vectors:
@@ -36,38 +30,27 @@ def test_basic_tload_transaction_begin(
3630
slot_tload_at_transaction_begin_result = 1
3731
slot_code_worked = 2
3832

39-
address_to = Address("A00000000000000000000000000000000000000A")
40-
pre = {
33+
address_to = pre.deploy_contract(
34+
code=Op.JUMPDEST()
35+
# 01 test
36+
+ Op.SSTORE(slot_tload_at_transaction_begin_result, Op.TLOAD(0))
37+
+ Op.SSTORE(slot_code_worked, 1),
38+
storage={
39+
slot_tload_at_transaction_begin_result: 0xFF,
40+
},
41+
)
42+
43+
post = {
4144
address_to: Account(
42-
balance=1000000000000000000,
43-
nonce=0,
44-
code=Op.JUMPDEST()
45-
# 01 test
46-
+ Op.SSTORE(slot_tload_at_transaction_begin_result, Op.TLOAD(0))
47-
+ Op.SSTORE(slot_code_worked, 1),
4845
storage={
49-
slot_tload_at_transaction_begin_result: 0xFF,
50-
},
51-
),
52-
TestAddress: Account(
53-
balance=7000000000000000000,
54-
nonce=0,
55-
code="0x",
56-
storage={},
57-
),
46+
slot_tload_at_transaction_begin_result: 0x00,
47+
slot_code_worked: 0x01,
48+
}
49+
)
5850
}
5951

60-
post: Dict[Address, Union[Account, object]] = {}
61-
62-
post[address_to] = Account(
63-
storage={
64-
slot_tload_at_transaction_begin_result: 0x00,
65-
slot_code_worked: 0x01,
66-
}
67-
)
68-
6952
tx = Transaction(
70-
nonce=0,
53+
sender=pre.fund_eoa(7_000_000_000_000_000_000),
7154
to=address_to,
7255
gas_price=10,
7356
data=b"",
@@ -81,6 +64,7 @@ def test_basic_tload_transaction_begin(
8164
@pytest.mark.valid_from("Cancun")
8265
def test_basic_tload_works(
8366
state_test: StateTestFiller,
67+
pre: Alloc,
8468
):
8569
"""
8670
Ported .json vectors:
@@ -94,42 +78,31 @@ def test_basic_tload_works(
9478
slot_tload_after_tstore_result_second_time = 1
9579
slot_code_worked = 2
9680

97-
address_to = Address("A00000000000000000000000000000000000000A")
98-
pre = {
81+
address_to = pre.deploy_contract(
82+
code=Op.JUMPDEST()
83+
# 02 test
84+
+ Op.TSTORE(2, tstore_value)
85+
+ Op.SSTORE(slot_tload_after_tstore_result, Op.TLOAD(2))
86+
+ Op.SSTORE(slot_tload_after_tstore_result_second_time, Op.TLOAD(2))
87+
+ Op.SSTORE(slot_code_worked, 1),
88+
storage={
89+
slot_tload_after_tstore_result: 0xFF,
90+
slot_tload_after_tstore_result_second_time: 0xFF,
91+
},
92+
)
93+
94+
post = {
9995
address_to: Account(
100-
balance=1000000000000000000,
101-
nonce=0,
102-
code=Op.JUMPDEST()
103-
# 02 test
104-
+ Op.TSTORE(2, tstore_value)
105-
+ Op.SSTORE(slot_tload_after_tstore_result, Op.TLOAD(2))
106-
+ Op.SSTORE(slot_tload_after_tstore_result_second_time, Op.TLOAD(2))
107-
+ Op.SSTORE(slot_code_worked, 1),
10896
storage={
109-
slot_tload_after_tstore_result: 0xFF,
110-
slot_tload_after_tstore_result_second_time: 0xFF,
111-
},
112-
),
113-
TestAddress: Account(
114-
balance=7000000000000000000,
115-
nonce=0,
116-
code="0x",
117-
storage={},
118-
),
97+
slot_tload_after_tstore_result: tstore_value,
98+
slot_tload_after_tstore_result_second_time: tstore_value,
99+
slot_code_worked: 0x01,
100+
}
101+
)
119102
}
120103

121-
post: Dict[Address, Union[Account, object]] = {}
122-
123-
post[address_to] = Account(
124-
storage={
125-
slot_tload_after_tstore_result: tstore_value,
126-
slot_tload_after_tstore_result_second_time: tstore_value,
127-
slot_code_worked: 0x01,
128-
}
129-
)
130-
131104
tx = Transaction(
132-
nonce=0,
105+
sender=pre.fund_eoa(7_000_000_000_000_000_000),
133106
to=address_to,
134107
gas_price=10,
135108
data=b"",
@@ -143,6 +116,7 @@ def test_basic_tload_works(
143116
@pytest.mark.valid_from("Cancun")
144117
def test_basic_tload_other_after_tstore(
145118
state_test: StateTestFiller,
119+
pre: Alloc,
146120
):
147121
"""
148122
Ported .json vectors:
@@ -155,39 +129,28 @@ def test_basic_tload_other_after_tstore(
155129
slot_tload_untouched_slot_after_tstore_result = 1
156130
slot_code_worked = 2
157131

158-
address_to = Address("A00000000000000000000000000000000000000A")
159-
pre = {
132+
address_to = pre.deploy_contract(
133+
code=Op.JUMPDEST()
134+
# 03 test
135+
+ Op.TSTORE(3, tstore_value)
136+
+ Op.SSTORE(slot_tload_untouched_slot_after_tstore_result, Op.TLOAD(0))
137+
+ Op.SSTORE(slot_code_worked, 1),
138+
storage={
139+
slot_tload_untouched_slot_after_tstore_result: 0xFF,
140+
},
141+
)
142+
143+
post = {
160144
address_to: Account(
161-
balance=1000000000000000000,
162-
nonce=0,
163-
code=Op.JUMPDEST()
164-
# 03 test
165-
+ Op.TSTORE(3, tstore_value)
166-
+ Op.SSTORE(slot_tload_untouched_slot_after_tstore_result, Op.TLOAD(0))
167-
+ Op.SSTORE(slot_code_worked, 1),
168145
storage={
169-
slot_tload_untouched_slot_after_tstore_result: 0xFF,
170-
},
171-
),
172-
TestAddress: Account(
173-
balance=7000000000000000000,
174-
nonce=0,
175-
code="0x",
176-
storage={},
177-
),
146+
slot_tload_untouched_slot_after_tstore_result: 0x00,
147+
slot_code_worked: 0x01,
148+
}
149+
)
178150
}
179151

180-
post: Dict[Address, Union[Account, object]] = {}
181-
182-
post[address_to] = Account(
183-
storage={
184-
slot_tload_untouched_slot_after_tstore_result: 0x00,
185-
slot_code_worked: 0x01,
186-
}
187-
)
188-
189152
tx = Transaction(
190-
nonce=0,
153+
sender=pre.fund_eoa(7_000_000_000_000_000_000),
191154
to=address_to,
192155
gas_price=10,
193156
data=b"",
@@ -201,6 +164,7 @@ def test_basic_tload_other_after_tstore(
201164
@pytest.mark.valid_from("Cancun")
202165
def test_basic_tload_gasprice(
203166
state_test: StateTestFiller,
167+
pre: Alloc,
204168
):
205169
"""
206170
Ported .json vectors:
@@ -212,8 +176,6 @@ def test_basic_tload_gasprice(
212176
slot_tload_zero_gas_price_result = 2
213177
slot_code_worked = 3
214178

215-
address_to = Address("A00000000000000000000000000000000000000A")
216-
217179
"""
218180
N OPNAME GAS_COST TOTAL_GAS REMAINING_GAS STACK
219181
28-1 MSTORE 2 20748 4958252 2:[4ba82f,0,]
@@ -227,57 +189,46 @@ def test_basic_tload_gasprice(
227189
"""
228190
extra_opcode_gas = 11 # mstore(3), push1(3),gas(2),push1(3)
229191

230-
pre = {
192+
address_to = pre.deploy_contract(
193+
code=Op.JUMPDEST()
194+
# 16 test
195+
+ Op.TSTORE(16, 2)
196+
+ Op.MSTORE(0, Op.GAS()) # hot load the memory to make the extra_opcode_gas be 11
197+
+ Op.MSTORE(0, Op.GAS())
198+
+ Op.TLOAD(16)
199+
+ Op.MSTORE(32, Op.GAS())
200+
+ Op.SSTORE(slot_tload_nonzero_gas_price_result, Op.SUB(Op.MLOAD(0), Op.MLOAD(32)))
201+
+ Op.SSTORE(
202+
slot_tload_nonzero_gas_price_result,
203+
Op.SUB(Op.SLOAD(slot_tload_nonzero_gas_price_result), extra_opcode_gas),
204+
)
205+
+ Op.MSTORE(0, Op.GAS())
206+
+ Op.TLOAD(5) # tload slot at 5 is 0
207+
+ Op.MSTORE(32, Op.GAS())
208+
+ Op.SSTORE(slot_tload_zero_gas_price_result, Op.SUB(Op.MLOAD(0), Op.MLOAD(32)))
209+
+ Op.SSTORE(
210+
slot_tload_zero_gas_price_result,
211+
Op.SUB(Op.SLOAD(slot_tload_zero_gas_price_result), extra_opcode_gas),
212+
)
213+
+ Op.SSTORE(slot_code_worked, 1),
214+
storage={
215+
slot_tload_nonzero_gas_price_result: 0xFF,
216+
slot_tload_zero_gas_price_result: 0xFF,
217+
},
218+
)
219+
220+
post = {
231221
address_to: Account(
232-
balance=1000000000000000000,
233-
nonce=0,
234-
code=Op.JUMPDEST()
235-
# 16 test
236-
+ Op.TSTORE(16, 2)
237-
+ Op.MSTORE(0, Op.GAS()) # hot load the memory to make the extra_opcode_gas be 11
238-
+ Op.MSTORE(0, Op.GAS())
239-
+ Op.TLOAD(16)
240-
+ Op.MSTORE(32, Op.GAS())
241-
+ Op.SSTORE(slot_tload_nonzero_gas_price_result, Op.SUB(Op.MLOAD(0), Op.MLOAD(32)))
242-
+ Op.SSTORE(
243-
slot_tload_nonzero_gas_price_result,
244-
Op.SUB(Op.SLOAD(slot_tload_nonzero_gas_price_result), extra_opcode_gas),
245-
)
246-
# from zero slot
247-
+ Op.MSTORE(0, Op.GAS())
248-
+ Op.TLOAD(5)
249-
+ Op.MSTORE(32, Op.GAS())
250-
+ Op.SSTORE(slot_tload_zero_gas_price_result, Op.SUB(Op.MLOAD(0), Op.MLOAD(32)))
251-
+ Op.SSTORE(
252-
slot_tload_zero_gas_price_result,
253-
Op.SUB(Op.SLOAD(slot_tload_zero_gas_price_result), extra_opcode_gas),
254-
)
255-
+ Op.SSTORE(slot_code_worked, 1),
256222
storage={
257-
slot_tload_nonzero_gas_price_result: 0xFF,
258-
slot_tload_zero_gas_price_result: 0xFF,
259-
},
260-
),
261-
TestAddress: Account(
262-
balance=7000000000000000000,
263-
nonce=0,
264-
code="0x",
265-
storage={},
266-
),
223+
slot_tload_nonzero_gas_price_result: Spec.TLOAD_GAS_COST,
224+
slot_tload_zero_gas_price_result: Spec.TLOAD_GAS_COST,
225+
slot_code_worked: 0x01,
226+
}
227+
)
267228
}
268229

269-
post: Dict[Address, Union[Account, object]] = {}
270-
271-
post[address_to] = Account(
272-
storage={
273-
slot_tload_nonzero_gas_price_result: Spec.TLOAD_GAS_COST,
274-
slot_tload_zero_gas_price_result: Spec.TLOAD_GAS_COST,
275-
slot_code_worked: 0x01,
276-
}
277-
)
278-
279230
tx = Transaction(
280-
nonce=0,
231+
sender=pre.fund_eoa(7_000_000_000_000_000_000),
281232
to=address_to,
282233
gas_price=10,
283234
data=b"",
@@ -291,41 +242,29 @@ def test_basic_tload_gasprice(
291242
@pytest.mark.valid_from("Cancun")
292243
def test_basic_tload_after_store(
293244
state_test: StateTestFiller,
245+
pre: Alloc,
294246
):
295247
"""
296248
Ported .json vectors:
297249
298250
(18_tloadAfterStoreFiller.yml)
299251
tload from same slot after store returns 0
300252
"""
301-
address_to = Address("A00000000000000000000000000000000000000A")
302-
303253
slot_tload_from_sstore_result = 1
304254
slot_code_worked = 2
305255

306-
pre = {
307-
address_to: Account(
308-
balance=1000000000000000000,
309-
nonce=0,
310-
code=Op.JUMPDEST()
311-
# 18 test
312-
+ Op.SSTORE(slot_tload_from_sstore_result, 22)
313-
+ Op.SSTORE(slot_tload_from_sstore_result, Op.TLOAD(slot_tload_from_sstore_result))
314-
+ Op.SSTORE(slot_code_worked, 1),
315-
storage={
316-
slot_tload_from_sstore_result: 0xFF,
317-
},
318-
),
319-
TestAddress: Account(
320-
balance=7000000000000000000,
321-
nonce=0,
322-
code="0x",
323-
storage={},
324-
),
325-
}
256+
address_to = pre.deploy_contract(
257+
code=Op.JUMPDEST()
258+
# 18 test
259+
+ Op.SSTORE(slot_tload_from_sstore_result, 22)
260+
+ Op.SSTORE(slot_tload_from_sstore_result, Op.TLOAD(slot_tload_from_sstore_result))
261+
+ Op.SSTORE(slot_code_worked, 1),
262+
storage={
263+
slot_tload_from_sstore_result: 0xFF,
264+
},
265+
)
326266

327267
post: Dict[Address, Union[Account, object]] = {}
328-
329268
post[address_to] = Account(
330269
storage={
331270
slot_tload_from_sstore_result: 0x00,
@@ -334,7 +273,7 @@ def test_basic_tload_after_store(
334273
)
335274

336275
tx = Transaction(
337-
nonce=0,
276+
sender=pre.fund_eoa(7_000_000_000_000_000_000),
338277
to=address_to,
339278
gas_price=10,
340279
data=b"",

0 commit comments

Comments
 (0)