Use symmetric difference iterator #11
44
builder.go
44
builder.go
@ -318,18 +318,6 @@ func (sdb *StateDiffBuilder) decodeStateLeaf(it trie.NodeIterator, parentBlob []
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// processAccountUpdates emits state and storage node records for all updated existing accounts.
|
|
||||||
func (sdb *StateDiffBuilder) processAccountUpdates(
|
|
||||||
updates accountUpdateMap,
|
|
||||||
nodeSink sdtypes.StateNodeSink,
|
|
||||||
ipldSink sdtypes.IPLDSink,
|
|
||||||
logger log.Logger,
|
|
||||||
) error {
|
|
||||||
defer metrics.UpdateDuration(time.Now(), metrics.IndexerMetrics.BuildAccountUpdatesTimer)
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// processCreatedAccountStorage processes the storage node records for a newly created account
|
// processCreatedAccountStorage processes the storage node records for a newly created account
|
||||||
// i.e. it returns all the storage nodes at this state, since there is no previous state.
|
// i.e. it returns all the storage nodes at this state, since there is no previous state.
|
||||||
func (sdb *StateDiffBuilder) processCreatedAccountStorage(
|
func (sdb *StateDiffBuilder) processCreatedAccountStorage(
|
||||||
@ -369,22 +357,6 @@ func (sdb *StateDiffBuilder) processCreatedAccountStorage(
|
|||||||
return it.Error()
|
return it.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
// decodes slot at leaf and encodes RLP data to CID
|
|
||||||
// reminder: it.Leaf() == true when the iterator is positioned at a "value node" (which is not something
|
|
||||||
// that actually exists in an MMPT), therefore we pass the parent node blob as the leaf RLP.
|
|
||||||
func (sdb *StateDiffBuilder) decodeStorageLeaf(it trie.NodeIterator, parentBlob []byte) sdtypes.StorageLeafNode {
|
|
||||||
leafKey := make([]byte, len(it.LeafKey()))
|
|
||||||
copy(leafKey, it.LeafKey())
|
|
||||||
value := make([]byte, len(it.LeafBlob()))
|
|
||||||
copy(value, it.LeafBlob())
|
|
||||||
|
|
||||||
return sdtypes.StorageLeafNode{
|
|
||||||
LeafKey: leafKey,
|
|
||||||
Value: value,
|
|
||||||
CID: ipld.Keccak256ToCid(ipld.MEthStorageTrie, crypto.Keccak256(parentBlob)).String(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// processRemovedAccountStorage builds the "removed" diffs for all the storage nodes for a destroyed account
|
// processRemovedAccountStorage builds the "removed" diffs for all the storage nodes for a destroyed account
|
||||||
func (sdb *StateDiffBuilder) processRemovedAccountStorage(
|
func (sdb *StateDiffBuilder) processRemovedAccountStorage(
|
||||||
sr common.Hash, storageSink sdtypes.StorageNodeSink,
|
sr common.Hash, storageSink sdtypes.StorageNodeSink,
|
||||||
@ -479,6 +451,22 @@ func (sdb *StateDiffBuilder) processUpdatedAccountStorage(
|
|||||||
return it.Error()
|
return it.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// decodes slot at leaf and encodes RLP data to CID
|
||||||
|
// reminder: it.Leaf() == true when the iterator is positioned at a "value node" (which is not something
|
||||||
|
// that actually exists in an MMPT), therefore we pass the parent node blob as the leaf RLP.
|
||||||
|
func (sdb *StateDiffBuilder) decodeStorageLeaf(it trie.NodeIterator, parentBlob []byte) sdtypes.StorageLeafNode {
|
||||||
|
leafKey := make([]byte, len(it.LeafKey()))
|
||||||
|
copy(leafKey, it.LeafKey())
|
||||||
|
value := make([]byte, len(it.LeafBlob()))
|
||||||
|
copy(value, it.LeafBlob())
|
||||||
|
|
||||||
|
return sdtypes.StorageLeafNode{
|
||||||
|
LeafKey: leafKey,
|
||||||
|
Value: value,
|
||||||
|
CID: ipld.Keccak256ToCid(ipld.MEthStorageTrie, crypto.Keccak256(parentBlob)).String(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// isWatchedPathPrefix checks if a node path is a prefix (ancestor) to one of the watched addresses.
|
// isWatchedPathPrefix checks if a node path is a prefix (ancestor) to one of the watched addresses.
|
||||||
// An empty watch list means all paths are watched.
|
// An empty watch list means all paths are watched.
|
||||||
func isWatchedPathPrefix(watchedLeafPaths [][]byte, path []byte) bool {
|
func isWatchedPathPrefix(watchedLeafPaths [][]byte, path []byte) bool {
|
||||||
|
Loading…
Reference in New Issue
Block a user