From 16ac439546e5b1e6bdeb720dab051d75759a2cc1 Mon Sep 17 00:00:00 2001 From: i-norden Date: Thu, 24 Mar 2022 08:01:26 -0500 Subject: [PATCH] update file writing mode --- statediff/indexer/database/file/indexer.go | 2 +- statediff/indexer/database/sql/indexer.go | 22 ++++++++++++---------- statediff/indexer/interfaces/interfaces.go | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/statediff/indexer/database/file/indexer.go b/statediff/indexer/database/file/indexer.go index 62da6d8c3..e39370cf1 100644 --- a/statediff/indexer/database/file/indexer.go +++ b/statediff/indexer/database/file/indexer.go @@ -220,7 +220,7 @@ func (sdi *StateDiffIndexer) processHeader(header *types.Header, headerNode node CID: headerNode.Cid().String(), MhKey: shared.MultihashKeyFromCID(headerNode.Cid()), ParentHash: header.ParentHash.String(), - BlockNumber: header.Number.String(), + BlockNumber: sdi.blockNumber, BlockHash: headerID, TotalDifficulty: td.String(), Reward: reward.String(), diff --git a/statediff/indexer/database/sql/indexer.go b/statediff/indexer/database/sql/indexer.go index 1d00fdffc..2ada2a532 100644 --- a/statediff/indexer/database/sql/indexer.go +++ b/statediff/indexer/database/sql/indexer.go @@ -55,6 +55,7 @@ type StateDiffIndexer struct { ctx context.Context chainConfig *params.ChainConfig dbWriter *Writer + blockNumber string } // NewStateDiffIndexer creates a sql implementation of interfaces.StateDiffIndexer @@ -89,6 +90,7 @@ func (sdi *StateDiffIndexer) ReportDBMetrics(delay time.Duration, quit <-chan bo // Returns an initiated DB transaction which must be Closed via defer to commit or rollback func (sdi *StateDiffIndexer) PushBlock(block *types.Block, receipts types.Receipts, totalDifficulty *big.Int) (interfaces.Batch, error) { start, t := time.Now(), time.Now() + sdi.blockNumber = block.Number().String() blockHash := block.Hash() blockHashStr := blockHash.String() height := block.NumberU64() @@ -201,7 +203,7 @@ func (sdi *StateDiffIndexer) PushBlock(block *types.Block, receipts types.Receip traceMsg += fmt.Sprintf("header processing time: %s\r\n", tDiff.String()) t = time.Now() // Publish and index uncles - err = sdi.processUncles(blockTx, headerID, block.Number(), uncleNodes) + err = sdi.processUncles(blockTx, headerID, block.NumberU64(), uncleNodes) if err != nil { return nil, err } @@ -250,7 +252,7 @@ func (sdi *StateDiffIndexer) processHeader(tx *BatchTx, header *types.Header, he CID: headerNode.Cid().String(), MhKey: shared.MultihashKeyFromCID(headerNode.Cid()), ParentHash: header.ParentHash.String(), - BlockNumber: header.Number.String(), + BlockNumber: sdi.blockNumber, BlockHash: headerID, TotalDifficulty: td.String(), Reward: reward.String(), @@ -265,7 +267,7 @@ func (sdi *StateDiffIndexer) processHeader(tx *BatchTx, header *types.Header, he } // processUncles publishes and indexes uncle IPLDs in Postgres -func (sdi *StateDiffIndexer) processUncles(tx *BatchTx, headerID string, blockNumber *big.Int, uncleNodes []*ipld2.EthHeader) error { +func (sdi *StateDiffIndexer) processUncles(tx *BatchTx, headerID string, blockNumber uint64, uncleNodes []*ipld2.EthHeader) error { // publish and index uncles for _, uncleNode := range uncleNodes { tx.cacheIPLD(uncleNode) @@ -274,10 +276,10 @@ func (sdi *StateDiffIndexer) processUncles(tx *BatchTx, headerID string, blockNu if sdi.chainConfig.Clique != nil { uncleReward = big.NewInt(0) } else { - uncleReward = shared.CalcUncleMinerReward(blockNumber.Uint64(), uncleNode.Number.Uint64()) + uncleReward = shared.CalcUncleMinerReward(blockNumber, uncleNode.Number.Uint64()) } uncle := models.UncleModel{ - BlockNumber: blockNumber.String(), + BlockNumber: sdi.blockNumber, HeaderID: headerID, CID: uncleNode.Cid().String(), MhKey: shared.MultihashKeyFromCID(uncleNode.Cid()), @@ -333,7 +335,7 @@ func (sdi *StateDiffIndexer) processReceiptsAndTxs(tx *BatchTx, args processArgs return fmt.Errorf("error deriving tx sender: %v", err) } txModel := models.TxModel{ - BlockNumber: args.blockNumber.String(), + BlockNumber: sdi.blockNumber, HeaderID: args.headerID, Dst: shared.HandleZeroAddrPointer(trx.To()), Src: shared.HandleZeroAddr(from), @@ -356,7 +358,7 @@ func (sdi *StateDiffIndexer) processReceiptsAndTxs(tx *BatchTx, args processArgs storageKeys[k] = storageKey.Hex() } accessListElementModel := models.AccessListElementModel{ - BlockNumber: args.blockNumber.String(), + BlockNumber: sdi.blockNumber, TxID: txID, Index: int64(j), Address: accessListElement.Address.Hex(), @@ -380,7 +382,7 @@ func (sdi *StateDiffIndexer) processReceiptsAndTxs(tx *BatchTx, args processArgs } rctModel := &models.ReceiptModel{ - BlockNumber: args.blockNumber.String(), + BlockNumber: sdi.blockNumber, TxID: txID, Contract: contract, ContractHash: contractHash, @@ -411,7 +413,7 @@ func (sdi *StateDiffIndexer) processReceiptsAndTxs(tx *BatchTx, args processArgs } logDataSet[idx] = &models.LogsModel{ - BlockNumber: args.blockNumber.String(), + BlockNumber: sdi.blockNumber, ReceiptID: txID, Address: l.Address.String(), Index: int64(l.Index), @@ -440,7 +442,7 @@ func (sdi *StateDiffIndexer) processReceiptsAndTxs(tx *BatchTx, args processArgs } // PushStateNode publishes and indexes a state diff node object (including any child storage nodes) in the IPLD sql -func (sdi *StateDiffIndexer) PushStateNode(batch interfaces.Batch, stateNode sdtypes.StateNode, blockNumber, headerID string) error { +func (sdi *StateDiffIndexer) PushStateNode(batch interfaces.Batch, stateNode sdtypes.StateNode, headerID string) error { tx, ok := batch.(*BatchTx) if !ok { return fmt.Errorf("sql: batch is expected to be of type %T, got %T", &BatchTx{}, batch) diff --git a/statediff/indexer/interfaces/interfaces.go b/statediff/indexer/interfaces/interfaces.go index f406ef18c..6910e3f49 100644 --- a/statediff/indexer/interfaces/interfaces.go +++ b/statediff/indexer/interfaces/interfaces.go @@ -30,7 +30,7 @@ import ( // StateDiffIndexer interface required to index statediff data type StateDiffIndexer interface { PushBlock(block *types.Block, receipts types.Receipts, totalDifficulty *big.Int) (Batch, error) - PushStateNode(tx Batch, stateNode sdtypes.StateNode, blockNumber, headerID string) error + PushStateNode(tx Batch, stateNode sdtypes.StateNode, headerID string) error PushCodeAndCodeHash(tx Batch, codeAndCodeHash sdtypes.CodeAndCodeHash) error ReportDBMetrics(delay time.Duration, quit <-chan bool)