Documentation ¶
Index ¶
- Variables
- func CloneSet(in map[string]struct{}) map[string]struct{}
- func GetValidatedBootstrapPeers(specPeers []string, configPeers []commontypes.BootstrapperLocator) ([]commontypes.BootstrapperLocator, error)
- func NewDataSourceV1(pr pipeline.Runner, jb job.Job, spec pipeline.Spec, lggr logger.Logger, ...) ocr1types.DataSource
- func NewDataSourceV2(pr pipeline.Runner, jb job.Job, spec pipeline.Spec, lggr logger.Logger, ...) median.DataSource
- func NewInMemoryDataSource(pr pipeline.Runner, jb job.Job, spec pipeline.Spec, lggr logger.Logger) median.DataSource
- func ParseBootstrapPeers(peers []string) (bootstrapPeers []commontypes.BootstrapperLocator, err error)
- func ValidateExplicitlySetKeys(tree *toml.Tree, expected map[string]struct{}, notExpected map[string]struct{}, ...) error
- func ValidatePeerWrapperConfig(config PeerWrapperConfig) error
- type ArbitrumBlockTranslator
- type BlockTranslator
- type Config
- type DiscovererDatabase
- type ObservationTimestamp
- type P2PPeer
- type PeerWrapperConfig
- type Pstorewrapper
- type RunResultSaver
- type SingletonPeerWrapper
- func (p *SingletonPeerWrapper) Close() error
- func (p *SingletonPeerWrapper) Config() PeerWrapperConfig
- func (p *SingletonPeerWrapper) HealthReport() map[string]error
- func (p *SingletonPeerWrapper) IsStarted() bool
- func (p *SingletonPeerWrapper) Name() string
- func (p *SingletonPeerWrapper) Start(context.Context) error
- type Transmitter
Constants ¶
This section is empty.
Variables ¶
var ( PromBridgeJsonParseValues = promauto.NewGaugeVec(prometheus.GaugeOpts{ Name: "bridge_json_parse_values", Help: "Values returned by json_parse for bridge task", }, []string{"job_id", "job_name", "bridge_name", "task_id"}) PromOcrMedianValues = promauto.NewGaugeVec(prometheus.GaugeOpts{ Name: "ocr_median_values", Help: "Median value returned by ocr job", }, []string{"job_id", "job_name"}) )
Functions ¶
func GetValidatedBootstrapPeers ¶
func GetValidatedBootstrapPeers(specPeers []string, configPeers []commontypes.BootstrapperLocator) ([]commontypes.BootstrapperLocator, error)
GetValidatedBootstrapPeers will error unless at least one valid bootstrap peer is found
func NewDataSourceV1 ¶
func NewDataSourceV1(pr pipeline.Runner, jb job.Job, spec pipeline.Spec, lggr logger.Logger, runResults chan<- pipeline.Run, endpoint commontypes.MonitoringEndpoint) ocr1types.DataSource
func NewDataSourceV2 ¶
func NewDataSourceV2(pr pipeline.Runner, jb job.Job, spec pipeline.Spec, lggr logger.Logger, runResults chan<- pipeline.Run, endpoint commontypes.MonitoringEndpoint) median.DataSource
func NewInMemoryDataSource ¶
func ParseBootstrapPeers ¶
func ParseBootstrapPeers(peers []string) (bootstrapPeers []commontypes.BootstrapperLocator, err error)
func ValidateExplicitlySetKeys ¶
func ValidateExplicitlySetKeys(tree *toml.Tree, expected map[string]struct{}, notExpected map[string]struct{}, peerType string) error
ValidateExplicitlySetKeys checks if the values in expected are present and the values in notExpected are not present in the toml tree. Works on top level keys only.
func ValidatePeerWrapperConfig ¶
func ValidatePeerWrapperConfig(config PeerWrapperConfig) error
Types ¶
type ArbitrumBlockTranslator ¶
type ArbitrumBlockTranslator struct {
// contains filtered or unexported fields
}
ArbitrumBlockTranslator uses Arbitrum's special L1BlockNumber to optimise log lookups Performance matters here hence aggressive use of the cache We want to minimise fetches because calling eth_getBlockByNumber is relatively expensive
func NewArbitrumBlockTranslator ¶
func NewArbitrumBlockTranslator(ethClient evmclient.Client, lggr logger.Logger) *ArbitrumBlockTranslator
NewArbitrumBlockTranslator returns a concrete ArbitrumBlockTranslator
func (*ArbitrumBlockTranslator) BinarySearch ¶
func (a *ArbitrumBlockTranslator) BinarySearch(ctx context.Context, targetL1 int64) (l2lowerBound *big.Int, l2upperBound *big.Int, err error)
BinarySearch uses both cache and RPC calls to find the smallest possible range of L2 block numbers that encompasses the given L1 block number
Imagine as a virtual array of L1 block numbers indexed by L2 block numbers L1 values are likely duplicated so it looks something like [42, 42, 42, 42, 42, 155, 155, 155, 430, 430, 430, 430, 430, ...] Theoretical max difference between L1 values is typically about 5, "worst case" is 6545 but can be arbitrarily high if sequencer is broken The returned range of L2s from leftmost thru rightmost represent all possible L2s that correspond to the L1 value we are looking for nil can be returned as a rightmost value if the range has no upper bound
func (*ArbitrumBlockTranslator) NumberToQueryRange ¶
func (a *ArbitrumBlockTranslator) NumberToQueryRange(ctx context.Context, changedInL1Block uint64) (fromBlock *big.Int, toBlock *big.Int)
NumberToQueryRange implements BlockTranslator interface
type BlockTranslator ¶
type BlockTranslator interface {
NumberToQueryRange(ctx context.Context, changedInL1Block uint64) (fromBlock *big.Int, toBlock *big.Int)
}
BlockTranslator converts emitted block numbers (from block.number) into a block number range suitable for query in FilterLogs
func NewBlockTranslator ¶
NewBlockTranslator returns the block translator for the given chain
type Config ¶
type Config interface { pg.QConfig EvmGasLimitDefault() uint32 JobPipelineResultWriteQueueDepth() uint64 OCRBlockchainTimeout() time.Duration OCRContractConfirmations() uint16 OCRContractPollInterval() time.Duration OCRContractSubscribeInterval() time.Duration OCRContractTransmitterTransmitTimeout() time.Duration OCRDatabaseTimeout() time.Duration OCRDefaultTransactionQueueDepth() uint32 OCRKeyBundleID() (string, error) OCRObservationGracePeriod() time.Duration OCRObservationTimeout() time.Duration OCRTraceLogging() bool OCRTransmitterAddress() (ethkey.EIP55Address, error) P2PBootstrapPeers() ([]string, error) P2PPeerID() p2pkey.PeerID P2PV2Bootstrappers() []commontypes.BootstrapperLocator FlagsContractAddress() string ChainType() config.ChainType }
type DiscovererDatabase ¶
type DiscovererDatabase struct {
// contains filtered or unexported fields
}
func NewDiscovererDatabase ¶
func NewDiscovererDatabase(db *sql.DB, peerID p2ppeer.ID) *DiscovererDatabase
func (*DiscovererDatabase) ReadAnnouncements ¶
func (d *DiscovererDatabase) ReadAnnouncements(ctx context.Context, peerIDs []string) (map[string][]byte, error)
ReadAnnouncements returns one serialized announcement (if available) for each of the peerIDs in the form of a map keyed by each announcement's corresponding peer ID.
func (*DiscovererDatabase) StoreAnnouncement ¶
func (d *DiscovererDatabase) StoreAnnouncement(ctx context.Context, peerID string, ann []byte) error
StoreAnnouncement has key-value-store semantics and stores a peerID (key) and an associated serialized announcement (value).
type ObservationTimestamp ¶ added in v2.1.0
ObservationTimestamp abstracts ocr2types.ReportTimestamp and ocr1types.ReportTimestamp
type PeerWrapperConfig ¶
type PeerWrapperConfig interface { config.P2PNetworking config.P2PV1Networking config.P2PV2Networking pg.QConfig OCRTraceLogging() bool FeatureOffchainReporting() bool }
type Pstorewrapper ¶
type Pstorewrapper struct { utils.StartStopOnce Peerstore p2ppeerstore.Peerstore // contains filtered or unexported fields }
func NewPeerstoreWrapper ¶
func NewPeerstoreWrapper(db *sqlx.DB, writeInterval time.Duration, peerID p2pkey.PeerID, lggr logger.Logger, cfg pg.QConfig) (*Pstorewrapper, error)
NewPeerstoreWrapper creates a new database-backed peerstore wrapper scoped to the given jobID Multiple peerstore wrappers should not be instantiated with the same jobID
func (*Pstorewrapper) Close ¶
func (p *Pstorewrapper) Close() error
func (*Pstorewrapper) Start ¶
func (p *Pstorewrapper) Start() error
func (*Pstorewrapper) WriteToDB ¶
func (p *Pstorewrapper) WriteToDB() error
type RunResultSaver ¶
type RunResultSaver struct { utils.StartStopOnce // contains filtered or unexported fields }
func NewResultRunSaver ¶
func (*RunResultSaver) Close ¶
func (r *RunResultSaver) Close() error
type SingletonPeerWrapper ¶
type SingletonPeerWrapper struct { utils.StartStopOnce PeerID p2pkey.PeerID // OCR1 peer adapter Peer1 *peerAdapterOCR1 // OCR2 peer adapter Peer2 *peerAdapterOCR2 // contains filtered or unexported fields }
SingletonPeerWrapper manages all libocr peers for the application
func NewSingletonPeerWrapper ¶
func NewSingletonPeerWrapper(keyStore keystore.Master, config PeerWrapperConfig, db *sqlx.DB, lggr logger.Logger) *SingletonPeerWrapper
NewSingletonPeerWrapper creates a new peer based on the p2p keys in the keystore It currently only supports one peerID/key It should be fairly easy to modify it to support multiple peerIDs/keys using e.g. a map
func (*SingletonPeerWrapper) Close ¶
func (p *SingletonPeerWrapper) Close() error
Close closes the peer and peerstore
func (*SingletonPeerWrapper) Config ¶
func (p *SingletonPeerWrapper) Config() PeerWrapperConfig
func (*SingletonPeerWrapper) HealthReport ¶
func (p *SingletonPeerWrapper) HealthReport() map[string]error
func (*SingletonPeerWrapper) IsStarted ¶
func (p *SingletonPeerWrapper) IsStarted() bool
func (*SingletonPeerWrapper) Name ¶
func (p *SingletonPeerWrapper) Name() string
type Transmitter ¶
type Transmitter interface { CreateEthTransaction(ctx context.Context, toAddress common.Address, payload []byte, txMeta *txmgr.EthTxMeta) error FromAddress() common.Address }
func NewPipelineTransmitter ¶
func NewPipelineTransmitter( lgr logger.Logger, fromAddress common.Address, gasLimit uint32, effectiveTransmitterAddress common.Address, strategy types.TxStrategy, checker txmgr.EvmTransmitCheckerSpec, pr pipeline.Runner, spec job.Job, chainID string, ) Transmitter
NewPipelineTransmitter creates a new eth transmitter using the job pipeline mechanism
func NewTransmitter ¶
func NewTransmitter( txm txManager, fromAddresses []common.Address, gasLimit uint32, effectiveTransmitterAddress common.Address, strategy types.TxStrategy, checker txmgr.EvmTransmitCheckerSpec, chainID *big.Int, keystore roundRobinKeystore, ) (Transmitter, error)
NewTransmitter creates a new eth transmitter