Address PR comments
This commit is contained in:
parent
61c82b2326
commit
569a5a6dd8
@ -1353,7 +1353,6 @@ func RegisterStateDiffService(stack *node.Node, ctx *cli.Context) {
|
|||||||
path := ctx.GlobalString(StateDiffPathFlag.Name)
|
path := ctx.GlobalString(StateDiffPathFlag.Name)
|
||||||
|
|
||||||
config := statediff.Config{
|
config := statediff.Config{
|
||||||
On: false,
|
|
||||||
Mode: mode,
|
Mode: mode,
|
||||||
Path: path,
|
Path: path,
|
||||||
}
|
}
|
||||||
|
@ -69,8 +69,8 @@ func (sdb *builder) BuildStateDiff(oldStateRoot, newStateRoot common.Hash, block
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Find deleted accounts
|
// Find deleted accounts
|
||||||
oldIt = oldTrie.NodeIterator(make([]byte, 0))
|
oldIt = oldTrie.NodeIterator([]byte{})
|
||||||
newIt = newTrie.NodeIterator(make([]byte, 0))
|
newIt = newTrie.NodeIterator([]byte{})
|
||||||
deletions, err := sdb.collectDiffNodes(newIt, oldIt)
|
deletions, err := sdb.collectDiffNodes(newIt, oldIt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Error collecting deletion diff nodes", "error", err)
|
log.Error("Error collecting deletion diff nodes", "error", err)
|
||||||
@ -88,12 +88,12 @@ func (sdb *builder) BuildStateDiff(oldStateRoot, newStateRoot common.Hash, block
|
|||||||
log.Error("Error building diff for updated accounts", "error", err)
|
log.Error("Error building diff for updated accounts", "error", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
createdAccounts, err := sdb.buildDiffEventual(creations, true)
|
createdAccounts, err := sdb.buildDiffEventual(creations)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Error building diff for created accounts", "error", err)
|
log.Error("Error building diff for created accounts", "error", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
deletedAccounts, err := sdb.buildDiffEventual(deletions, false)
|
deletedAccounts, err := sdb.buildDiffEventual(deletions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Error building diff for deleted accounts", "error", err)
|
log.Error("Error building diff for deleted accounts", "error", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -145,11 +145,11 @@ func (sdb *builder) collectDiffNodes(a, b trie.NodeIterator) (map[common.Address
|
|||||||
return diffAccounts, nil
|
return diffAccounts, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sdb *builder) buildDiffEventual(accounts map[common.Address]*state.Account, created bool) (map[common.Address]AccountDiff, error) {
|
func (sdb *builder) buildDiffEventual(accounts map[common.Address]*state.Account) (map[common.Address]AccountDiff, error) {
|
||||||
accountDiffs := make(map[common.Address]AccountDiff)
|
accountDiffs := make(map[common.Address]AccountDiff)
|
||||||
for addr, val := range accounts {
|
for addr, val := range accounts {
|
||||||
sr := val.Root
|
sr := val.Root
|
||||||
storageDiffs, err := sdb.buildStorageDiffsEventual(sr, created)
|
storageDiffs, err := sdb.buildStorageDiffsEventual(sr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Failed building eventual storage diffs", "Address", addr, "error", err)
|
log.Error("Failed building eventual storage diffs", "Address", addr, "error", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -204,10 +204,11 @@ func (sdb *builder) buildDiffIncremental(creations map[common.Address]*state.Acc
|
|||||||
return updatedAccounts, nil
|
return updatedAccounts, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sdb *builder) buildStorageDiffsEventual(sr common.Hash, creation bool) (map[string]DiffString, error) {
|
func (sdb *builder) buildStorageDiffsEventual(sr common.Hash) (map[string]DiffString, error) {
|
||||||
log.Debug("Storage Root For Eventual Diff", "root", sr.Hex())
|
log.Debug("Storage Root For Eventual Diff", "root", sr.Hex())
|
||||||
sTrie, err := trie.New(sr, sdb.trieDB)
|
sTrie, err := trie.New(sr, sdb.trieDB)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Info("error in build storage diff eventual", "error", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
it := sTrie.NodeIterator(make([]byte, 0))
|
it := sTrie.NodeIterator(make([]byte, 0))
|
||||||
@ -261,7 +262,7 @@ func (sdb *builder) buildStorageDiffsIncremental(oldSR common.Hash, newSR common
|
|||||||
|
|
||||||
func (sdb *builder) addressByPath(path []byte) (*common.Address, error) {
|
func (sdb *builder) addressByPath(path []byte) (*common.Address, error) {
|
||||||
log.Debug("Looking up address from path", "path", hexutil.Encode(append([]byte("secure-key-"), path...)))
|
log.Debug("Looking up address from path", "path", hexutil.Encode(append([]byte("secure-key-"), path...)))
|
||||||
if addrBytes, err := sdb.chainDB.Get(append([]byte("secure-key-"), hexToKeybytes(path)...)); err != nil {
|
if addrBytes, err := sdb.chainDB.Get(append([]byte("secure-key-"), hexToKeyBytes(path)...)); err != nil {
|
||||||
log.Error("Error looking up address via path", "path", hexutil.Encode(append([]byte("secure-key-"), path...)), "error", err)
|
log.Error("Error looking up address via path", "path", hexutil.Encode(append([]byte("secure-key-"), path...)), "error", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
} else {
|
} else {
|
||||||
|
@ -93,7 +93,7 @@ func pathToStr(it trie.NodeIterator) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Duplicated from trie/encoding.go
|
// Duplicated from trie/encoding.go
|
||||||
func hexToKeybytes(hex []byte) []byte {
|
func hexToKeyBytes(hex []byte) []byte {
|
||||||
if hasTerm(hex) {
|
if hasTerm(hex) {
|
||||||
hex = hex[:len(hex)-1]
|
hex = hex[:len(hex)-1]
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,6 @@ package statediff
|
|||||||
import "fmt"
|
import "fmt"
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
On bool // Whether or not to extract state diffs
|
|
||||||
Mode StateDiffMode // Mode for storing diffs
|
Mode StateDiffMode // Mode for storing diffs
|
||||||
Path string // Path for storing diffs
|
Path string // Path for storing diffs
|
||||||
}
|
}
|
||||||
|
@ -73,9 +73,9 @@ func keybytesToHex(str []byte) []byte {
|
|||||||
return nibbles
|
return nibbles
|
||||||
}
|
}
|
||||||
|
|
||||||
// hexToKeybytes turns hex nibbles into key bytes.
|
// hexToKeyBytes turns hex nibbles into key bytes.
|
||||||
// This can only be used for keys of even length.
|
// This can only be used for keys of even length.
|
||||||
func hexToKeybytes(hex []byte) []byte {
|
func hexToKeyBytes(hex []byte) []byte {
|
||||||
if hasTerm(hex) {
|
if hasTerm(hex) {
|
||||||
hex = hex[:len(hex)-1]
|
hex = hex[:len(hex)-1]
|
||||||
}
|
}
|
||||||
|
@ -69,8 +69,8 @@ func TestHexKeybytes(t *testing.T) {
|
|||||||
if h := keybytesToHex(test.key); !bytes.Equal(h, test.hexOut) {
|
if h := keybytesToHex(test.key); !bytes.Equal(h, test.hexOut) {
|
||||||
t.Errorf("keybytesToHex(%x) -> %x, want %x", test.key, h, test.hexOut)
|
t.Errorf("keybytesToHex(%x) -> %x, want %x", test.key, h, test.hexOut)
|
||||||
}
|
}
|
||||||
if k := hexToKeybytes(test.hexIn); !bytes.Equal(k, test.key) {
|
if k := hexToKeyBytes(test.hexIn); !bytes.Equal(k, test.key) {
|
||||||
t.Errorf("hexToKeybytes(%x) -> %x, want %x", test.hexIn, k, test.key)
|
t.Errorf("hexToKeyBytes(%x) -> %x, want %x", test.hexIn, k, test.key)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -99,6 +99,6 @@ func BenchmarkKeybytesToHex(b *testing.B) {
|
|||||||
func BenchmarkHexToKeybytes(b *testing.B) {
|
func BenchmarkHexToKeybytes(b *testing.B) {
|
||||||
testBytes := []byte{7, 6, 6, 5, 7, 2, 6, 2, 16}
|
testBytes := []byte{7, 6, 6, 5, 7, 2, 6, 2, 16}
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
hexToKeybytes(testBytes)
|
hexToKeyBytes(testBytes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -162,7 +162,7 @@ func (it *nodeIterator) Leaf() bool {
|
|||||||
func (it *nodeIterator) LeafKey() []byte {
|
func (it *nodeIterator) LeafKey() []byte {
|
||||||
if len(it.stack) > 0 {
|
if len(it.stack) > 0 {
|
||||||
if _, ok := it.stack[len(it.stack)-1].node.(valueNode); ok {
|
if _, ok := it.stack[len(it.stack)-1].node.(valueNode); ok {
|
||||||
return hexToKeybytes(it.path)
|
return hexToKeyBytes(it.path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
panic("not at leaf")
|
panic("not at leaf")
|
||||||
|
Loading…
Reference in New Issue
Block a user