base

package
v0.0.0-...-290478e Latest Latest
Warning

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

Go to latest
Published: Feb 4, 2025 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// EnvVarLatestBlock is the environment variable that forces the observer to scan from the latest block
	EnvVarLatestBlock = "latest"

	// DefaultBlockCacheSize is the default number of blocks that the observer will keep in cache for performance (without RPC calls)
	// Cached blocks can be used to get block information and verify transactions
	DefaultBlockCacheSize = 1000
)

Variables

This section is empty.

Functions

func EnvVarLatestBlockByChain

func EnvVarLatestBlockByChain(chain chains.Chain) string

EnvVarLatestBlockByChain returns the environment variable for the last block by chain.

func EnvVarLatestTxByChain

func EnvVarLatestTxByChain(chain chains.Chain) string

EnvVarLatestTxByChain returns the environment variable for the last tx by chain.

func OutboundID

func OutboundID(index string, receiverChainID int64, nonce uint64) string

OutboundID returns the outbound ID.

func OutboundIDFromCCTX

func OutboundIDFromCCTX(cctx *types.CrossChainTx) string

OutboundIDFromCCTX returns the outbound ID from the cctx.

Types

type Logger

type Logger struct {
	Std        zerolog.Logger
	Compliance zerolog.Logger
}

Logger contains the base loggers

func DefaultLogger

func DefaultLogger() Logger

DefaultLogger creates default base loggers for tests

func NewLogger

func NewLogger(cfg config.Config) (Logger, error)

NewLogger initializes the base loggers

type Observer

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

Observer is the base structure for chain observers, grouping the common logic for each chain observer client. The common logic includes: chain, chainParams, contexts, zetacore client, tss, lastBlock, db, metrics, loggers etc.

func NewObserver

func NewObserver(
	chain chains.Chain,
	chainParams observertypes.ChainParams,
	zetacoreClient interfaces.ZetacoreClient,
	tss interfaces.TSSSigner,
	blockCacheSize int,
	ts *metrics.TelemetryServer,
	database *db.DB,
	logger Logger,
) (*Observer, error)

NewObserver creates a new base observer.

func (*Observer) BlockCache

func (ob *Observer) BlockCache() *lru.Cache

BlockCache returns the block cache for the observer.

func (*Observer) Chain

func (ob *Observer) Chain() chains.Chain

Chain returns the chain for the observer.

func (*Observer) ChainParams

func (ob *Observer) ChainParams() observertypes.ChainParams

ChainParams returns the chain params for the observer.

func (*Observer) DB

func (ob *Observer) DB() *db.DB

DB returns the database for the observer.

func (*Observer) IsBlockConfirmed

func (ob *Observer) IsBlockConfirmed(blockNumber uint64) bool

IsBlockConfirmed checks if the given block number is confirmed.

Note: block 100 is confirmed if the last block is 100 and confirmation count is 1.

func (*Observer) LastBlock

func (ob *Observer) LastBlock() uint64

LastBlock get external last block height.

func (*Observer) LastBlockScanned

func (ob *Observer) LastBlockScanned() uint64

LastBlockScanned get last block scanned (not necessarily caught up with the chain; could be slow/paused).

func (*Observer) LastTxScanned

func (ob *Observer) LastTxScanned() string

LastTxScanned get last transaction scanned.

func (*Observer) LoadLastBlockScanned

func (ob *Observer) LoadLastBlockScanned(logger zerolog.Logger) error

LoadLastBlockScanned loads last scanned block from environment variable or from database. The last scanned block is the height from which the observer should continue scanning.

func (*Observer) LoadLastTxScanned

func (ob *Observer) LoadLastTxScanned()

LoadLastTxScanned loads last scanned tx from environment variable or from database. The last scanned tx is the tx hash from which the observer should continue scanning.

func (*Observer) Logger

func (ob *Observer) Logger() *ObserverLogger

Logger returns the logger for the observer.

func (*Observer) Mu

func (ob *Observer) Mu() *sync.Mutex

Mu returns the mutex for the observer.

func (*Observer) OutboundID

func (ob *Observer) OutboundID(nonce uint64) string

OutboundID returns a unique identifier for the outbound transaction. The identifier is now used as the key for maps that store outbound related data (e.g. transaction, receipt, etc).

func (*Observer) PostVoteInbound

func (ob *Observer) PostVoteInbound(
	ctx context.Context,
	msg *crosschaintypes.MsgVoteInbound,
	retryGasLimit uint64,
) (string, error)

PostVoteInbound posts a vote for the given vote message and returns the ballot.

func (*Observer) ReadLastBlockScannedFromDB

func (ob *Observer) ReadLastBlockScannedFromDB() (uint64, error)

ReadLastBlockScannedFromDB reads the last scanned block from the database.

func (*Observer) ReadLastTxScannedFromDB

func (ob *Observer) ReadLastTxScannedFromDB() (string, error)

ReadLastTxScannedFromDB reads the last scanned tx hash from the database.

func (*Observer) ReportBlockLatency

func (ob *Observer) ReportBlockLatency(latestBlockTime time.Time)

ReportBlockLatency records the latency between the current time an the latest block time for a chain as a metric

func (*Observer) SaveLastBlockScanned

func (ob *Observer) SaveLastBlockScanned(blockNumber uint64) error

SaveLastBlockScanned saves the last scanned block to memory and database.

func (*Observer) SaveLastTxScanned

func (ob *Observer) SaveLastTxScanned(txHash string, slot uint64) error

SaveLastTxScanned saves the last scanned tx hash to memory and database.

func (*Observer) SetChainParams

func (ob *Observer) SetChainParams(params observertypes.ChainParams)

SetChainParams attaches a new chain params to the observer.

func (*Observer) Start

func (ob *Observer) Start() bool

Start starts the observer. Returns false if it's already started (noop).

func (*Observer) Stop

func (ob *Observer) Stop()

Stop notifies all goroutines to stop and closes the database.

func (*Observer) StopChannel

func (ob *Observer) StopChannel() chan struct{}

StopChannel returns the stop channel for the observer.

func (*Observer) TSS

func (ob *Observer) TSS() interfaces.TSSSigner

TSS returns the tss signer for the observer.

func (*Observer) TSSAddressString

func (ob *Observer) TSSAddressString() string

TSSAddressString returns the TSS address for the chain.

Note: all chains uses TSS EVM address except Bitcoin chain.

func (*Observer) TelemetryServer

func (ob *Observer) TelemetryServer() *metrics.TelemetryServer

TelemetryServer returns the telemetry server for the observer.

func (*Observer) WithLastBlock

func (ob *Observer) WithLastBlock(lastBlock uint64) *Observer

WithLastBlock set external last block height.

func (*Observer) WithLastBlockScanned

func (ob *Observer) WithLastBlockScanned(blockNumber uint64) *Observer

WithLastBlockScanned set last block scanned (not necessarily caught up with the chain; could be slow/paused).

func (*Observer) WithLastTxScanned

func (ob *Observer) WithLastTxScanned(txHash string) *Observer

WithLastTxScanned set last transaction scanned.

func (*Observer) WriteLastBlockScannedToDB

func (ob *Observer) WriteLastBlockScannedToDB(lastScannedBlock uint64) error

WriteLastBlockScannedToDB saves the last scanned block to the database.

func (*Observer) WriteLastTxScannedToDB

func (ob *Observer) WriteLastTxScannedToDB(txHash string) error

WriteLastTxScannedToDB saves the last scanned tx hash to the database.

func (*Observer) ZetacoreClient

func (ob *Observer) ZetacoreClient() interfaces.ZetacoreClient

ZetacoreClient returns the zetacore client for the observer.

type ObserverLogger

type ObserverLogger struct {
	// the parent logger for the chain observer
	Chain zerolog.Logger

	// the logger for inbound transactions
	Inbound zerolog.Logger

	// the logger for outbound transactions
	Outbound zerolog.Logger

	// the logger for the chain's gas price
	GasPrice zerolog.Logger

	// the logger for block headers
	Headers zerolog.Logger

	// the logger for the compliance check
	Compliance zerolog.Logger
}

ObserverLogger contains the loggers for chain observers

type Signer

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

Signer is the base structure for grouping the common logic between chain signers. The common logic includes: chain, chainParams, contexts, tss, metrics, loggers etc.

func NewSigner

func NewSigner(chain chains.Chain, tss interfaces.TSSSigner, logger Logger) *Signer

NewSigner creates a new base signer.

func (*Signer) Chain

func (s *Signer) Chain() chains.Chain

Chain returns the chain for the signer.

func (*Signer) ClearBeingReportedFlag

func (s *Signer) ClearBeingReportedFlag(hash string)

ClearBeingReportedFlag clears the being reported flag for the outbound.

func (*Signer) GetReportedTxList

func (s *Signer) GetReportedTxList() *map[string]bool

GetReportedTxList returns a list of outboundHash being reported. TODO: investigate pointer usage https://github.com/zeta-chain/node/issues/2084

func (*Signer) IsOutboundActive

func (s *Signer) IsOutboundActive(outboundID string) bool

func (*Signer) Lock

func (s *Signer) Lock()

Lock locks the signer.

func (*Signer) Logger

func (s *Signer) Logger() *Logger

Logger returns the logger for the signer.

func (*Signer) MarkOutbound

func (s *Signer) MarkOutbound(outboundID string, active bool)

MarkOutboundActive marks the outbound as active.

func (*Signer) SetBeingReportedFlag

func (s *Signer) SetBeingReportedFlag(hash string) (alreadySet bool)

SetBeingReportedFlag sets the outbound as being reported if not already set. Returns true if the outbound is already being reported. This method is used by outbound tracker reporter to avoid repeated reporting of same hash.

func (*Signer) TSS

func (s *Signer) TSS() interfaces.TSSSigner

TSS returns the tss signer for the signer.

func (*Signer) Unlock

func (s *Signer) Unlock()

Unlock unlocks the signer.

Jump to

Keyboard shortcuts

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