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 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(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(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 ExecutionStateChangedWithTxMeta ¶
type ExecutionStateChangedWithTxMeta struct { TxMeta ExecutionStateChanged }
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(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(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 }