-
Notifications
You must be signed in to change notification settings - Fork 384
Description
Crate version: v0.41.0
I was using this evm for syncing to ethereum mainnet, as sanity check I computed the state root using the VM and compared it against the expected state root, whoever I found a sync mismatch when processing this transaction at block 49018:
https://etherscan.io/tx/0x5c4fdc85bf5efdfcbf7d4991c37287a9c3d5b660b57b0082118c3cff3c69dff1
I was syncing using the correct preset Config::frontier, after a investigation I've found the cause of the issue.
Issue
The current implementation doesn't consider the pre EIP-2 contract creation behavior, I'll use this transaction as example: 0x5c4fdc85bf5efdfcbf7d4991c37287a9c3d5b660b57b0082118c3cff3c69dff1
Actual State Changes - incorrect
Hardfork: frontier
Gas used: 145029 (which is the transaction gas_limit)
Result: ExitError::OutOfGas
Not contract created.
Trace logs
TRACE evm: Gasometer Record Create 65304 [gas_transaction_create: 21000, zero_data_len: 145, non_zero_data_len: 643, access_list_address_len: 0, access_list_storage_len: 0, initcode_cost: 50] [Gas used: 0, Gas left: 145029]
TRACE evm: Gasometer Record cost 79725 [Gas used: 65304, Gas left: 79725]
TRACE evm: Gasometer Record cost 3 [Gas used: 0, Gas left: 79725]
TRACE evm: OpCode Push [@0]: 0x0000…0060
TRACE evm: Gasometer Record cost 3 [Gas used: 3, Gas left: 79722]
TRACE evm: OpCode Push [@1]: 0x0000…0040
TRACE evm: Gasometer Record dynamic cost 3 - memory_gas 9 - gas_refund 0 [Gas used: 6, Gas left: 79719]
TRACE evm: OpCode MStore: 64, 0x0000…0060
TRACE evm: Gasometer Record cost 3 [Gas used: 18, Gas left: 79707]
TRACE evm: OpCode Push [@0]: 0x0000…0040
TRACE evm: Gasometer Record dynamic cost 3 - memory_gas 9 - gas_refund 0 [Gas used: 21, Gas left: 79704]
TRACE evm: OpCode MLoad: 64
TRACE evm: Gasometer Record cost 3 [Gas used: 24, Gas left: 79701]
TRACE evm: OpCode Push [@1]: 0x0000…02b4
TRACE evm: Gasometer Record cost 2 [Gas used: 27, Gas left: 79698]
TRACE evm: OpCode CodeSize: 788
TRACE evm: Gasometer Record cost 3 [Gas used: 29, Gas left: 79696]
TRACE evm: OpCode overflowing_sub 788, 692: 96
TRACE evm: Gasometer Record cost 3 [Gas used: 32, Gas left: 79693]
TRACE evm: OpCode Dup1 [@2]: 0x0000…0060
TRACE evm: Gasometer Record cost 3 [Gas used: 35, Gas left: 79690]
TRACE evm: OpCode Push [@3]: 0x0000…02b4
TRACE evm: Gasometer Record cost 3 [Gas used: 38, Gas left: 79687]
TRACE evm: OpCode Dup4 [@4]: 0x0000…0060
TRACE evm: Gasometer Record dynamic cost 12 - memory_gas 18 - gas_refund 0 [Gas used: 41, Gas left: 79684]
TRACE evm: OpCode CodeCopy: 96
TRACE evm: Gasometer Record cost 3 [Gas used: 62, Gas left: 79663]
TRACE evm: OpCode overflowing_add 96, 96: 192
TRACE evm: Gasometer Record cost 3 [Gas used: 65, Gas left: 79660]
TRACE evm: OpCode Push [@1]: 0x0000…0040
TRACE evm: Gasometer Record dynamic cost 3 - memory_gas 18 - gas_refund 0 [Gas used: 68, Gas left: 79657]
TRACE evm: OpCode MStore: 64, 0x0000…00c0
TRACE evm: Gasometer Record cost 3 [Gas used: 71, Gas left: 79654]
TRACE evm: OpCode Push [@0]: 0x0000…0060
TRACE evm: Gasometer Record cost 3 [Gas used: 74, Gas left: 79651]
TRACE evm: OpCode Dup1 [@1]: 0x0000…0060
TRACE evm: Gasometer Record dynamic cost 3 - memory_gas 18 - gas_refund 0 [Gas used: 77, Gas left: 79648]
TRACE evm: OpCode MLoad: 96
TRACE evm: Gasometer Record cost 3 [Gas used: 80, Gas left: 79645]
TRACE evm: OpCode Push [@2]: 0x0000…0060
TRACE evm: Gasometer Record cost 3 [Gas used: 83, Gas left: 79642]
TRACE evm: OpCode overflowing_add 96, 32: 128
TRACE evm: Gasometer Record cost 3 [Gas used: 86, Gas left: 79639]
TRACE evm: OpCode Swap [@0:@1]: 0x0000…0080, 0x0000…0060
TRACE evm: Gasometer Record cost 3 [Gas used: 89, Gas left: 79636]
TRACE evm: OpCode Push [@2]: 0x0000…0020
TRACE evm: Gasometer Record cost 3 [Gas used: 92, Gas left: 79633]
TRACE evm: OpCode overflowing_add 32, 96: 128
TRACE evm: Gasometer Record cost 2 [Gas used: 95, Gas left: 79630]
TRACE evm: OpCode Pop [@1]: 0x0000…0080
TRACE evm: Gasometer Record cost 1 [Gas used: 97, Gas left: 79628]
TRACE evm: Gasometer Record cost 1 [Gas used: 98, Gas left: 79627]
TRACE evm: Gasometer Record cost 2 [Gas used: 99, Gas left: 79626]
TRACE evm: OpCode Trap: Opcode(51)
TRACE evm: Gasometer Record cost 3 [Gas used: 101, Gas left: 79624]
TRACE evm: OpCode Push [@2]: 0x0000…0000
TRACE evm: Gasometer Record cost 3 [Gas used: 104, Gas left: 79621]
TRACE evm: OpCode Push [@3]: 0x0000…0000
TRACE evm: Gasometer Record cost 3 [Gas used: 107, Gas left: 79618]
TRACE evm: OpCode Push [@4]: 0x0000…0100
TRACE evm: Gasometer Record dynamic cost 10 - memory_gas 18 - gas_refund 0 [Gas used: 110, Gas left: 79615]
TRACE evm: OpCode self::arithmetic::exp 256, 0: 1
TRACE evm: Gasometer Record cost 3 [Gas used: 120, Gas left: 79605]
TRACE evm: OpCode Dup2 [@4]: 0x0000…0000
TRACE evm: Gasometer Record dynamic cost 50 - memory_gas 18 - gas_refund 0 [Gas used: 123, Gas left: 79602]
TRACE evm: OpCode Trap: Opcode(84)
TRACE evm: Gasometer Record cost 3 [Gas used: 173, Gas left: 79552]
TRACE evm: OpCode Dup2 [@5]: 0x0000…0001
TRACE evm: Gasometer Record cost 3 [Gas used: 176, Gas left: 79549]
TRACE evm: OpCode Push [@6]: 0x0000…ffff
TRACE evm: Gasometer Record cost 5 [Gas used: 179, Gas left: 79546]
TRACE evm: OpCode overflowing_mul 1461501637330902918203684832716283019655932542975, 1: 1461501637330902918203684832716283019655932542975
TRACE evm: Gasometer Record cost 3 [Gas used: 184, Gas left: 79541]
TRACE evm: OpCode self::bitwise::not 1461501637330902918203684832716283019655932542975: 115792089237316195423570985007226406215939081747436879206741300988257197096960
TRACE evm: Gasometer Record cost 3 [Gas used: 187, Gas left: 79538]
TRACE evm: OpCode bitand 115792089237316195423570985007226406215939081747436879206741300988257197096960, 0: 0
TRACE evm: Gasometer Record cost 3 [Gas used: 190, Gas left: 79535]
TRACE evm: OpCode Swap [@0:@1]: 0x0000…0000, 0x0000…0001
TRACE evm: Gasometer Record cost 3 [Gas used: 193, Gas left: 79532]
TRACE evm: OpCode Dup4 [@5]: 0x0000…6c2d
TRACE evm: Gasometer Record cost 5 [Gas used: 196, Gas left: 79529]
TRACE evm: OpCode overflowing_mul 348413676108971912559174908100972406029277031469, 1: 348413676108971912559174908100972406029277031469
TRACE evm: Gasometer Record cost 3 [Gas used: 201, Gas left: 79524]
TRACE evm: OpCode bitor 348413676108971912559174908100972406029277031469, 0: 348413676108971912559174908100972406029277031469
TRACE evm: Gasometer Record cost 3 [Gas used: 204, Gas left: 79521]
TRACE evm: OpCode Swap [@0:@1]: 0x0000…6c2d, 0x0000…0000
TRACE evm: Gasometer Record dynamic cost 20000 - memory_gas 18 - gas_refund 0 [Gas used: 207, Gas left: 79518]
TRACE evm: OpCode Trap: Opcode(85)
TRACE evm: Gasometer Record cost 2 [Gas used: 20207, Gas left: 59518]
TRACE evm: OpCode Pop [@1]: 0x0000…6c2d
TRACE evm: Gasometer Record cost 1 [Gas used: 20209, Gas left: 59516]
TRACE evm: Gasometer Record cost 3 [Gas used: 20210, Gas left: 59515]
TRACE evm: OpCode Dup1 [@1]: 0x0000…0080
TRACE evm: Gasometer Record cost 3 [Gas used: 20213, Gas left: 59512]
TRACE evm: OpCode Push [@2]: 0x0000…0001
TRACE evm: Gasometer Record cost 3 [Gas used: 20216, Gas left: 59509]
TRACE evm: OpCode Push [@3]: 0x0000…0000
TRACE evm: Gasometer Record cost 2 [Gas used: 20219, Gas left: 59506]
TRACE evm: OpCode Pop [@3]: 0x0000…0000
TRACE evm: Gasometer Record cost 3 [Gas used: 20221, Gas left: 59504]
TRACE evm: OpCode Swap [@0:@1]: 0x0000…0001, 0x0000…0080
TRACE evm: Gasometer Record cost 3 [Gas used: 20224, Gas left: 59501]
TRACE evm: OpCode Dup1 [@3]: 0x0000…0080
TRACE evm: Gasometer Record dynamic cost 3 - memory_gas 18 - gas_refund 0 [Gas used: 20227, Gas left: 59498]
TRACE evm: OpCode MLoad: 128
TRACE evm: Gasometer Record cost 3 [Gas used: 20230, Gas left: 59495]
TRACE evm: OpCode Swap [@0:@1]: 0x0000…000c, 0x0000…0080
TRACE evm: Gasometer Record cost 3 [Gas used: 20233, Gas left: 59492]
TRACE evm: OpCode Push [@4]: 0x0000…0020
TRACE evm: Gasometer Record cost 3 [Gas used: 20236, Gas left: 59489]
TRACE evm: OpCode overflowing_add 32, 128: 160
TRACE evm: Gasometer Record cost 3 [Gas used: 20239, Gas left: 59486]
TRACE evm: OpCode Swap [@0:@1]: 0x0000…00a0, 0x0000…000c
TRACE evm: Gasometer Record cost 3 [Gas used: 20242, Gas left: 59483]
TRACE evm: OpCode Dup3 [@4]: 0x0000…0001
TRACE evm: Gasometer Record cost 3 [Gas used: 20245, Gas left: 59480]
TRACE evm: OpCode Dup1 [@5]: 0x0000…0001
TRACE evm: Gasometer Record dynamic cost 50 - memory_gas 18 - gas_refund 0 [Gas used: 20248, Gas left: 59477]
TRACE evm: OpCode Trap: Opcode(84)
TRACE evm: Gasometer Record cost 3 [Gas used: 20298, Gas left: 59427]
TRACE evm: OpCode Dup3 [@6]: 0x0000…000c
TRACE evm: Gasometer Record cost 3 [Gas used: 20301, Gas left: 59424]
TRACE evm: OpCode Dup3 [@7]: 0x0000…0001
TRACE evm: Gasometer Record dynamic cost 20000 - memory_gas 18 - gas_refund 0 [Gas used: 20304, Gas left: 59421]
TRACE evm: OpCode Trap: Opcode(85)
TRACE evm: Gasometer Record cost 3 [Gas used: 40304, Gas left: 39421]
TRACE evm: OpCode Swap [@0:@1]: 0x0000…0000, 0x0000…0001
TRACE evm: Gasometer Record cost 3 [Gas used: 40307, Gas left: 39418]
TRACE evm: OpCode Push [@6]: 0x0000…0000
TRACE evm: Gasometer Record dynamic cost 3 - memory_gas 18 - gas_refund 0 [Gas used: 40310, Gas left: 39415]
TRACE evm: OpCode MStore: 0, 0x0000…0001
TRACE evm: Gasometer Record cost 3 [Gas used: 40313, Gas left: 39412]
TRACE evm: OpCode Push [@5]: 0x0000…0020
TRACE evm: Gasometer Record cost 3 [Gas used: 40316, Gas left: 39409]
TRACE evm: OpCode Push [@6]: 0x0000…0000
TRACE evm: Gasometer Record dynamic cost 36 - memory_gas 18 - gas_refund 0 [Gas used: 40319, Gas left: 39406]
TRACE evm: OpCode Trap: Opcode(32)
TRACE evm: Gasometer Record cost 3 [Gas used: 40355, Gas left: 39370]
TRACE evm: OpCode Swap [@0:@1]: 0xb10e…0cf6, 0x0000…0000
TRACE evm: Gasometer Record cost 3 [Gas used: 40358, Gas left: 39367]
TRACE evm: OpCode Push [@6]: 0x0000…001f
TRACE evm: Gasometer Record cost 3 [Gas used: 40361, Gas left: 39364]
TRACE evm: OpCode overflowing_add 31, 0: 31
TRACE evm: Gasometer Record cost 3 [Gas used: 40364, Gas left: 39361]
TRACE evm: OpCode Push [@6]: 0x0000…0020
TRACE evm: Gasometer Record cost 3 [Gas used: 40367, Gas left: 39358]
TRACE evm: OpCode Swap [@0:@1]: 0x0000…0020, 0x0000…001f
TRACE evm: Gasometer Record cost 5 [Gas used: 40370, Gas left: 39355]
TRACE evm: OpCode self::arithmetic::div 31, 32: 0
TRACE evm: Gasometer Record cost 3 [Gas used: 40375, Gas left: 39350]
TRACE evm: OpCode Dup2 [@6]: 0xb10e…0cf6
TRACE evm: Gasometer Record cost 3 [Gas used: 40378, Gas left: 39347]
TRACE evm: OpCode overflowing_add 80084422859880547211683076133703299733277748156566366325829078699459944778998, 0: 80084422859880547211683076133703299733277748156566366325829078699459944778998
TRACE evm: Gasometer Record cost 3 [Gas used: 40381, Gas left: 39344]
TRACE evm: OpCode Swap [@0:@3]: 0xb10e…0cf6, 0x0000…00a0
TRACE evm: Gasometer Record cost 3 [Gas used: 40384, Gas left: 39341]
TRACE evm: OpCode Dup3 [@6]: 0x0000…000c
TRACE evm: Gasometer Record cost 3 [Gas used: 40387, Gas left: 39338]
TRACE evm: OpCode self::bitwise::iszero 12: 0
TRACE evm: Gasometer Record cost 3 [Gas used: 40390, Gas left: 39335]
TRACE evm: OpCode Push [@7]: 0x0000…009e
TRACE evm: Gasometer Record cost 10 [Gas used: 40393, Gas left: 39332]
TRACE evm: OpCode JumpI: skipped
TRACE evm: Gasometer Record cost 3 [Gas used: 40403, Gas left: 39322]
TRACE evm: OpCode Swap [@0:@2]: 0x0000…00a0, 0x0000…000c
TRACE evm: Gasometer Record cost 3 [Gas used: 40406, Gas left: 39319]
TRACE evm: OpCode Dup3 [@6]: 0x0000…00a0
TRACE evm: Gasometer Record cost 3 [Gas used: 40409, Gas left: 39316]
TRACE evm: OpCode overflowing_add 160, 12: 172
TRACE evm: Gasometer Record cost 1 [Gas used: 40412, Gas left: 39313]
TRACE evm: Gasometer Record cost 3 [Gas used: 40413, Gas left: 39312]
TRACE evm: OpCode Dup3 [@6]: 0x0000…00a0
TRACE evm: Gasometer Record cost 3 [Gas used: 40416, Gas left: 39309]
TRACE evm: OpCode Dup2 [@7]: 0x0000…00ac
TRACE evm: Gasometer Record cost 3 [Gas used: 40419, Gas left: 39306]
TRACE evm: OpCode gt 172, 160: true
TRACE evm: Gasometer Record cost 3 [Gas used: 40422, Gas left: 39303]
TRACE evm: OpCode self::bitwise::iszero 1: 0
TRACE evm: Gasometer Record cost 3 [Gas used: 40425, Gas left: 39300]
TRACE evm: OpCode Push [@7]: 0x0000…009d
TRACE evm: Gasometer Record cost 10 [Gas used: 40428, Gas left: 39297]
TRACE evm: OpCode JumpI: skipped
TRACE evm: Gasometer Record cost 3 [Gas used: 40438, Gas left: 39287]
TRACE evm: OpCode Dup3 [@6]: 0x0000…00a0
TRACE evm: Gasometer Record dynamic cost 3 - memory_gas 18 - gas_refund 0 [Gas used: 40441, Gas left: 39284]
TRACE evm: OpCode MLoad: 160
TRACE evm: Gasometer Record cost 3 [Gas used: 40444, Gas left: 39281]
TRACE evm: OpCode Dup3 [@7]: 0xb10e…0cf6
TRACE evm: Gasometer Record cost 3 [Gas used: 40447, Gas left: 39278]
TRACE evm: OpCode Push [@8]: 0x0000…0000
TRACE evm: Gasometer Record cost 2 [Gas used: 40450, Gas left: 39275]
TRACE evm: OpCode Pop [@8]: 0x0000…0000
TRACE evm: Gasometer Record dynamic cost 20000 - memory_gas 18 - gas_refund 0 [Gas used: 40452, Gas left: 39273]
TRACE evm: OpCode Trap: Opcode(85)
TRACE evm: Gasometer Record cost 3 [Gas used: 60452, Gas left: 19273]
TRACE evm: OpCode Swap [@0:@2]: 0x0000…00ac, 0x0000…00a0
TRACE evm: Gasometer Record cost 3 [Gas used: 60455, Gas left: 19270]
TRACE evm: OpCode Push [@6]: 0x0000…0020
TRACE evm: Gasometer Record cost 3 [Gas used: 60458, Gas left: 19267]
TRACE evm: OpCode overflowing_add 32, 160: 192
TRACE evm: Gasometer Record cost 3 [Gas used: 60461, Gas left: 19264]
TRACE evm: OpCode Swap [@0:@2]: 0x0000…00c0, 0x0000…00ac
TRACE evm: Gasometer Record cost 3 [Gas used: 60464, Gas left: 19261]
TRACE evm: OpCode Swap [@0:@1]: 0x0000…00ac, 0xb10e…0cf6
TRACE evm: Gasometer Record cost 3 [Gas used: 60467, Gas left: 19258]
TRACE evm: OpCode Push [@6]: 0x0000…0001
TRACE evm: Gasometer Record cost 3 [Gas used: 60470, Gas left: 19255]
TRACE evm: OpCode overflowing_add 1, 80084422859880547211683076133703299733277748156566366325829078699459944778998: 80084422859880547211683076133703299733277748156566366325829078699459944778999
TRACE evm: Gasometer Record cost 3 [Gas used: 60473, Gas left: 19252]
TRACE evm: OpCode Swap [@0:@1]: 0xb10e…0cf7, 0x0000…00ac
TRACE evm: Gasometer Record cost 3 [Gas used: 60476, Gas left: 19249]
TRACE evm: OpCode Push [@6]: 0x0000…0081
TRACE evm: Gasometer Record cost 8 [Gas used: 60479, Gas left: 19246]
TRACE evm: OpCode Jump: 129
TRACE evm: Gasometer Record cost 1 [Gas used: 60487, Gas left: 19238]
TRACE evm: Gasometer Record cost 3 [Gas used: 60488, Gas left: 19237]
TRACE evm: OpCode Dup3 [@6]: 0x0000…00c0
TRACE evm: Gasometer Record cost 3 [Gas used: 60491, Gas left: 19234]
TRACE evm: OpCode Dup2 [@7]: 0x0000…00ac
TRACE evm: Gasometer Record cost 3 [Gas used: 60494, Gas left: 19231]
TRACE evm: OpCode gt 172, 192: false
TRACE evm: Gasometer Record cost 3 [Gas used: 60497, Gas left: 19228]
TRACE evm: OpCode self::bitwise::iszero 0: 1
TRACE evm: Gasometer Record cost 3 [Gas used: 60500, Gas left: 19225]
TRACE evm: OpCode Push [@7]: 0x0000…009d
TRACE evm: Gasometer Record cost 10 [Gas used: 60503, Gas left: 19222]
TRACE evm: OpCode JumpI: 157
TRACE evm: Gasometer Record cost 1 [Gas used: 60513, Gas left: 19212]
TRACE evm: Gasometer Record cost 1 [Gas used: 60514, Gas left: 19211]
TRACE evm: Gasometer Record cost 2 [Gas used: 60515, Gas left: 19210]
TRACE evm: OpCode Pop [@5]: 0x0000…00ac
TRACE evm: Gasometer Record cost 3 [Gas used: 60517, Gas left: 19208]
TRACE evm: OpCode Swap [@0:@1]: 0xb10e…0cf7, 0x0000…00c0
TRACE evm: Gasometer Record cost 2 [Gas used: 60520, Gas left: 19205]
TRACE evm: OpCode Pop [@4]: 0x0000…00c0
TRACE evm: Gasometer Record cost 3 [Gas used: 60522, Gas left: 19203]
TRACE evm: OpCode Push [@4]: 0x0000…00c5
TRACE evm: Gasometer Record cost 3 [Gas used: 60525, Gas left: 19200]
TRACE evm: OpCode Swap [@0:@2]: 0x0000…00c5, 0xb10e…0cf6
TRACE evm: Gasometer Record cost 3 [Gas used: 60528, Gas left: 19197]
TRACE evm: OpCode Swap [@0:@1]: 0xb10e…0cf6, 0xb10e…0cf7
TRACE evm: Gasometer Record cost 3 [Gas used: 60531, Gas left: 19194]
TRACE evm: OpCode Push [@5]: 0x0000…00a9
TRACE evm: Gasometer Record cost 8 [Gas used: 60534, Gas left: 19191]
TRACE evm: OpCode Jump: 169
TRACE evm: Gasometer Record cost 1 [Gas used: 60542, Gas left: 19183]
TRACE evm: Gasometer Record cost 3 [Gas used: 60543, Gas left: 19182]
TRACE evm: OpCode Dup1 [@5]: 0xb10e…0cf7
TRACE evm: Gasometer Record cost 3 [Gas used: 60546, Gas left: 19179]
TRACE evm: OpCode Dup3 [@6]: 0xb10e…0cf6
TRACE evm: Gasometer Record cost 3 [Gas used: 60549, Gas left: 19176]
TRACE evm: OpCode gt 80084422859880547211683076133703299733277748156566366325829078699459944778998, 80084422859880547211683076133703299733277748156566366325829078699459944778999: false
TRACE evm: Gasometer Record cost 3 [Gas used: 60552, Gas left: 19173]
TRACE evm: OpCode self::bitwise::iszero 0: 1
TRACE evm: Gasometer Record cost 3 [Gas used: 60555, Gas left: 19170]
TRACE evm: OpCode Push [@6]: 0x0000…00c1
TRACE evm: Gasometer Record cost 10 [Gas used: 60558, Gas left: 19167]
TRACE evm: OpCode JumpI: 193
TRACE evm: Gasometer Record cost 1 [Gas used: 60568, Gas left: 19157]
TRACE evm: Gasometer Record cost 2 [Gas used: 60569, Gas left: 19156]
TRACE evm: OpCode Pop [@4]: 0xb10e…0cf7
TRACE evm: Gasometer Record cost 3 [Gas used: 60571, Gas left: 19154]
TRACE evm: OpCode Swap [@0:@1]: 0xb10e…0cf6, 0x0000…00c5
TRACE evm: Gasometer Record cost 8 [Gas used: 60574, Gas left: 19151]
TRACE evm: OpCode Jump: 197
TRACE evm: Gasometer Record cost 1 [Gas used: 60582, Gas left: 19143]
TRACE evm: Gasometer Record cost 2 [Gas used: 60583, Gas left: 19142]
TRACE evm: OpCode Pop [@2]: 0xb10e…0cf6
TRACE evm: Gasometer Record cost 2 [Gas used: 60585, Gas left: 19140]
TRACE evm: OpCode Pop [@1]: 0x0000…0001
TRACE evm: Gasometer Record cost 1 [Gas used: 60587, Gas left: 19138]
TRACE evm: Gasometer Record cost 2 [Gas used: 60588, Gas left: 19137]
TRACE evm: OpCode Pop [@0]: 0x0000…0080
TRACE evm: Gasometer Record cost 3 [Gas used: 60590, Gas left: 19135]
TRACE evm: OpCode Push [@0]: 0x0000…01dc
TRACE evm: Gasometer Record cost 3 [Gas used: 60593, Gas left: 19132]
TRACE evm: OpCode Dup1 [@1]: 0x0000…01dc
TRACE evm: Gasometer Record cost 3 [Gas used: 60596, Gas left: 19129]
TRACE evm: OpCode Push [@2]: 0x0000…00d8
TRACE evm: Gasometer Record cost 3 [Gas used: 60599, Gas left: 19126]
TRACE evm: OpCode Push [@3]: 0x0000…0000
TRACE evm: Gasometer Record dynamic cost 48 - memory_gas 45 - gas_refund 0 [Gas used: 60602, Gas left: 19123]
TRACE evm: OpCode CodeCopy: 476
TRACE evm: Gasometer Record cost 3 [Gas used: 60677, Gas left: 19048]
TRACE evm: OpCode Push [@1]: 0x0000…0000
TRACE evm: Gasometer Record dynamic cost 0 - memory_gas 45 - gas_refund 0 [Gas used: 60680, Gas left: 19045]
TRACE evm: OpCode Return
DEBUG evm: Create execution using address 0x630e…fe7a: Succeed(Returned)
TRACE evm: Gasometer Record cost 95200 [Gas used: 60680, Gas left: 19045]
Expected State Changes
Hardfork: frontier
Gas used: 125984
Result: Succeed(Returned)
Empty Contract Created at 0x630ea66c8c5dc205d45a978573fa86df5af1fe7a
The difference in the execution is that if there's no gas for paying the bytecode deposit bytes.len() * 200
, it must deploy an Empty Contract Account, which is the same as deploying a regular contract, but without the bytecode.
{
"nonce": 0,
"balance": tx.value,
"code": [], // empty bytes
"storage": {
"0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000003d0768da09ce77d25e2d998e6a7b6ed4b9116c2d",
"0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000000000000000000000000000000000000000000c",
"0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6": "0x48656c6c6f20576f726c64210000000000000000000000000000000000000000"
},
}
For compute the state root I'm using this crate: https://docs.rs/trie-root/latest/trie_root/