diff --git a/contracts/src/v0.8/ccip/ARM.sol b/contracts/src/v0.8/ccip/ARM.sol index 2a715ef1f6..6eecf824b8 100644 --- a/contracts/src/v0.8/ccip/ARM.sol +++ b/contracts/src/v0.8/ccip/ARM.sol @@ -6,6 +6,7 @@ import {IARM} from "./interfaces/IARM.sol"; import {OwnerIsCreator} from "./../shared/access/OwnerIsCreator.sol"; +/// @dev This contract is owned by RMN, if changes required, please notify RMN. contract ARM is IARM, OwnerIsCreator, ITypeAndVersion { // STATIC CONFIG // solhint-disable-next-line chainlink-solidity/all-caps-constant-storage-variables diff --git a/contracts/src/v0.8/ccip/CommitStore.sol b/contracts/src/v0.8/ccip/CommitStore.sol index 905a8cde67..eb4406f02b 100644 --- a/contracts/src/v0.8/ccip/CommitStore.sol +++ b/contracts/src/v0.8/ccip/CommitStore.sol @@ -21,11 +21,13 @@ contract CommitStore is ICommitStore, ITypeAndVersion, OCR2Base { event Paused(address account); event Unpaused(address account); + /// @dev RMN depends on this event, if changing, please notify RMN. event ReportAccepted(CommitReport report); event ConfigSet(StaticConfig staticConfig, DynamicConfig dynamicConfig); event RootRemoved(bytes32 root); /// @notice Static commit store config + /// @dev RMN depends on this struct, if changing, please notify RMN. struct StaticConfig { uint64 chainSelector; // ───────╮ Destination chainSelector uint64 sourceChainSelector; // ─╯ Source chainSelector @@ -45,6 +47,7 @@ contract CommitStore is ICommitStore, ITypeAndVersion, OCR2Base { } /// @notice Report that is committed by the observing DON at the committing phase + /// @dev RMN depends on this struct, if changing, please notify RMN. struct CommitReport { Internal.PriceUpdates priceUpdates; Interval interval; @@ -222,6 +225,7 @@ contract CommitStore is ICommitStore, ITypeAndVersion, OCR2Base { // ================================================================ /// @notice Returns the static commit store config. + /// @dev RMN depends on this function, if changing, please notify RMN. /// @return the configuration. function getStaticConfig() external view returns (StaticConfig memory) { return diff --git a/contracts/src/v0.8/ccip/libraries/Internal.sol b/contracts/src/v0.8/ccip/libraries/Internal.sol index 08c46ba116..20c6775b9a 100644 --- a/contracts/src/v0.8/ccip/libraries/Internal.sol +++ b/contracts/src/v0.8/ccip/libraries/Internal.sol @@ -45,6 +45,8 @@ library Internal { address pool; // The token pool address } + /// @notice Report that is submitted by the execution DON at the execution phase. + /// @dev RMN depends on this struct, if changing, please notify RMN. struct ExecutionReport { EVM2EVMMessage[] messages; // Contains a bytes array for each message, each inner bytes array contains bytes per transferred token @@ -53,7 +55,8 @@ library Internal { uint256 proofFlagBits; } - // @notice The cross chain message that gets committed to EVM chains + /// @notice The cross chain message that gets committed to EVM chains. + /// @dev RMN depends on this struct, if changing, please notify RMN. struct EVM2EVMMessage { uint64 sourceChainSelector; // ─────────╮ the chain selector of the source chain, note: not chainId address sender; // ─────────────────────╯ sender address on the source chain @@ -129,6 +132,7 @@ library Internal { /// IN_PROGRESS currently being executed, used a replay protection /// SUCCESS successfully executed. End state /// FAILURE unsuccessfully executed, manual execution is now enabled. + /// @dev RMN depends on this enum, if changing, please notify RMN. enum MessageExecutionState { UNTOUCHED, IN_PROGRESS, diff --git a/contracts/src/v0.8/ccip/offRamp/EVM2EVMOffRamp.sol b/contracts/src/v0.8/ccip/offRamp/EVM2EVMOffRamp.sol index 795b5fb60b..d4d4f8af2f 100644 --- a/contracts/src/v0.8/ccip/offRamp/EVM2EVMOffRamp.sol +++ b/contracts/src/v0.8/ccip/offRamp/EVM2EVMOffRamp.sol @@ -63,10 +63,11 @@ contract EVM2EVMOffRamp is IAny2EVMOffRamp, AggregateRateLimiter, ITypeAndVersio event PoolAdded(address token, address pool); event PoolRemoved(address token, address pool); - // this event is needed for Atlas; if their structs/signature changes, we must update the ABIs there + /// @dev Atlas depends on this event, if changing, please notify Atlas. event ConfigSet(StaticConfig staticConfig, DynamicConfig dynamicConfig); event SkippedIncorrectNonce(uint64 indexed nonce, address indexed sender); event SkippedSenderWithPreviousRampMessageInflight(uint64 indexed nonce, address indexed sender); + /// @dev RMN depends on this event, if changing, please notify RMN. event ExecutionStateChanged( uint64 indexed sequenceNumber, bytes32 indexed messageId, @@ -75,6 +76,7 @@ contract EVM2EVMOffRamp is IAny2EVMOffRamp, AggregateRateLimiter, ITypeAndVersio ); /// @notice Static offRamp config + /// @dev RMN depends on this struct, if changing, please notify RMN. struct StaticConfig { address commitStore; // ────────╮ CommitStore address on the destination chain uint64 chainSelector; // ───────╯ Destination chainSelector @@ -449,6 +451,7 @@ contract EVM2EVMOffRamp is IAny2EVMOffRamp, AggregateRateLimiter, ITypeAndVersio /// @notice Returns the static config. /// @dev This function will always return the same struct as the contents is static and can never change. + /// RMN depends on this function, if changing, please notify RMN. function getStaticConfig() external view returns (StaticConfig memory) { return StaticConfig({ diff --git a/contracts/src/v0.8/ccip/onRamp/EVM2EVMOnRamp.sol b/contracts/src/v0.8/ccip/onRamp/EVM2EVMOnRamp.sol index 230017cf33..3370094ec7 100644 --- a/contracts/src/v0.8/ccip/onRamp/EVM2EVMOnRamp.sol +++ b/contracts/src/v0.8/ccip/onRamp/EVM2EVMOnRamp.sol @@ -61,12 +61,14 @@ contract EVM2EVMOnRamp is IEVM2AnyOnRamp, ILinkAvailable, AggregateRateLimiter, event NopPaid(address indexed nop, uint256 amount); event FeeConfigSet(FeeTokenConfigArgs[] feeConfig); event TokenTransferFeeConfigSet(TokenTransferFeeConfigArgs[] transferFeeConfig); + /// RMN depends on this event, if changing, please notify RMN. event CCIPSendRequested(Internal.EVM2EVMMessage message); event NopsSet(uint256 nopWeightsTotal, NopAndWeight[] nopsAndWeights); event PoolAdded(address token, address pool); event PoolRemoved(address token, address pool); /// @dev Struct that contains the static configuration + /// RMN depends on this struct, if changing, please notify RMN. struct StaticConfig { address linkToken; // ────────╮ Link token address uint64 chainSelector; // ─────╯ Source chainSelector @@ -382,6 +384,7 @@ contract EVM2EVMOnRamp is IEVM2AnyOnRamp, ILinkAvailable, AggregateRateLimiter, // ================================================================ /// @notice Returns the static onRamp config. + /// @dev RMN depends on this function, if changing, please notify RMN. /// @return the configuration. function getStaticConfig() external view returns (StaticConfig memory) { return diff --git a/core/services/ocr2/plugins/ccip/internal/ccipdata/commit_store_v1_2_0.go b/core/services/ocr2/plugins/ccip/internal/ccipdata/commit_store_v1_2_0.go index 4fff3fab33..5c1a017bc3 100644 --- a/core/services/ocr2/plugins/ccip/internal/ccipdata/commit_store_v1_2_0.go +++ b/core/services/ocr2/plugins/ccip/internal/ccipdata/commit_store_v1_2_0.go @@ -193,6 +193,7 @@ func (c CommitOffchainConfigV1_2_0) Validate() error { if c.InflightCacheExpiry.Duration() == 0 { return errors.New("must set InflightCacheExpiry") } + // DAGasPriceDeviationPPB is not validated because it can be 0 on non-rollups return nil }