storage

package
v0.29.0 Latest Latest
Warning

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

Go to latest
Published: Aug 14, 2024 License: Apache-2.0 Imports: 13 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AccountIndexer

type AccountIndexer interface {
	// Update account with executed transactions.
	// Batch is required to batch multiple indexer operations, skipped if nil.
	Update(tx models.Transaction, receipt *models.StorageReceipt, batch *pebble.Batch) error

	// GetNonce gets an account nonce. If no nonce was indexed it returns 0.
	// todo add getting nonce at provided block height / hash
	GetNonce(address common.Address) (uint64, error)

	// GetBalance gets an account balance. If no balance was indexed it returns 0.
	GetBalance(address common.Address) (*big.Int, error)
}

type AccountTestSuite

type AccountTestSuite struct {
	suite.Suite
	AccountIndexer AccountIndexer
}

func (*AccountTestSuite) TestNonce

func (a *AccountTestSuite) TestNonce()

type BlockIndexer

type BlockIndexer interface {
	// Store provided EVM block with the matching Cadence height and Cadence Block ID.
	// Batch is required to batch multiple indexer operations, skipped if nil.
	// Expected errors:
	// - errors.Duplicate if the block already exists
	Store(cadenceHeight uint64, cadenceID flow.Identifier, block *models.Block, batch *pebble.Batch) error

	// GetByHeight returns an EVM block stored by EVM height.
	// Expected errors:
	// - errors.NotFound if the block is not found
	GetByHeight(height uint64) (*models.Block, error)

	// GetByID returns an EVM block stored by ID.
	// Expected errors:
	// - errors.NotFound if the block is not found
	GetByID(ID common.Hash) (*models.Block, error)

	// GetHeightByID returns the EVM block height for the given ID.
	// Expected errors:
	// - errors.NotFound if the block is not found
	GetHeightByID(ID common.Hash) (uint64, error)

	// LatestEVMHeight returns the latest stored EVM block height.
	// Expected errors:
	// - errors.NotInitialized if the storage was not initialized
	LatestEVMHeight() (uint64, error)

	// LatestCadenceHeight return the latest stored Cadence height.
	// Expected errors:
	// - errors.NotInitialized if the storage was not initialized
	LatestCadenceHeight() (uint64, error)

	// SetLatestCadenceHeight sets the latest Cadence height.
	// Batch is required to batch multiple indexer operations, skipped if nil.
	SetLatestCadenceHeight(height uint64, batch *pebble.Batch) error

	// GetCadenceHeight returns the Cadence height that matches the
	// provided EVM height. Each EVM block indexed contains a link
	// to the Cadence height.
	// - errors.NotFound if the height is not found
	GetCadenceHeight(evmHeight uint64) (uint64, error)

	// GetCadenceID returns the Cadence block ID that matches the
	// provided EVM height. Each EVM block indexed contains a link to the
	// Cadence block ID. Multiple EVM heights can point to the same
	// Cadence block ID.
	// - errors.NotFound if the height is not found
	GetCadenceID(evmHeight uint64) (flow.Identifier, error)
}

type BlockTestSuite

type BlockTestSuite struct {
	suite.Suite
	Blocks BlockIndexer
}

func (*BlockTestSuite) TestGet

func (b *BlockTestSuite) TestGet()

func (*BlockTestSuite) TestHeights

func (b *BlockTestSuite) TestHeights()

func (*BlockTestSuite) TestStore

func (b *BlockTestSuite) TestStore()

type ReceiptIndexer

type ReceiptIndexer interface {
	// Store provided receipt.
	// Batch is required to batch multiple indexer operations, skipped if nil.
	// Expected errors:
	// - errors.Duplicate if the block already exists.
	Store(receipts []*models.StorageReceipt, evmHeight uint64, batch *pebble.Batch) error

	// GetByTransactionID returns the receipt for the transaction ID.
	// Expected errors:
	// - errors.NotFound if the receipt is not found
	GetByTransactionID(ID common.Hash) (*models.StorageReceipt, error)

	// GetByBlockHeight returns the receipt for the block height.
	// Expected errors:
	// - errors.NotFound if the receipt is not found
	GetByBlockHeight(height *big.Int) ([]*models.StorageReceipt, error)

	// BloomsForBlockRange returns slice of bloom values and a slice of block heights
	// corresponding to each item in the bloom slice. It only matches the blooms between
	// inclusive start and end block height.
	// Expected errors:
	// - errors.InvalidRange if the block by the height was not indexed or if the end and start values are invalid.
	BloomsForBlockRange(start, end *big.Int) ([]*models.BloomsHeight, error)
}

type ReceiptTestSuite

type ReceiptTestSuite struct {
	suite.Suite
	ReceiptIndexer ReceiptIndexer
}

func (*ReceiptTestSuite) TestBloomsForBlockRange

func (s *ReceiptTestSuite) TestBloomsForBlockRange()

func (*ReceiptTestSuite) TestGetReceiptByBlockHeight added in v0.7.0

func (s *ReceiptTestSuite) TestGetReceiptByBlockHeight()

func (*ReceiptTestSuite) TestGetReceiptByTransactionID

func (s *ReceiptTestSuite) TestGetReceiptByTransactionID()

func (*ReceiptTestSuite) TestStoreReceipt

func (s *ReceiptTestSuite) TestStoreReceipt()

type TraceIndexer added in v0.16.0

type TraceIndexer interface {
	// StoreTransaction will index transaction trace by the transaction ID.
	// Batch is required to batch multiple indexer operations, skipped if nil.
	StoreTransaction(ID common.Hash, trace json.RawMessage, batch *pebble.Batch) error

	// GetTransaction will retrieve transaction trace by the transaction ID.
	GetTransaction(ID common.Hash) (json.RawMessage, error)
}

type TraceTestSuite added in v0.16.0

type TraceTestSuite struct {
	suite.Suite
	TraceIndexer TraceIndexer
}

func (*TraceTestSuite) TestGet added in v0.16.0

func (s *TraceTestSuite) TestGet()

func (*TraceTestSuite) TestStore added in v0.16.0

func (s *TraceTestSuite) TestStore()

type TransactionIndexer

type TransactionIndexer interface {
	// Store provided transaction.
	// Batch is required to batch multiple indexer operations, skipped if nil.
	// Expected errors:
	// - errors.Duplicate if the transaction with the ID already exists.
	Store(tx models.Transaction, batch *pebble.Batch) error

	// Get transaction by the ID.
	// Expected errors:
	// - errors.NotFound if the transaction with the ID is not found.
	Get(ID common.Hash) (models.Transaction, error)
}

type TransactionTestSuite

type TransactionTestSuite struct {
	suite.Suite
	TransactionIndexer TransactionIndexer
}

func (*TransactionTestSuite) TestGetTransaction

func (s *TransactionTestSuite) TestGetTransaction()

func (*TransactionTestSuite) TestStoreTransaction

func (s *TransactionTestSuite) TestStoreTransaction()

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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