add leaf key to removed 'nodes'
This commit is contained in:
parent
daa2cdde22
commit
a101102556
@ -419,18 +419,6 @@ func (sdb *builder) deletedOrUpdatedState(a, b trie.NodeIterator, diffPathsAtB m
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
// if this node's path did not show up in diffPathsAtB
|
|
||||||
// that means the node at this path was deleted (or moved) in B
|
|
||||||
// emit an empty "removed" diff to signify as such
|
|
||||||
if _, ok := diffPathsAtB[common.Bytes2Hex(node.Path)]; !ok {
|
|
||||||
if err := output(StateNode{
|
|
||||||
Path: node.Path,
|
|
||||||
NodeValue: []byte{},
|
|
||||||
NodeType: Removed,
|
|
||||||
}); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
switch node.NodeType {
|
switch node.NodeType {
|
||||||
case Leaf:
|
case Leaf:
|
||||||
// map all different accounts at A to their leafkey
|
// map all different accounts at A to their leafkey
|
||||||
@ -449,7 +437,32 @@ func (sdb *builder) deletedOrUpdatedState(a, b trie.NodeIterator, diffPathsAtB m
|
|||||||
LeafKey: leafKey,
|
LeafKey: leafKey,
|
||||||
Account: &account,
|
Account: &account,
|
||||||
}
|
}
|
||||||
|
// if this node's path did not show up in diffPathsAtB
|
||||||
|
// that means the node at this path was deleted (or moved) in B
|
||||||
|
// emit an empty "removed" diff to signify as such
|
||||||
|
if _, ok := diffPathsAtB[common.Bytes2Hex(node.Path)]; !ok {
|
||||||
|
if err := output(StateNode{
|
||||||
|
Path: node.Path,
|
||||||
|
NodeValue: []byte{},
|
||||||
|
NodeType: Removed,
|
||||||
|
LeafKey: leafKey,
|
||||||
|
}); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
case Extension, Branch:
|
case Extension, Branch:
|
||||||
|
// if this node's path did not show up in diffPathsAtB
|
||||||
|
// that means the node at this path was deleted (or moved) in B
|
||||||
|
// emit an empty "removed" diff to signify as such
|
||||||
|
if _, ok := diffPathsAtB[common.Bytes2Hex(node.Path)]; !ok {
|
||||||
|
if err := output(StateNode{
|
||||||
|
Path: node.Path,
|
||||||
|
NodeValue: []byte{},
|
||||||
|
NodeType: Removed,
|
||||||
|
}); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
// fall through, we did everything we need to do with these node types
|
// fall through, we did everything we need to do with these node types
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unexpected node type %s", node.NodeType)
|
return nil, fmt.Errorf("unexpected node type %s", node.NodeType)
|
||||||
@ -703,6 +716,7 @@ func (sdb *builder) deletedOrUpdatedStorage(a, b trie.NodeIterator, diffPathsAtB
|
|||||||
NodeType: Removed,
|
NodeType: Removed,
|
||||||
Path: node.Path,
|
Path: node.Path,
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
|
LeafKey: leafKey,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1375,11 +1375,13 @@ func TestBuilderWithRemovedAccountAndStorage(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Path: []byte{'\x0b'},
|
Path: []byte{'\x0b'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: slot1StorageKey.Bytes(),
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Path: []byte{'\x0c'},
|
Path: []byte{'\x0c'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: slot3StorageKey.Bytes(),
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1434,11 +1436,13 @@ func TestBuilderWithRemovedAccountAndStorage(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Path: []byte{'\x02'},
|
Path: []byte{'\x02'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: slot0StorageKey.Bytes(),
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Path: []byte{'\x04'},
|
Path: []byte{'\x04'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: slot2StorageKey.Bytes(),
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1474,6 +1478,7 @@ func TestBuilderWithRemovedAccountAndStorage(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Path: []byte{'\x06'},
|
Path: []byte{'\x06'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: contractLeafKey,
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1571,11 +1576,13 @@ func TestBuilderWithRemovedAccountAndStorageWithoutIntermediateNodes(t *testing.
|
|||||||
{
|
{
|
||||||
Path: []byte{'\x0b'},
|
Path: []byte{'\x0b'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: slot1StorageKey.Bytes(),
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Path: []byte{'\x0c'},
|
Path: []byte{'\x0c'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: slot3StorageKey.Bytes(),
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1618,17 +1625,19 @@ func TestBuilderWithRemovedAccountAndStorageWithoutIntermediateNodes(t *testing.
|
|||||||
{
|
{
|
||||||
Path: []byte{},
|
Path: []byte{},
|
||||||
NodeType: sdtypes.Leaf,
|
NodeType: sdtypes.Leaf,
|
||||||
NodeValue: slot0StorageLeafRootNode,
|
|
||||||
LeafKey: slot0StorageKey.Bytes(),
|
LeafKey: slot0StorageKey.Bytes(),
|
||||||
|
NodeValue: slot0StorageLeafRootNode,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Path: []byte{'\x02'},
|
Path: []byte{'\x02'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: slot0StorageKey.Bytes(),
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Path: []byte{'\x04'},
|
Path: []byte{'\x04'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: slot2StorageKey.Bytes(),
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1658,6 +1667,7 @@ func TestBuilderWithRemovedAccountAndStorageWithoutIntermediateNodes(t *testing.
|
|||||||
{
|
{
|
||||||
Path: []byte{'\x06'},
|
Path: []byte{'\x06'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: contractLeafKey,
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1881,11 +1891,13 @@ func TestBuilderWithMovedAccount(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Path: []byte{'\x01'},
|
Path: []byte{'\x01'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: contractLeafKey,
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Path: []byte{'\x00'},
|
Path: []byte{'\x00'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: testhelpers.BankLeafKey,
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -2003,11 +2015,13 @@ func TestBuilderWithMovedAccountOnlyLeafs(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Path: []byte{'\x01'},
|
Path: []byte{'\x01'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: contractLeafKey,
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Path: []byte{'\x00'},
|
Path: []byte{'\x00'},
|
||||||
NodeType: sdtypes.Removed,
|
NodeType: sdtypes.Removed,
|
||||||
|
LeafKey: testhelpers.BankLeafKey,
|
||||||
NodeValue: []byte{},
|
NodeValue: []byte{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -21,29 +21,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
BeginTransactionFailedMsg = "failed to begin transaction"
|
|
||||||
DbConnectionFailedMsg = "db connection failed"
|
DbConnectionFailedMsg = "db connection failed"
|
||||||
DeleteQueryFailedMsg = "delete query failed"
|
|
||||||
InsertQueryFailedMsg = "insert query failed"
|
|
||||||
SettingNodeFailedMsg = "unable to set db node"
|
SettingNodeFailedMsg = "unable to set db node"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ErrBeginTransactionFailed(beginErr error) error {
|
|
||||||
return formatError(BeginTransactionFailedMsg, beginErr.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
func ErrDBConnectionFailed(connectErr error) error {
|
func ErrDBConnectionFailed(connectErr error) error {
|
||||||
return formatError(DbConnectionFailedMsg, connectErr.Error())
|
return formatError(DbConnectionFailedMsg, connectErr.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
func ErrDBDeleteFailed(deleteErr error) error {
|
|
||||||
return formatError(DeleteQueryFailedMsg, deleteErr.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
func ErrDBInsertFailed(insertErr error) error {
|
|
||||||
return formatError(InsertQueryFailedMsg, insertErr.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
func ErrUnableToSetNode(setErr error) error {
|
func ErrUnableToSetNode(setErr error) error {
|
||||||
return formatError(SettingNodeFailedMsg, setErr.Error())
|
return formatError(SettingNodeFailedMsg, setErr.Error())
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,13 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/statediff/indexer/shared"
|
"github.com/ethereum/go-ethereum/statediff/indexer/shared"
|
||||||
)
|
)
|
||||||
|
|
||||||
var DBParams postgres.ConnectionParams
|
var DBParams = postgres.ConnectionParams{
|
||||||
|
Name: "vulcanize_testing",
|
||||||
|
Password: "",
|
||||||
|
Port: 5432,
|
||||||
|
Hostname: "localhost",
|
||||||
|
User: "postgres",
|
||||||
|
}
|
||||||
|
|
||||||
func expectContainsSubstring(t *testing.T, full string, sub string) {
|
func expectContainsSubstring(t *testing.T, full string, sub string) {
|
||||||
if !strings.Contains(full, sub) {
|
if !strings.Contains(full, sub) {
|
||||||
@ -49,7 +55,7 @@ func TestPostgresDB(t *testing.T) {
|
|||||||
sqlxdb, err = sqlx.Connect("postgres", pgConfig)
|
sqlxdb, err = sqlx.Connect("postgres", pgConfig)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatalf("failed to connect to db with connection string: %s err: %v", pgConfig, err)
|
||||||
}
|
}
|
||||||
if sqlxdb == nil {
|
if sqlxdb == nil {
|
||||||
t.Fatal("DB is nil")
|
t.Fatal("DB is nil")
|
||||||
|
Loading…
Reference in New Issue
Block a user