Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
whqwjb
go-ethereum
提交
bbe79545
G
go-ethereum
项目概览
whqwjb
/
go-ethereum
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
go-ethereum
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bbe79545
编写于
3月 24, 2015
作者:
O
obscuren
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Secure trie shakey / key matching
上级
d6da5333
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
14 addition
and
5 deletion
+14
-5
core/state/dump.go
core/state/dump.go
+4
-4
trie/secure_trie.go
trie/secure_trie.go
+10
-1
未找到文件。
core/state/dump.go
浏览文件 @
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
浏览文件 @
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
...
))
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录