indexer

package
v0.22.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 12, 2023 License: LGPL-3.0 Imports: 14 Imported by: 10

Documentation

Overview

Copyright 2021 Evmos Foundation This file is part of Evmos' Ethermint library.

The Ethermint library is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

The Ethermint library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE

Index

Constants

View Source
const (
	KeyPrefixTxHash  = 1
	KeyPrefixTxIndex = 2

	// TxIndexKeyLength is the length of tx-index key
	TxIndexKeyLength = 1 + 8 + 8
)

Variables

This section is empty.

Functions

func LoadFirstBlock

func LoadFirstBlock(db dbm.DB) (int64, error)

LoadFirstBlock loads the first indexed block, returns -1 if db is empty

func LoadLastBlock

func LoadLastBlock(db dbm.DB) (int64, error)

LoadLastBlock returns the latest indexed block number, returns -1 if db is empty

func TxHashKey

func TxHashKey(hash common.Hash) []byte

TxHashKey returns the key for db entry: `tx hash -> tx result struct`

func TxIndexKey

func TxIndexKey(blockNumber int64, txIndex int32) []byte

TxIndexKey returns the key for db entry: `(block number, tx index) -> tx hash`

Types

type KVIndexer

type KVIndexer struct {
	// contains filtered or unexported fields
}

KVIndexer implements a eth tx indexer on a KV db.

func NewKVIndexer

func NewKVIndexer(db dbm.DB, logger log.Logger, clientCtx client.Context) *KVIndexer

NewKVIndexer creates the KVIndexer

func (*KVIndexer) FirstIndexedBlock

func (kv *KVIndexer) FirstIndexedBlock() (int64, error)

FirstIndexedBlock returns the first indexed block number, returns -1 if db is empty

func (*KVIndexer) GetByBlockAndIndex

func (kv *KVIndexer) GetByBlockAndIndex(blockNumber int64, txIndex int32) (*ethermint.TxResult, error)

GetByBlockAndIndex finds eth tx by block number and eth tx index

func (*KVIndexer) GetByTxHash

func (kv *KVIndexer) GetByTxHash(hash common.Hash) (*ethermint.TxResult, error)

GetByTxHash finds eth tx by eth tx hash

func (*KVIndexer) IndexBlock

func (kv *KVIndexer) IndexBlock(block *tmtypes.Block, txResults []*abci.ResponseDeliverTx) error

IndexBlock index all the eth txs in a block through the following steps: - Iterates over all of the Txs in Block - Parses eth Tx infos from cosmos-sdk events for every TxResult - Iterates over all the messages of the Tx - Builds and stores a indexer.TxResult based on parsed events for every message

func (*KVIndexer) LastIndexedBlock

func (kv *KVIndexer) LastIndexedBlock() (int64, error)

LastIndexedBlock returns the latest indexed block number, returns -1 if db is empty

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL