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
bbe79545
Commit
bbe79545
authored
Mar 24, 2015
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Secure trie shakey / key matching
parent
d6da5333
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
14 additions
and
5 deletions
+14
-5
dump.go
core/state/dump.go
+4
-4
secure_trie.go
trie/secure_trie.go
+10
-1
No files found.
core/state/dump.go
View file @
bbe79545
...
...
@@ -28,17 +28,17 @@ func (self *StateDB) RawDump() World {
it
:=
self
.
trie
.
Iterator
()
for
it
.
Next
()
{
stateObject
:=
NewStateObjectFromBytes
(
common
.
BytesToAddress
(
it
.
Key
),
it
.
Value
,
self
.
db
)
addr
:=
self
.
trie
.
GetKey
(
it
.
Key
)
stateObject
:=
NewStateObjectFromBytes
(
common
.
BytesToAddress
(
addr
),
it
.
Value
,
self
.
db
)
account
:=
Account
{
Balance
:
stateObject
.
balance
.
String
(),
Nonce
:
stateObject
.
nonce
,
Root
:
common
.
Bytes2Hex
(
stateObject
.
Root
()),
CodeHash
:
common
.
Bytes2Hex
(
stateObject
.
codeHash
)}
account
.
Storage
=
make
(
map
[
string
]
string
)
storageIt
:=
stateObject
.
State
.
trie
.
Iterator
()
for
storageIt
.
Next
()
{
fmt
.
Println
(
"value"
,
storageIt
.
Value
)
account
.
Storage
[
common
.
Bytes2Hex
(
storageIt
.
Key
)]
=
common
.
Bytes2Hex
(
storageIt
.
Value
)
account
.
Storage
[
common
.
Bytes2Hex
(
self
.
trie
.
GetKey
(
storageIt
.
Key
))]
=
common
.
Bytes2Hex
(
storageIt
.
Value
)
}
world
.
Accounts
[
common
.
Bytes2Hex
(
it
.
Key
)]
=
account
world
.
Accounts
[
common
.
Bytes2Hex
(
addr
)]
=
account
}
return
world
}
...
...
trie/secure_trie.go
View file @
bbe79545
...
...
@@ -2,6 +2,8 @@ package trie
import
"github.com/ethereum/go-ethereum/crypto"
var
keyPrefix
=
[]
byte
(
"secure-key-"
)
type
SecureTrie
struct
{
*
Trie
}
...
...
@@ -11,7 +13,10 @@ func NewSecure(root []byte, backend Backend) *SecureTrie {
}
func
(
self
*
SecureTrie
)
Update
(
key
,
value
[]
byte
)
Node
{
return
self
.
Trie
.
Update
(
crypto
.
Sha3
(
key
),
value
)
shaKey
:=
crypto
.
Sha3
(
key
)
self
.
Trie
.
cache
.
Put
(
append
(
keyPrefix
,
shaKey
...
),
key
)
return
self
.
Trie
.
Update
(
shaKey
,
value
)
}
func
(
self
*
SecureTrie
)
UpdateString
(
key
,
value
string
)
Node
{
return
self
.
Update
([]
byte
(
key
),
[]
byte
(
value
))
...
...
@@ -34,3 +39,7 @@ func (self *SecureTrie) DeleteString(key string) Node {
func
(
self
*
SecureTrie
)
Copy
()
*
SecureTrie
{
return
&
SecureTrie
{
self
.
Trie
.
Copy
()}
}
func
(
self
*
SecureTrie
)
GetKey
(
shaKey
[]
byte
)
[]
byte
{
return
self
.
Trie
.
cache
.
Get
(
append
(
keyPrefix
,
shaKey
...
))
}
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