indexer

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Oct 31, 2023 License: GPL-3.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrBodyTypeAssertion = errors.New("elasticsearch - body type assertion failed")

ErrBodyTypeAssertion signals that we could not create an elasticsearch index

View Source
var ErrCannotCreateIndex = errors.New("cannot create elasitc index")

ErrCannotCreateIndex signals that we could not create an elasticsearch index

View Source
var ErrEmptyPassword = errors.New("password is empty")

ErrEmptyPassword signals that password for elastic search is empty

View Source
var ErrEmptyUserName = errors.New("user name is empty")

ErrEmptyUserName signals that user name for elastic search is empty

View Source
var ErrNilPubkeyConverter = errors.New("nil pubkey converter")

ErrNilPubkeyConverter signals that an operation has been attempted to or with a nil public key converter implementation

View Source
var ErrNoHeader = errors.New("elasticsearch - no header")

ErrNoHeader signals that we could not create an elasticsearch index

View Source
var ErrNoMiniblocks = errors.New("elasticsearch - no miniblocks")

ErrNoMiniblocks signals that we could not create an elasticsearch index

Functions

This section is empty.

Types

type Block

type Block struct {
	Nonce                 uint64        `json:"nonce"`
	Round                 uint64        `json:"round"`
	Epoch                 uint32        `json:"epoch"`
	Hash                  string        `json:"-"`
	MiniBlocksHashes      []string      `json:"miniBlocksHashes"`
	NotarizedBlocksHashes []string      `json:"notarizedBlocksHashes"`
	Proposer              uint64        `json:"proposer"`
	Validators            []uint64      `json:"validators"`
	PubKeyBitmap          string        `json:"pubKeyBitmap"`
	Size                  int64         `json:"size"`
	SizeTxs               int64         `json:"sizeTxs"`
	Timestamp             time.Duration `json:"timestamp"`
	StateRootHash         string        `json:"stateRootHash"`
	PrevHash              string        `json:"prevHash"`
	ShardID               uint32        `json:"shardId"`
	TxCount               uint32        `json:"txCount"`
}

Block is a structure containing all the fields that need

to be saved for a block. It has all the default fields
plus some extra information for ease of search and filter

type ElasticIndexerArgs

type ElasticIndexerArgs struct {
	ShardId                  uint32
	Url                      string
	UserName                 string
	Password                 string
	Marshalizer              marshal.Marshalizer
	Hasher                   hashing.Hasher
	EpochStartNotifier       sharding.EpochStartEventNotifier
	NodesCoordinator         sharding.NodesCoordinator
	AddressPubkeyConverter   core.PubkeyConverter
	ValidatorPubkeyConverter core.PubkeyConverter
	Options                  *Options
}

ElasticIndexerArgs is struct that is used to store all components that are needed to create a indexer

type Event

type Event struct {
	Address    string   `json:"address"`
	Identifier string   `json:"identifier"`
	Topics     []string `json:"topics"`
	Data       string   `json:"data"`
}

Event holds all the data needed for an event structure

type Indexer

type Indexer interface {
	SetTxLogsProcessor(txLogsProc process.TransactionLogProcessorDatabase)
	SaveBlock(body data.BodyHandler, header data.HeaderHandler, txPool map[string]data.TransactionHandler, signersIndexes []uint64, notarizedHeadersHashes []string)
	SaveRoundsInfos(roundsInfos []RoundInfo)
	UpdateTPS(tpsBenchmark statistics.TPSBenchmark)
	SaveValidatorsPubKeys(validatorsPubKeys map[uint32][][]byte, epoch uint32)
	SaveValidatorsRating(indexID string, infoRating []ValidatorRatingInfo)
	IsInterfaceNil() bool
	IsNilIndexer() bool
}

Indexer is an interface for saving node specific data to other storage. This could be an elastic search index, a MySql database or any other external services.

func NewElasticIndexer

func NewElasticIndexer(arguments ElasticIndexerArgs) (Indexer, error)

NewElasticIndexer creates a new elasticIndexer where the server listens on the url, authentication for the server is using the username and password

type Miniblock

type Miniblock struct {
	Hash              string `json:"-"`
	SenderShardID     uint32 `json:"senderShard"`
	ReceiverShardID   uint32 `json:"receiverShard"`
	SenderBlockHash   string `json:"senderBlockHash"`
	ReceiverBlockHash string `json:"receiverBlockHash"`
	Type              string `json:"type"`
}

Miniblock is a structure containing miniblock information

type NilIndexer

type NilIndexer struct {
}

NilIndexer will be used when an Indexer is required, but another one isn't necessary or available

func NewNilIndexer

func NewNilIndexer() *NilIndexer

NewNilIndexer will return a Nil indexer

func (*NilIndexer) IsInterfaceNil

func (ni *NilIndexer) IsInterfaceNil() bool

IsInterfaceNil returns true if there is no value under the interface

func (*NilIndexer) IsNilIndexer

func (ni *NilIndexer) IsNilIndexer() bool

IsNilIndexer will return a bool value that signals if the indexer's implementation is a NilIndexer

func (*NilIndexer) SaveBlock

func (ni *NilIndexer) SaveBlock(_ data.BodyHandler, _ data.HeaderHandler, _ map[string]data.TransactionHandler, _ []uint64, _ []string)

SaveBlock will do nothing

func (*NilIndexer) SaveRoundsInfos

func (ni *NilIndexer) SaveRoundsInfos(_ []RoundInfo)

SaveRoundsInfos will do nothing

func (*NilIndexer) SaveValidatorsPubKeys

func (ni *NilIndexer) SaveValidatorsPubKeys(_ map[uint32][][]byte, _ uint32)

SaveValidatorsPubKeys will do nothing

func (*NilIndexer) SaveValidatorsRating

func (ni *NilIndexer) SaveValidatorsRating(_ string, _ []ValidatorRatingInfo)

SaveValidatorsRating --

func (*NilIndexer) SetTxLogsProcessor

func (ni *NilIndexer) SetTxLogsProcessor(_ process.TransactionLogProcessorDatabase)

SetTxLogsProcessor will do nothing

func (*NilIndexer) UpdateTPS

func (ni *NilIndexer) UpdateTPS(_ statistics.TPSBenchmark)

UpdateTPS will do nothing

type Options

type Options struct {
	TxIndexingEnabled bool
}

Options structure holds the indexer's configuration options

type RoundInfo

type RoundInfo struct {
	Index            uint64        `json:"round"`
	SignersIndexes   []uint64      `json:"signersIndexes"`
	BlockWasProposed bool          `json:"blockWasProposed"`
	ShardId          uint32        `json:"shardId"`
	Timestamp        time.Duration `json:"timestamp"`
}

RoundInfo is a structure containing block signers and shard id

type ScResult

type ScResult struct {
	Nonce         uint64 `json:"nonce"`
	GasLimit      uint64 `json:"gasLimit"`
	GasPrice      uint64 `json:"gasPrice"`
	Value         string `json:"value"`
	Sender        string `json:"sender"`
	Receiver      string `json:"receiver"`
	Code          string `json:"code"`
	Data          []byte `json:"data"`
	PreTxHash     string `json:"prevTxHash"`
	CallType      string `json:"callType"`
	CodeMetadata  []byte `json:"codeMetaData"`
	ReturnMessage string `json:"returnMessage"`
}

ScResult is a structure containing all the fields that need to be saved for a smart contract result

type TPS

type TPS struct {
	LiveTPS               float64  `json:"liveTPS"`
	PeakTPS               float64  `json:"peakTPS"`
	BlockNumber           uint64   `json:"blockNumber"`
	RoundNumber           uint64   `json:"roundNumber"`
	RoundTime             uint64   `json:"roundTime"`
	AverageBlockTxCount   *big.Int `json:"averageBlockTxCount"`
	TotalProcessedTxCount *big.Int `json:"totalProcessedTxCount"`
	AverageTPS            *big.Int `json:"averageTPS"`
	CurrentBlockNonce     uint64   `json:"currentBlockNonce"`
	NrOfShards            uint32   `json:"nrOfShards"`
	NrOfNodes             uint32   `json:"nrOfNodes"`
	LastBlockTxCount      uint32   `json:"lastBlockTxCount"`
	ShardID               uint32   `json:"shardID"`
}

TPS is a structure containing all the fields that need to

be saved for a shard statistic in the database

type Transaction

type Transaction struct {
	Hash                 string        `json:"-"`
	MBHash               string        `json:"miniBlockHash"`
	BlockHash            string        `json:"-"`
	Nonce                uint64        `json:"nonce"`
	Round                uint64        `json:"round"`
	Value                string        `json:"value"`
	Receiver             string        `json:"receiver"`
	Sender               string        `json:"sender"`
	ReceiverShard        uint32        `json:"receiverShard"`
	SenderShard          uint32        `json:"senderShard"`
	GasPrice             uint64        `json:"gasPrice"`
	GasLimit             uint64        `json:"gasLimit"`
	GasUsed              uint64        `json:"gasUsed"`
	Data                 []byte        `json:"data"`
	Signature            string        `json:"signature"`
	Timestamp            time.Duration `json:"timestamp"`
	Status               string        `json:"status"`
	SmartContractResults []ScResult    `json:"scResults"`
	Log                  TxLog         `json:"-"`
}

Transaction is a structure containing all the fields that need

to be saved for a transaction. It has all the default fields
plus some extra information for ease of search and filter

type TxLog

type TxLog struct {
	Address string  `json:"scAddress"`
	Events  []Event `json:"events"`
}

TxLog holds all the data needed for a log structure

type ValidatorRatingInfo

type ValidatorRatingInfo struct {
	PublicKey string  `json:"publicKey"`
	Rating    float32 `json:"rating"`
}

ValidatorRatingInfo is a structure containing validator rating information

type ValidatorsPublicKeys

type ValidatorsPublicKeys struct {
	PublicKeys []string `json:"publicKeys"`
}

ValidatorsPublicKeys is a structure containing fields for validators public keys

type ValidatorsRatingInfo

type ValidatorsRatingInfo struct {
	ValidatorsInfos []ValidatorRatingInfo `json:"validatorsRating"`
}

ValidatorsRatingInfo is a structure containing validators information

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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