Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
5f70f9fd
Unverified
Commit
5f70f9fd
authored
2 years ago
by
Martin Holst Swende
Committed by
GitHub
2 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
eth/tracers: simplify test framework (#25973)
Co-authored-by:
Sina Mahmoodi
<
itz.s1na@gmail.com
>
parent
a404195c
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
150 additions
and
82 deletions
+150
-82
calltrace_test.go
eth/tracers/internal/tracetest/calltrace_test.go
+24
-25
prestate_test.go
eth/tracers/internal/tracetest/prestate_test.go
+29
-24
simple.json
...s/internal/tracetest/testdata/prestate_tracer/simple.json
+1
-2
simple.json
...nal/tracetest/testdata/prestate_tracer_legacy/simple.json
+84
-0
util.go
eth/tracers/internal/tracetest/util.go
+0
-18
call_tracer_legacy.js
eth/tracers/js/internal/tracers/call_tracer_legacy.js
+0
-1
gen_account_json.go
eth/tracers/native/gen_account_json.go
+9
-9
prestate.go
eth/tracers/native/prestate.go
+3
-3
No files found.
eth/tracers/internal/tracetest/calltrace_test.go
View file @
5f70f9fd
...
...
@@ -48,17 +48,18 @@ type callContext struct {
// callTrace is the result of a callTracer run.
type
callTrace
struct
{
Type
string
`json:"type"`
From
common
.
Address
`json:"from"`
To
common
.
Address
`json:"to"`
Gas
*
hexutil
.
Uint64
`json:"gas"`
GasUsed
*
hexutil
.
Uint64
`json:"gasUsed"`
To
common
.
Address
`json:"to,omitempty"`
Input
hexutil
.
Bytes
`json:"input"`
Output
hexutil
.
Bytes
`json:"output"`
Gas
*
hexutil
.
Uint64
`json:"gas,omitempty"`
GasUsed
*
hexutil
.
Uint64
`json:"gasUsed,omitempty"`
Value
*
hexutil
.
Big
`json:"value,omitempty"`
Output
hexutil
.
Bytes
`json:"output,omitempty"`
Error
string
`json:"error,omitempty"`
Revertal
string
`json:"revertReason,omitempty"`
Calls
[]
callTrace
`json:"calls,omitempty"`
Value
*
hexutil
.
Big
`json:"value,omitempty"`
// Gencodec adds overridden fields at the end
Type
string
`json:"type"`
}
// callTracerTest defines a single test to check the call tracer against.
...
...
@@ -144,17 +145,21 @@ func testCallTracer(tracerName string, dirPath string, t *testing.T) {
if
err
!=
nil
{
t
.
Fatalf
(
"failed to retrieve trace result: %v"
,
err
)
}
ret
:=
new
(
callTrace
)
if
err
:=
json
.
Unmarshal
(
res
,
ret
);
err
!=
nil
{
t
.
Fatalf
(
"failed to unmarshal trace result: %v"
,
err
)
// The legacy javascript calltracer marshals json in js, which
// is not deterministic (as opposed to the golang json encoder).
if
strings
.
HasSuffix
(
dirPath
,
"_legacy"
)
{
// This is a tweak to make it deterministic. Can be removed when
// we remove the legacy tracer.
var
x
callTrace
json
.
Unmarshal
(
res
,
&
x
)
res
,
_
=
json
.
Marshal
(
x
)
}
if
!
jsonEqual
(
ret
,
test
.
Result
,
new
(
callTrace
),
new
(
callTrace
))
{
// uncomment this for easier debugging
//have, _ := json.MarshalIndent(ret, "", " ")
//want, _ := json.MarshalIndent(test.Result, "", " ")
//t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", string(have), string(want))
t
.
Fatalf
(
"trace mismatch:
\n
have %+v
\n
want %+v"
,
ret
,
test
.
Result
)
want
,
err
:=
json
.
Marshal
(
test
.
Result
)
if
err
!=
nil
{
t
.
Fatalf
(
"failed to marshal test: %v"
,
err
)
}
if
string
(
want
)
!=
string
(
res
)
{
t
.
Fatalf
(
"trace mismatch
\n
have: %v
\n
want: %v
\n
"
,
string
(
res
),
string
(
want
))
}
})
}
...
...
@@ -298,14 +303,8 @@ func TestZeroValueToNotExitCall(t *testing.T) {
if
err
!=
nil
{
t
.
Fatalf
(
"failed to retrieve trace result: %v"
,
err
)
}
have
:=
new
(
callTrace
)
if
err
:=
json
.
Unmarshal
(
res
,
have
);
err
!=
nil
{
t
.
Fatalf
(
"failed to unmarshal trace result: %v"
,
err
)
}
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"}]}`
want
:=
new
(
callTrace
)
json
.
Unmarshal
([]
byte
(
wantStr
),
want
)
if
!
jsonEqual
(
have
,
want
,
new
(
callTrace
),
new
(
callTrace
))
{
t
.
Error
(
"have != want"
)
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"}`
if
string
(
res
)
!=
wantStr
{
t
.
Fatalf
(
"trace mismatch
\n
have: %v
\n
want: %v
\n
"
,
string
(
res
),
wantStr
)
}
}
This diff is collapsed.
Click to expand it.
eth/tracers/internal/tracetest/prestate_test.go
View file @
5f70f9fd
...
...
@@ -35,19 +35,16 @@ import (
// prestateTrace is the result of a prestateTrace run.
type
prestateTrace
=
map
[
common
.
Address
]
*
account
type
account
struct
{
Balance
string
`json:"balance,omitempty"`
Nonce
uint64
`json:"nonce,omitempty"`
Code
string
`json:"code,omitempty"`
Storage
map
[
common
.
Hash
]
common
.
Hash
`json:"storage,omitempty"`
}
type
prePostStateTrace
struct
{
Pre
prestateTrace
`json:"pre"`
Post
prestateTrace
`json:"post"`
Balance
string
`json:"balance"`
Code
string
`json:"code"`
Nonce
uint64
`json:"nonce"`
Storage
map
[
common
.
Hash
]
common
.
Hash
`json:"storage"`
}
//
prestateTraceTest
defines a single test to check the stateDiff tracer against.
type
prestateTraceTest
struct
{
//
testcase
defines a single test to check the stateDiff tracer against.
type
testcase
struct
{
Genesis
*
core
.
Genesis
`json:"genesis"`
Context
*
callContext
`json:"context"`
Input
string
`json:"input"`
...
...
@@ -55,15 +52,19 @@ type prestateTraceTest struct {
Result
interface
{}
`json:"result"`
}
func
TestPrestateTracerLegacy
(
t
*
testing
.
T
)
{
testPrestateDiffTracer
(
"prestateTracerLegacy"
,
"prestate_tracer_legacy"
,
t
)
}
func
TestPrestateTracer
(
t
*
testing
.
T
)
{
testPrestateDiffTracer
(
"prestateTracer"
,
"prestate_tracer"
,
t
,
func
()
interface
{}
{
return
new
(
prestateTrace
)
}
)
testPrestateDiffTracer
(
"prestateTracer"
,
"prestate_tracer"
,
t
)
}
func
TestPrestateWithDiffModeTracer
(
t
*
testing
.
T
)
{
testPrestateDiffTracer
(
"prestateTracer"
,
"prestate_tracer_with_diff_mode"
,
t
,
func
()
interface
{}
{
return
new
(
prePostStateTrace
)
}
)
testPrestateDiffTracer
(
"prestateTracer"
,
"prestate_tracer_with_diff_mode"
,
t
)
}
func
testPrestateDiffTracer
(
tracerName
string
,
dirPath
string
,
t
*
testing
.
T
,
typeBuilder
func
()
interface
{}
)
{
func
testPrestateDiffTracer
(
tracerName
string
,
dirPath
string
,
t
*
testing
.
T
)
{
files
,
err
:=
os
.
ReadDir
(
filepath
.
Join
(
"testdata"
,
dirPath
))
if
err
!=
nil
{
t
.
Fatalf
(
"failed to retrieve tracer test suite: %v"
,
err
)
...
...
@@ -77,7 +78,7 @@ func testPrestateDiffTracer(tracerName string, dirPath string, t *testing.T, typ
t
.
Parallel
()
var
(
test
=
new
(
prestateTraceTest
)
test
=
new
(
testcase
)
tx
=
new
(
types
.
Transaction
)
)
// Call tracer test found, read if from disk
...
...
@@ -127,17 +128,21 @@ func testPrestateDiffTracer(tracerName string, dirPath string, t *testing.T, typ
if
err
!=
nil
{
t
.
Fatalf
(
"failed to retrieve trace result: %v"
,
err
)
}
ret
:=
typeBuilder
()
if
err
:=
json
.
Unmarshal
(
res
,
ret
);
err
!=
nil
{
t
.
Fatalf
(
"failed to unmarshal trace result: %v"
,
err
)
// The legacy javascript calltracer marshals json in js, which
// is not deterministic (as opposed to the golang json encoder).
if
strings
.
HasSuffix
(
dirPath
,
"_legacy"
)
{
// This is a tweak to make it deterministic. Can be removed when
// we remove the legacy tracer.
var
x
prestateTrace
json
.
Unmarshal
(
res
,
&
x
)
res
,
_
=
json
.
Marshal
(
x
)
}
if
!
jsonEqual
(
ret
,
test
.
Result
,
typeBuilder
(),
typeBuilder
())
{
// uncomment this for easier debugging
// have, _ := json.MarshalIndent(ret, "", " ")
// want, _ := json.MarshalIndent(test.Result, "", " ")
// t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", string(have), string(want))
t
.
Fatalf
(
"trace mismatch:
\n
have %+v
\n
want %+v"
,
ret
,
test
.
Result
)
want
,
err
:=
json
.
Marshal
(
test
.
Result
)
if
err
!=
nil
{
t
.
Fatalf
(
"failed to marshal test: %v"
,
err
)
}
if
string
(
want
)
!=
string
(
res
)
{
t
.
Fatalf
(
"trace mismatch
\n
have: %v
\n
want: %v
\n
"
,
string
(
res
),
string
(
want
))
}
})
}
...
...
This diff is collapsed.
Click to expand it.
eth/tracers/internal/tracetest/testdata/prestate_tracer/simple.json
View file @
5f70f9fd
...
...
@@ -77,8 +77,7 @@
"nonce"
:
29072
},
"0x1585936b53834b021f68cc13eeefdec2efc8e724"
:
{
"balance"
:
"0x0"
,
"nonce"
:
0
"balance"
:
"0x0"
}
}
}
This diff is collapsed.
Click to expand it.
eth/tracers/internal/tracetest/testdata/prestate_tracer_legacy/simple.json
0 → 100644
View file @
5f70f9fd
{
"context"
:
{
"difficulty"
:
"3502894804"
,
"gasLimit"
:
"4722976"
,
"miner"
:
"0x1585936b53834b021f68cc13eeefdec2efc8e724"
,
"number"
:
"2289806"
,
"timestamp"
:
"1513601314"
},
"genesis"
:
{
"alloc"
:
{
"0x0024f658a46fbb89d8ac105e98d7ac7cbbaf27c5"
:
{
"balance"
:
"0x0"
,
"code"
:
"0x"
,
"nonce"
:
"22"
,
"storage"
:
{}
},
"0x3b873a919aa0512d5a0f09e6dcceaa4a6727fafe"
:
{
"balance"
:
"0x4d87094125a369d9bd5"
,
"code"
:
"0x606060405236156100935763ffffffff60e060020a60003504166311ee8382811461009c57806313af4035146100be5780631f5e8f4c146100ee57806324daddc5146101125780634921a91a1461013b57806363e4bff414610157578063764978f91461017f578063893d20e8146101a1578063ba40aaa1146101cd578063cebc9a82146101f4578063e177246e14610216575b61009a5b5b565b005b34156100a457fe5b6100ac61023d565b60408051918252519081900360200190f35b34156100c657fe5b6100da600160a060020a0360043516610244565b604080519115158252519081900360200190f35b34156100f657fe5b6100da610307565b604080519115158252519081900360200190f35b341561011a57fe5b6100da6004351515610318565b604080519115158252519081900360200190f35b6100da6103d6565b604080519115158252519081900360200190f35b6100da600160a060020a0360043516610420565b604080519115158252519081900360200190f35b341561018757fe5b6100ac61046c565b60408051918252519081900360200190f35b34156101a957fe5b6101b1610473565b60408051600160a060020a039092168252519081900360200190f35b34156101d557fe5b6100da600435610483565b604080519115158252519081900360200190f35b34156101fc57fe5b6100ac61050d565b60408051918252519081900360200190f35b341561021e57fe5b6100da600435610514565b604080519115158252519081900360200190f35b6003545b90565b60006000610250610473565b600160a060020a031633600160a060020a03161415156102705760006000fd5b600160a060020a03831615156102865760006000fd5b50600054600160a060020a0390811690831681146102fb57604051600160a060020a0380851691908316907ffcf23a92150d56e85e3a3d33b357493246e55783095eb6a733eb8439ffc752c890600090a360008054600160a060020a031916600160a060020a03851617905560019150610300565b600091505b5b50919050565b60005460a060020a900460ff165b90565b60006000610324610473565b600160a060020a031633600160a060020a03161415156103445760006000fd5b5060005460a060020a900460ff16801515831515146102fb576000546040805160a060020a90920460ff1615158252841515602083015280517fe6cd46a119083b86efc6884b970bfa30c1708f53ba57b86716f15b2f4551a9539281900390910190a16000805460a060020a60ff02191660a060020a8515150217905560019150610300565b600091505b5b50919050565b60006103e0610307565b801561040557506103ef610473565b600160a060020a031633600160a060020a031614155b156104105760006000fd5b610419336105a0565b90505b5b90565b600061042a610307565b801561044f5750610439610473565b600160a060020a031633600160a060020a031614155b1561045a5760006000fd5b610463826105a0565b90505b5b919050565b6001545b90565b600054600160a060020a03165b90565b6000600061048f610473565b600160a060020a031633600160a060020a03161415156104af5760006000fd5b506001548281146102fb57604080518281526020810185905281517f79a3746dde45672c9e8ab3644b8bb9c399a103da2dc94b56ba09777330a83509929181900390910190a160018381559150610300565b600091505b5b50919050565b6002545b90565b60006000610520610473565b600160a060020a031633600160a060020a03161415156105405760006000fd5b506002548281146102fb57604080518281526020810185905281517ff6991a728965fedd6e927fdf16bdad42d8995970b4b31b8a2bf88767516e2494929181900390910190a1600283905560019150610300565b600091505b5b50919050565b60006000426105ad61023d565b116102fb576105c46105bd61050d565b4201610652565b6105cc61046c565b604051909150600160a060020a038416908290600081818185876187965a03f1925050501561063d57604080518281529051600160a060020a038516917f9bca65ce52fdef8a470977b51f247a2295123a4807dfa9e502edf0d30722da3b919081900360200190a260019150610300565b6102fb42610652565b5b600091505b50919050565b60038190555b505600a165627a7a72305820f3c973c8b7ed1f62000b6701bd5b708469e19d0f1d73fde378a56c07fd0b19090029"
,
"nonce"
:
"1"
,
"storage"
:
{
"0x0000000000000000000000000000000000000000000000000000000000000000"
:
"0x000000000000000000000001b436ba50d378d4bbc8660d312a13df6af6e89dfb"
,
"0x0000000000000000000000000000000000000000000000000000000000000001"
:
"0x00000000000000000000000000000000000000000000000006f05b59d3b20000"
,
"0x0000000000000000000000000000000000000000000000000000000000000002"
:
"0x000000000000000000000000000000000000000000000000000000000000003c"
,
"0x0000000000000000000000000000000000000000000000000000000000000003"
:
"0x000000000000000000000000000000000000000000000000000000005a37b834"
}
},
"0xb436ba50d378d4bbc8660d312a13df6af6e89dfb"
:
{
"balance"
:
"0x1780d77678137ac1b775"
,
"code"
:
"0x"
,
"nonce"
:
"29072"
,
"storage"
:
{}
}
},
"config"
:
{
"byzantiumBlock"
:
1700000
,
"chainId"
:
3
,
"daoForkSupport"
:
true
,
"eip150Block"
:
0
,
"eip150Hash"
:
"0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d"
,
"eip155Block"
:
10
,
"eip158Block"
:
10
,
"ethash"
:
{},
"homesteadBlock"
:
0
},
"difficulty"
:
"3509749784"
,
"extraData"
:
"0x4554482e45544846414e532e4f52472d4641313738394444"
,
"gasLimit"
:
"4727564"
,
"hash"
:
"0x609948ac3bd3c00b7736b933248891d6c901ee28f066241bddb28f4e00a9f440"
,
"miner"
:
"0xbbf5029fd710d227630c8b7d338051b8e76d50b3"
,
"mixHash"
:
"0xb131e4507c93c7377de00e7c271bf409ec7492767142ff0f45c882f8068c2ada"
,
"nonce"
:
"0x4eb12e19c16d43da"
,
"number"
:
"2289805"
,
"stateRoot"
:
"0xc7f10f352bff82fac3c2999d3085093d12652e19c7fd32591de49dc5d91b4f1f"
,
"timestamp"
:
"1513601261"
,
"totalDifficulty"
:
"7143276353481064"
},
"input"
:
"0xf88b8271908506fc23ac0083015f90943b873a919aa0512d5a0f09e6dcceaa4a6727fafe80a463e4bff40000000000000000000000000024f658a46fbb89d8ac105e98d7ac7cbbaf27c52aa0bdce0b59e8761854e857fe64015f06dd08a4fbb7624f6094893a79a72e6ad6bea01d9dde033cff7bb235a3163f348a6d7ab8d6b52bc0963a95b91612e40ca766a4"
,
"result"
:
{
"0x0024f658a46fbb89d8ac105e98d7ac7cbbaf27c5"
:
{
"balance"
:
"0x0"
,
"code"
:
"0x"
,
"nonce"
:
22
,
"storage"
:
{}
},
"0x3b873a919aa0512d5a0f09e6dcceaa4a6727fafe"
:
{
"balance"
:
"0x4d87094125a369d9bd5"
,
"code"
:
"0x606060405236156100935763ffffffff60e060020a60003504166311ee8382811461009c57806313af4035146100be5780631f5e8f4c146100ee57806324daddc5146101125780634921a91a1461013b57806363e4bff414610157578063764978f91461017f578063893d20e8146101a1578063ba40aaa1146101cd578063cebc9a82146101f4578063e177246e14610216575b61009a5b5b565b005b34156100a457fe5b6100ac61023d565b60408051918252519081900360200190f35b34156100c657fe5b6100da600160a060020a0360043516610244565b604080519115158252519081900360200190f35b34156100f657fe5b6100da610307565b604080519115158252519081900360200190f35b341561011a57fe5b6100da6004351515610318565b604080519115158252519081900360200190f35b6100da6103d6565b604080519115158252519081900360200190f35b6100da600160a060020a0360043516610420565b604080519115158252519081900360200190f35b341561018757fe5b6100ac61046c565b60408051918252519081900360200190f35b34156101a957fe5b6101b1610473565b60408051600160a060020a039092168252519081900360200190f35b34156101d557fe5b6100da600435610483565b604080519115158252519081900360200190f35b34156101fc57fe5b6100ac61050d565b60408051918252519081900360200190f35b341561021e57fe5b6100da600435610514565b604080519115158252519081900360200190f35b6003545b90565b60006000610250610473565b600160a060020a031633600160a060020a03161415156102705760006000fd5b600160a060020a03831615156102865760006000fd5b50600054600160a060020a0390811690831681146102fb57604051600160a060020a0380851691908316907ffcf23a92150d56e85e3a3d33b357493246e55783095eb6a733eb8439ffc752c890600090a360008054600160a060020a031916600160a060020a03851617905560019150610300565b600091505b5b50919050565b60005460a060020a900460ff165b90565b60006000610324610473565b600160a060020a031633600160a060020a03161415156103445760006000fd5b5060005460a060020a900460ff16801515831515146102fb576000546040805160a060020a90920460ff1615158252841515602083015280517fe6cd46a119083b86efc6884b970bfa30c1708f53ba57b86716f15b2f4551a9539281900390910190a16000805460a060020a60ff02191660a060020a8515150217905560019150610300565b600091505b5b50919050565b60006103e0610307565b801561040557506103ef610473565b600160a060020a031633600160a060020a031614155b156104105760006000fd5b610419336105a0565b90505b5b90565b600061042a610307565b801561044f5750610439610473565b600160a060020a031633600160a060020a031614155b1561045a5760006000fd5b610463826105a0565b90505b5b919050565b6001545b90565b600054600160a060020a03165b90565b6000600061048f610473565b600160a060020a031633600160a060020a03161415156104af5760006000fd5b506001548281146102fb57604080518281526020810185905281517f79a3746dde45672c9e8ab3644b8bb9c399a103da2dc94b56ba09777330a83509929181900390910190a160018381559150610300565b600091505b5b50919050565b6002545b90565b60006000610520610473565b600160a060020a031633600160a060020a03161415156105405760006000fd5b506002548281146102fb57604080518281526020810185905281517ff6991a728965fedd6e927fdf16bdad42d8995970b4b31b8a2bf88767516e2494929181900390910190a1600283905560019150610300565b600091505b5b50919050565b60006000426105ad61023d565b116102fb576105c46105bd61050d565b4201610652565b6105cc61046c565b604051909150600160a060020a038416908290600081818185876187965a03f1925050501561063d57604080518281529051600160a060020a038516917f9bca65ce52fdef8a470977b51f247a2295123a4807dfa9e502edf0d30722da3b919081900360200190a260019150610300565b6102fb42610652565b5b600091505b50919050565b60038190555b505600a165627a7a72305820f3c973c8b7ed1f62000b6701bd5b708469e19d0f1d73fde378a56c07fd0b19090029"
,
"nonce"
:
1
,
"storage"
:
{
"0x0000000000000000000000000000000000000000000000000000000000000000"
:
"0x000000000000000000000001b436ba50d378d4bbc8660d312a13df6af6e89dfb"
,
"0x0000000000000000000000000000000000000000000000000000000000000001"
:
"0x00000000000000000000000000000000000000000000000006f05b59d3b20000"
,
"0x0000000000000000000000000000000000000000000000000000000000000002"
:
"0x000000000000000000000000000000000000000000000000000000000000003c"
,
"0x0000000000000000000000000000000000000000000000000000000000000003"
:
"0x000000000000000000000000000000000000000000000000000000005a37b834"
}
},
"0xb436ba50d378d4bbc8660d312a13df6af6e89dfb"
:
{
"balance"
:
"0x1780d77678137ac1b775"
,
"code"
:
"0x"
,
"nonce"
:
29072
,
"storage"
:
{}
}
}
}
This diff is collapsed.
Click to expand it.
eth/tracers/internal/tracetest/util.go
View file @
5f70f9fd
package
tracetest
import
(
"encoding/json"
"reflect"
"strings"
"unicode"
...
...
@@ -64,22 +62,6 @@ var makeTest = function(tx, rewind) {
}
*/
// jsonEqual is similar to reflect.DeepEqual, but does a 'bounce' via json prior to
// comparison
func
jsonEqual
(
xi
,
yi
,
xt
,
yt
interface
{})
bool
{
if
xj
,
err
:=
json
.
Marshal
(
xi
);
err
==
nil
{
json
.
Unmarshal
(
xj
,
xt
)
}
else
{
return
false
}
if
yj
,
err
:=
json
.
Marshal
(
yi
);
err
==
nil
{
json
.
Unmarshal
(
yj
,
yt
)
}
else
{
return
false
}
return
reflect
.
DeepEqual
(
xt
,
yt
)
}
// camel converts a snake cased input string into a camel cased output.
func
camel
(
str
string
)
string
{
pieces
:=
strings
.
Split
(
str
,
"_"
)
...
...
This diff is collapsed.
Click to expand it.
eth/tracers/js/internal/tracers/call_tracer_legacy.js
View file @
5f70f9fd
...
...
@@ -204,7 +204,6 @@
gasUsed
:
'0x'
+
bigInt
(
ctx
.
gasUsed
).
toString
(
16
),
input
:
toHex
(
ctx
.
input
),
output
:
toHex
(
ctx
.
output
),
time
:
ctx
.
time
,
};
if
(
this
.
callstack
[
0
].
calls
!==
undefined
)
{
result
.
calls
=
this
.
callstack
[
0
].
calls
;
...
...
This diff is collapsed.
Click to expand it.
eth/tracers/native/gen_account_json.go
View file @
5f70f9fd
...
...
@@ -16,14 +16,14 @@ var _ = (*accountMarshaling)(nil)
func
(
a
account
)
MarshalJSON
()
([]
byte
,
error
)
{
type
account
struct
{
Balance
*
hexutil
.
Big
`json:"balance,omitempty"`
Nonce
uint64
`json:"nonce,omitempty"`
Code
hexutil
.
Bytes
`json:"code,omitempty"`
Nonce
uint64
`json:"nonce,omitempty"`
Storage
map
[
common
.
Hash
]
common
.
Hash
`json:"storage,omitempty"`
}
var
enc
account
enc
.
Balance
=
(
*
hexutil
.
Big
)(
a
.
Balance
)
enc
.
Nonce
=
a
.
Nonce
enc
.
Code
=
a
.
Code
enc
.
Nonce
=
a
.
Nonce
enc
.
Storage
=
a
.
Storage
return
json
.
Marshal
(
&
enc
)
}
...
...
@@ -31,10 +31,10 @@ func (a account) MarshalJSON() ([]byte, error) {
// UnmarshalJSON unmarshals from JSON.
func
(
a
*
account
)
UnmarshalJSON
(
input
[]
byte
)
error
{
type
account
struct
{
Balance
*
hexutil
.
Big
`json:"balance"`
Nonce
*
uint64
`json:"nonce
"`
Code
*
hexutil
.
Bytes
`json:"code
"`
Storage
map
[
common
.
Hash
]
common
.
Hash
`json:"storage"`
Balance
*
hexutil
.
Big
`json:"balance
,omitempty
"`
Code
*
hexutil
.
Bytes
`json:"code,omitempty
"`
Nonce
*
uint64
`json:"nonce,omitempty
"`
Storage
map
[
common
.
Hash
]
common
.
Hash
`json:"storage
,omitempty
"`
}
var
dec
account
if
err
:=
json
.
Unmarshal
(
input
,
&
dec
);
err
!=
nil
{
...
...
@@ -43,12 +43,12 @@ func (a *account) UnmarshalJSON(input []byte) error {
if
dec
.
Balance
!=
nil
{
a
.
Balance
=
(
*
big
.
Int
)(
dec
.
Balance
)
}
if
dec
.
Nonce
!=
nil
{
a
.
Nonce
=
*
dec
.
Nonce
}
if
dec
.
Code
!=
nil
{
a
.
Code
=
*
dec
.
Code
}
if
dec
.
Nonce
!=
nil
{
a
.
Nonce
=
*
dec
.
Nonce
}
if
dec
.
Storage
!=
nil
{
a
.
Storage
=
dec
.
Storage
}
...
...
This diff is collapsed.
Click to expand it.
eth/tracers/native/prestate.go
View file @
5f70f9fd
...
...
@@ -40,8 +40,8 @@ type state = map[common.Address]*account
type
account
struct
{
Balance
*
big
.
Int
`json:"balance,omitempty"`
Nonce
uint64
`json:"nonce,omitempty"`
Code
[]
byte
`json:"code,omitempty"`
Nonce
uint64
`json:"nonce,omitempty"`
Storage
map
[
common
.
Hash
]
common
.
Hash
`json:"storage,omitempty"`
}
...
...
@@ -253,9 +253,9 @@ func (t *prestateTracer) GetResult() (json.RawMessage, error) {
var
err
error
if
t
.
config
.
DiffMode
{
res
,
err
=
json
.
Marshal
(
struct
{
Pre
state
`json:"pre"`
Post
state
`json:"post"`
}{
t
.
pre
,
t
.
post
})
Pre
state
`json:"pre"`
}{
t
.
post
,
t
.
pre
})
}
else
{
res
,
err
=
json
.
Marshal
(
t
.
pre
)
}
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment