You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/checklist_templates/eip_testing_checklist_template.md
+27-10Lines changed: 27 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -23,19 +23,25 @@ The EIP introduces one or more new opcodes to the EVM.
23
23
- [] 31 bytes expansion
24
24
- [] 32 bytes expansion
25
25
- [] 33 bytes expansion
26
-
- [] 64 or more bytes expansion
26
+
- [] 64 bytes expansion
27
+
- [] 2**32-1 bytes expansion
28
+
- [] 2**32 bytes expansion
29
+
- [] 2**64-1 bytes expansion
30
+
- [] 2**64 bytes expansion
31
+
- [] 2**256-1 bytes expansion
27
32
-[ ] Stack over/underflows
28
33
-[ ] If the opcode pushes one or more items to the stack, and the opcode pushes more elements than it pops, verify that the opcode execution results in exeptional abort when pushing elements to the stack would result in the stack having more than 1024 elements.
29
34
-[ ] If the opcode pops one or more items to the stack, or it has a minimum stack height of one or more, verify that the opcode execution results in exeptional abort then stack has 1 less item than the minimum stack height expected.
30
35
-[ ] Execution context
31
-
-[ ] Normal call
32
-
-[ ] Static call
33
-
-[ ] Verify exeptional abort if the opcode attempts to modify the code, storage or balance of an account
34
-
-[ ] Delegate call
36
+
-[ ] CALL
37
+
-[ ] STATICCALL
38
+
-[ ] Verify exeptional abort if the opcode is banned for static contexts or if it attempts to modify the code, storage or balance of an account.
39
+
-[ ] Verify subcalls using other opcodes (e.g. CALL, DELEGATECALL, etc) also results in the same exeptional abort behavior.
40
+
-[ ] DELEGATECALL
35
41
-[ ] If the opcode modifies the storage of the account currently executing it, verify that only the account that is delegating execution is the one that has its storage modified.
36
42
-[ ] If the opcode modifies the balance of the account currently executing it, verify that only the account that is delegating execution is the one that has its balance modified.
37
43
-[ ] If the opcode modifies the code of the account currently executing it, verify that only the account that is delegating execution is the one that has its code modified.
38
-
-[ ]Code call
44
+
-[ ]CALLCODE
39
45
-[ ] Initcode
40
46
-[ ] Verify opcode behaves as expected when running during the initcode phase of contract creation
41
47
- [] Initcode of a contract creating transaction.
@@ -47,7 +53,7 @@ The EIP introduces one or more new opcodes to the EVM.
47
53
-[ ] EOF Container Context
48
54
-[ ] If opcode changes behavior depending on particular EOF container properties, test using multiple values for each property.
49
55
-[ ] Return data
50
-
-[ ] Verify proper return data buffer modification if the opcode is meant to interact with it, otherwise verify that the return data buffer is unnaffected
56
+
-[ ] Verify proper return data buffer overwriting if the opcode is meant to interact with it, otherwise verify that the return data buffer is unnaffected:
51
57
- [] At current call context.
52
58
- [] At parent call context.
53
59
-[ ] Gas usage
@@ -64,6 +70,12 @@ The EIP introduces one or more new opcodes to the EVM.
64
70
- [] Top-level call termination
65
71
- [] Sub-level call termination
66
72
- [] Initcode termination
73
+
-[ ] If the terminating opcode is meant to rollback the executing call frame, verify the following events are properly rolled back:
74
+
-[ ] Balance changes
75
+
-[ ] Storage changes
76
+
-[ ] Contract creations
77
+
-[ ] Nonce increments
78
+
-[ ] Log events
67
79
-[ ] Out-of-bounds checks
68
80
-[ ] Verify if the opcode has out-of-bounds conditions in its parameters and verify:
69
81
- [] Max value for each parameter
@@ -74,12 +86,14 @@ The EIP introduces one or more new opcodes to the EVM.
74
86
-[ ] If an opcode has data portion that affects its behavior, verify checklist items with multiple interesting values (E.g. if data portion size is 1 byte, use at least 0x00, 0x01, 0x7F, 0xFF).
75
87
-[ ] Contract creation
76
88
-[ ] Verify contract is created at the expected address given multiple inputs to the opcode parameters.
77
-
-[ ] Verify that contract is not created in case of
89
+
-[ ] Verify that contract is not created in case of:
78
90
-[ ] Out-of-gas when available gas is less than minimum contract creation stipend.
79
-
-[ ] Contract creation would result in an address collision with an existing contract or eoa-delegated address.
91
+
-[ ] Creation would result in an address collision with an existing contract or eoa-delegated address.
92
+
-[ ] Verify recursive contract creation using the opcode: Factory contract uses the opcode, and initcode calls back to factory contract.
80
93
-[ ] Fork transition
81
94
-[ ] Verify that the opcode results in exeptional abort if executed before its activation fork.
82
95
-[ ] Verify that the opcode results in invalid EOF container if attempted to deploy before its activation fork.
96
+
-[ ] Verify correct opcode behavior at transition block, in the case of opcodes which behavior depends on current or parent block information.
83
97
84
98
### Framework Changes
85
99
@@ -99,6 +113,7 @@ The EIP introduces one or more new opcodes to the EVM.
99
113
-[ ] Call from initcode
100
114
-[ ] Contract creating transaction
101
115
-[ ] Contract creating opcode
116
+
-[ ] Set code delegated address (no precompile logic executed)
102
117
-[ ] Inputs
103
118
-[ ] Verify combinations of valid inputs to the precompile
104
119
- [] Verify interesting edge values given the precompile functionality.
@@ -131,6 +146,7 @@ The EIP introduces one or more new opcodes to the EVM.
131
146
-[ ] Fork transition
132
147
-[ ] Verify that calling the precompile before its activation fork results in a valid call even for inputs that are expected to be invalid for the precompile.
133
148
-[ ] Verify that calling the precompile before its activation fork with zero gas results in a valid call.
149
+
-[ ] Verify precompile address becomes warm on and after the fork activation block, but not prior.
134
150
135
151
136
152
### Framework Changes
@@ -273,7 +289,8 @@ The EIP introduces one or more new opcodes to the EVM.
273
289
-[ ] Genesis value
274
290
-[ ] Verify, if possible, that the value can be set at genesis if the network starting fork is the activation fork, and that clients can consume such genesis.
275
291
-[ ] Value behavior
276
-
-[ ] Verify, given multiple initial values, that the value is correctly modified for the current and subsequent blocks as expected, depending on the circumstances that affect the value as defined in the EIP.
292
+
-[ ] Verify, given multiple initial values, that a block is accepted if the value is correctly modified for the current block, depending on the circumstances that affect the value as defined in the EIP.
293
+
-[ ] Verify, given multiple initial values, that a block is rejected if the value is incorrectly modified for the current block, depending on the circumstances that affect the value as defined in the EIP.
277
294
-[ ] Fork transition
278
295
-[ ] Verify initial value of the field at the first block of the activation fork.
279
296
-[ ] Verify that a block containing the new header field before the activation of the fork is invalid.
0 commit comments