Skip to content

Commit 99dc517

Browse files
committed
Simplify bullet points
1 parent 798ee5e commit 99dc517

File tree

1 file changed

+33
-45
lines changed

1 file changed

+33
-45
lines changed

docs/checklist_templates/eip_testing_checklist_template.md

Lines changed: 33 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,8 @@ The EIP introduces one or more new opcodes to the EVM.
6161
- [ ] Initcode of a contract creating opcode (including itself if opcode creates a contract).
6262
- [ ] Verify opcode behavior on re-entry using the same initcode and same address (e.g. CREATE2->REVERT->CREATE2).
6363
- [ ] Set-code delegated account: Verify opcode operations are applied to the set-code account and do not affect the address that is the target of the delegation.
64-
- [ ] Transaction context
65-
- [ ] If opcode changes behavior depending on particular transaction properties, test using multiple values for each property.
66-
- [ ] Block context
67-
- [ ] If opcode changes behavior depending on particular block properties, test using multiple values for each property.
64+
- [ ] Transaction context: If opcode changes behavior depending on particular transaction properties, test using multiple values for each property.
65+
- [ ] Block context: If opcode changes behavior depending on particular block properties, test using multiple values for each property.
6866
- [ ] Return data
6967
- [ ] Verify proper return data buffer overwriting if the opcode is meant to interact with it, otherwise verify that the return data buffer is unnaffected:
7068
- [ ] At current call context.
@@ -74,8 +72,9 @@ The EIP introduces one or more new opcodes to the EVM.
7472
- [ ] Memory expansion: Verify that the memory expansion correctly follows the gas calculation
7573
- [ ] Out-of-gas during opcode execution: Verify that attempting to execute the opcode when gas available is 1 less than the required gas results in exeptional abort.
7674
- [ ] Out-of-gas during memory expansion: Verify that the expansion of memory can result in out-of-gas exeptional abort.
77-
- [ ] Order-of-operations:
78-
- [ ] If the opcode requires different gas stipends for other operations (e.g. contract creation, cold/warm account access), create one case for each operation (ideally independent of eachother) and create a case for success and another for OOG (with a 1-gas-difference).
75+
- [ ] Order-of-operations: If the opcode requires different gas stipends for other operations (e.g. contract creation, cold/warm account access), create one case for each operation (ideally independent of eachother) and the following cases for each:
76+
- [ ] Success using the exact amount of gas required for the stipend.
77+
- [ ] OOG with a 1-gas-difference from the gas required for the stipend.
7978
- [ ] Terminating opcode
8079
- [ ] If an opcode is terminating, meaning it results in the current call context to end execution, test the following scenarios
8180
- [ ] Top-level call termination
@@ -91,10 +90,8 @@ The EIP introduces one or more new opcodes to the EVM.
9190
- [ ] Verify if the opcode has out-of-bounds conditions in its parameters and verify:
9291
- [ ] Max value for each parameter
9392
- [ ] Max value + 1 for each parameter
94-
- [ ] Exeptional Abort
95-
- [ ] Verify behavior that is supposed to cause an exeptional abort, other than stack over or underflow, or out-of-gas errors.
96-
- [ ] Data portion
97-
- [ ] 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).
93+
- [ ] Exeptional Abort: Verify behavior that is supposed to cause an exeptional abort, other than stack over or underflow, or out-of-gas errors.
94+
- [ ] Data portion: 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).
9895
- [ ] Contract creation
9996
- [ ] Verify contract is created at the expected address given multiple inputs to the opcode parameters.
10097
- [ ] Verify that contract is not created in case of:
@@ -162,8 +159,7 @@ The EIP introduces one or more new precompiles.
162159
- [ ] Precompile has dynamic gas usage
163160
- [ ] Verify exact gas consumption, given different valid inputs.
164161
- [ ] Verify exact gas consumption minus one results in out-of-gas error, given different valid inputs.
165-
- [ ] Excessive Gas Cases
166-
- [ ] Verify spending all block gas in calls to the precompile (Use `Environment().gas_limit` as max amount).
162+
- [ ] Excessive Gas Cases: Verify spending all block gas in calls to the precompile (Use `Environment().gas_limit` as max amount).
167163
- [ ] Fork transition
168164
- [ ] 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.
169165
- [ ] Verify that calling the precompile before its activation fork with zero gas results in a valid call.
@@ -203,7 +199,7 @@ The EIP removes one or more precompiles from the existing list of precompiles.
203199
- [ ] Contract creating opcode
204200
- [ ] Inputs
205201
- [ ] Verify combinations of valid inputs to the system contract
206-
- [ ] Verify interesting edge values given the system contract functionality.
202+
- [ ] Verify interesting boundary values given the system contract functionality.
207203
- [ ] Verify all zeros input.
208204
- [ ] Verify 2^N-1 where N is a single or multiple valid bit-lengths.
209205
- [ ] Verify combinations of invalid inputs to the precompile.
@@ -237,13 +233,15 @@ The EIP removes one or more precompiles from the existing list of precompiles.
237233
- [ ] Verify deployment transaction results in the system contract being deployed to the expected address.
238234
<!-- TODO: Missing contract at fork check -->
239235
- [ ] Contract Variations
240-
- [ ] Verify execution of the different variations of the contract for different networks (if any) results in the expected behavior
241-
- [ ] Contract Substitution
242-
- [ ] Substitute the contract to modify its behavior when called by the system address (at the end of the block execution):
243-
- [ ] Modified return value lengths
244-
- [ ] Modify emitted logs
245-
- [ ] Fork transition
246-
- [ ] Verify calling the system contract before its activation fork results in correct behavior (depends on the system contract implementation).
236+
- [ ] Verify execution of the different variations of the contract for different networks (if any) results in the expected behavior,
237+
- [ ] Verify execution of a variation that causes an exception.
238+
- [ ] Verify execution of a variation that consumes:
239+
- [ ] 30,000,000 million gas exactly, execution should be successful.
240+
- [ ] 30,000,001 million gas exactly, execution should fail.
241+
- [ ] Contract Substitution: Substitute the contract to modify its behavior when called by the system address (at the end of the block execution):
242+
- [ ] Modified return value lengths
243+
- [ ] Modify emitted logs
244+
- [ ] Fork transition: Verify calling the system contract before its activation fork results in correct behavior (depends on the system contract implementation).
247245

248246
### <!-- id:new_system_contract_framework --> Framework Changes
249247

@@ -258,21 +256,15 @@ The EIP removes one or more precompiles from the existing list of precompiles.
258256
- [ ] Gas Limit: For each new field that affects the intrinsic gas cost of the transaction:
259257
- [ ] Verify the transaction (and the block it is included in) is valid by providing the exact intrinsic gas as `gas_limit` value to the transaction with all multiple combinations of values to the field.
260258
- [ ] Verify the transaction (and the block it is included in) is invalid by providing the exact intrinsic gas minus one as `gas_limit` value to the transaction with all multiple combinations of values to the field.
261-
- [ ] Max fee per gas:
262-
- [ ] Verify the transaction (and the block it is included in) is invalid if its max-priority-fee-per-gas value is lower than the max-fee-per-gas.
263-
- [ ] Verify the transaction (and the block it is included in) is invalid if its max-fee-per-gas value is lower than the blocks base-fee-per-gas.
264-
- [ ] Chain ID:
265-
- [ ] Verify the transaction (and the block it is included in) is invalid if its chain-id value does not match the network configuration.
266-
- [ ] Nonce:
267-
- [ ] Verify the transaction (and the block it is included in) is invalid if its nonce value does not match the account's current nonce.
268-
- [ ] To:
269-
- [ ] Verify the transaction (and the block it is included in) is invalid if the transaction type does not allow contract creation and the to-address field is empty.
270-
- [ ] Value:
271-
- [ ] Verify the transaction (and the block it is included in) is invalid if the transaction contains a value of 1 and the account does not contain enough funds to cover the intrinsic transaction cost plus 1.
272-
- [ ] Data:
273-
- [ ] Verify the transaction (and the block it is included in) is invalid if the transaction contains enough data so the data floor cost is higher than the intrinsic gas cost and the gas_limit is equal to the intrinsic gas gost.
274-
- [ ] Sender balance:
275-
- [ ] Verify the transaction (and the block it is included in) is invalid when the sender account does not have enough balance to cover the gas limit multiplied by the max fee per gas.
259+
- [ ] Max fee per gas: Verify the transaction (and the block it is included in) is invalid if:
260+
- [ ] Its max-priority-fee-per-gas value is lower than the max-fee-per-gas.
261+
- [ ] Its max-fee-per-gas value is lower than the blocks base-fee-per-gas.
262+
- [ ] Chain ID: Verify the transaction (and the block it is included in) is invalid if its chain-id value does not match the network configuration.
263+
- [ ] Nonce: Verify the transaction (and the block it is included in) is invalid if its nonce value does not match the account's current nonce.
264+
- [ ] To: Verify the transaction (and the block it is included in) is invalid if the transaction type does not allow contract creation and the to-address field is empty.
265+
- [ ] Value: Verify the transaction (and the block it is included in) is invalid if the transaction contains a value of 1 and the account does not contain enough funds to cover the intrinsic transaction cost plus 1.
266+
- [ ] Data: Verify the transaction (and the block it is included in) is invalid if the transaction contains enough data so the data floor cost is higher than the intrinsic gas cost and the gas_limit is equal to the intrinsic gas gost.
267+
- [ ] Sender balance: Verify the transaction (and the block it is included in) is invalid when the sender account does not have enough balance to cover the gas limit multiplied by the max fee per gas.
276268
- [ ] Signature:
277269
- [ ] Verify the transaction is correctly rejected if it contains an invalid signature:
278270
- [ ] V, R, S represent a value that is inside of the field but outside of the curve.
@@ -321,12 +313,10 @@ The EIP removes one or more precompiles from the existing list of precompiles.
321313
- [ ] Verify transaction is correctly rejected if the serialized bytes object has extra bytes
322314
- [ ] If the transaction contains fields with new serializable types, perform all previous tests on the new type/field, plus:
323315
- [ ] Verify transaction rejection if the serializable field is incorrectly encoded as bytes instead of using the correct encoding.
324-
- [ ] Out-of-bounds checks
325-
- [ ] Verify if the transaction has out-of-bounds conditions in its fields and verify:
326-
- [ ] Max value for each field
327-
- [ ] Max value + 1 for each field
328-
- [ ] Contract creation
329-
- [ ] Verify that the transaction can create new contracts if the transaction type supports it.
316+
- [ ] Out-of-bounds checks: Verify if the transaction has out-of-bounds conditions in its fields and verify:
317+
- [ ] Max value for each field
318+
- [ ] Max value + 1 for each field
319+
- [ ] Contract creation: Verify that the transaction can create new contracts if the transaction type supports it.
330320
- [ ] Sender account modifications
331321
- [ ] Verify that the sender account of the new transaction type transaction has its nonce incremented at least by one after the transaction is included in a block (or more if the transaction type introduces a new mechanism that bumps the nonce by more than one).
332322
- [ ] Verify that the sender account of the new transaction type transaction has its balance reduced by the correct amount (gas consumed and value) at the start of execution (e.g. using Op.BALANCE).
@@ -340,8 +330,7 @@ The EIP removes one or more precompiles from the existing list of precompiles.
340330
- [ ] Rejected if `(block.txs[0].gas_used + block.txs[1].gas_limit == block.gas_limit + 1) and (block.txs[0].gas_used < block.gas_limit)`
341331
- [ ] Verify a transaction of the new type is rejected if its gas limit exceeds the [EIP-7825](https://eips.ethereum.org/EIPS/eip-7825) gas limit for the current fork.
342332
- [ ] Verify a block with all transactions types including the new type is executed correctly.
343-
- [ ] Fork transition
344-
- [ ] Verify that a block prior to fork activation where the new transaction type is introduced and containing the new transaction type is invalid.
333+
- [ ] Fork transition: Verify that a block prior to fork activation where the new transaction type is introduced and containing the new transaction type is invalid.
345334
- [ ] RPC Tests
346335
- [ ] * Verify `eth_estimateGas` behavior for different valid combinations of the new transaction type
347336
- [ ] Verify `eth_sendRawTransaction` using `execute`
@@ -358,8 +347,7 @@ The EIP removes one or more precompiles from the existing list of precompiles.
358347

359348
### <!-- id:new_block_header_field/test --> Test Vectors
360349

361-
- [ ] Genesis value
362-
- [ ] 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.
350+
- [ ] Genesis value: 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.
363351
- [ ] Value behavior
364352
- [ ] Verify, given multiple initial values, that a block is accepted if the value is the correct expected for the current block, depending on the circumstances that affect the value as defined in the EIP.
365353
- [ ] Verify, given multiple initial values, that a block is rejected if the value is modified (using `block.rlp_modifier`) to an incorrect value for the current block, depending on the circumstances that affect the value as defined in the EIP.

0 commit comments

Comments
 (0)