From fee825f7874b0bdace4a49a1e0d23eb01e3b1398 Mon Sep 17 00:00:00 2001 From: 0xsuryansh Date: Tue, 1 Oct 2024 15:00:19 +0530 Subject: [PATCH] feat: add getter to return all source chain config Signed-off-by: 0xsuryansh --- contracts/gas-snapshots/ccip.gas-snapshot | 216 +++++++++--------- contracts/src/v0.8/ccip/offRamp/OffRamp.sol | 20 ++ .../v0.8/ccip/test/helpers/OffRampHelper.sol | 7 + .../src/v0.8/ccip/test/offRamp/OffRamp.t.sol | 17 +- 4 files changed, 148 insertions(+), 112 deletions(-) diff --git a/contracts/gas-snapshots/ccip.gas-snapshot b/contracts/gas-snapshots/ccip.gas-snapshot index a984ecd919..15710e155f 100644 --- a/contracts/gas-snapshots/ccip.gas-snapshot +++ b/contracts/gas-snapshots/ccip.gas-snapshot @@ -562,18 +562,18 @@ MultiOCR3Base_transmit:test_UnauthorizedSigner_Revert() (gas: 61275) MultiOCR3Base_transmit:test_UnconfiguredPlugin_Revert() (gas: 39933) MultiOCR3Base_transmit:test_ZeroSignatures_Revert() (gas: 33049) MultiOnRampTokenPoolReentrancy:test_OnRampTokenPoolReentrancy_Success() (gas: 233701) -MultiRampsE2E:test_E2E_3MessagesMMultiOffRampSuccess_gas() (gas: 1500580) +MultiRampsE2E:test_E2E_3MessagesMMultiOffRampSuccess_gas() (gas: 1500475) NonceManager_NonceIncrementation:test_getIncrementedOutboundNonce_Success() (gas: 37934) 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: 262159) -NonceManager_OffRampUpgrade:test_UpgradedNonceNewSenderStartsAtZero_Success() (gas: 265836) -NonceManager_OffRampUpgrade:test_UpgradedNonceStartsAtV1Nonce_Success() (gas: 329824) -NonceManager_OffRampUpgrade:test_UpgradedOffRampNonceSkipsIfMsgInFlight_Success() (gas: 300784) +NonceManager_OffRampUpgrade:test_NoPrevOffRampForChain_Success() (gas: 262127) +NonceManager_OffRampUpgrade:test_UpgradedNonceNewSenderStartsAtZero_Success() (gas: 265804) +NonceManager_OffRampUpgrade:test_UpgradedNonceStartsAtV1Nonce_Success() (gas: 329760) +NonceManager_OffRampUpgrade:test_UpgradedOffRampNonceSkipsIfMsgInFlight_Success() (gas: 300752) NonceManager_OffRampUpgrade:test_UpgradedSenderNoncesReadsPreviousRampTransitive_Success() (gas: 249120) NonceManager_OffRampUpgrade:test_UpgradedSenderNoncesReadsPreviousRamp_Success() (gas: 237027) -NonceManager_OffRampUpgrade:test_Upgraded_Success() (gas: 153748) +NonceManager_OffRampUpgrade:test_Upgraded_Success() (gas: 153716) NonceManager_OnRampUpgrade:test_UpgradeNonceNewSenderStartsAtZero_Success() (gas: 168256) NonceManager_OnRampUpgrade:test_UpgradeNonceStartsAtV1Nonce_Success() (gas: 219631) NonceManager_OnRampUpgrade:test_UpgradeSenderNoncesReadsPreviousRamp_Success() (gas: 126745) @@ -610,119 +610,119 @@ OCR2Base_transmit:test_Transmit2SignersSuccess_gas() (gas: 51689) OCR2Base_transmit:test_UnAuthorizedTransmitter_Revert() (gas: 23511) OCR2Base_transmit:test_UnauthorizedSigner_Revert() (gas: 39707) OCR2Base_transmit:test_WrongNumberOfSignatures_Revert() (gas: 20584) -OffRamp_afterOC3ConfigSet:test_afterOCR3ConfigSet_SignatureVerificationDisabled_Revert() (gas: 5656596) -OffRamp_applySourceChainConfigUpdates:test_AddMultipleChains_Success() (gas: 469391) -OffRamp_applySourceChainConfigUpdates:test_AddNewChain_Success() (gas: 99637) -OffRamp_applySourceChainConfigUpdates:test_ApplyZeroUpdates_Success() (gas: 12591) -OffRamp_applySourceChainConfigUpdates:test_InvalidOnRampUpdate_Revert() (gas: 205322) -OffRamp_applySourceChainConfigUpdates:test_ReplaceExistingChainOnRamp_Success() (gas: 101437) -OffRamp_applySourceChainConfigUpdates:test_ReplaceExistingChain_Success() (gas: 111307) +OffRamp_afterOC3ConfigSet:test_afterOCR3ConfigSet_SignatureVerificationDisabled_Revert() (gas: 5929944) +OffRamp_applySourceChainConfigUpdates:test_AddMultipleChains_Success() (gas: 583614) +OffRamp_applySourceChainConfigUpdates:test_AddNewChain_Success() (gas: 166502) +OffRamp_applySourceChainConfigUpdates:test_ApplyZeroUpdates_Success() (gas: 16784) +OffRamp_applySourceChainConfigUpdates:test_InvalidOnRampUpdate_Revert() (gas: 272116) +OffRamp_applySourceChainConfigUpdates:test_ReplaceExistingChainOnRamp_Success() (gas: 168596) +OffRamp_applySourceChainConfigUpdates:test_ReplaceExistingChain_Success() (gas: 141079) OffRamp_applySourceChainConfigUpdates:test_RouterAddress_Revert() (gas: 13441) OffRamp_applySourceChainConfigUpdates:test_ZeroOnRampAddress_Revert() (gas: 72702) OffRamp_applySourceChainConfigUpdates:test_ZeroSourceChainSelector_Revert() (gas: 15497) -OffRamp_batchExecute:test_MultipleReportsDifferentChainsSkipCursedChain_Success() (gas: 177979) -OffRamp_batchExecute:test_MultipleReportsDifferentChains_Success() (gas: 335646) -OffRamp_batchExecute:test_MultipleReportsSameChain_Success() (gas: 278912) -OffRamp_batchExecute:test_MultipleReportsSkipDuplicate_Success() (gas: 169308) -OffRamp_batchExecute:test_OutOfBoundsGasLimitsAccess_Revert() (gas: 189031) -OffRamp_batchExecute:test_SingleReport_Success() (gas: 157132) -OffRamp_batchExecute:test_Unhealthy_Success() (gas: 554208) +OffRamp_batchExecute:test_MultipleReportsDifferentChainsSkipCursedChain_Success() (gas: 177947) +OffRamp_batchExecute:test_MultipleReportsDifferentChains_Success() (gas: 335550) +OffRamp_batchExecute:test_MultipleReportsSameChain_Success() (gas: 278816) +OffRamp_batchExecute:test_MultipleReportsSkipDuplicate_Success() (gas: 169276) +OffRamp_batchExecute:test_OutOfBoundsGasLimitsAccess_Revert() (gas: 188967) +OffRamp_batchExecute:test_SingleReport_Success() (gas: 157100) +OffRamp_batchExecute:test_Unhealthy_Success() (gas: 554168) OffRamp_batchExecute:test_ZeroReports_Revert() (gas: 10600) -OffRamp_ccipReceive:test_Reverts() (gas: 15385) -OffRamp_commit:test_CommitOnRampMismatch_Revert() (gas: 92905) -OffRamp_commit:test_FailedRMNVerification_Reverts() (gas: 64099) -OffRamp_commit:test_InvalidIntervalMinLargerThanMax_Revert() (gas: 68124) -OffRamp_commit:test_InvalidInterval_Revert() (gas: 64291) -OffRamp_commit:test_InvalidRootRevert() (gas: 63356) -OffRamp_commit:test_NoConfigWithOtherConfigPresent_Revert() (gas: 6260756) -OffRamp_commit:test_NoConfig_Revert() (gas: 5844428) -OffRamp_commit:test_OnlyGasPriceUpdates_Success() (gas: 113042) -OffRamp_commit:test_OnlyPriceUpdateStaleReport_Revert() (gas: 121403) -OffRamp_commit:test_OnlyTokenPriceUpdates_Success() (gas: 113063) -OffRamp_commit:test_PriceSequenceNumberCleared_Success() (gas: 355198) -OffRamp_commit:test_ReportAndPriceUpdate_Success() (gas: 164351) -OffRamp_commit:test_ReportOnlyRootSuccess_gas() (gas: 139364) -OffRamp_commit:test_RootAlreadyCommitted_Revert() (gas: 146555) -OffRamp_commit:test_SourceChainNotEnabled_Revert() (gas: 59858) -OffRamp_commit:test_StaleReportWithRoot_Success() (gas: 232074) -OffRamp_commit:test_UnauthorizedTransmitter_Revert() (gas: 125409) -OffRamp_commit:test_Unhealthy_Revert() (gas: 58633) -OffRamp_commit:test_ValidPriceUpdateThenStaleReportWithRoot_Success() (gas: 206729) -OffRamp_commit:test_ZeroEpochAndRound_Revert() (gas: 51722) -OffRamp_constructor:test_Constructor_Success() (gas: 5845416) -OffRamp_constructor:test_SourceChainSelector_Revert() (gas: 135514) -OffRamp_constructor:test_ZeroChainSelector_Revert() (gas: 102949) -OffRamp_constructor:test_ZeroNonceManager_Revert() (gas: 100843) -OffRamp_constructor:test_ZeroOnRampAddress_Revert() (gas: 161040) -OffRamp_constructor:test_ZeroRMNRemote_Revert() (gas: 100763) -OffRamp_constructor:test_ZeroTokenAdminRegistry_Revert() (gas: 100801) -OffRamp_execute:test_IncorrectArrayType_Revert() (gas: 17639) -OffRamp_execute:test_LargeBatch_Success() (gas: 3426635) -OffRamp_execute:test_MultipleReportsWithPartialValidationFailures_Success() (gas: 373095) -OffRamp_execute:test_MultipleReports_Success() (gas: 301009) -OffRamp_execute:test_NoConfigWithOtherConfigPresent_Revert() (gas: 6669661) -OffRamp_execute:test_NoConfig_Revert() (gas: 5894136) -OffRamp_execute:test_NonArray_Revert() (gas: 27562) -OffRamp_execute:test_SingleReport_Success() (gas: 176364) -OffRamp_execute:test_UnauthorizedTransmitter_Revert() (gas: 148382) -OffRamp_execute:test_WrongConfigWithSigners_Revert() (gas: 6672410) -OffRamp_execute:test_ZeroReports_Revert() (gas: 17361) +OffRamp_ccipReceive:test_Reverts() (gas: 15407) +OffRamp_commit:test_CommitOnRampMismatch_Revert() (gas: 92883) +OffRamp_commit:test_FailedRMNVerification_Reverts() (gas: 64077) +OffRamp_commit:test_InvalidIntervalMinLargerThanMax_Revert() (gas: 68151) +OffRamp_commit:test_InvalidInterval_Revert() (gas: 64269) +OffRamp_commit:test_InvalidRootRevert() (gas: 63334) +OffRamp_commit:test_NoConfigWithOtherConfigPresent_Revert() (gas: 6648158) +OffRamp_commit:test_NoConfig_Revert() (gas: 6231830) +OffRamp_commit:test_OnlyGasPriceUpdates_Success() (gas: 112998) +OffRamp_commit:test_OnlyPriceUpdateStaleReport_Revert() (gas: 121359) +OffRamp_commit:test_OnlyTokenPriceUpdates_Success() (gas: 113019) +OffRamp_commit:test_PriceSequenceNumberCleared_Success() (gas: 355088) +OffRamp_commit:test_ReportAndPriceUpdate_Success() (gas: 164356) +OffRamp_commit:test_ReportOnlyRootSuccess_gas() (gas: 139369) +OffRamp_commit:test_RootAlreadyCommitted_Revert() (gas: 146511) +OffRamp_commit:test_SourceChainNotEnabled_Revert() (gas: 59836) +OffRamp_commit:test_StaleReportWithRoot_Success() (gas: 232084) +OffRamp_commit:test_UnauthorizedTransmitter_Revert() (gas: 125387) +OffRamp_commit:test_Unhealthy_Revert() (gas: 58611) +OffRamp_commit:test_ValidPriceUpdateThenStaleReportWithRoot_Success() (gas: 206690) +OffRamp_commit:test_ZeroEpochAndRound_Revert() (gas: 51700) +OffRamp_constructor:test_Constructor_Success() (gas: 6234680) +OffRamp_constructor:test_SourceChainSelector_Revert() (gas: 136081) +OffRamp_constructor:test_ZeroChainSelector_Revert() (gas: 103512) +OffRamp_constructor:test_ZeroNonceManager_Revert() (gas: 101406) +OffRamp_constructor:test_ZeroOnRampAddress_Revert() (gas: 161606) +OffRamp_constructor:test_ZeroRMNRemote_Revert() (gas: 101326) +OffRamp_constructor:test_ZeroTokenAdminRegistry_Revert() (gas: 101364) +OffRamp_execute:test_IncorrectArrayType_Revert() (gas: 17617) +OffRamp_execute:test_LargeBatch_Success() (gas: 3425653) +OffRamp_execute:test_MultipleReportsWithPartialValidationFailures_Success() (gas: 372945) +OffRamp_execute:test_MultipleReports_Success() (gas: 300891) +OffRamp_execute:test_NoConfigWithOtherConfigPresent_Revert() (gas: 7057031) +OffRamp_execute:test_NoConfig_Revert() (gas: 6281506) +OffRamp_execute:test_NonArray_Revert() (gas: 27540) +OffRamp_execute:test_SingleReport_Success() (gas: 176310) +OffRamp_execute:test_UnauthorizedTransmitter_Revert() (gas: 148328) +OffRamp_execute:test_WrongConfigWithSigners_Revert() (gas: 7059780) +OffRamp_execute:test_ZeroReports_Revert() (gas: 17339) OffRamp_executeSingleMessage:test_MessageSender_Revert() (gas: 18511) OffRamp_executeSingleMessage:test_NonContractWithTokens_Success() (gas: 244057) OffRamp_executeSingleMessage:test_NonContract_Success() (gas: 20759) OffRamp_executeSingleMessage:test_TokenHandlingError_Revert() (gas: 205094) -OffRamp_executeSingleMessage:test_ZeroGasDONExecution_Revert() (gas: 49316) -OffRamp_executeSingleMessage:test_executeSingleMessage_NoTokens_Success() (gas: 48760) -OffRamp_executeSingleMessage:test_executeSingleMessage_WithFailingValidationNoRouterCall_Revert() (gas: 218081) -OffRamp_executeSingleMessage:test_executeSingleMessage_WithFailingValidation_Revert() (gas: 85349) -OffRamp_executeSingleMessage:test_executeSingleMessage_WithTokens_Success() (gas: 274194) -OffRamp_executeSingleMessage:test_executeSingleMessage_WithVInterception_Success() (gas: 91809) +OffRamp_executeSingleMessage:test_ZeroGasDONExecution_Revert() (gas: 49284) +OffRamp_executeSingleMessage:test_executeSingleMessage_NoTokens_Success() (gas: 48728) +OffRamp_executeSingleMessage:test_executeSingleMessage_WithFailingValidationNoRouterCall_Revert() (gas: 218049) +OffRamp_executeSingleMessage:test_executeSingleMessage_WithFailingValidation_Revert() (gas: 85317) +OffRamp_executeSingleMessage:test_executeSingleMessage_WithTokens_Success() (gas: 274174) +OffRamp_executeSingleMessage:test_executeSingleMessage_WithVInterception_Success() (gas: 91745) OffRamp_executeSingleReport:test_DisabledSourceChain_Revert() (gas: 28260) OffRamp_executeSingleReport:test_EmptyReport_Revert() (gas: 22062) -OffRamp_executeSingleReport:test_InvalidSourcePoolAddress_Success() (gas: 481748) +OffRamp_executeSingleReport:test_InvalidSourcePoolAddress_Success() (gas: 481728) OffRamp_executeSingleReport:test_ManualExecutionNotYetEnabled_Revert() (gas: 48372) OffRamp_executeSingleReport:test_MismatchingDestChainSelector_Revert() (gas: 33959) OffRamp_executeSingleReport:test_NonExistingSourceChain_Revert() (gas: 28436) -OffRamp_executeSingleReport:test_ReceiverError_Success() (gas: 188084) -OffRamp_executeSingleReport:test_RetryFailedMessageWithoutManualExecution_Revert() (gas: 198518) +OffRamp_executeSingleReport:test_ReceiverError_Success() (gas: 188052) +OffRamp_executeSingleReport:test_RetryFailedMessageWithoutManualExecution_Revert() (gas: 198486) OffRamp_executeSingleReport:test_RootNotCommitted_Revert() (gas: 40741) -OffRamp_executeSingleReport:test_RouterYULCall_Revert() (gas: 413233) -OffRamp_executeSingleReport:test_SingleMessageNoTokensOtherChain_Success() (gas: 249776) -OffRamp_executeSingleReport:test_SingleMessageNoTokensUnordered_Success() (gas: 193590) -OffRamp_executeSingleReport:test_SingleMessageNoTokens_Success() (gas: 213624) +OffRamp_executeSingleReport:test_RouterYULCall_Revert() (gas: 413201) +OffRamp_executeSingleReport:test_SingleMessageNoTokensOtherChain_Success() (gas: 249712) +OffRamp_executeSingleReport:test_SingleMessageNoTokensUnordered_Success() (gas: 193526) +OffRamp_executeSingleReport:test_SingleMessageNoTokens_Success() (gas: 213560) OffRamp_executeSingleReport:test_SingleMessageToNonCCIPReceiver_Success() (gas: 249506) -OffRamp_executeSingleReport:test_SingleMessagesNoTokensSuccess_gas() (gas: 142151) -OffRamp_executeSingleReport:test_SkippedIncorrectNonceStillExecutes_Success() (gas: 409289) +OffRamp_executeSingleReport:test_SingleMessagesNoTokensSuccess_gas() (gas: 142119) +OffRamp_executeSingleReport:test_SkippedIncorrectNonceStillExecutes_Success() (gas: 409269) OffRamp_executeSingleReport:test_SkippedIncorrectNonce_Success() (gas: 58293) OffRamp_executeSingleReport:test_TokenDataMismatch_Revert() (gas: 73868) -OffRamp_executeSingleReport:test_TwoMessagesWithTokensAndGE_Success() (gas: 583401) -OffRamp_executeSingleReport:test_TwoMessagesWithTokensSuccess_gas() (gas: 532115) +OffRamp_executeSingleReport:test_TwoMessagesWithTokensAndGE_Success() (gas: 583361) +OffRamp_executeSingleReport:test_TwoMessagesWithTokensSuccess_gas() (gas: 532075) OffRamp_executeSingleReport:test_UnexpectedTokenData_Revert() (gas: 33717) -OffRamp_executeSingleReport:test_UnhealthySingleChainCurse_Revert() (gas: 549738) -OffRamp_executeSingleReport:test_Unhealthy_Success() (gas: 549752) -OffRamp_executeSingleReport:test_WithCurseOnAnotherSourceChain_Success() (gas: 460495) -OffRamp_executeSingleReport:test__execute_SkippedAlreadyExecutedMessageUnordered_Success() (gas: 135910) -OffRamp_executeSingleReport:test__execute_SkippedAlreadyExecutedMessage_Success() (gas: 165615) -OffRamp_getExecutionState:test_FillExecutionState_Success() (gas: 3868658) -OffRamp_getExecutionState:test_GetDifferentChainExecutionState_Success() (gas: 120474) -OffRamp_getExecutionState:test_GetExecutionState_Success() (gas: 89178) -OffRamp_manuallyExecute:test_ManualExecGasLimitMismatchSingleReport_Revert() (gas: 81284) -OffRamp_manuallyExecute:test_manuallyExecute_DestinationGasAmountCountMismatch_Revert() (gas: 74161) -OffRamp_manuallyExecute:test_manuallyExecute_DoesNotRevertIfUntouched_Success() (gas: 173244) -OffRamp_manuallyExecute:test_manuallyExecute_FailedTx_Revert() (gas: 214189) -OffRamp_manuallyExecute:test_manuallyExecute_ForkedChain_Revert() (gas: 27152) -OffRamp_manuallyExecute:test_manuallyExecute_GasLimitMismatchMultipleReports_Revert() (gas: 165098) -OffRamp_manuallyExecute:test_manuallyExecute_InvalidReceiverExecutionGasLimit_Revert() (gas: 27689) -OffRamp_manuallyExecute:test_manuallyExecute_InvalidTokenGasOverride_Revert() (gas: 55260) -OffRamp_manuallyExecute:test_manuallyExecute_LowGasLimit_Success() (gas: 498614) -OffRamp_manuallyExecute:test_manuallyExecute_MultipleReportsWithSingleCursedLane_Revert() (gas: 316158) -OffRamp_manuallyExecute:test_manuallyExecute_ReentrancyFails_Success() (gas: 2245360) -OffRamp_manuallyExecute:test_manuallyExecute_SourceChainSelectorMismatch_Revert() (gas: 165602) -OffRamp_manuallyExecute:test_manuallyExecute_Success() (gas: 227234) -OffRamp_manuallyExecute:test_manuallyExecute_WithGasOverride_Success() (gas: 227774) -OffRamp_manuallyExecute:test_manuallyExecute_WithMultiReportGasOverride_Success() (gas: 781510) -OffRamp_manuallyExecute:test_manuallyExecute_WithPartialMessages_Success() (gas: 347431) -OffRamp_releaseOrMintSingleToken:test__releaseOrMintSingleToken_NotACompatiblePool_Revert() (gas: 37634) +OffRamp_executeSingleReport:test_UnhealthySingleChainCurse_Revert() (gas: 549698) +OffRamp_executeSingleReport:test_Unhealthy_Success() (gas: 549712) +OffRamp_executeSingleReport:test_WithCurseOnAnotherSourceChain_Success() (gas: 460455) +OffRamp_executeSingleReport:test__execute_SkippedAlreadyExecutedMessageUnordered_Success() (gas: 135878) +OffRamp_executeSingleReport:test__execute_SkippedAlreadyExecutedMessage_Success() (gas: 165583) +OffRamp_getExecutionState:test_FillExecutionState_Success() (gas: 3851762) +OffRamp_getExecutionState:test_GetDifferentChainExecutionState_Success() (gas: 120342) +OffRamp_getExecutionState:test_GetExecutionState_Success() (gas: 89068) +OffRamp_manuallyExecute:test_ManualExecGasLimitMismatchSingleReport_Revert() (gas: 81196) +OffRamp_manuallyExecute:test_manuallyExecute_DestinationGasAmountCountMismatch_Revert() (gas: 74117) +OffRamp_manuallyExecute:test_manuallyExecute_DoesNotRevertIfUntouched_Success() (gas: 173190) +OffRamp_manuallyExecute:test_manuallyExecute_FailedTx_Revert() (gas: 214103) +OffRamp_manuallyExecute:test_manuallyExecute_ForkedChain_Revert() (gas: 27130) +OffRamp_manuallyExecute:test_manuallyExecute_GasLimitMismatchMultipleReports_Revert() (gas: 164966) +OffRamp_manuallyExecute:test_manuallyExecute_InvalidReceiverExecutionGasLimit_Revert() (gas: 27667) +OffRamp_manuallyExecute:test_manuallyExecute_InvalidTokenGasOverride_Revert() (gas: 55238) +OffRamp_manuallyExecute:test_manuallyExecute_LowGasLimit_Success() (gas: 498528) +OffRamp_manuallyExecute:test_manuallyExecute_MultipleReportsWithSingleCursedLane_Revert() (gas: 316040) +OffRamp_manuallyExecute:test_manuallyExecute_ReentrancyFails_Success() (gas: 2245290) +OffRamp_manuallyExecute:test_manuallyExecute_SourceChainSelectorMismatch_Revert() (gas: 165548) +OffRamp_manuallyExecute:test_manuallyExecute_Success() (gas: 227148) +OffRamp_manuallyExecute:test_manuallyExecute_WithGasOverride_Success() (gas: 227688) +OffRamp_manuallyExecute:test_manuallyExecute_WithMultiReportGasOverride_Success() (gas: 781168) +OffRamp_manuallyExecute:test_manuallyExecute_WithPartialMessages_Success() (gas: 347281) +OffRamp_releaseOrMintSingleToken:test__releaseOrMintSingleToken_NotACompatiblePool_Revert() (gas: 37656) OffRamp_releaseOrMintSingleToken:test__releaseOrMintSingleToken_Success() (gas: 104404) OffRamp_releaseOrMintSingleToken:test__releaseOrMintSingleToken_TokenHandlingError_transfer_Revert() (gas: 85342) OffRamp_releaseOrMintSingleToken:test_releaseOrMintToken_InvalidDataLength_Revert() (gas: 36752) @@ -733,17 +733,17 @@ OffRamp_releaseOrMintTokens:test_TokenHandlingError_Reverts() (gas: 162381) OffRamp_releaseOrMintTokens:test__releaseOrMintTokens_PoolIsNotAPool_Reverts() (gas: 23903) OffRamp_releaseOrMintTokens:test_releaseOrMintTokens_InvalidDataLengthReturnData_Revert() (gas: 62751) OffRamp_releaseOrMintTokens:test_releaseOrMintTokens_PoolDoesNotSupportDest_Reverts() (gas: 79790) -OffRamp_releaseOrMintTokens:test_releaseOrMintTokens_Success() (gas: 174512) -OffRamp_releaseOrMintTokens:test_releaseOrMintTokens_WithGasOverride_Success() (gas: 176424) -OffRamp_releaseOrMintTokens:test_releaseOrMintTokens_destDenominatedDecimals_Success() (gas: 187723) +OffRamp_releaseOrMintTokens:test_releaseOrMintTokens_Success() (gas: 174468) +OffRamp_releaseOrMintTokens:test_releaseOrMintTokens_WithGasOverride_Success() (gas: 176380) +OffRamp_releaseOrMintTokens:test_releaseOrMintTokens_destDenominatedDecimals_Success() (gas: 187679) OffRamp_setDynamicConfig:test_FeeQuoterZeroAddress_Revert() (gas: 11269) OffRamp_setDynamicConfig:test_NonOwner_Revert() (gas: 13884) OffRamp_setDynamicConfig:test_SetDynamicConfigWithInterceptor_Success() (gas: 46421) OffRamp_setDynamicConfig:test_SetDynamicConfig_Success() (gas: 24463) -OffRamp_trialExecute:test_RateLimitError_Success() (gas: 219355) -OffRamp_trialExecute:test_TokenHandlingErrorIsCaught_Success() (gas: 227977) -OffRamp_trialExecute:test_TokenPoolIsNotAContract_Success() (gas: 295350) -OffRamp_trialExecute:test_trialExecute_Success() (gas: 277894) +OffRamp_trialExecute:test_RateLimitError_Success() (gas: 219422) +OffRamp_trialExecute:test_TokenHandlingErrorIsCaught_Success() (gas: 228044) +OffRamp_trialExecute:test_TokenPoolIsNotAContract_Success() (gas: 295531) +OffRamp_trialExecute:test_trialExecute_Success() (gas: 277941) OnRampTokenPoolReentrancy:test_OnRampTokenPoolReentrancy_Success() (gas: 390842) OnRamp_applyAllowListUpdates:test_applyAllowListUpdates_InvalidAllowListRequestDisabledAllowListWithAdds() (gas: 18030) OnRamp_applyAllowListUpdates:test_applyAllowListUpdates_Revert() (gas: 67426) diff --git a/contracts/src/v0.8/ccip/offRamp/OffRamp.sol b/contracts/src/v0.8/ccip/offRamp/OffRamp.sol index 5fcddb486e..129887f36d 100644 --- a/contracts/src/v0.8/ccip/offRamp/OffRamp.sol +++ b/contracts/src/v0.8/ccip/offRamp/OffRamp.sol @@ -21,6 +21,7 @@ import {MultiOCR3Base} from "../ocr/MultiOCR3Base.sol"; import {IERC20} from "../../vendor/openzeppelin-solidity/v5.0.2/contracts/token/ERC20/IERC20.sol"; import {ERC165Checker} from "../../vendor/openzeppelin-solidity/v5.0.2/contracts/utils/introspection/ERC165Checker.sol"; +import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; /// @notice OffRamp enables OCR networks to execute multiple messages /// in an OffRamp in a single transaction. @@ -32,6 +33,7 @@ import {ERC165Checker} from "../../vendor/openzeppelin-solidity/v5.0.2/contracts contract OffRamp is ITypeAndVersion, MultiOCR3Base { using ERC165Checker for address; using EnumerableMapAddresses for EnumerableMapAddresses.AddressToAddressMap; + using EnumerableSet for EnumerableSet.UintSet; error ZeroChainSelectorNotAllowed(); error ExecutionError(bytes32 messageId, bytes err); @@ -156,6 +158,9 @@ contract OffRamp is ITypeAndVersion, MultiOCR3Base { // DYNAMIC CONFIG DynamicConfig internal s_dynamicConfig; + /// @notice Set of enables source chain selectors + EnumerableSet.UintSet internal s_supportedChainSelectors; + /// @notice SourceChainConfig per chain /// (forms lane configurations from sourceChainSelector => StaticConfig.chainSelector) mapping(uint64 sourceChainSelector => SourceChainConfig sourceChainConfig) private s_sourceChainConfigs; @@ -919,6 +924,16 @@ contract OffRamp is ITypeAndVersion, MultiOCR3Base { return s_sourceChainConfigs[sourceChainSelector]; } + /// @notice Returns all source chain configs + /// @return sourceChainConfigs The source chain configs corresponding to all the supported chain selectors + function getAllSourceChainConfig() external view returns (SourceChainConfig[] memory) { + SourceChainConfig[] memory sourceChainConfigs = new SourceChainConfig[](s_supportedChainSelectors.length()); + for (uint256 i = 0; i < s_supportedChainSelectors.length(); ++i) { + sourceChainConfigs[i] = s_sourceChainConfigs[uint64(s_supportedChainSelectors.at(i))]; + } + return sourceChainConfigs; + } + /// @notice Updates source configs /// @param sourceChainConfigUpdates Source chain configs function applySourceChainConfigUpdates(SourceChainConfigArgs[] memory sourceChainConfigUpdates) external onlyOwner { @@ -961,6 +976,11 @@ contract OffRamp is ITypeAndVersion, MultiOCR3Base { currentConfig.onRamp = newOnRamp; currentConfig.isEnabled = sourceConfigUpdate.isEnabled; currentConfig.router = sourceConfigUpdate.router; + if (sourceConfigUpdate.isEnabled) { + s_supportedChainSelectors.add(sourceChainSelector); + } else { + s_supportedChainSelectors.remove(sourceChainSelector); + } emit SourceChainConfigSet(sourceChainSelector, currentConfig); } diff --git a/contracts/src/v0.8/ccip/test/helpers/OffRampHelper.sol b/contracts/src/v0.8/ccip/test/helpers/OffRampHelper.sol index 0e9352a9ef..7adf1488f0 100644 --- a/contracts/src/v0.8/ccip/test/helpers/OffRampHelper.sol +++ b/contracts/src/v0.8/ccip/test/helpers/OffRampHelper.sol @@ -5,8 +5,11 @@ import {Client} from "../../libraries/Client.sol"; import {Internal} from "../../libraries/Internal.sol"; import {OffRamp} from "../../offRamp/OffRamp.sol"; import {IgnoreContractSize} from "./IgnoreContractSize.sol"; +import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; contract OffRampHelper is OffRamp, IgnoreContractSize { + using EnumerableSet for EnumerableSet.UintSet; + mapping(uint64 sourceChainSelector => uint256 overrideTimestamp) private s_sourceChainVerificationOverride; constructor( @@ -104,4 +107,8 @@ contract OffRampHelper is OffRamp, IgnoreContractSize { function setRootTimestamp(uint64 sourceChainSelector, bytes32 root, uint256 timestamp) external { s_roots[sourceChainSelector][root] = timestamp; } + + function getSupportedChainSelectors() external view returns (uint256[] memory chainSelectors) { + return s_supportedChainSelectors.values(); + } } diff --git a/contracts/src/v0.8/ccip/test/offRamp/OffRamp.t.sol b/contracts/src/v0.8/ccip/test/offRamp/OffRamp.t.sol index 73adbb12c0..2656f37b76 100644 --- a/contracts/src/v0.8/ccip/test/offRamp/OffRamp.t.sol +++ b/contracts/src/v0.8/ccip/test/offRamp/OffRamp.t.sol @@ -67,6 +67,10 @@ contract OffRamp_constructor is OffRampSetup { onRamp: sourceChainConfigs[1].onRamp }); + uint64[] memory expectedSourceChainSelectors = new uint64[](2); + expectedSourceChainSelectors[0] = SOURCE_CHAIN_SELECTOR_1; + expectedSourceChainSelectors[1] = SOURCE_CHAIN_SELECTOR_1 + 1; + vm.expectEmit(); emit OffRamp.StaticConfigSet(staticConfig); @@ -134,6 +138,12 @@ contract OffRamp_constructor is OffRampSetup { assertEq("OffRamp 1.6.0-dev", s_offRamp.typeAndVersion()); assertEq(OWNER, s_offRamp.owner()); assertEq(0, s_offRamp.getLatestPriceSequenceNumber()); + + uint256[] memory actualSourceChainSelectors = s_offRamp.getSupportedChainSelectors(); + // assertion for source chain selector + for (uint256 i = 0; i < expectedSourceChainSelectors.length; i++) { + assertEq(expectedSourceChainSelectors[i], actualSourceChainSelectors[i]); + } } // Revert @@ -3005,7 +3015,7 @@ contract OffRamp_applySourceChainConfigUpdates is OffRampSetup { Vm.Log[] memory logEntries = vm.getRecordedLogs(); assertEq(logEntries.length, 0); - // assertEq(s_offRamp.getSourceChainSelectors().length, 0); + assertEq(s_offRamp.getSupportedChainSelectors().length, 0); } function test_AddNewChain_Success() public { @@ -3058,9 +3068,8 @@ contract OffRamp_applySourceChainConfigUpdates is OffRampSetup { _assertSourceChainConfigEquality(s_offRamp.getSourceChainConfig(SOURCE_CHAIN_SELECTOR_1), expectedSourceChainConfig); - // uint64[] memory resultSourceChainSelectors = s_offRamp.getSourceChainSelectors(); - // assertEq(resultSourceChainSelectors.length, 1); - // assertEq(resultSourceChainSelectors[0], SOURCE_CHAIN_SELECTOR_1); + uint256[] memory resultSourceChainSelectors = s_offRamp.getSupportedChainSelectors(); + assertEq(resultSourceChainSelectors.length, 0); } function test_AddMultipleChains_Success() public {