@@ -302,13 +302,13 @@ func TestInternals(t *testing.T) {
302302 byte (vm .CALL ),
303303 },
304304 tracer : mkTracer ("callTracer" , nil ),
305- want : `{"from":"0x000000000000000000000000000000000000feed","gas":"0x13880 ","gasUsed":"0x54d8","to":"0x00000000000000000000000000000000deadbeef","input":"0x","calls":[{"from":"0x00000000000000000000000000000000deadbeef","gas":"0xe01a ","gasUsed":"0x0","to":"0x00000000000000000000000000000000000000ff","input":"0x","value":"0x0","type":"CALL"}],"value":"0x0","type":"CALL"}` ,
305+ want : `{"from":"0x000000000000000000000000000000000000feed","gas":"0xc350 ","gasUsed":"0x54d8","to":"0x00000000000000000000000000000000deadbeef","input":"0x","calls":[{"from":"0x00000000000000000000000000000000deadbeef","gas":"0x6cbf ","gasUsed":"0x0","to":"0x00000000000000000000000000000000000000ff","input":"0x","value":"0x0","type":"CALL"}],"value":"0x0","type":"CALL"}` ,
306306 },
307307 {
308308 name : "Stack depletion in LOG0" ,
309309 code : []byte {byte (vm .LOG3 )},
310310 tracer : mkTracer ("callTracer" , json .RawMessage (`{ "withLog": true }` )),
311- want : `{"from":"0x000000000000000000000000000000000000feed","gas":"0x13880 ","gasUsed":"0x13880 ","to":"0x00000000000000000000000000000000deadbeef","input":"0x","error":"stack underflow (0 \u003c=\u003e 5)","value":"0x0","type":"CALL"}` ,
311+ want : `{"from":"0x000000000000000000000000000000000000feed","gas":"0xc350 ","gasUsed":"0xc350 ","to":"0x00000000000000000000000000000000deadbeef","input":"0x","error":"stack underflow (0 \u003c=\u003e 5)","value":"0x0","type":"CALL"}` ,
312312 },
313313 {
314314 name : "Mem expansion in LOG0" ,
@@ -321,11 +321,11 @@ func TestInternals(t *testing.T) {
321321 byte (vm .LOG0 ),
322322 },
323323 tracer : mkTracer ("callTracer" , json .RawMessage (`{ "withLog": true }` )),
324- want : `{"from":"0x000000000000000000000000000000000000feed","gas":"0x13880 ","gasUsed":"0x5b9e","to":"0x00000000000000000000000000000000deadbeef","input":"0x","logs":[{"address":"0x00000000000000000000000000000000deadbeef","topics":[],"data":"0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}],"value":"0x0","type":"CALL"}` ,
324+ want : `{"from":"0x000000000000000000000000000000000000feed","gas":"0xc350 ","gasUsed":"0x5b9e","to":"0x00000000000000000000000000000000deadbeef","input":"0x","logs":[{"address":"0x00000000000000000000000000000000deadbeef","topics":[],"data":"0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}],"value":"0x0","type":"CALL"}` ,
325325 },
326326 {
327327 // Leads to OOM on the prestate tracer
328- name : "Prestate-tracer - CREATE2 OOM " ,
328+ name : "Prestate-tracer - mem expansion in CREATE2 " ,
329329 code : []byte {
330330 byte (vm .PUSH1 ), 0x1 ,
331331 byte (vm .PUSH1 ), 0x0 ,
@@ -339,62 +339,41 @@ func TestInternals(t *testing.T) {
339339 byte (vm .PUSH1 ), 0x0 ,
340340 byte (vm .LOG0 ),
341341 },
342- tracer : mkTracer ("prestateTracer" , nil ),
343- want : `{"0x0000000000000000000000000000000000000000":{"balance":"0x0"},"0x000000000000000000000000000000000000feed":{"balance":"0x1c6bf52647880"},"0x00000000000000000000000000000000deadbeef":{"balance":"0x0","code":"0x6001600052600164ffffffffff60016000f560ff6000a0"}}` ,
344- },
345- {
346- // CREATE2 which requires padding memory by prestate tracer
347- name : "Prestate-tracer - CREATE2 Memory padding" ,
348- code : []byte {
349- byte (vm .PUSH1 ), 0x1 ,
350- byte (vm .PUSH1 ), 0x0 ,
351- byte (vm .MSTORE ),
352- byte (vm .PUSH1 ), 0x1 ,
353- byte (vm .PUSH1 ), 0xff ,
354- byte (vm .PUSH1 ), 0x1 ,
355- byte (vm .PUSH1 ), 0x0 ,
356- byte (vm .CREATE2 ),
357- byte (vm .PUSH1 ), 0xff ,
358- byte (vm .PUSH1 ), 0x0 ,
359- byte (vm .LOG0 ),
360- },
361- tracer : mkTracer ("prestateTracer" , nil ),
362- want : `{"0x0000000000000000000000000000000000000000":{"balance":"0x0"},"0x000000000000000000000000000000000000feed":{"balance":"0x1c6bf52647880"},"0x00000000000000000000000000000000deadbeef":{"balance":"0x0","code":"0x6001600052600160ff60016000f560ff6000a0"},"0x91ff9a805d36f54e3e272e230f3e3f5c1b330804":{"balance":"0x0"}}` ,
342+ tracer : mkTracer ("prestateTracer" , json .RawMessage (`{ "withLog": true }` )),
343+ want : `{"0x0000000000000000000000000000000000000000":{"balance":"0x0"},"0x000000000000000000000000000000000000feed":{"balance":"0x1c6bf52640350"},"0x00000000000000000000000000000000deadbeef":{"balance":"0x0","code":"0x6001600052600164ffffffffff60016000f560ff6000a0"}}` ,
363344 },
364345 } {
365- t .Run (tc .name , func (t * testing.T ) {
366- _ , statedb := tests .MakePreState (rawdb .NewMemoryDatabase (),
367- core.GenesisAlloc {
368- to : core.GenesisAccount {
369- Code : tc .code ,
370- },
371- origin : core.GenesisAccount {
372- Balance : big .NewInt (500000000000000 ),
373- },
374- }, false )
375- evm := vm .NewEVM (context , txContext , statedb , params .MainnetChainConfig , vm.Config {Tracer : tc .tracer })
376- msg := & core.Message {
377- To : & to ,
378- From : origin ,
379- Value : big .NewInt (0 ),
380- GasLimit : 80000 ,
381- GasPrice : big .NewInt (0 ),
382- GasFeeCap : big .NewInt (0 ),
383- GasTipCap : big .NewInt (0 ),
384- SkipAccountChecks : false ,
385- }
386- st := core .NewStateTransition (evm , msg , new (core.GasPool ).AddGas (msg .GasLimit ))
387- if _ , err := st .TransitionDb (); err != nil {
388- t .Fatalf ("test %v: failed to execute transaction: %v" , tc .name , err )
389- }
390- // Retrieve the trace result and compare against the expected
391- res , err := tc .tracer .GetResult ()
392- if err != nil {
393- t .Fatalf ("test %v: failed to retrieve trace result: %v" , tc .name , err )
394- }
395- if string (res ) != tc .want {
396- t .Errorf ("test %v: trace mismatch\n have: %v\n want: %v\n " , tc .name , string (res ), tc .want )
397- }
398- })
346+ _ , statedb := tests .MakePreState (rawdb .NewMemoryDatabase (),
347+ core.GenesisAlloc {
348+ to : core.GenesisAccount {
349+ Code : tc .code ,
350+ },
351+ origin : core.GenesisAccount {
352+ Balance : big .NewInt (500000000000000 ),
353+ },
354+ }, false )
355+ evm := vm .NewEVM (context , txContext , statedb , params .MainnetChainConfig , vm.Config {Tracer : tc .tracer })
356+ msg := & core.Message {
357+ To : & to ,
358+ From : origin ,
359+ Value : big .NewInt (0 ),
360+ GasLimit : 50000 ,
361+ GasPrice : big .NewInt (0 ),
362+ GasFeeCap : big .NewInt (0 ),
363+ GasTipCap : big .NewInt (0 ),
364+ SkipAccountChecks : false ,
365+ }
366+ st := core .NewStateTransition (evm , msg , new (core.GasPool ).AddGas (msg .GasLimit ))
367+ if _ , err := st .TransitionDb (); err != nil {
368+ t .Fatalf ("test %v: failed to execute transaction: %v" , tc .name , err )
369+ }
370+ // Retrieve the trace result and compare against the expected
371+ res , err := tc .tracer .GetResult ()
372+ if err != nil {
373+ t .Fatalf ("test %v: failed to retrieve trace result: %v" , tc .name , err )
374+ }
375+ if string (res ) != tc .want {
376+ t .Fatalf ("test %v: trace mismatch\n have: %v\n want: %v\n " , tc .name , string (res ), tc .want )
377+ }
399378 }
400379}
0 commit comments