Skip to content

Commit f2189d9

Browse files
committed
More test vectors
1 parent a4ae4cc commit f2189d9

File tree

1 file changed

+27
-10
lines changed

1 file changed

+27
-10
lines changed

docs/checklist_templates/eip_testing_checklist_template.md

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,25 @@ The EIP introduces one or more new opcodes to the EVM.
2323
- [ ] 31 bytes expansion
2424
- [ ] 32 bytes expansion
2525
- [ ] 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
2732
- [ ] Stack over/underflows
2833
- [ ] 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.
2934
- [ ] 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.
3035
- [ ] 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
3541
- [ ] 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.
3642
- [ ] 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.
3743
- [ ] 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
3945
- [ ] Initcode
4046
- [ ] Verify opcode behaves as expected when running during the initcode phase of contract creation
4147
- [ ] Initcode of a contract creating transaction.
@@ -47,7 +53,7 @@ The EIP introduces one or more new opcodes to the EVM.
4753
- [ ] EOF Container Context
4854
- [ ] If opcode changes behavior depending on particular EOF container properties, test using multiple values for each property.
4955
- [ ] 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:
5157
- [ ] At current call context.
5258
- [ ] At parent call context.
5359
- [ ] Gas usage
@@ -64,6 +70,12 @@ The EIP introduces one or more new opcodes to the EVM.
6470
- [ ] Top-level call termination
6571
- [ ] Sub-level call termination
6672
- [ ] 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
6779
- [ ] Out-of-bounds checks
6880
- [ ] Verify if the opcode has out-of-bounds conditions in its parameters and verify:
6981
- [ ] Max value for each parameter
@@ -74,12 +86,14 @@ The EIP introduces one or more new opcodes to the EVM.
7486
- [ ] 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).
7587
- [ ] Contract creation
7688
- [ ] 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:
7890
- [ ] 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.
8093
- [ ] Fork transition
8194
- [ ] Verify that the opcode results in exeptional abort if executed before its activation fork.
8295
- [ ] 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.
8397

8498
### Framework Changes
8599

@@ -99,6 +113,7 @@ The EIP introduces one or more new opcodes to the EVM.
99113
- [ ] Call from initcode
100114
- [ ] Contract creating transaction
101115
- [ ] Contract creating opcode
116+
- [ ] Set code delegated address (no precompile logic executed)
102117
- [ ] Inputs
103118
- [ ] Verify combinations of valid inputs to the precompile
104119
- [ ] Verify interesting edge values given the precompile functionality.
@@ -131,6 +146,7 @@ The EIP introduces one or more new opcodes to the EVM.
131146
- [ ] Fork transition
132147
- [ ] 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.
133148
- [ ] 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.
134150

135151

136152
### Framework Changes
@@ -273,7 +289,8 @@ The EIP introduces one or more new opcodes to the EVM.
273289
- [ ] Genesis value
274290
- [ ] 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.
275291
- [ ] 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.
277294
- [ ] Fork transition
278295
- [ ] Verify initial value of the field at the first block of the activation fork.
279296
- [ ] Verify that a block containing the new header field before the activation of the fork is invalid.

0 commit comments

Comments
 (0)