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
0c40df5f
Unverified
Commit
0c40df5f
authored
Nov 01, 2022
by
Sina Mahmoodi
Committed by
GitHub
Nov 01, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
eth/tracers: prestateTracer - exclude unchanged storage slots in diffMode (#25944)
Fixes #25943
parent
8e69622c
Changes
3
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
9 additions
and
73 deletions
+9
-73
inner_create.json
...testdata/prestate_tracer_with_diff_mode/inner_create.json
+3
-65
simple.json
...etest/testdata/prestate_tracer_with_diff_mode/simple.json
+0
-3
prestate.go
eth/tracers/native/prestate.go
+6
-5
No files found.
eth/tracers/internal/tracetest/testdata/prestate_tracer_with_diff_mode/inner_create.json
View file @
0c40df5f
This diff is collapsed.
Click to expand it.
eth/tracers/internal/tracetest/testdata/prestate_tracer_with_diff_mode/simple.json
View file @
0c40df5f
...
...
@@ -73,9 +73,6 @@
"nonce"
:
1
,
"code"
:
"0x606060405236156100935763ffffffff60e060020a60003504166311ee8382811461009c57806313af4035146100be5780631f5e8f4c146100ee57806324daddc5146101125780634921a91a1461013b57806363e4bff414610157578063764978f91461017f578063893d20e8146101a1578063ba40aaa1146101cd578063cebc9a82146101f4578063e177246e14610216575b61009a5b5b565b005b34156100a457fe5b6100ac61023d565b60408051918252519081900360200190f35b34156100c657fe5b6100da600160a060020a0360043516610244565b604080519115158252519081900360200190f35b34156100f657fe5b6100da610307565b604080519115158252519081900360200190f35b341561011a57fe5b6100da6004351515610318565b604080519115158252519081900360200190f35b6100da6103d6565b604080519115158252519081900360200190f35b6100da600160a060020a0360043516610420565b604080519115158252519081900360200190f35b341561018757fe5b6100ac61046c565b60408051918252519081900360200190f35b34156101a957fe5b6101b1610473565b60408051600160a060020a039092168252519081900360200190f35b34156101d557fe5b6100da600435610483565b604080519115158252519081900360200190f35b34156101fc57fe5b6100ac61050d565b60408051918252519081900360200190f35b341561021e57fe5b6100da600435610514565b604080519115158252519081900360200190f35b6003545b90565b60006000610250610473565b600160a060020a031633600160a060020a03161415156102705760006000fd5b600160a060020a03831615156102865760006000fd5b50600054600160a060020a0390811690831681146102fb57604051600160a060020a0380851691908316907ffcf23a92150d56e85e3a3d33b357493246e55783095eb6a733eb8439ffc752c890600090a360008054600160a060020a031916600160a060020a03851617905560019150610300565b600091505b5b50919050565b60005460a060020a900460ff165b90565b60006000610324610473565b600160a060020a031633600160a060020a03161415156103445760006000fd5b5060005460a060020a900460ff16801515831515146102fb576000546040805160a060020a90920460ff1615158252841515602083015280517fe6cd46a119083b86efc6884b970bfa30c1708f53ba57b86716f15b2f4551a9539281900390910190a16000805460a060020a60ff02191660a060020a8515150217905560019150610300565b600091505b5b50919050565b60006103e0610307565b801561040557506103ef610473565b600160a060020a031633600160a060020a031614155b156104105760006000fd5b610419336105a0565b90505b5b90565b600061042a610307565b801561044f5750610439610473565b600160a060020a031633600160a060020a031614155b1561045a5760006000fd5b610463826105a0565b90505b5b919050565b6001545b90565b600054600160a060020a03165b90565b6000600061048f610473565b600160a060020a031633600160a060020a03161415156104af5760006000fd5b506001548281146102fb57604080518281526020810185905281517f79a3746dde45672c9e8ab3644b8bb9c399a103da2dc94b56ba09777330a83509929181900390910190a160018381559150610300565b600091505b5b50919050565b6002545b90565b60006000610520610473565b600160a060020a031633600160a060020a03161415156105405760006000fd5b506002548281146102fb57604080518281526020810185905281517ff6991a728965fedd6e927fdf16bdad42d8995970b4b31b8a2bf88767516e2494929181900390910190a1600283905560019150610300565b600091505b5b50919050565b60006000426105ad61023d565b116102fb576105c46105bd61050d565b4201610652565b6105cc61046c565b604051909150600160a060020a038416908290600081818185876187965a03f1925050501561063d57604080518281529051600160a060020a038516917f9bca65ce52fdef8a470977b51f247a2295123a4807dfa9e502edf0d30722da3b919081900360200190a260019150610300565b6102fb42610652565b5b600091505b50919050565b60038190555b505600a165627a7a72305820f3c973c8b7ed1f62000b6701bd5b708469e19d0f1d73fde378a56c07fd0b19090029"
,
"storage"
:
{
"0x0000000000000000000000000000000000000000000000000000000000000000"
:
"0x000000000000000000000001b436ba50d378d4bbc8660d312a13df6af6e89dfb"
,
"0x0000000000000000000000000000000000000000000000000000000000000001"
:
"0x00000000000000000000000000000000000000000000000006f05b59d3b20000"
,
"0x0000000000000000000000000000000000000000000000000000000000000002"
:
"0x000000000000000000000000000000000000000000000000000000000000003c"
,
"0x0000000000000000000000000000000000000000000000000000000000000003"
:
"0x000000000000000000000000000000000000000000000000000000005a37b834"
}
},
...
...
eth/tracers/native/prestate.go
View file @
0c40df5f
...
...
@@ -69,12 +69,10 @@ type prestateTracer struct {
}
type
prestateTracerConfig
struct
{
DiffMode
bool
`json:"diffMode"`
// If true, this tracer will return
all diff state
s
DiffMode
bool
`json:"diffMode"`
// If true, this tracer will return
state modification
s
}
func
newPrestateTracer
(
ctx
*
tracers
.
Context
,
cfg
json
.
RawMessage
)
(
tracers
.
Tracer
,
error
)
{
// First callframe contains tx context info
// and is populated on start and end.
var
config
prestateTracerConfig
if
cfg
!=
nil
{
if
err
:=
json
.
Unmarshal
(
cfg
,
&
config
);
err
!=
nil
{
...
...
@@ -192,7 +190,7 @@ func (t *prestateTracer) CaptureTxEnd(restGas uint64) {
}
for
addr
,
state
:=
range
t
.
pre
{
//
the deleted account's state is pruned
//
The deleted account's state is pruned from `post` but kept in `pre`
if
_
,
ok
:=
t
.
deleted
[
addr
];
ok
{
continue
}
...
...
@@ -222,7 +220,10 @@ func (t *prestateTracer) CaptureTxEnd(restGas uint64) {
}
newVal
:=
t
.
env
.
StateDB
.
GetState
(
addr
,
key
)
if
val
!=
newVal
{
if
val
==
newVal
{
// Omit unchanged slots
delete
(
t
.
pre
[
addr
]
.
Storage
,
key
)
}
else
{
modified
=
true
if
newVal
!=
(
common
.
Hash
{})
{
postAccount
.
Storage
[
key
]
=
newVal
...
...
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