Skip to content

Commit e4c8a5f

Browse files
holimans1na
authored andcommitted
eth/tracers: simplify test framework ethereum#25973
Co-authored-by: Sina Mahmoodi <[email protected]>
1 parent ab3986e commit e4c8a5f

File tree

9 files changed

+153
-85
lines changed

9 files changed

+153
-85
lines changed

eth/tracers/internal/tracetest/calltrace_test.go

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,18 @@ type callContext struct {
4949

5050
// callTrace is the result of a callTracer run.
5151
type callTrace struct {
52-
Type string `json:"type"`
5352
From common.Address `json:"from"`
54-
To common.Address `json:"to"`
53+
Gas *hexutil.Uint64 `json:"gas"`
54+
GasUsed *hexutil.Uint64 `json:"gasUsed"`
55+
To common.Address `json:"to,omitempty"`
5556
Input hexutil.Bytes `json:"input"`
56-
Output hexutil.Bytes `json:"output"`
57-
Gas *hexutil.Uint64 `json:"gas,omitempty"`
58-
GasUsed *hexutil.Uint64 `json:"gasUsed,omitempty"`
59-
Value *hexutil.Big `json:"value,omitempty"`
57+
Output hexutil.Bytes `json:"output,omitempty"`
6058
Error string `json:"error,omitempty"`
6159
Revertal string `json:"revertReason,omitempty"`
6260
Calls []callTrace `json:"calls,omitempty"`
61+
Value *hexutil.Big `json:"value,omitempty"`
62+
// Gencodec adds overridden fields at the end
63+
Type string `json:"type"`
6364
}
6465

6566
// callTracerTest defines a single test to check the call tracer against.
@@ -144,17 +145,21 @@ func testCallTracer(tracerName string, dirPath string, t *testing.T) {
144145
if err != nil {
145146
t.Fatalf("failed to retrieve trace result: %v", err)
146147
}
147-
ret := new(callTrace)
148-
if err := json.Unmarshal(res, ret); err != nil {
149-
t.Fatalf("failed to unmarshal trace result: %v", err)
148+
// The legacy javascript calltracer marshals json in js, which
149+
// is not deterministic (as opposed to the golang json encoder).
150+
if strings.HasSuffix(dirPath, "_legacy") {
151+
// This is a tweak to make it deterministic. Can be removed when
152+
// we remove the legacy tracer.
153+
var x callTrace
154+
json.Unmarshal(res, &x)
155+
res, _ = json.Marshal(x)
150156
}
151-
152-
if !jsonEqual(ret, test.Result, new(callTrace), new(callTrace)) {
153-
// uncomment this for easier debugging
154-
//have, _ := json.MarshalIndent(ret, "", " ")
155-
//want, _ := json.MarshalIndent(test.Result, "", " ")
156-
//t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", string(have), string(want))
157-
t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", ret, test.Result)
157+
want, err := json.Marshal(test.Result)
158+
if err != nil {
159+
t.Fatalf("failed to marshal test: %v", err)
160+
}
161+
if string(want) != string(res) {
162+
t.Fatalf("trace mismatch\n have: %v\n want: %v\n", string(res), string(want))
158163
}
159164
})
160165
}
@@ -297,15 +302,9 @@ func TestZeroValueToNotExitCall(t *testing.T) {
297302
if err != nil {
298303
t.Fatalf("failed to retrieve trace result: %v", err)
299304
}
300-
have := new(callTrace)
301-
if err := json.Unmarshal(res, have); err != nil {
302-
t.Fatalf("failed to unmarshal trace result: %v", err)
303-
}
304-
wantStr := `{"type":"CALL","from":"0x682a80a6f560eec50d54e63cbeda1c324c5f8d1b","to":"0x00000000000000000000000000000000deadbeef","value":"0x0","gas":"0x7148","gasUsed":"0x2d0","input":"0x","output":"0x","calls":[{"type":"CALL","from":"0x00000000000000000000000000000000deadbeef","to":"0x00000000000000000000000000000000000000ff","value":"0x0","gas":"0x6cbf","gasUsed":"0x0","input":"0x","output":"0x"}]}`
305-
want := new(callTrace)
306-
json.Unmarshal([]byte(wantStr), want)
307-
if !jsonEqual(have, want, new(callTrace), new(callTrace)) {
308-
t.Error("have != want")
305+
wantStr := `{"from":"0x682a80a6f560eec50d54e63cbeda1c324c5f8d1b","gas":"0x7148","gasUsed":"0x2d0","to":"0x00000000000000000000000000000000deadbeef","input":"0x","calls":[{"from":"0x00000000000000000000000000000000deadbeef","gas":"0x6cbf","gasUsed":"0x0","to":"0x00000000000000000000000000000000000000ff","input":"0x","value":"0x0","type":"CALL"}],"value":"0x0","type":"CALL"}`
306+
if string(res) != wantStr {
307+
t.Fatalf("trace mismatch\n have: %v\n want: %v\n", string(res), wantStr)
309308
}
310309
}
311310

eth/tracers/internal/tracetest/prestate_test.go

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -35,36 +35,36 @@ import (
3535

3636
// prestateTrace is the result of a prestateTrace run.
3737
type prestateTrace = map[common.Address]*account
38+
3839
type account struct {
39-
Balance string `json:"balance,omitempty"`
40-
Nonce uint64 `json:"nonce,omitempty"`
41-
Code string `json:"code,omitempty"`
42-
Storage map[common.Hash]common.Hash `json:"storage,omitempty"`
43-
}
44-
type prePostStateTrace struct {
45-
Pre prestateTrace `json:"pre"`
46-
Post prestateTrace `json:"post"`
40+
Balance string `json:"balance"`
41+
Code string `json:"code"`
42+
Nonce uint64 `json:"nonce"`
43+
Storage map[common.Hash]common.Hash `json:"storage"`
4744
}
4845

49-
// prestateTraceTest defines a single test to check the stateDiff tracer against.
50-
type prestateTraceTest struct {
46+
// testcase defines a single test to check the stateDiff tracer against.
47+
type testcase struct {
5148
Genesis *core.Genesis `json:"genesis"`
5249
Context *callContext `json:"context"`
5350
Input string `json:"input"`
5451
TracerConfig json.RawMessage `json:"tracerConfig"`
5552
Result interface{} `json:"result"`
5653
}
5754

55+
func TestPrestateTracerLegacy(t *testing.T) {
56+
testPrestateDiffTracer("prestateTracerLegacy", "prestate_tracer_legacy", t)
57+
}
58+
5859
func TestPrestateTracer(t *testing.T) {
59-
testPrestateDiffTracer("prestateTracer", "prestate_tracer", t, func() interface{} { return new(prestateTrace) })
60+
testPrestateDiffTracer("prestateTracer", "prestate_tracer", t)
6061
}
6162

6263
func TestPrestateWithDiffModeTracer(t *testing.T) {
63-
t.Skip("This test will fail")
64-
testPrestateDiffTracer("prestateTracer", "prestate_tracer_with_diff_mode", t, func() interface{} { return new(prePostStateTrace) })
64+
testPrestateDiffTracer("prestateTracer", "prestate_tracer_with_diff_mode", t)
6565
}
6666

67-
func testPrestateDiffTracer(tracerName string, dirPath string, t *testing.T, typeBuilder func() interface{}) {
67+
func testPrestateDiffTracer(tracerName string, dirPath string, t *testing.T) {
6868
files, err := os.ReadDir(filepath.Join("testdata", dirPath))
6969
if err != nil {
7070
t.Fatalf("failed to retrieve tracer test suite: %v", err)
@@ -78,7 +78,7 @@ func testPrestateDiffTracer(tracerName string, dirPath string, t *testing.T, typ
7878
t.Parallel()
7979

8080
var (
81-
test = new(prestateTraceTest)
81+
test = new(testcase)
8282
tx = new(types.Transaction)
8383
)
8484
// Call tracer test found, read if from disk
@@ -128,17 +128,21 @@ func testPrestateDiffTracer(tracerName string, dirPath string, t *testing.T, typ
128128
if err != nil {
129129
t.Fatalf("failed to retrieve trace result: %v", err)
130130
}
131-
ret := typeBuilder()
132-
if err := json.Unmarshal(res, ret); err != nil {
133-
t.Fatalf("failed to unmarshal trace result: %v", err)
131+
// The legacy javascript calltracer marshals json in js, which
132+
// is not deterministic (as opposed to the golang json encoder).
133+
if strings.HasSuffix(dirPath, "_legacy") {
134+
// This is a tweak to make it deterministic. Can be removed when
135+
// we remove the legacy tracer.
136+
var x prestateTrace
137+
json.Unmarshal(res, &x)
138+
res, _ = json.Marshal(x)
134139
}
135-
136-
if !jsonEqual(ret, test.Result, typeBuilder(), typeBuilder()) {
137-
// uncomment this for easier debugging
138-
// have, _ := json.MarshalIndent(ret, "", " ")
139-
// want, _ := json.MarshalIndent(test.Result, "", " ")
140-
// t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", string(have), string(want))
141-
t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", ret, test.Result)
140+
want, err := json.Marshal(test.Result)
141+
if err != nil {
142+
t.Fatalf("failed to marshal test: %v", err)
143+
}
144+
if string(want) != string(res) {
145+
t.Fatalf("trace mismatch\n have: %v\n want: %v\n", string(res), string(want))
142146
}
143147
})
144148
}

eth/tracers/internal/tracetest/testdata/prestate_tracer/simple.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@
7777
"nonce": 29072
7878
},
7979
"0x1585936b53834b021f68cc13eeefdec2efc8e724": {
80-
"balance": "0x0",
81-
"nonce": 0
80+
"balance": "0x0"
8281
}
8382
}
8483
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
{
2+
"context": {
3+
"difficulty": "3502894804",
4+
"gasLimit": "4722976",
5+
"miner": "0x1585936b53834b021f68cc13eeefdec2efc8e724",
6+
"number": "2289806",
7+
"timestamp": "1513601314"
8+
},
9+
"genesis": {
10+
"alloc": {
11+
"0x0024f658a46fbb89d8ac105e98d7ac7cbbaf27c5": {
12+
"balance": "0x0",
13+
"code": "0x",
14+
"nonce": "22",
15+
"storage": {}
16+
},
17+
"0x3b873a919aa0512d5a0f09e6dcceaa4a6727fafe": {
18+
"balance": "0x4d87094125a369d9bd5",
19+
"code": "0x606060405236156100935763ffffffff60e060020a60003504166311ee8382811461009c57806313af4035146100be5780631f5e8f4c146100ee57806324daddc5146101125780634921a91a1461013b57806363e4bff414610157578063764978f91461017f578063893d20e8146101a1578063ba40aaa1146101cd578063cebc9a82146101f4578063e177246e14610216575b61009a5b5b565b005b34156100a457fe5b6100ac61023d565b60408051918252519081900360200190f35b34156100c657fe5b6100da600160a060020a0360043516610244565b604080519115158252519081900360200190f35b34156100f657fe5b6100da610307565b604080519115158252519081900360200190f35b341561011a57fe5b6100da6004351515610318565b604080519115158252519081900360200190f35b6100da6103d6565b604080519115158252519081900360200190f35b6100da600160a060020a0360043516610420565b604080519115158252519081900360200190f35b341561018757fe5b6100ac61046c565b60408051918252519081900360200190f35b34156101a957fe5b6101b1610473565b60408051600160a060020a039092168252519081900360200190f35b34156101d557fe5b6100da600435610483565b604080519115158252519081900360200190f35b34156101fc57fe5b6100ac61050d565b60408051918252519081900360200190f35b341561021e57fe5b6100da600435610514565b604080519115158252519081900360200190f35b6003545b90565b60006000610250610473565b600160a060020a031633600160a060020a03161415156102705760006000fd5b600160a060020a03831615156102865760006000fd5b50600054600160a060020a0390811690831681146102fb57604051600160a060020a0380851691908316907ffcf23a92150d56e85e3a3d33b357493246e55783095eb6a733eb8439ffc752c890600090a360008054600160a060020a031916600160a060020a03851617905560019150610300565b600091505b5b50919050565b60005460a060020a900460ff165b90565b60006000610324610473565b600160a060020a031633600160a060020a03161415156103445760006000fd5b5060005460a060020a900460ff16801515831515146102fb576000546040805160a060020a90920460ff1615158252841515602083015280517fe6cd46a119083b86efc6884b970bfa30c1708f53ba57b86716f15b2f4551a9539281900390910190a16000805460a060020a60ff02191660a060020a8515150217905560019150610300565b600091505b5b50919050565b60006103e0610307565b801561040557506103ef610473565b600160a060020a031633600160a060020a031614155b156104105760006000fd5b610419336105a0565b90505b5b90565b600061042a610307565b801561044f5750610439610473565b600160a060020a031633600160a060020a031614155b1561045a5760006000fd5b610463826105a0565b90505b5b919050565b6001545b90565b600054600160a060020a03165b90565b6000600061048f610473565b600160a060020a031633600160a060020a03161415156104af5760006000fd5b506001548281146102fb57604080518281526020810185905281517f79a3746dde45672c9e8ab3644b8bb9c399a103da2dc94b56ba09777330a83509929181900390910190a160018381559150610300565b600091505b5b50919050565b6002545b90565b60006000610520610473565b600160a060020a031633600160a060020a03161415156105405760006000fd5b506002548281146102fb57604080518281526020810185905281517ff6991a728965fedd6e927fdf16bdad42d8995970b4b31b8a2bf88767516e2494929181900390910190a1600283905560019150610300565b600091505b5b50919050565b60006000426105ad61023d565b116102fb576105c46105bd61050d565b4201610652565b6105cc61046c565b604051909150600160a060020a038416908290600081818185876187965a03f1925050501561063d57604080518281529051600160a060020a038516917f9bca65ce52fdef8a470977b51f247a2295123a4807dfa9e502edf0d30722da3b919081900360200190a260019150610300565b6102fb42610652565b5b600091505b50919050565b60038190555b505600a165627a7a72305820f3c973c8b7ed1f62000b6701bd5b708469e19d0f1d73fde378a56c07fd0b19090029",
20+
"nonce": "1",
21+
"storage": {
22+
"0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000001b436ba50d378d4bbc8660d312a13df6af6e89dfb",
23+
"0x0000000000000000000000000000000000000000000000000000000000000001": "0x00000000000000000000000000000000000000000000000006f05b59d3b20000",
24+
"0x0000000000000000000000000000000000000000000000000000000000000002": "0x000000000000000000000000000000000000000000000000000000000000003c",
25+
"0x0000000000000000000000000000000000000000000000000000000000000003": "0x000000000000000000000000000000000000000000000000000000005a37b834"
26+
}
27+
},
28+
"0xb436ba50d378d4bbc8660d312a13df6af6e89dfb": {
29+
"balance": "0x1780d77678137ac1b775",
30+
"code": "0x",
31+
"nonce": "29072",
32+
"storage": {}
33+
}
34+
},
35+
"config": {
36+
"byzantiumBlock": 1700000,
37+
"chainId": 3,
38+
"daoForkSupport": true,
39+
"eip150Block": 0,
40+
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d",
41+
"eip155Block": 10,
42+
"eip158Block": 10,
43+
"ethash": {},
44+
"homesteadBlock": 0
45+
},
46+
"difficulty": "3509749784",
47+
"extraData": "0x4554482e45544846414e532e4f52472d4641313738394444",
48+
"gasLimit": "4727564",
49+
"hash": "0x609948ac3bd3c00b7736b933248891d6c901ee28f066241bddb28f4e00a9f440",
50+
"miner": "0xbbf5029fd710d227630c8b7d338051b8e76d50b3",
51+
"mixHash": "0xb131e4507c93c7377de00e7c271bf409ec7492767142ff0f45c882f8068c2ada",
52+
"nonce": "0x4eb12e19c16d43da",
53+
"number": "2289805",
54+
"stateRoot": "0xc7f10f352bff82fac3c2999d3085093d12652e19c7fd32591de49dc5d91b4f1f",
55+
"timestamp": "1513601261",
56+
"totalDifficulty": "7143276353481064"
57+
},
58+
"input": "0xf88b8271908506fc23ac0083015f90943b873a919aa0512d5a0f09e6dcceaa4a6727fafe80a463e4bff40000000000000000000000000024f658a46fbb89d8ac105e98d7ac7cbbaf27c52aa0bdce0b59e8761854e857fe64015f06dd08a4fbb7624f6094893a79a72e6ad6bea01d9dde033cff7bb235a3163f348a6d7ab8d6b52bc0963a95b91612e40ca766a4",
59+
"result": {
60+
"0x0024f658a46fbb89d8ac105e98d7ac7cbbaf27c5": {
61+
"balance": "0x0",
62+
"code": "0x",
63+
"nonce": 22,
64+
"storage": {}
65+
},
66+
"0x3b873a919aa0512d5a0f09e6dcceaa4a6727fafe": {
67+
"balance": "0x4d87094125a369d9bd5",
68+
"code": "0x606060405236156100935763ffffffff60e060020a60003504166311ee8382811461009c57806313af4035146100be5780631f5e8f4c146100ee57806324daddc5146101125780634921a91a1461013b57806363e4bff414610157578063764978f91461017f578063893d20e8146101a1578063ba40aaa1146101cd578063cebc9a82146101f4578063e177246e14610216575b61009a5b5b565b005b34156100a457fe5b6100ac61023d565b60408051918252519081900360200190f35b34156100c657fe5b6100da600160a060020a0360043516610244565b604080519115158252519081900360200190f35b34156100f657fe5b6100da610307565b604080519115158252519081900360200190f35b341561011a57fe5b6100da6004351515610318565b604080519115158252519081900360200190f35b6100da6103d6565b604080519115158252519081900360200190f35b6100da600160a060020a0360043516610420565b604080519115158252519081900360200190f35b341561018757fe5b6100ac61046c565b60408051918252519081900360200190f35b34156101a957fe5b6101b1610473565b60408051600160a060020a039092168252519081900360200190f35b34156101d557fe5b6100da600435610483565b604080519115158252519081900360200190f35b34156101fc57fe5b6100ac61050d565b60408051918252519081900360200190f35b341561021e57fe5b6100da600435610514565b604080519115158252519081900360200190f35b6003545b90565b60006000610250610473565b600160a060020a031633600160a060020a03161415156102705760006000fd5b600160a060020a03831615156102865760006000fd5b50600054600160a060020a0390811690831681146102fb57604051600160a060020a0380851691908316907ffcf23a92150d56e85e3a3d33b357493246e55783095eb6a733eb8439ffc752c890600090a360008054600160a060020a031916600160a060020a03851617905560019150610300565b600091505b5b50919050565b60005460a060020a900460ff165b90565b60006000610324610473565b600160a060020a031633600160a060020a03161415156103445760006000fd5b5060005460a060020a900460ff16801515831515146102fb576000546040805160a060020a90920460ff1615158252841515602083015280517fe6cd46a119083b86efc6884b970bfa30c1708f53ba57b86716f15b2f4551a9539281900390910190a16000805460a060020a60ff02191660a060020a8515150217905560019150610300565b600091505b5b50919050565b60006103e0610307565b801561040557506103ef610473565b600160a060020a031633600160a060020a031614155b156104105760006000fd5b610419336105a0565b90505b5b90565b600061042a610307565b801561044f5750610439610473565b600160a060020a031633600160a060020a031614155b1561045a5760006000fd5b610463826105a0565b90505b5b919050565b6001545b90565b600054600160a060020a03165b90565b6000600061048f610473565b600160a060020a031633600160a060020a03161415156104af5760006000fd5b506001548281146102fb57604080518281526020810185905281517f79a3746dde45672c9e8ab3644b8bb9c399a103da2dc94b56ba09777330a83509929181900390910190a160018381559150610300565b600091505b5b50919050565b6002545b90565b60006000610520610473565b600160a060020a031633600160a060020a03161415156105405760006000fd5b506002548281146102fb57604080518281526020810185905281517ff6991a728965fedd6e927fdf16bdad42d8995970b4b31b8a2bf88767516e2494929181900390910190a1600283905560019150610300565b600091505b5b50919050565b60006000426105ad61023d565b116102fb576105c46105bd61050d565b4201610652565b6105cc61046c565b604051909150600160a060020a038416908290600081818185876187965a03f1925050501561063d57604080518281529051600160a060020a038516917f9bca65ce52fdef8a470977b51f247a2295123a4807dfa9e502edf0d30722da3b919081900360200190a260019150610300565b6102fb42610652565b5b600091505b50919050565b60038190555b505600a165627a7a72305820f3c973c8b7ed1f62000b6701bd5b708469e19d0f1d73fde378a56c07fd0b19090029",
69+
"nonce": 1,
70+
"storage": {
71+
"0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000001b436ba50d378d4bbc8660d312a13df6af6e89dfb",
72+
"0x0000000000000000000000000000000000000000000000000000000000000001": "0x00000000000000000000000000000000000000000000000006f05b59d3b20000",
73+
"0x0000000000000000000000000000000000000000000000000000000000000002": "0x000000000000000000000000000000000000000000000000000000000000003c",
74+
"0x0000000000000000000000000000000000000000000000000000000000000003": "0x000000000000000000000000000000000000000000000000000000005a37b834"
75+
}
76+
},
77+
"0xb436ba50d378d4bbc8660d312a13df6af6e89dfb": {
78+
"balance": "0x1780d77678137ac1b775",
79+
"code": "0x",
80+
"nonce": 29072,
81+
"storage": {}
82+
}
83+
}
84+
}

eth/tracers/internal/tracetest/testdata/prestate_tracer_with_diff_mode/create_failed.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
"muirGlacierBlock": 9200000,
5454
"berlinBlock": 12244000,
5555
"londonBlock": 12965000,
56+
"eip1559Block": 12965000,
5657
"arrowGlacierBlock": 13773000,
5758
"grayGlacierBlock": 15050000,
5859
"terminalTotalDifficultyPassed": true,
@@ -73,7 +74,7 @@
7374
"result": {
7475
"pre": {
7576
"0x808b4da0be6c9512e948521452227efc619bea52": {
76-
"balance": "0x2cdb96c56db040b43",
77+
"balance": "0x2cddf395ac4f56170",
7778
"nonce": 1223932
7879
},
7980
"0x8f03f1a3f10c05e7cccf75c1fd10168e06659be7": {
@@ -83,7 +84,7 @@
8384
},
8485
"post": {
8586
"0x808b4da0be6c9512e948521452227efc619bea52": {
86-
"balance": "0x2cd72a36dd031f089",
87+
"balance": "0x2cd987071ba2346b6",
8788
"nonce": 1223933
8889
},
8990
"0x8f03f1a3f10c05e7cccf75c1fd10168e06659be7": {

eth/tracers/internal/tracetest/util.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package tracetest
22

33
import (
4-
"encoding/json"
5-
"reflect"
64
"strings"
75
"unicode"
86

@@ -64,22 +62,6 @@ var makeTest = function(tx, rewind) {
6462
}
6563
*/
6664

67-
// jsonEqual is similar to reflect.DeepEqual, but does a 'bounce' via json prior to
68-
// comparison
69-
func jsonEqual(xi, yi, xt, yt interface{}) bool {
70-
if xj, err := json.Marshal(xi); err == nil {
71-
json.Unmarshal(xj, xt)
72-
} else {
73-
return false
74-
}
75-
if yj, err := json.Marshal(yi); err == nil {
76-
json.Unmarshal(yj, yt)
77-
} else {
78-
return false
79-
}
80-
return reflect.DeepEqual(xt, yt)
81-
}
82-
8365
// camel converts a snake cased input string into a camel cased output.
8466
func camel(str string) string {
8567
pieces := strings.Split(str, "_")

eth/tracers/js/internal/tracers/call_tracer_legacy.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,6 @@
204204
gasUsed: '0x' + bigInt(ctx.gasUsed).toString(16),
205205
input: toHex(ctx.input),
206206
output: toHex(ctx.output),
207-
time: ctx.time,
208207
};
209208
if (this.callstack[0].calls !== undefined) {
210209
result.calls = this.callstack[0].calls;

0 commit comments

Comments
 (0)