github.com/codysnider/go-ethereum@v1.10.18-0.20220420071915-14f4ae99222a/cmd/evm/testdata/8/readme.md (about) 1 ## EIP-2930 testing 2 3 This test contains testcases for EIP-2930, which uses transactions with access lists. 4 5 ### Prestate 6 7 The alloc portion contains one contract (`0x000000000000000000000000000000000000aaaa`), containing the 8 following code: `0x5854505854`: `PC ;SLOAD; POP; PC; SLOAD`. 9 10 Essentialy, this contract does `SLOAD(0)` and `SLOAD(3)`. 11 12 The alloc also contains some funds on `0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b`. 13 14 ## Transactions 15 16 There are three transactions, each invokes the contract above. 17 18 1. ACL-transaction, which contains some non-used slots 19 2. Regular transaction 20 3. ACL-transaction, which contains the slots `1` and `3` in `0x000000000000000000000000000000000000aaaa` 21 22 ## Execution 23 24 Running it yields: 25 ``` 26 dir=./testdata/8 && ./evm t8n --state.fork=Berlin --input.alloc=$dir/alloc.json --input.txs=$dir/txs.json --input.env=$dir/env.json --trace && cat trace-* | grep SLOAD 27 {"pc":1,"op":84,"gas":"0x484be","gasCost":"0x834","memory":"0x","memSize":0,"stack":["0x0"],"returnStack":[],"returnData":"0x","depth":1,"refund":0,"opName":"SLOAD","error":""} 28 {"pc":4,"op":84,"gas":"0x47c86","gasCost":"0x834","memory":"0x","memSize":0,"stack":["0x3"],"returnStack":[],"returnData":"0x","depth":1,"refund":0,"opName":"SLOAD","error":""} 29 {"pc":1,"op":84,"gas":"0x49cf6","gasCost":"0x834","memory":"0x","memSize":0,"stack":["0x0"],"returnStack":[],"returnData":"0x","depth":1,"refund":0,"opName":"SLOAD","error":""} 30 {"pc":4,"op":84,"gas":"0x494be","gasCost":"0x834","memory":"0x","memSize":0,"stack":["0x3"],"returnStack":[],"returnData":"0x","depth":1,"refund":0,"opName":"SLOAD","error":""} 31 {"pc":1,"op":84,"gas":"0x484be","gasCost":"0x64","memory":"0x","memSize":0,"stack":["0x0"],"returnStack":[],"returnData":"0x","depth":1,"refund":0,"opName":"SLOAD","error":""} 32 {"pc":4,"op":84,"gas":"0x48456","gasCost":"0x64","memory":"0x","memSize":0,"stack":["0x3"],"returnStack":[],"returnData":"0x","depth":1,"refund":0,"opName":"SLOAD","error":""} 33 34 ``` 35 36 Simlarly, we can provide the input transactions via `stdin` instead of as file: 37 38 ``` 39 dir=./testdata/8 \ 40 && cat $dir/txs.json | jq "{txs: .}" \ 41 | ./evm t8n --state.fork=Berlin \ 42 --input.alloc=$dir/alloc.json \ 43 --input.txs=stdin \ 44 --input.env=$dir/env.json \ 45 --trace \ 46 && cat trace-* | grep SLOAD 47 48 {"pc":1,"op":84,"gas":"0x484be","gasCost":"0x834","memory":"0x","memSize":0,"stack":["0x0"],"returnStack":[],"returnData":"0x","depth":1,"refund":0,"opName":"SLOAD","error":""} 49 {"pc":4,"op":84,"gas":"0x47c86","gasCost":"0x834","memory":"0x","memSize":0,"stack":["0x3"],"returnStack":[],"returnData":"0x","depth":1,"refund":0,"opName":"SLOAD","error":""} 50 {"pc":1,"op":84,"gas":"0x49cf6","gasCost":"0x834","memory":"0x","memSize":0,"stack":["0x0"],"returnStack":[],"returnData":"0x","depth":1,"refund":0,"opName":"SLOAD","error":""} 51 {"pc":4,"op":84,"gas":"0x494be","gasCost":"0x834","memory":"0x","memSize":0,"stack":["0x3"],"returnStack":[],"returnData":"0x","depth":1,"refund":0,"opName":"SLOAD","error":""} 52 {"pc":1,"op":84,"gas":"0x484be","gasCost":"0x64","memory":"0x","memSize":0,"stack":["0x0"],"returnStack":[],"returnData":"0x","depth":1,"refund":0,"opName":"SLOAD","error":""} 53 {"pc":4,"op":84,"gas":"0x48456","gasCost":"0x64","memory":"0x","memSize":0,"stack":["0x3"],"returnStack":[],"returnData":"0x","depth":1,"refund":0,"opName":"SLOAD","error":""} 54 ``` 55 56 If we try to execute it on older rules: 57 ``` 58 dir=./testdata/8 && ./evm t8n --state.fork=Istanbul --input.alloc=$dir/alloc.json --input.txs=$dir/txs.json --input.env=$dir/env.json 59 INFO [01-21|23:21:51.265] rejected tx index=0 hash=d2818d..6ab3da error="tx type not supported" 60 INFO [01-21|23:21:51.265] rejected tx index=1 hash=26ea00..81c01b from=0xa94f5374Fce5edBC8E2a8697C15331677e6EbF0B error="nonce too high: address 0xa94f5374Fce5edBC8E2a8697C15331677e6EbF0B, tx: 1 state: 0" 61 INFO [01-21|23:21:51.265] rejected tx index=2 hash=698d01..369cee error="tx type not supported" 62 ``` 63 Number `1` and `3` are not applicable, and therefore number `2` has wrong nonce.