Tests for EIP-3541#835
Conversation
| gas: !!int -1 | ||
| value: !!int -1 | ||
| network: | ||
| - 'Berlin' |
There was a problem hiding this comment.
Would this work?
| - 'Berlin' | |
| - '<=Berlin' |
There was a problem hiding this comment.
Nonce for created accounts was 0 before state-clearing fork, so we would need either make tests a bit more complicated with another nonce expectation for old forks, or remove nonce expectation, or list only forks starting from SpuriousDragon.
But it looks usual in new tests to check only new behaviour and maximum of one previous fork, not caring about repeating it for old forks with the same rules. @winsvega can correct me if it's not ok approach.
There was a problem hiding this comment.
Yes because we have copy of the tests in legacy with old forks expect section. However new tests are targeting only recent forks (as also pointed out by Alexy Akhunov)
Since we already have client consensus with existing tests, no really need to cover previous forks.
You can use a sstore operation and check that it worked (instead of nonce)
Another issue when having tests with 5 or more forks it takes more time to generate and run it. So I plan to archive tests from time to time refreshing the expect section to the most recent fork only.
There was a problem hiding this comment.
for full node implementation IMHO it is good to have tests that check that new changes does not break anything in the past. so if you really think we should check it here we can make an exception.
| transaction: | ||
| data: | ||
| #- ':yul { mstore8(0, 0xef) return(0, 1) }' | ||
| - ':label deploying_0xef :raw 0x60ef60005360016000f3' |
There was a problem hiding this comment.
It did, I just wanted to show raw code here, maybe include it in EIP text.
156db28 to
22be707
Compare
|
@winsvega On the last ACD call EIP-3541 was "accepted for London unless anyone objects on the next call", so I think it would be ok to start reviewing it. I will keep PR in draft until EIP is accepted. |
Just to shrink the size, do you think it makes sense splitting this and merging the non-London specific tests? i.e. would that just mean a test creating a contract with every single starting byte from 0x00 to 0xff? |
Everything could be merged if we remove London expectations. I would leave for @winsvega to decide how it would be convenient to split this, if needed. |
|
If there is no London specific logic we can keep the test under any name. Tests fork configs are now translatable with clients configs in retesteth config dir |
|
Is this eip enabled in Aleut? |
But included in Baikal. https://github.com/ethereum/eth1.0-specs/blob/master/network-upgrades/client-integration-testnets/baikal.md |
|
0a94b64 to
6fdc1e5
Compare
|
@winsvega I have added The commit |
winsvega
left a comment
There was a problem hiding this comment.
I think this looks really good now.
It is great to have contributions from EIP developers finaly.
Great thanks to Ori and his documentation.
Reject new contracts starting with the 0xEF byte https://eips.ethereum.org/EIPS/eip-3541
Imlementation is merged in geth ethereum/go-ethereum#22809