From 09b066b1a308c5cb4a5d89c0853cdbbd84a8f9f6 Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Thu, 28 Sep 2023 11:48:15 +0800 Subject: [PATCH] Add godoc for Indexer --- indexer/interfaces/interfaces.go | 26 +++++++++++++++++++------- main/main.go | 2 +- test_helpers/builder.go | 7 ++++--- test_helpers/indexing.go | 9 +++++---- 4 files changed, 29 insertions(+), 15 deletions(-) diff --git a/indexer/interfaces/interfaces.go b/indexer/interfaces/interfaces.go index 18dc735..e2e70d8 100644 --- a/indexer/interfaces/interfaces.go +++ b/indexer/interfaces/interfaces.go @@ -29,27 +29,39 @@ import ( "github.com/ethereum/go-ethereum/core/types" ) -// StateDiffIndexer interface required to index statediff data +// StateDiffIndexer describes the interface for indexing state data. type StateDiffIndexer interface { - DetectGaps(beginBlock uint64, endBlock uint64) ([]*BlockGap, error) - CurrentBlock() (*models.HeaderModel, error) - HasBlock(hash common.Hash, number uint64) (bool, error) + // PushBlock indexes block data except for state & storage nodes: header, uncles, transactions & + // receipts. Returns an initiated DB transaction which must be committed or rolled back. PushBlock(block *types.Block, receipts types.Receipts, totalDifficulty *big.Int) (Batch, error) + // PushHeader indexes a block header. PushHeader(batch Batch, header *types.Header, reward, td *big.Int) (string, error) + // PushStateNode indexes a state node and its storage trie. PushStateNode(tx Batch, stateNode sdtypes.StateLeafNode, headerID string) error + // PushIPLD indexes an IPLD node. PushIPLD(tx Batch, ipld sdtypes.IPLD) error - ReportDBMetrics(delay time.Duration, quit <-chan bool) - + // BeginTx starts a new DB transaction. BeginTx(number *big.Int, ctx context.Context) Batch + // DetectGaps returns a list of gaps in the block range, if any. + DetectGaps(beginBlock uint64, endBlock uint64) ([]*BlockGap, error) + // CurrentBlock returns the latest indexed block. + CurrentBlock() (*models.HeaderModel, error) + // HasBlock returns true if the block is indexed. + HasBlock(hash common.Hash, number uint64) (bool, error) + + // Close closes the associated output DB connection or files. + Close() error + // Methods used by WatchAddress API/functionality + LoadWatchedAddresses() ([]common.Address, error) InsertWatchedAddresses(addresses []sdtypes.WatchAddressArg, currentBlock *big.Int) error RemoveWatchedAddresses(addresses []sdtypes.WatchAddressArg) error SetWatchedAddresses(args []sdtypes.WatchAddressArg, currentBlockNumber *big.Int) error ClearWatchedAddresses() error - Close() error + ReportDBMetrics(delay time.Duration, quit <-chan bool) } // Batch required for indexing data atomically diff --git a/main/main.go b/main/main.go index 61cce90..6192c19 100644 --- a/main/main.go +++ b/main/main.go @@ -26,7 +26,7 @@ func Initialize(ctx core.Context, pl core.PluginLoader, logger core.Logger) { gethContext = ctx } -func InitializeNode(stack core.Node, b core.Backend) { +func InitializeNode(_ core.Node, b core.Backend) { backend := b.(restricted.Backend) networkid, err := strconv.ParseUint(gethContext.String(geth_flags.NetworkIdFlag.Name), 10, 64) diff --git a/test_helpers/builder.go b/test_helpers/builder.go index 18a9363..e641bcb 100644 --- a/test_helpers/builder.go +++ b/test_helpers/builder.go @@ -12,14 +12,15 @@ import ( "testing" "github.com/cerc-io/eth-iterator-utils/tracker" - statediff "github.com/cerc-io/plugeth-statediff" - "github.com/cerc-io/plugeth-statediff/adapt" - sdtypes "github.com/cerc-io/plugeth-statediff/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/stretchr/testify/require" + + "github.com/cerc-io/plugeth-statediff" + "github.com/cerc-io/plugeth-statediff/adapt" + sdtypes "github.com/cerc-io/plugeth-statediff/types" ) var subtrieCounts = []uint{1, 8, 32} diff --git a/test_helpers/indexing.go b/test_helpers/indexing.go index 5c34b58..d738a76 100644 --- a/test_helpers/indexing.go +++ b/test_helpers/indexing.go @@ -5,15 +5,16 @@ import ( "fmt" "math/big" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/params" + "github.com/cerc-io/plugeth-statediff" "github.com/cerc-io/plugeth-statediff/adapt" "github.com/cerc-io/plugeth-statediff/indexer" "github.com/cerc-io/plugeth-statediff/indexer/interfaces" "github.com/cerc-io/plugeth-statediff/indexer/node" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/state" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/params" ) type IndexChainParams struct {