@@ -53,11 +53,19 @@ type arbitrumTransfer struct {
53
53
Value string `json:"value"`
54
54
}
55
55
56
+ type balanceChange struct {
57
+ Addr string `json:"addr"`
58
+ Prev string `json:"prev"`
59
+ New string `json:"new"`
60
+ Reason string `json:"reason"`
61
+ }
62
+
56
63
// callTrace is the result of a callTracer run.
57
64
type callTrace struct {
58
65
// Arbitrum: we add these here due to the tracer returning the top frame
59
66
BeforeEVMTransfers * []arbitrumTransfer `json:"beforeEVMTransfers,omitempty"`
60
67
AfterEVMTransfers * []arbitrumTransfer `json:"afterEVMTransfers,omitempty"`
68
+ BalanceChanges * []balanceChange `json:"balanceChanges,omitempty"`
61
69
62
70
From common.Address `json:"from"`
63
71
Gas * hexutil.Uint64 `json:"gas"`
@@ -301,13 +309,13 @@ func TestInternals(t *testing.T) {
301
309
byte (vm .CALL ),
302
310
},
303
311
tracer : mkTracer ("callTracer" , nil ),
304
- want : fmt .Sprintf (`{"beforeEVMTransfers":[{"purpose":"feePayment","from":"%s","to":null,"value":"0x13880"}],"afterEVMTransfers":[{"purpose":"gasRefund","from":null,"to":"%s","value":"0xe3a8"},{"purpose":"tip","from":null,"to":"0x0000000000000000000000000000000000000000","value":"0x54d8"}],"from":"%s","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"}` , origin .Hex (), origin .Hex (), originHex ),
312
+ want : fmt .Sprintf (`{"beforeEVMTransfers":[{"purpose":"feePayment","from":"%s","to":null,"value":"0x13880"}],"afterEVMTransfers":[{"purpose":"gasRefund","from":null,"to":"%s","value":"0xe3a8"},{"purpose":"tip","from":null,"to":"0x0000000000000000000000000000000000000000","value":"0x54d8"}],"balanceChanges":[{"addr":"%s","prev":"0x1c6bf52634000","new":"0x1c6bf52620780","reason":"unspecified"},{"addr":"%s","prev":"0x1c6bf52620780","new":"0x1c6bf5262eb28","reason":"unspecified"},{"addr":"0x0000000000000000000000000000000000000000","prev":"0x0","new":"0x54d8","reason":"unspecified"}]," from":"%s","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"}` , origin . Hex (), origin . Hex () , origin .Hex (), origin .Hex (), originHex ),
305
313
},
306
314
{
307
315
name : "Stack depletion in LOG0" ,
308
316
code : []byte {byte (vm .LOG3 )},
309
317
tracer : mkTracer ("callTracer" , json .RawMessage (`{ "withLog": true }` )),
310
- want : fmt .Sprintf (`{"beforeEVMTransfers":[{"purpose":"feePayment","from":"%s","to":null,"value":"0x13880"}],"afterEVMTransfers":[{"purpose":"gasRefund","from":null,"to":"%s","value":"0x0"},{"purpose":"tip","from":null,"to":"0x0000000000000000000000000000000000000000","value":"0x13880"}],"from":"%s","gas":"0x13880","gasUsed":"0x13880","to":"0x00000000000000000000000000000000deadbeef","input":"0x","error":"stack underflow (0 \u003c=\u003e 5)","value":"0x0","type":"CALL"}` , origin .Hex (), origin .Hex (), originHex ),
318
+ want : fmt .Sprintf (`{"beforeEVMTransfers":[{"purpose":"feePayment","from":"%s","to":null,"value":"0x13880"}],"afterEVMTransfers":[{"purpose":"gasRefund","from":null,"to":"%s","value":"0x0"},{"purpose":"tip","from":null,"to":"0x0000000000000000000000000000000000000000","value":"0x13880"}],"balanceChanges":[{"addr":"%s","prev":"0x1c6bf52634000","new":"0x1c6bf52620780","reason":"unspecified"},{"addr":"0x0000000000000000000000000000000000000000","prev":"0x0","new":"0x13880","reason":"unspecified"}]," from":"%s","gas":"0x13880","gasUsed":"0x13880","to":"0x00000000000000000000000000000000deadbeef","input":"0x","error":"stack underflow (0 \u003c=\u003e 5)","value":"0x0","type":"CALL"}` , origin . Hex () , origin .Hex (), origin .Hex (), originHex ),
311
319
},
312
320
{
313
321
name : "Mem expansion in LOG0" ,
@@ -320,7 +328,7 @@ func TestInternals(t *testing.T) {
320
328
byte (vm .LOG0 ),
321
329
},
322
330
tracer : mkTracer ("callTracer" , json .RawMessage (`{ "withLog": true }` )),
323
- want : fmt .Sprintf (`{"beforeEVMTransfers":[{"purpose":"feePayment","from":"%s","to":null,"value":"0x13880"}],"afterEVMTransfers":[{"purpose":"gasRefund","from":null,"to":"%s","value":"0xdce2"},{"purpose":"tip","from":null,"to":"0x0000000000000000000000000000000000000000","value":"0x5b9e"}],"from":"%s","gas":"0x13880","gasUsed":"0x5b9e","to":"0x00000000000000000000000000000000deadbeef","input":"0x","logs":[{"address":"0x00000000000000000000000000000000deadbeef","topics":[],"data":"0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","position":"0x0"}],"value":"0x0","type":"CALL"}` , origin .Hex (), origin .Hex (), originHex ),
331
+ want : fmt .Sprintf (`{"beforeEVMTransfers":[{"purpose":"feePayment","from":"%s","to":null,"value":"0x13880"}],"afterEVMTransfers":[{"purpose":"gasRefund","from":null,"to":"%s","value":"0xdce2"},{"purpose":"tip","from":null,"to":"0x0000000000000000000000000000000000000000","value":"0x5b9e"}],"balanceChanges":[{"addr":"%s","prev":"0x1c6bf52634000","new":"0x1c6bf52620780","reason":"unspecified"},{"addr":"%s","prev":"0x1c6bf52620780","new":"0x1c6bf5262e462","reason":"unspecified"},{"addr":"0x0000000000000000000000000000000000000000","prev":"0x0","new":"0x5b9e","reason":"unspecified"}],"from":"%s","gas":"0x13880","gasUsed":"0x5b9e","to":"0x00000000000000000000000000000000deadbeef","input":"0x","logs":[{"address":"0x00000000000000000000000000000000deadbeef","topics":[],"data":"0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","position":"0x0"}],"value":"0x0","type":"CALL"}` , origin .Hex (), origin .Hex (), origin .Hex (), origin .Hex (), originHex ),
324
332
},
325
333
{
326
334
// Leads to OOM on the prestate tracer
0 commit comments