Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CCIP-4476 remove legacy curse check in rmnRemote #15523

Merged
merged 12 commits into from
Dec 17, 2024
Next Next commit
add legacy curse check to offramps
  • Loading branch information
jhweintraub committed Dec 4, 2024
commit 37299f423a1ab6309bb64d629957aa380c185eed
164 changes: 82 additions & 82 deletions contracts/gas-snapshots/ccip.gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ CCIPHome_setCandidate:test_setCandidate_success() (gas: 1365439)
CCIPHome_supportsInterface:test_supportsInterface_success() (gas: 9885)
DefensiveExampleTest:test_HappyPath_Success() (gas: 200540)
DefensiveExampleTest:test_Recovery() (gas: 425013)
E2E:test_E2E_3MessagesMMultiOffRampSuccess_gas() (gas: 1512323)
E2E:test_E2E_3MessagesMMultiOffRampSuccess_gas() (gas: 1514039)
EtherSenderReceiverTest_ccipReceive:test_ccipReceive_fallbackToWethTransfer() (gas: 96980)
EtherSenderReceiverTest_ccipReceive:test_ccipReceive_happyPath() (gas: 49812)
EtherSenderReceiverTest_ccipReceive:test_ccipReceive_wrongToken() (gas: 17479)
Expand Down Expand Up @@ -352,12 +352,12 @@ NonceManager_NonceIncrementation:test_getIncrementedOutboundNonce_Success() (gas
NonceManager_NonceIncrementation:test_incrementInboundNonce_Skip() (gas: 23706)
NonceManager_NonceIncrementation:test_incrementInboundNonce_Success() (gas: 38778)
NonceManager_NonceIncrementation:test_incrementNoncesInboundAndOutbound_Success() (gas: 71901)
NonceManager_OffRampUpgrade:test_NoPrevOffRampForChain_Success() (gas: 185776)
NonceManager_OffRampUpgrade:test_UpgradedNonceNewSenderStartsAtZero_Success() (gas: 189229)
NonceManager_OffRampUpgrade:test_UpgradedNonceStartsAtV1Nonce_Success() (gas: 252250)
NonceManager_OffRampUpgrade:test_UpgradedOffRampNonceSkipsIfMsgInFlight_Success() (gas: 220615)
NonceManager_OffRampUpgrade:test_NoPrevOffRampForChain_Success() (gas: 186205)
NonceManager_OffRampUpgrade:test_UpgradedNonceNewSenderStartsAtZero_Success() (gas: 189658)
NonceManager_OffRampUpgrade:test_UpgradedNonceStartsAtV1Nonce_Success() (gas: 253108)
NonceManager_OffRampUpgrade:test_UpgradedOffRampNonceSkipsIfMsgInFlight_Success() (gas: 221473)
NonceManager_OffRampUpgrade:test_UpgradedSenderNoncesReadsPreviousRamp_Success() (gas: 60497)
NonceManager_OffRampUpgrade:test_Upgraded_Success() (gas: 152941)
NonceManager_OffRampUpgrade:test_Upgraded_Success() (gas: 153370)
NonceManager_OnRampUpgrade:test_UpgradeNonceNewSenderStartsAtZero_Success() (gas: 166101)
NonceManager_OnRampUpgrade:test_UpgradeNonceStartsAtV1Nonce_Success() (gas: 195828)
NonceManager_OnRampUpgrade:test_UpgradeSenderNoncesReadsPreviousRamp_Success() (gas: 139098)
Expand All @@ -370,114 +370,114 @@ NonceManager_applyPreviousRampsUpdates:test_PreviousRampAlreadySet_overrideAllow
NonceManager_applyPreviousRampsUpdates:test_SingleRampUpdate_success() (gas: 66889)
NonceManager_applyPreviousRampsUpdates:test_ZeroInput_success() (gas: 12213)
NonceManager_typeAndVersion:test_typeAndVersion() (gas: 9705)
OffRamp_afterOC3ConfigSet:test_afterOCR3ConfigSet_SignatureVerificationDisabled_Revert() (gas: 5887669)
OffRamp_afterOC3ConfigSet:test_afterOCR3ConfigSet_SignatureVerificationDisabled_Revert() (gas: 5942270)
OffRamp_applySourceChainConfigUpdates:test_AddMultipleChains_Success() (gas: 626160)
OffRamp_applySourceChainConfigUpdates:test_AddNewChain_Success() (gas: 166527)
OffRamp_applySourceChainConfigUpdates:test_ApplyZeroUpdates_Success() (gas: 16719)
OffRamp_applySourceChainConfigUpdates:test_InvalidOnRampUpdate_Revert() (gas: 274713)
OffRamp_applySourceChainConfigUpdates:test_InvalidOnRampUpdate_Revert() (gas: 275141)
OffRamp_applySourceChainConfigUpdates:test_ReplaceExistingChainOnRamp_Success() (gas: 168604)
OffRamp_applySourceChainConfigUpdates:test_ReplaceExistingChain_Success() (gas: 181059)
OffRamp_applySourceChainConfigUpdates:test_RouterAddress_Revert() (gas: 13441)
OffRamp_applySourceChainConfigUpdates:test_ZeroOnRampAddress_Revert() (gas: 72724)
OffRamp_applySourceChainConfigUpdates:test_ZeroSourceChainSelector_Revert() (gas: 15519)
OffRamp_applySourceChainConfigUpdates:test_allowNonOnRampUpdateAfterLaneIsUsed_success() (gas: 285041)
OffRamp_batchExecute:test_MultipleReportsDifferentChainsSkipCursedChain_Success() (gas: 177470)
OffRamp_batchExecute:test_MultipleReportsDifferentChains_Success() (gas: 333296)
OffRamp_batchExecute:test_MultipleReportsSameChain_Success() (gas: 276562)
OffRamp_batchExecute:test_MultipleReportsSkipDuplicate_Success() (gas: 168408)
OffRamp_batchExecute:test_OutOfBoundsGasLimitsAccess_Revert() (gas: 187974)
OffRamp_batchExecute:test_SingleReport_Success() (gas: 156406)
OffRamp_batchExecute:test_Unhealthy_Success() (gas: 545037)
OffRamp_applySourceChainConfigUpdates:test_allowNonOnRampUpdateAfterLaneIsUsed_success() (gas: 285469)
OffRamp_batchExecute:test_MultipleReportsDifferentChainsSkipCursedChain_Success() (gas: 177916)
OffRamp_batchExecute:test_MultipleReportsDifferentChains_Success() (gas: 334153)
OffRamp_batchExecute:test_MultipleReportsSameChain_Success() (gas: 277419)
OffRamp_batchExecute:test_MultipleReportsSkipDuplicate_Success() (gas: 169265)
OffRamp_batchExecute:test_OutOfBoundsGasLimitsAccess_Revert() (gas: 188402)
OffRamp_batchExecute:test_SingleReport_Success() (gas: 156834)
OffRamp_batchExecute:test_Unhealthy_Success() (gas: 545483)
OffRamp_batchExecute:test_ZeroReports_Revert() (gas: 10600)
OffRamp_commit:test_CommitOnRampMismatch_Revert() (gas: 92744)
OffRamp_commit:test_CommitOnRampMismatch_Revert() (gas: 93169)
OffRamp_commit:test_FailedRMNVerification_Reverts() (gas: 63432)
OffRamp_commit:test_InvalidIntervalMinLargerThanMax_Revert() (gas: 69993)
OffRamp_commit:test_InvalidInterval_Revert() (gas: 66119)
OffRamp_commit:test_InvalidRootRevert() (gas: 65214)
OffRamp_commit:test_NoConfigWithOtherConfigPresent_Revert() (gas: 6648767)
OffRamp_commit:test_NoConfig_Revert() (gas: 6232185)
OffRamp_commit:test_InvalidIntervalMinLargerThanMax_Revert() (gas: 70418)
OffRamp_commit:test_InvalidInterval_Revert() (gas: 66544)
OffRamp_commit:test_InvalidRootRevert() (gas: 65639)
OffRamp_commit:test_NoConfigWithOtherConfigPresent_Revert() (gas: 6703796)
OffRamp_commit:test_NoConfig_Revert() (gas: 6287214)
OffRamp_commit:test_OnlyGasPriceUpdates_Success() (gas: 112985)
OffRamp_commit:test_OnlyPriceUpdateStaleReport_Revert() (gas: 121175)
OffRamp_commit:test_OnlyTokenPriceUpdates_Success() (gas: 112917)
OffRamp_commit:test_PriceSequenceNumberCleared_Success() (gas: 355254)
OffRamp_commit:test_ReportAndPriceUpdate_Success() (gas: 164263)
OffRamp_commit:test_ReportOnlyRootSuccess_gas() (gas: 141269)
OffRamp_commit:test_RootAlreadyCommitted_Revert() (gas: 148268)
OffRamp_commit:test_RootWithRMNDisabled_success() (gas: 153986)
OffRamp_commit:test_SourceChainNotEnabled_Revert() (gas: 61681)
OffRamp_commit:test_StaleReportWithRoot_Success() (gas: 232354)
OffRamp_commit:test_UnauthorizedTransmitter_Revert() (gas: 125230)
OffRamp_commit:test_Unhealthy_Revert() (gas: 60482)
OffRamp_commit:test_ValidPriceUpdateThenStaleReportWithRoot_Success() (gas: 206800)
OffRamp_commit:test_ReportAndPriceUpdate_Success() (gas: 164691)
OffRamp_commit:test_ReportOnlyRootSuccess_gas() (gas: 141697)
OffRamp_commit:test_RootAlreadyCommitted_Revert() (gas: 149121)
OffRamp_commit:test_RootWithRMNDisabled_success() (gas: 154414)
OffRamp_commit:test_SourceChainNotEnabled_Revert() (gas: 62106)
OffRamp_commit:test_StaleReportWithRoot_Success() (gas: 233210)
OffRamp_commit:test_UnauthorizedTransmitter_Revert() (gas: 125658)
OffRamp_commit:test_Unhealthy_Revert() (gas: 60499)
OffRamp_commit:test_ValidPriceUpdateThenStaleReportWithRoot_Success() (gas: 207228)
OffRamp_commit:test_ZeroEpochAndRound_Revert() (gas: 53621)
OffRamp_constructor:test_Constructor_Success() (gas: 6194282)
OffRamp_constructor:test_SourceChainSelector_Revert() (gas: 136585)
OffRamp_constructor:test_ZeroChainSelector_Revert() (gas: 103622)
OffRamp_constructor:test_ZeroNonceManager_Revert() (gas: 101471)
OffRamp_constructor:test_ZeroOnRampAddress_Revert() (gas: 162065)
OffRamp_constructor:test_ZeroRMNRemote_Revert() (gas: 101388)
OffRamp_constructor:test_ZeroTokenAdminRegistry_Revert() (gas: 101392)
OffRamp_constructor:test_Constructor_Success() (gas: 6248885)
OffRamp_constructor:test_SourceChainSelector_Revert() (gas: 136674)
OffRamp_constructor:test_ZeroChainSelector_Revert() (gas: 103710)
OffRamp_constructor:test_ZeroNonceManager_Revert() (gas: 101559)
OffRamp_constructor:test_ZeroOnRampAddress_Revert() (gas: 162154)
OffRamp_constructor:test_ZeroRMNRemote_Revert() (gas: 101476)
OffRamp_constructor:test_ZeroTokenAdminRegistry_Revert() (gas: 101480)
OffRamp_execute:test_IncorrectArrayType_Revert() (gas: 17639)
OffRamp_execute:test_LargeBatch_Success() (gas: 3376243)
OffRamp_execute:test_MultipleReportsWithPartialValidationFailures_Success() (gas: 371146)
OffRamp_execute:test_MultipleReports_Success() (gas: 298685)
OffRamp_execute:test_NoConfigWithOtherConfigPresent_Revert() (gas: 7056935)
OffRamp_execute:test_NoConfig_Revert() (gas: 6281405)
OffRamp_execute:test_LargeBatch_Success() (gas: 3380575)
OffRamp_execute:test_MultipleReportsWithPartialValidationFailures_Success() (gas: 372003)
OffRamp_execute:test_MultipleReports_Success() (gas: 299542)
OffRamp_execute:test_NoConfigWithOtherConfigPresent_Revert() (gas: 7111965)
OffRamp_execute:test_NoConfig_Revert() (gas: 6336435)
OffRamp_execute:test_NonArray_Revert() (gas: 27680)
OffRamp_execute:test_SingleReport_Success() (gas: 175664)
OffRamp_execute:test_UnauthorizedTransmitter_Revert() (gas: 147820)
OffRamp_execute:test_WrongConfigWithSigners_Revert() (gas: 6948577)
OffRamp_execute:test_SingleReport_Success() (gas: 176093)
OffRamp_execute:test_UnauthorizedTransmitter_Revert() (gas: 148249)
OffRamp_execute:test_WrongConfigWithSigners_Revert() (gas: 7003178)
OffRamp_execute:test_ZeroReports_Revert() (gas: 17361)
OffRamp_executeSingleMessage:test_executeSingleMessage_NoTokens() (gas: 56135)
OffRamp_executeSingleMessage:test_executeSingleMessage_NonContract() (gas: 20463)
OffRamp_executeSingleMessage:test_executeSingleMessage_NonContractWithTokens() (gas: 237997)
OffRamp_executeSingleMessage:test_executeSingleMessage_WithMessageInterceptor() (gas: 91972)
OffRamp_executeSingleMessage:test_executeSingleMessage_WithTokens() (gas: 268069)
OffRamp_executeSingleReport:test_DisabledSourceChain_Revert() (gas: 28703)
OffRamp_executeSingleReport:test_EmptyReport_Revert() (gas: 15574)
OffRamp_executeSingleReport:test_InvalidSourcePoolAddress() (gas: 474583)
OffRamp_executeSingleReport:test_ManualExecutionNotYetEnabled_Revert() (gas: 48340)
OffRamp_executeSingleReport:test_MismatchingDestChainSelector_Revert() (gas: 34145)
OffRamp_executeSingleReport:test_NonExistingSourceChain_Revert() (gas: 28868)
OffRamp_executeSingleReport:test_ReceiverError_Success() (gas: 187644)
OffRamp_executeSingleReport:test_RetryFailedMessageWithoutManualExecution_Revert() (gas: 197820)
OffRamp_executeSingleReport:test_RootNotCommitted_Revert() (gas: 40731)
OffRamp_executeSingleReport:test_RouterYULCall_Revert() (gas: 404990)
OffRamp_executeSingleReport:test_SingleMessageNoTokensOtherChain_Success() (gas: 248718)
OffRamp_executeSingleReport:test_SingleMessageNoTokensUnordered_Success() (gas: 192362)
OffRamp_executeSingleReport:test_SingleMessageNoTokens_Success() (gas: 212388)
OffRamp_executeSingleReport:test_SingleMessageToNonCCIPReceiver_Success() (gas: 243698)
OffRamp_executeSingleReport:test_SingleMessagesNoTokensSuccess_gas() (gas: 141476)
OffRamp_executeSingleReport:test_SkippedIncorrectNonceStillExecutes_Success() (gas: 402512)
OffRamp_executeSingleReport:test_SkippedIncorrectNonce_Success() (gas: 58286)
OffRamp_executeSingleReport:test_TokenDataMismatch_Revert() (gas: 73856)
OffRamp_executeSingleReport:test_TwoMessagesWithTokensAndGE_Success() (gas: 574072)
OffRamp_executeSingleReport:test_TwoMessagesWithTokensSuccess_gas() (gas: 522623)
OffRamp_executeSingleReport:test_UnexpectedTokenData_Revert() (gas: 26839)
OffRamp_executeSingleReport:test_UnhealthySingleChainCurse_Revert() (gas: 540743)
OffRamp_executeSingleReport:test_Unhealthy_Success() (gas: 540690)
OffRamp_executeSingleReport:test_WithCurseOnAnotherSourceChain_Success() (gas: 451736)
OffRamp_executeSingleReport:test__execute_SkippedAlreadyExecutedMessageUnordered_Success() (gas: 135241)
OffRamp_executeSingleReport:test__execute_SkippedAlreadyExecutedMessage_Success() (gas: 164902)
OffRamp_executeSingleReport:test_DisabledSourceChain_Revert() (gas: 29131)
OffRamp_executeSingleReport:test_EmptyReport_Revert() (gas: 16002)
OffRamp_executeSingleReport:test_InvalidSourcePoolAddress() (gas: 475012)
OffRamp_executeSingleReport:test_ManualExecutionNotYetEnabled_Revert() (gas: 48768)
OffRamp_executeSingleReport:test_MismatchingDestChainSelector_Revert() (gas: 34573)
OffRamp_executeSingleReport:test_NonExistingSourceChain_Revert() (gas: 29296)
OffRamp_executeSingleReport:test_ReceiverError_Success() (gas: 188073)
OffRamp_executeSingleReport:test_RetryFailedMessageWithoutManualExecution_Revert() (gas: 198677)
OffRamp_executeSingleReport:test_RootNotCommitted_Revert() (gas: 41159)
OffRamp_executeSingleReport:test_RouterYULCall_Revert() (gas: 405419)
OffRamp_executeSingleReport:test_SingleMessageNoTokensOtherChain_Success() (gas: 249576)
OffRamp_executeSingleReport:test_SingleMessageNoTokensUnordered_Success() (gas: 193218)
OffRamp_executeSingleReport:test_SingleMessageNoTokens_Success() (gas: 213246)
OffRamp_executeSingleReport:test_SingleMessageToNonCCIPReceiver_Success() (gas: 244127)
OffRamp_executeSingleReport:test_SingleMessagesNoTokensSuccess_gas() (gas: 141905)
OffRamp_executeSingleReport:test_SkippedIncorrectNonceStillExecutes_Success() (gas: 402940)
OffRamp_executeSingleReport:test_SkippedIncorrectNonce_Success() (gas: 58715)
OffRamp_executeSingleReport:test_TokenDataMismatch_Revert() (gas: 74284)
OffRamp_executeSingleReport:test_TwoMessagesWithTokensAndGE_Success() (gas: 574501)
OffRamp_executeSingleReport:test_TwoMessagesWithTokensSuccess_gas() (gas: 523052)
OffRamp_executeSingleReport:test_UnexpectedTokenData_Revert() (gas: 27267)
OffRamp_executeSingleReport:test_UnhealthySingleChainCurse_Revert() (gas: 541189)
OffRamp_executeSingleReport:test_Unhealthy_Success() (gas: 541136)
OffRamp_executeSingleReport:test_WithCurseOnAnotherSourceChain_Success() (gas: 452165)
OffRamp_executeSingleReport:test__execute_SkippedAlreadyExecutedMessageUnordered_Success() (gas: 136097)
OffRamp_executeSingleReport:test__execute_SkippedAlreadyExecutedMessage_Success() (gas: 165759)
OffRamp_getExecutionState:test_FillExecutionState_Success() (gas: 3888846)
OffRamp_getExecutionState:test_GetDifferentChainExecutionState_Success() (gas: 121048)
OffRamp_getExecutionState:test_GetExecutionState_Success() (gas: 89561)
OffRamp_manuallyExecute:test_ManualExecGasLimitMismatchSingleReport_Revert() (gas: 81514)
OffRamp_manuallyExecute:test_manuallyExecute_DestinationGasAmountCountMismatch_Revert() (gas: 74194)
OffRamp_manuallyExecute:test_manuallyExecute_DoesNotRevertIfUntouched_Success() (gas: 172517)
OffRamp_manuallyExecute:test_manuallyExecute_FailedTx_Revert() (gas: 213009)
OffRamp_manuallyExecute:test_manuallyExecute_DoesNotRevertIfUntouched_Success() (gas: 172946)
OffRamp_manuallyExecute:test_manuallyExecute_FailedTx_Revert() (gas: 213865)
OffRamp_manuallyExecute:test_manuallyExecute_ForkedChain_Revert() (gas: 27203)
OffRamp_manuallyExecute:test_manuallyExecute_GasLimitMismatchMultipleReports_Revert() (gas: 165665)
OffRamp_manuallyExecute:test_manuallyExecute_InvalidReceiverExecutionGasLimit_Revert() (gas: 27740)
OffRamp_manuallyExecute:test_manuallyExecute_InvalidTokenGasOverride_Revert() (gas: 55317)
OffRamp_manuallyExecute:test_manuallyExecute_LowGasLimit_Success() (gas: 489426)
OffRamp_manuallyExecute:test_manuallyExecute_MultipleReportsWithSingleCursedLane_Revert() (gas: 314585)
OffRamp_manuallyExecute:test_manuallyExecute_ReentrancyFails_Success() (gas: 2224632)
OffRamp_manuallyExecute:test_manuallyExecute_SourceChainSelectorMismatch_Revert() (gas: 165207)
OffRamp_manuallyExecute:test_manuallyExecute_Success() (gas: 225918)
OffRamp_manuallyExecute:test_manuallyExecute_WithGasOverride_Success() (gas: 226458)
OffRamp_manuallyExecute:test_manuallyExecute_WithMultiReportGasOverride_Success() (gas: 773856)
OffRamp_manuallyExecute:test_manuallyExecute_WithPartialMessages_Success() (gas: 344327)
OffRamp_manuallyExecute:test_manuallyExecute_LowGasLimit_Success() (gas: 490282)
OffRamp_manuallyExecute:test_manuallyExecute_MultipleReportsWithSingleCursedLane_Revert() (gas: 315031)
OffRamp_manuallyExecute:test_manuallyExecute_ReentrancyFails_Success() (gas: 2225488)
OffRamp_manuallyExecute:test_manuallyExecute_SourceChainSelectorMismatch_Revert() (gas: 166061)
OffRamp_manuallyExecute:test_manuallyExecute_Success() (gas: 226774)
OffRamp_manuallyExecute:test_manuallyExecute_WithGasOverride_Success() (gas: 227314)
OffRamp_manuallyExecute:test_manuallyExecute_WithMultiReportGasOverride_Success() (gas: 775573)
OffRamp_manuallyExecute:test_manuallyExecute_WithPartialMessages_Success() (gas: 345183)
OffRamp_releaseOrMintSingleToken:test__releaseOrMintSingleToken_NotACompatiblePool_Revert() (gas: 37676)
OffRamp_releaseOrMintSingleToken:test__releaseOrMintSingleToken_Success() (gas: 101487)
OffRamp_releaseOrMintSingleToken:test_releaseOrMintToken_InvalidDataLength_Revert() (gas: 36812)
Expand Down
6 changes: 4 additions & 2 deletions contracts/src/v0.8/ccip/offRamp/OffRamp.sol
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,8 @@ contract OffRamp is ITypeAndVersion, MultiOCR3Base {
) internal {
uint64 sourceChainSelector = report.sourceChainSelector;
bool manualExecution = manualExecGasExecOverrides.length != 0;
if (i_rmnRemote.isCursed(bytes16(uint128(sourceChainSelector)))) {
// The double call to the RMNRemote is to check for both chainwise and legacy cursing before proceeding
if (i_rmnRemote.isCursed(bytes16(uint128(sourceChainSelector))) || i_rmnRemote.isCursed()) {
if (manualExecution) {
// For manual execution we don't want to silently fail so we revert.
revert CursedByRMN(sourceChainSelector);
Expand Down Expand Up @@ -811,7 +812,8 @@ contract OffRamp is ITypeAndVersion, MultiOCR3Base {
Internal.MerkleRoot memory root = commitReport.merkleRoots[i];
uint64 sourceChainSelector = root.sourceChainSelector;

if (i_rmnRemote.isCursed(bytes16(uint128(sourceChainSelector)))) {
// Check for both chainwise cursing or legacy cursing
if (i_rmnRemote.isCursed(bytes16(uint128(sourceChainSelector))) || i_rmnRemote.isCursed()) {
revert CursedByRMN(sourceChainSelector);
}

Expand Down
Loading