From f508ae2cd779d340a1468ee370261302c72587d2 Mon Sep 17 00:00:00 2001 From: i-norden Date: Tue, 30 Nov 2021 17:26:16 -0600 Subject: [PATCH 1/2] fix issue with log/logTrie processing --- statediff/indexer/ipld/eth_parser.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/statediff/indexer/ipld/eth_parser.go b/statediff/indexer/ipld/eth_parser.go index 0b4780f8a..9e6d4787d 100644 --- a/statediff/indexer/ipld/eth_parser.go +++ b/statediff/indexer/ipld/eth_parser.go @@ -238,14 +238,24 @@ func processReceiptsAndLogs(rcts []*types.Receipt, expectedRctRoot []byte) ([]*E return ethRctNodes, rctTrieNodes, ethLogTrieNodes, ethLogleafNodeCids, ethRctleafNodeCids, err } +const keccak256Length = 32 + func processLogs(logs []*types.Log) ([]*EthLogTrie, []cid.Cid, common.Hash, error) { logTr := newLogTrie() + shortLogCIDs := make(map[uint64]cid.Cid, len(logs)) for idx, log := range logs { - ethLog, err := NewLog(log) + logRaw, err := rlp.EncodeToBytes(log) if err != nil { return nil, nil, common.Hash{}, err } - if err = logTr.Add(idx, ethLog.RawData()); err != nil { + if len(logRaw) <= keccak256Length { + logNode, err := NewLog(log) + if err != nil { + return nil, nil, common.Hash{}, err + } + shortLogCIDs[uint64(idx)] = logNode.Cid() + } + if err = logTr.Add(idx, logRaw); err != nil { return nil, nil, common.Hash{}, err } } @@ -259,8 +269,7 @@ func processLogs(logs []*types.Log) ([]*EthLogTrie, []cid.Cid, common.Hash, erro if err != nil { return nil, nil, common.Hash{}, err } - - leafNodeCids := make([]cid.Cid, len(leafNodes)) + leafNodeCids := make([]cid.Cid, len(logs)) for i, ln := range leafNodes { var idx uint @@ -271,6 +280,9 @@ func processLogs(logs []*types.Log) ([]*EthLogTrie, []cid.Cid, common.Hash, erro } leafNodeCids[idx] = ln.Cid() } + for idx, lCID := range shortLogCIDs { + leafNodeCids[idx] = lCID + } return logTrieNodes, leafNodeCids, common.BytesToHash(logTr.rootHash()), err } From 963ed838a00ee27184e37cb091f20434f90ebe32 Mon Sep 17 00:00:00 2001 From: i-norden Date: Tue, 30 Nov 2021 17:26:35 -0600 Subject: [PATCH 2/2] remove some unecessary hashing operations --- .../file/mainnet_tests/statediffing_test_file.sql | 0 statediff/indexer/ipld/eth_log_trie.go | 9 +-------- statediff/indexer/ipld/eth_receipt_trie.go | 8 +------- statediff/indexer/ipld/eth_tx_trie.go | 6 +----- 4 files changed, 3 insertions(+), 20 deletions(-) delete mode 100644 statediff/indexer/database/file/mainnet_tests/statediffing_test_file.sql diff --git a/statediff/indexer/database/file/mainnet_tests/statediffing_test_file.sql b/statediff/indexer/database/file/mainnet_tests/statediffing_test_file.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/statediff/indexer/ipld/eth_log_trie.go b/statediff/indexer/ipld/eth_log_trie.go index 49b7a7fc6..edfd35af9 100644 --- a/statediff/indexer/ipld/eth_log_trie.go +++ b/statediff/indexer/ipld/eth_log_trie.go @@ -114,14 +114,8 @@ func (rt *logTrie) getNodeFromDB(key []byte) (*EthLogTrie, error) { if err != nil { return nil, err } - - c, err := RawdataToCid(MEthLogTrie, rawdata, multihash.KECCAK_256) - if err != nil { - return nil, err - } - tn := &TrieNode{ - cid: c, + cid: keccak256ToCid(MEthLogTrie, key), rawdata: rawdata, } return &EthLogTrie{TrieNode: tn}, nil @@ -134,7 +128,6 @@ func (rt *logTrie) getLeafNodes() ([]*EthLogTrie, []*nodeKey, error) { if err != nil { return nil, nil, err } - out := make([]*EthLogTrie, 0, len(keys)) for _, k := range keys { n, err := rt.getNodeFromDB(k.dbKey) diff --git a/statediff/indexer/ipld/eth_receipt_trie.go b/statediff/indexer/ipld/eth_receipt_trie.go index e187e7d9d..4ceef6f1f 100644 --- a/statediff/indexer/ipld/eth_receipt_trie.go +++ b/statediff/indexer/ipld/eth_receipt_trie.go @@ -166,14 +166,8 @@ func (rt *rctTrie) getNodeFromDB(key []byte) (*EthRctTrie, error) { if err != nil { return nil, err } - - cid, err := RawdataToCid(MEthTxReceiptTrie, rawdata, multihash.KECCAK_256) - if err != nil { - return nil, err - } - tn := &TrieNode{ - cid: cid, + cid: keccak256ToCid(MEthStateTrie, key), rawdata: rawdata, } diff --git a/statediff/indexer/ipld/eth_tx_trie.go b/statediff/indexer/ipld/eth_tx_trie.go index 943cf15ae..bb4f66df0 100644 --- a/statediff/indexer/ipld/eth_tx_trie.go +++ b/statediff/indexer/ipld/eth_tx_trie.go @@ -135,12 +135,8 @@ func (tt *txTrie) getNodes() ([]*EthTxTrie, error) { if err != nil { return nil, err } - c, err := RawdataToCid(MEthTxTrie, rawdata, multihash.KECCAK_256) - if err != nil { - return nil, err - } tn := &TrieNode{ - cid: c, + cid: keccak256ToCid(MEthTxTrie, k), rawdata: rawdata, } out = append(out, &EthTxTrie{TrieNode: tn})