base

package
v1.4.0 Latest Latest
Warning

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

Go to latest
Published: Jun 2, 2025 License: MIT Imports: 20 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

	// DefaultHeaderCacheSize is the default number of headers that the observer will keep in cache for performance (without RPC calls)
	// Cached headers can be used to get header information
	DefaultHeaderCacheSize = 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.

Types

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, pellcore client, tss, lastBlock, db, metrics, loggers etc.

func NewObserver

func NewObserver(
	coreContext *corecontext.PellCoreContext,
	chain chains.Chain,
	chainParams relayertypes.ChainParams,
	pellcoreClient interfaces.PellCoreBridger,
	tss interfaces.TSSSigner,
	blockCacheSize int,
	headerCacheSize int,
	rpcAlertLatency int64,
	ts *metrics.TelemetryServer,
	database *db.DB,
	logger logs.Logger,
) (*Observer, error)

NewObserver creates a new base observer.

func (*Observer) AlertOnRPCLatency

func (ob *Observer) AlertOnRPCLatency(latestBlockTime time.Time, defaultAlertLatency time.Duration) bool

AlertOnRPCLatency prints an alert if the RPC latency exceeds the threshold. Returns true if the RPC latency is too high.

func (*Observer) AppContext

func (ob *Observer) AppContext() *corecontext.PellCoreContext

AppContext returns the app context.

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() relayertypes.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) HeaderCache

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

HeaderCache returns the header cache for the observer.

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) LastInboundBlock

func (ob *Observer) LastInboundBlock() uint64

LastInboundBlock get external last block height.

func (*Observer) LoadBlockScanInfo

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

LoadBlockScanInfo 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) 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) PellcoreClient

func (ob *Observer) PellcoreClient() interfaces.PellCoreBridger

PellcoreClient returns the pellcore client for the observer.

func (*Observer) PostVoteInbound

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

PostVoteInbound posts a vote for the given vote message

func (*Observer) PostVoteInboundBlock

func (ob *Observer) PostVoteInboundBlock(
	ctx context.Context,
	gasLimit, retryGasLimit uint64,
	blockProof *xmsgtypes.MsgVoteInboundBlock,
	events []*xmsgtypes.MsgVoteOnObservedInboundTx,
) ([]string, []string, error)

PostVoteInboundBlock posts a vote for the given inbound block and events aggregates information from a block, including the block proof and event messages, into a single transaction for submission to the blockchain.

func (*Observer) ReadBlockScanInfoFromDB

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

ReadBlockScanInfoFromDB reads the last scanned block from the database.

func (*Observer) SaveScanInfo

func (ob *Observer) SaveScanInfo(blockNumber, lastInboundBlock uint64) error

SaveScanInfo saves the last scanned block to memory and database.

func (*Observer) Start

func (ob *Observer) Start() bool

Start starts the observer. Returns true if the observer was 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) TelemetryServer

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

TelemetryServer returns the telemetry server for the observer.

func (*Observer) WithBlockCache

func (ob *Observer) WithBlockCache(cache *lru.Cache) *Observer

WithBlockCache attaches a new block cache to the observer.

func (*Observer) WithChain

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

WithChain attaches a new chain to the observer.

func (*Observer) WithChainParams

func (ob *Observer) WithChainParams(params relayertypes.ChainParams) *Observer

WithChainParams attaches a new chain params to the observer.

func (*Observer) WithHeaderCache

func (ob *Observer) WithHeaderCache(cache *lru.Cache) *Observer

WithHeaderCache attaches a new header cache to the observer.

func (*Observer) WithInboundBlock

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

WithLastBlock set external last block height.

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) WithLogger

func (ob *Observer) WithLogger(logger logs.Logger) *Observer

WithLogger attaches a new logger to the observer.

func (*Observer) WithPellcoreClient

func (ob *Observer) WithPellcoreClient(client interfaces.PellCoreBridger) *Observer

WithPellcoreClient attaches a new pellcore client to the observer.

func (*Observer) WithTSS

func (ob *Observer) WithTSS(tss interfaces.TSSSigner) *Observer

WithTSS attaches a new tss signer to the observer.

func (*Observer) WithTelemetryServer

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

WithTelemetryServer attaches a new telemetry server to 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,
	tssSigner interfaces.TSSSigner,
	coreContext *corecontext.PellCoreContext,
	ts *metrics.TelemetryServer,
	logger clientlogs.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) CoreContext

func (s *Signer) CoreContext() *corecontext.PellCoreContext

CoreContext returns the coreclient

func (*Signer) GetBeingReportedFlag

func (s *Signer) GetBeingReportedFlag(hash string) bool

func (*Signer) GetReportedTxList

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

GetReportedTxList returns a list of outboundHash being reported. TODO: investigate pointer usage

func (*Signer) Lock

func (s *Signer) Lock()

Lock locks the signer.

func (*Signer) Logger

func (s *Signer) Logger() *clientlogs.Logger

Logger returns the logger for the signer.

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) TelemetryServer

func (s *Signer) TelemetryServer() *metrics.TelemetryServer

TelemetryServer returns the telemetry server for the signer.

func (*Signer) Unlock

func (s *Signer) Unlock()

Unlock unlocks the signer.

func (*Signer) WithChain

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

WithChain attaches a new chain to the signer.

func (*Signer) WithTSS

func (s *Signer) WithTSS(tssSigner interfaces.TSSSigner) *Signer

WithTSS attaches a new tss signer to the signer.

func (*Signer) WithTelemetryServer

func (s *Signer) WithTelemetryServer(ts *metrics.TelemetryServer) *Signer

WithTelemetryServer attaches a new telemetry server to the signer.

Jump to

Keyboard shortcuts

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