Documentation
¶
Index ¶
- type Address
- type Addresses
- type CommitOffchainConfig
- type CommitStoreInterval
- type CommitStoreReader
- type CommitStoreReport
- type CommitStoreReportWithTxMeta
- type CommitStoreStaticConfig
- type CommonGasPriceEstimator
- type EVM2EVMMessage
- type EVM2EVMMessageWithTxMeta
- type EVM2EVMOnRampCCIPSendRequestedWithMeta
- type ExecOffchainConfig
- type ExecOnchainConfig
- type ExecReport
- type ExecutionStateChanged
- type ExecutionStateChangedWithTxMeta
- type FinalizedStatus
- type GasPrice
- type GasPriceEstimator
- type GasPriceEstimatorCommit
- type GasPriceEstimatorExec
- type GasPriceUpdate
- type GasPriceUpdateWithTxMeta
- type Hash
- type MessageExecutionState
- type OffRampReader
- type OffRampStaticConfig
- type OffRampTokens
- type OnRampDynamicConfig
- type OnRampReader
- type PriceGetter
- type PriceRegistryFactory
- type PriceRegistryReader
- type TokenAmount
- type TokenBucketRateLimit
- type TokenDataReader
- type TokenPoolBatchedReader
- type TokenPrice
- type TokenPriceUpdate
- type TokenPriceUpdateWithTxMeta
- type TxMeta
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CommitOffchainConfig ¶
type CommitStoreInterval ¶
type CommitStoreReader ¶
type CommitStoreReader interface {
// ChangeConfig notifies the reader that the config has changed onchain
ChangeConfig(ctx context.Context, onchainConfig []byte, offchainConfig []byte) (Address, error)
DecodeCommitReport(ctx context.Context, report []byte) (CommitStoreReport, error)
EncodeCommitReport(ctx context.Context, report CommitStoreReport) ([]byte, error)
GasPriceEstimator(ctx context.Context) (GasPriceEstimatorCommit, error)
// GetAcceptedCommitReportsGteTimestamp returns all the commit reports with timestamp greater than or equal to the provided.
// Returned Commit Reports have to be sorted by Interval.Min/Interval.Max in ascending order.
GetAcceptedCommitReportsGteTimestamp(ctx context.Context, ts time.Time, confirmations int) ([]CommitStoreReportWithTxMeta, error)
// GetCommitReportMatchingSeqNum returns accepted commit report that satisfies Interval.Min <= seqNum <= Interval.Max. Returned slice should be empty or have exactly one element
GetCommitReportMatchingSeqNum(ctx context.Context, seqNum uint64, confirmations int) ([]CommitStoreReportWithTxMeta, error)
GetCommitStoreStaticConfig(ctx context.Context) (CommitStoreStaticConfig, error)
GetExpectedNextSequenceNumber(ctx context.Context) (uint64, error)
GetLatestPriceEpochAndRound(ctx context.Context) (uint64, error)
IsBlessed(ctx context.Context, root [32]byte) (bool, error)
// IsDestChainHealthy returns true if the destination chain is healthy.
IsDestChainHealthy(ctx context.Context) (bool, error)
IsDown(ctx context.Context) (bool, error)
OffchainConfig(ctx context.Context) (CommitOffchainConfig, error)
VerifyExecutionReport(ctx context.Context, report ExecReport) (bool, error)
io.Closer
}
type CommitStoreReport ¶
type CommitStoreReport struct {
TokenPrices []TokenPrice
GasPrices []GasPrice
Interval CommitStoreInterval
MerkleRoot [32]byte
}
type CommitStoreReportWithTxMeta ¶
type CommitStoreReportWithTxMeta struct {
TxMeta
CommitStoreReport
}
type CommitStoreStaticConfig ¶
type CommonGasPriceEstimator ¶
type CommonGasPriceEstimator interface {
// GetGasPrice fetches the current gas price.
GetGasPrice(ctx context.Context) (*big.Int, error)
// DenoteInUSD converts the gas price to be in units of USD. Input prices should not be nil.
DenoteInUSD(ctx context.Context, p *big.Int, wrappedNativePrice *big.Int) (*big.Int, error)
// TODO CCIP-1882: reconcile gas price estimator to remove unnecessary interface funcs
// this can be a helper function implementation detail. not needed in the interface
// Median finds the median gas price in slice. If gas price has multiple components, median of each individual component should be taken. Input prices should not contain nil.
Median(ctx context.Context, gasPrices []*big.Int) (*big.Int, error)
}
CommonGasPriceEstimator is abstraction over multi-component gas prices. TODO CCIP-1882: reconcile gas price estimator to remove unnecessary interface funcs
type EVM2EVMMessage ¶
type EVM2EVMMessage struct {
SequenceNumber uint64
GasLimit *big.Int
Nonce uint64
MessageID Hash
SourceChainSelector uint64
Sender Address
Receiver Address
Strict bool
FeeToken Address
FeeTokenAmount *big.Int
Data []byte
TokenAmounts []TokenAmount
SourceTokenData [][]byte
// Computed
Hash Hash
}
EVM2EVMMessage is the interface for a message sent from the off-ramp to the on-ramp Plugin can operate against any lane version which has a message satisfying this interface.
type EVM2EVMMessageWithTxMeta ¶
type EVM2EVMMessageWithTxMeta struct {
TxMeta
EVM2EVMMessage
}
type EVM2EVMOnRampCCIPSendRequestedWithMeta ¶
type EVM2EVMOnRampCCIPSendRequestedWithMeta struct {
EVM2EVMMessage
BlockTimestamp time.Time
Executed bool
Finalized bool
LogIndex uint
TxHash string
}
EVM2EVMOnRampCCIPSendRequestedWithMeta helper struct to hold the send request and some metadata
type ExecOffchainConfig ¶
type ExecOffchainConfig struct {
// DestOptimisticConfirmations is how many confirmations to wait for the dest chain event before we consider it
// confirmed (optimistically, need not be finalized).
DestOptimisticConfirmations uint32
// BatchGasLimit is the maximum sum of user callback gas we permit in one execution report.
BatchGasLimit uint32
// RelativeBoostPerWaitHour indicates how much to increase (artificially) the fee paid on the source chain per hour
// of wait time, such that eventually the fee paid is greater than the execution cost, and we’ll execute it.
// For example: if set to 0.5, that means the fee paid is increased by 50% every hour the message has been waiting.
RelativeBoostPerWaitHour float64
// InflightCacheExpiry indicates how long we keep a report in the plugin cache before we expire it.
// The caching prevents us from issuing another report while one is already in flight.
InflightCacheExpiry config.Duration
// RootSnoozeTime is the interval at which we check roots for executable messages.
RootSnoozeTime config.Duration
// MessageVisibilityInterval is the interval at which we check for new messages.
MessageVisibilityInterval config.Duration
// BatchingStrategyID is the strategy to use for batching messages.
BatchingStrategyID uint32
}
ExecOffchainConfig specifies configuration for nodes executing committed messages.
type ExecOnchainConfig ¶
type ExecOnchainConfig struct {
PermissionLessExecutionThresholdSeconds time.Duration
Router Address
MaxDataBytes uint32
MaxNumberOfTokensPerMsg uint16
PriceRegistry Address
MaxPoolReleaseOrMintGas uint32
MaxTokenTransferGas uint32
}
func (ExecOnchainConfig) Validate ¶
func (c ExecOnchainConfig) Validate() error
type ExecReport ¶
type ExecReport struct {
Messages []EVM2EVMMessage
OffchainTokenData [][][]byte
Proofs [][32]byte
ProofFlagBits *big.Int
}
type ExecutionStateChanged ¶
type ExecutionStateChanged struct {
SequenceNumber uint64
}
type ExecutionStateChangedWithTxMeta ¶
type ExecutionStateChangedWithTxMeta struct {
TxMeta
ExecutionStateChanged
}
type FinalizedStatus ¶ added in v0.2.1
type FinalizedStatus int
const ( FinalizedStatusUnknown FinalizedStatus = iota FinalizedStatusFinalized FinalizedStatusNotFinalized )
type GasPriceEstimator ¶
type GasPriceEstimator interface {
GasPriceEstimatorCommit
GasPriceEstimatorExec
}
type GasPriceEstimatorCommit ¶
type GasPriceEstimatorCommit interface {
CommonGasPriceEstimator
// TODO CCIP-1882: reconcile gas price estimator to remove unnecessary interface funcs
// this can be a helper function implementation detail. not needed in the interface
// Deviates checks if p1 gas price diffs from p2 by deviation options. Input prices should not be nil.
Deviates(ctx context.Context, p1 *big.Int, p2 *big.Int) (bool, error)
}
type GasPriceEstimatorExec ¶
type GasPriceEstimatorExec interface {
CommonGasPriceEstimator
// EstimateMsgCostUSD estimates the costs for msg execution, and converts to USD value scaled by 1e18 (e.g. 5$ = 5e18).
EstimateMsgCostUSD(ctx context.Context, p *big.Int, wrappedNativePrice *big.Int, msg EVM2EVMOnRampCCIPSendRequestedWithMeta) (*big.Int, error)
}
GasPriceEstimatorExec provides gasPriceEstimatorCommon + features needed in exec plugin, e.g. message cost estimation.
type GasPriceUpdate ¶
GasPriceUpdate represents a gas price at the last it was quoted.
type GasPriceUpdateWithTxMeta ¶
type GasPriceUpdateWithTxMeta struct {
TxMeta
GasPriceUpdate
}
GasPriceUpdateWithTxMeta represents a gas price update with transaction metadata.
type MessageExecutionState ¶
type MessageExecutionState uint8
MessageExecutionState defines the execution states of CCIP messages.
const ( ExecutionStateUntouched MessageExecutionState = iota ExecutionStateInProgress ExecutionStateSuccess ExecutionStateFailure )
type OffRampReader ¶
type OffRampReader interface {
Address(ctx context.Context) (Address, error)
// ChangeConfig notifies the reader that the config has changed onchain
ChangeConfig(ctx context.Context, onchainConfig []byte, offchainConfig []byte) (Address, Address, error)
CurrentRateLimiterState(ctx context.Context) (TokenBucketRateLimit, error)
// DecodeExecutionReport will error if messages are not a compatible version.
DecodeExecutionReport(ctx context.Context, report []byte) (ExecReport, error)
// EncodeExecutionReport will error if messages are not a compatible version.
EncodeExecutionReport(ctx context.Context, report ExecReport) ([]byte, error)
// GasPriceEstimator returns the gas price estimator for the offramp.
GasPriceEstimator(ctx context.Context) (GasPriceEstimatorExec, error)
GetExecutionState(ctx context.Context, sequenceNumber uint64) (uint8, error)
// GetExecutionStateChangesBetweenSeqNums returns all the execution state change events for the provided message sequence numbers (inclusive).
GetExecutionStateChangesBetweenSeqNums(ctx context.Context, seqNumMin, seqNumMax uint64, confirmations int) ([]ExecutionStateChangedWithTxMeta, error)
GetRouter(ctx context.Context) (Address, error)
ListSenderNonces(ctx context.Context, senders []Address) (map[Address]uint64, error)
GetSourceToDestTokensMapping(ctx context.Context) (map[Address]Address, error)
GetStaticConfig(ctx context.Context) (OffRampStaticConfig, error)
GetTokens(ctx context.Context) (OffRampTokens, error)
OffchainConfig(ctx context.Context) (ExecOffchainConfig, error)
OnchainConfig(ctx context.Context) (ExecOnchainConfig, error)
io.Closer
}
OffRampReader all methods need to accept a context and return an error
type OffRampStaticConfig ¶
type OffRampTokens ¶
type OnRampDynamicConfig ¶
type OnRampDynamicConfig struct {
Router Address
MaxNumberOfTokensPerMsg uint16
DestGasOverhead uint32
DestGasPerPayloadByte uint16
DestDataAvailabilityOverheadGas uint32
DestGasPerDataAvailabilityByte uint16
DestDataAvailabilityMultiplierBps uint16
PriceRegistry Address
MaxDataBytes uint32
MaxPerMsgGasLimit uint32
}
type OnRampReader ¶
type OnRampReader interface {
Address(ctx context.Context) (Address, error)
GetDynamicConfig(ctx context.Context) (OnRampDynamicConfig, error)
// GetSendRequestsBetweenSeqNums returns all the finalized message send requests in the provided sequence numbers range (inclusive).
GetSendRequestsBetweenSeqNums(ctx context.Context, seqNumMin, seqNumMax uint64, finalized bool) ([]EVM2EVMMessageWithTxMeta, error)
// IsSourceChainHealthy returns true if the source chain is healthy.
IsSourceChainHealthy(ctx context.Context) (bool, error)
// IsSourceCursed returns true if the source chain is cursed. OnRamp communicates with the underlying RMN
// to verify if source chain was cursed or not.
IsSourceCursed(ctx context.Context) (bool, error)
// RouterAddress returns the router address that is configured on the onRamp
RouterAddress(context.Context) (Address, error)
// SourcePriceRegistryAddress returns the address of the current price registry configured on the onRamp.
SourcePriceRegistryAddress(ctx context.Context) (Address, error)
io.Closer
}
type PriceGetter ¶
type PriceGetter interface {
// FilterConfiguredTokens filters a list of token addresses
// for only those that are configured to be able to get a price and those that aren't
FilterConfiguredTokens(ctx context.Context, tokens []Address) (configured []Address, unconfigured []Address, err error)
// TokenPricesUSD returns token prices in USD.
// Note: The result might contain tokens that are not passed with the 'tokens' param.
// The opposite cannot happen, an error will be returned if a token price was not found.
TokenPricesUSD(ctx context.Context, tokens []Address) (map[Address]*big.Int, error)
io.Closer
}
type PriceRegistryFactory ¶
type PriceRegistryFactory interface {
NewPriceRegistryReader(ctx context.Context, addr Address) (PriceRegistryReader, error)
}
type PriceRegistryReader ¶
type PriceRegistryReader interface {
// GetTokenPriceUpdatesCreatedAfter returns all the token price updates that happened after the provided timestamp.
// The returned updates are sorted by timestamp in ascending order.
GetTokenPriceUpdatesCreatedAfter(ctx context.Context, ts time.Time, confirmations int) ([]TokenPriceUpdateWithTxMeta, error)
// GetGasPriceUpdatesCreatedAfter returns all the gas price updates that happened after the provided timestamp.
// The returned updates are sorted by timestamp in ascending order.
GetGasPriceUpdatesCreatedAfter(ctx context.Context, chainSelector uint64, ts time.Time, confirmations int) ([]GasPriceUpdateWithTxMeta, error)
// GetAllGasPriceUpdatesCreatedAfter returns all the gas price updates that happened after the provided timestamp for all chain selectors.
// The returned updates are sorted by timestamp in ascending order.
GetAllGasPriceUpdatesCreatedAfter(ctx context.Context, ts time.Time, confirmations int) ([]GasPriceUpdateWithTxMeta, error)
// Address returns the address of the price registry.
Address(ctx context.Context) (Address, error)
GetFeeTokens(ctx context.Context) ([]Address, error)
// GetTokenPrices returns the latest price and time of quote of the given tokens.
GetTokenPrices(ctx context.Context, wantedTokens []Address) ([]TokenPriceUpdate, error)
GetTokensDecimals(ctx context.Context, tokenAddresses []Address) ([]uint8, error)
Close() error
}
type TokenAmount ¶
type TokenBucketRateLimit ¶
type TokenDataReader ¶
type TokenDataReader interface {
// ReadTokenData returns the attestation bytes if ready, and throws an error if not ready.
// It supports messages with a single token transfer, the returned []byte has the token data for the first token of the msg.
ReadTokenData(ctx context.Context, msg EVM2EVMOnRampCCIPSendRequestedWithMeta, tokenIndex int) (tokenData []byte, err error)
io.Closer
}
type TokenPoolBatchedReader ¶
type TokenPrice ¶
type TokenPriceUpdate ¶
type TokenPriceUpdate struct {
TokenPrice
TimestampUnixSec *big.Int
}
TokenPriceUpdate represents a token price at the last it was quoted.
type TokenPriceUpdateWithTxMeta ¶
type TokenPriceUpdateWithTxMeta struct {
TxMeta
TokenPriceUpdate
}
type TxMeta ¶
type TxMeta struct {
BlockTimestampUnixMilli int64
BlockNumber uint64
TxHash string
LogIndex uint64
Finalized FinalizedStatus
}
func (*TxMeta) IsFinalized ¶ added in v0.2.1
func (*TxMeta) WithFinalityStatus ¶ added in v0.2.1
WithFinalityStatus accepts finalizedBlockNumber and based on that sets the Finalized status It's immutable so it creates new struct instead of in-place modification of the existing one