diff --git a/packages/contracts-bedrock/.gas-snapshot b/packages/contracts-bedrock/.gas-snapshot index e31c9a5a06300..9c057f7c1c8fe 100644 --- a/packages/contracts-bedrock/.gas-snapshot +++ b/packages/contracts-bedrock/.gas-snapshot @@ -1,273 +1,275 @@ GasBenchMark_L1CrossDomainMessenger:test_L1MessengerSendMessage_benchmark_0() (gas: 262334) -GasBenchMark_L1CrossDomainMessenger:test_L1MessengerSendMessage_benchmark_1() (gas: 75340) +GasBenchMark_L1CrossDomainMessenger:test_L1MessengerSendMessage_benchmark_1() (gas: 75318) GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 353380) GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 116384) GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 353402) -GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 116381) -GasBenchMark_L1StandardBridge_Finalize:test_finalizeETHWithdrawal_benchmark() (gas: 45368) +GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 116359) +GasBenchMark_L1StandardBridge_Finalize:test_finalizeETHWithdrawal_benchmark() (gas: 45413) GasBenchMark_L2OutputOracle:test_proposeL2Output_benchmark() (gas: 68672) GasBenchMark_OptimismPortal:test_depositTransaction_benchmark() (gas: 75069) -GasBenchMark_OptimismPortal:test_depositTransaction_benchmark_1() (gas: 35328) -DeployerWhitelist_Test:test_owner() (gas: 7680) -DeployerWhitelist_Test:test_storageSlots() (gas: 33516) -Encoding_Test:test_encodeDepositTransaction() (gas: 64567) -GasPriceOracle_Test:test_baseFee() (gas: 8392) +GasBenchMark_OptimismPortal:test_depositTransaction_benchmark_1() (gas: 35373) +DeployerWhitelist_Test:test_owner() (gas: 7658) +DeployerWhitelist_Test:test_storageSlots() (gas: 33494) +Encoding_Test:test_encodeDepositTransaction() (gas: 64610) +GasPriceOracle_Test:test_baseFee() (gas: 8370) GasPriceOracle_Test:test_gasPrice() (gas: 8381) GasPriceOracle_Test:test_l1BaseFee() (gas: 10582) -GasPriceOracle_Test:test_onlyOwnerSetDecimals() (gas: 10575) +GasPriceOracle_Test:test_onlyOwnerSetDecimals() (gas: 10553) GasPriceOracle_Test:test_onlyOwnerSetOverhead() (gas: 10599) GasPriceOracle_Test:test_onlyOwnerSetScalar() (gas: 10640) -GasPriceOracle_Test:test_owner() (gas: 9762) +GasPriceOracle_Test:test_owner() (gas: 9806) GasPriceOracle_Test:test_setDecimals() (gas: 36798) GasPriceOracle_Test:test_setGasPriceReverts() (gas: 11740) -GasPriceOracle_Test:test_setL1BaseFeeReverts() (gas: 11739) +GasPriceOracle_Test:test_setL1BaseFeeReverts() (gas: 11717) GasPriceOracle_Test:test_setOverhead() (gas: 36767) GasPriceOracle_Test:test_setScalar() (gas: 36818) GasPriceOracle_Test:test_storageLayout() (gas: 86683) Hashing_Test:test_hashDepositSource() (gas: 673) -Hashing_Test:test_hashDepositTransaction() (gas: 39151) -L1BlockTest:test_basefee() (gas: 7553) +Hashing_Test:test_hashDepositTransaction() (gas: 39129) +L1BlockTest:test_basefee() (gas: 7531) L1BlockTest:test_hash() (gas: 7575) -L1BlockTest:test_number() (gas: 7652) -L1BlockTest:test_sequenceNumber() (gas: 7630) -L1BlockTest:test_timestamp() (gas: 7684) -L1BlockTest:test_updateValues() (gas: 28238) +L1BlockTest:test_number() (gas: 7630) +L1BlockTest:test_sequenceNumber() (gas: 7695) +L1BlockTest:test_timestamp() (gas: 7662) +L1BlockTest:test_updateValues() (gas: 28216) L1BlockNumberTest:test_fallback() (gas: 18774) -L1BlockNumberTest:test_getL1BlockNumber() (gas: 10612) +L1BlockNumberTest:test_getL1BlockNumber() (gas: 10657) L1BlockNumberTest:test_receive() (gas: 25437) -L1CrossDomainMessenger_Test:testCannot_L1MessengerPause() (gas: 24496) +L1CrossDomainMessenger_Test:testCannot_L1MessengerPause() (gas: 24561) L1CrossDomainMessenger_Test:testCannot_L1MessengerUnpause() (gas: 24508) L1CrossDomainMessenger_Test:test_L1MessengerMessageVersion() (gas: 24725) -L1CrossDomainMessenger_Test:test_L1MessengerPause() (gas: 48039) -L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageSucceeds() (gas: 77772) -L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageToSystemContract() (gas: 67800) -L1CrossDomainMessenger_Test:test_L1MessengerRelayShouldRevertIfPaused() (gas: 60449) +L1CrossDomainMessenger_Test:test_L1MessengerPause() (gas: 48017) +L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageFirstStuckSecondSucceeds() (gas: 201762) +L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageSucceeds() (gas: 77784) +L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageToSystemContract() (gas: 67778) +L1CrossDomainMessenger_Test:test_L1MessengerRelayShouldRevertIfPaused() (gas: 60493) L1CrossDomainMessenger_Test:test_L1MessengerReplayMessageWithValue() (gas: 38127) L1CrossDomainMessenger_Test:test_L1MessengerSendMessage() (gas: 297767) L1CrossDomainMessenger_Test:test_L1MessengerTwiceSendMessage() (gas: 1490070) L1CrossDomainMessenger_Test:test_L1MessengerUnpause() (gas: 40889) L1CrossDomainMessenger_Test:test_L1MessengerXDomainSenderReverts() (gas: 24249) -L1CrossDomainMessenger_Test:test_L1MessengerxDomainMessageSenderResets() (gas: 86190) -L1StandardBridge_Test:test_depositERC20() (gas: 578889) -L1StandardBridge_Test:test_depositERC20To() (gas: 581070) -L1StandardBridge_Test:test_depositETH() (gas: 372910) +L1CrossDomainMessenger_Test:test_L1MessengerxDomainMessageSenderResets() (gas: 86168) +L1StandardBridge_Test:test_depositERC20() (gas: 578867) +L1StandardBridge_Test:test_depositERC20To() (gas: 581048) +L1StandardBridge_Test:test_depositETH() (gas: 372975) L1StandardBridge_Test:test_depositETHTo() (gas: 330097) L1StandardBridge_Test:test_finalizeERC20Withdrawal() (gas: 490759) -L1StandardBridge_Test:test_finalizeETHWithdrawal() (gas: 64431) -L1StandardBridge_Test:test_initialize() (gas: 26358) -L1StandardBridge_Test:test_onlyEOADepositERC20() (gas: 22319) -L1StandardBridge_Test:test_onlyEOADepositETH() (gas: 40838) -L1StandardBridge_Test:test_onlyL2BridgeFinalizeERC20Withdrawal() (gas: 36293) -L1StandardBridge_Test:test_onlyPortalFinalizeERC20Withdrawal() (gas: 35622) +L1StandardBridge_Test:test_finalizeETHWithdrawal() (gas: 64409) +L1StandardBridge_Test:test_initialize() (gas: 26336) +L1StandardBridge_Test:test_onlyEOADepositERC20() (gas: 22363) +L1StandardBridge_Test:test_onlyEOADepositETH() (gas: 40816) +L1StandardBridge_Test:test_onlyL2BridgeFinalizeERC20Withdrawal() (gas: 36271) +L1StandardBridge_Test:test_onlyPortalFinalizeERC20Withdrawal() (gas: 35600) L1StandardBridge_Test:test_receive() (gas: 519560) -L2CrossDomainMessenger_Test:testCannot_L2MessengerPause() (gas: 10822) -L2CrossDomainMessenger_Test:test_L2MessengerMessageVersion() (gas: 8499) -L2CrossDomainMessenger_Test:test_L2MessengerPause() (gas: 31816) -L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageSucceeds() (gas: 57331) -L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageToSystemContract() (gas: 36070) -L2CrossDomainMessenger_Test:test_L2MessengerRelayShouldRevertIfPaused() (gas: 41535) +L2CrossDomainMessenger_Test:testCannot_L2MessengerPause() (gas: 10823) +L2CrossDomainMessenger_Test:test_L2MessengerMessageVersion() (gas: 8455) +L2CrossDomainMessenger_Test:test_L2MessengerPause() (gas: 31772) +L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageFirstStuckSecondSucceeds() (gas: 173026) +L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageSucceeds() (gas: 57288) +L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageToSystemContract() (gas: 36115) +L2CrossDomainMessenger_Test:test_L2MessengerRelayShouldRevertIfPaused() (gas: 41578) L2CrossDomainMessenger_Test:test_L2MessengerSendMessage() (gas: 120536) L2CrossDomainMessenger_Test:test_L2MessengerTwiceSendMessage() (gas: 133720) -L2CrossDomainMessenger_Test:test_L2MessengerXDomainSenderReverts() (gas: 10598) -L2CrossDomainMessenger_Test:test_L2MessengerxDomainMessageSenderResets() (gas: 54732) -L2OutputOracleTest:testCannot_ProposeWithUnmatchedBlockhash() (gas: 26808) -L2OutputOracleTest:testCannot_deleteL2Output_ifNotOwner() (gas: 24866) -L2OutputOracleTest:testCannot_deleteL2Output_withWrongRoot() (gas: 91136) -L2OutputOracleTest:testCannot_deleteL2Output_withWrongTime() (gas: 87085) -L2OutputOracleTest:testCannot_proposeEmptyOutput() (gas: 24107) -L2OutputOracleTest:testCannot_proposeFutureTimetamp() (gas: 26031) -L2OutputOracleTest:testCannot_proposeL2OutputIfNotProposer() (gas: 23477) +L2CrossDomainMessenger_Test:test_L2MessengerXDomainSenderReverts() (gas: 10554) +L2CrossDomainMessenger_Test:test_L2MessengerxDomainMessageSenderResets() (gas: 54754) +L2OutputOracleTest:testCannot_ProposeWithUnmatchedBlockhash() (gas: 26786) +L2OutputOracleTest:testCannot_deleteL2Output_ifNotOwner() (gas: 24844) +L2OutputOracleTest:testCannot_deleteL2Output_withWrongRoot() (gas: 91114) +L2OutputOracleTest:testCannot_deleteL2Output_withWrongTime() (gas: 87108) +L2OutputOracleTest:testCannot_proposeEmptyOutput() (gas: 24085) +L2OutputOracleTest:testCannot_proposeFutureTimetamp() (gas: 26054) +L2OutputOracleTest:testCannot_proposeL2OutputIfNotProposer() (gas: 23521) L2OutputOracleTest:testCannot_proposeOnWrongFork() (gas: 26381) L2OutputOracleTest:testCannot_proposeUnexpectedBlockNumber() (gas: 25940) -L2OutputOracleTest:test_changeProposer() (gas: 56008) +L2OutputOracleTest:test_changeProposer() (gas: 55986) L2OutputOracleTest:test_computeL2Timestamp() (gas: 30200) -L2OutputOracleTest:test_constructor() (gas: 48902) -L2OutputOracleTest:test_deleteOutput() (gas: 76562) +L2OutputOracleTest:test_constructor() (gas: 48880) +L2OutputOracleTest:test_deleteOutput() (gas: 76544) L2OutputOracleTest:test_getL2Output() (gas: 82893) -L2OutputOracleTest:test_latestBlockNumber() (gas: 76177) +L2OutputOracleTest:test_latestBlockNumber() (gas: 76219) L2OutputOracleTest:test_nextBlockNumber() (gas: 15166) -L2OutputOracleTest:test_proposeWithBlockhashAndHeight() (gas: 75025) +L2OutputOracleTest:test_proposeWithBlockhashAndHeight() (gas: 75003) L2OutputOracleTest:test_proposingAnotherOutput() (gas: 76816) -L2OutputOracleTest:test_updateOwner() (gas: 34624) +L2OutputOracleTest:test_updateOwner() (gas: 34602) L2OutputOracleUpgradeable_Test:test_cannotInitImpl() (gas: 19451) -L2OutputOracleUpgradeable_Test:test_cannotInitProxy() (gas: 24472) +L2OutputOracleUpgradeable_Test:test_cannotInitProxy() (gas: 24450) L2OutputOracleUpgradeable_Test:test_initValuesOnProxy() (gas: 38899) L2OutputOracleUpgradeable_Test:test_upgrading() (gas: 230843) L2StandardBridge_Test:test_ERC20BridgeFailed_whenLocalTokenIsBridge() (gas: 133459) L2StandardBridge_Test:test_cannotWithdrawEthWithoutSendingIt() (gas: 21656) -L2StandardBridge_Test:test_finalizeDeposit() (gas: 93225) -L2StandardBridge_Test:test_finalizeDeposit_failsToCompleteOutboundTransfer() (gas: 140491) -L2StandardBridge_Test:test_initialize() (gas: 14824) +L2StandardBridge_Test:test_finalizeDeposit() (gas: 93203) +L2StandardBridge_Test:test_finalizeDeposit_failsToCompleteOutboundTransfer() (gas: 140469) +L2StandardBridge_Test:test_initialize() (gas: 14802) L2StandardBridge_Test:test_receive() (gas: 136864) -L2StandardBridge_Test:test_withdraw() (gas: 353038) -L2StandardBridge_Test:test_withdrawTo() (gas: 353723) +L2StandardBridge_Test:test_withdraw() (gas: 353020) +L2StandardBridge_Test:test_withdrawTo() (gas: 353705) L2StandardBridge_Test:test_withdraw_onlyEOA() (gas: 252006) -L2ToL1MessagePasserTest:test_burn() (gas: 112059) -L2ToL1MessagePasserTest:test_initiateWithdrawal_fromContract() (gas: 67847) +L2ToL1MessagePasserTest:test_burn() (gas: 112037) +L2ToL1MessagePasserTest:test_initiateWithdrawal_fromContract() (gas: 67892) L2ToL1MessagePasserTest:test_initiateWithdrawal_fromEOA() (gas: 74831) -LegacyERC20ETH_Test:test_approve() (gas: 10731) -LegacyERC20ETH_Test:test_burn() (gas: 10615) -LegacyERC20ETH_Test:test_crossDomain() (gas: 10599) +LegacyERC20ETH_Test:test_approve() (gas: 10796) +LegacyERC20ETH_Test:test_burn() (gas: 10681) +LegacyERC20ETH_Test:test_crossDomain() (gas: 10577) LegacyERC20ETH_Test:test_decreaseAllowance() (gas: 10731) -LegacyERC20ETH_Test:test_increaseAllowance() (gas: 10763) -LegacyERC20ETH_Test:test_metadata() (gas: 15608) +LegacyERC20ETH_Test:test_increaseAllowance() (gas: 10741) +LegacyERC20ETH_Test:test_metadata() (gas: 15586) LegacyERC20ETH_Test:test_mint() (gas: 10627) -LegacyERC20ETH_Test:test_transfer() (gas: 10762) +LegacyERC20ETH_Test:test_transfer() (gas: 10829) LegacyERC20ETH_Test:test_transferFrom() (gas: 13008) -OptimismMintableERC20_Test:test_bridge() (gas: 9850) -OptimismMintableERC20_Test:test_burn() (gas: 52791) -OptimismMintableERC20_Test:test_burnRevertsFromNotBridge() (gas: 13241) +OptimismMintableERC20_Test:test_bridge() (gas: 9828) +OptimismMintableERC20_Test:test_burn() (gas: 52773) +OptimismMintableERC20_Test:test_burnRevertsFromNotBridge() (gas: 13219) OptimismMintableERC20_Test:test_erc165_supportsInterface() (gas: 7828) -OptimismMintableERC20_Test:test_l1Token() (gas: 9757) -OptimismMintableERC20_Test:test_l2Bridge() (gas: 9768) +OptimismMintableERC20_Test:test_l1Token() (gas: 9824) +OptimismMintableERC20_Test:test_l2Bridge() (gas: 9746) OptimismMintableERC20_Test:test_mint() (gas: 65754) OptimismMintableERC20_Test:test_mintRevertsFromNotBridge() (gas: 13243) -OptimismMintableERC20_Test:test_remoteToken() (gas: 9762) -OptimismMintableTokenFactory_Test:test_bridge() (gas: 7598) +OptimismMintableERC20_Test:test_remoteToken() (gas: 9740) +OptimismMintableTokenFactory_Test:test_bridge() (gas: 7663) OptimismMintableTokenFactory_Test:test_createStandardL2Token() (gas: 1113150) OptimismMintableTokenFactory_Test:test_createStandardL2TokenSameTwice() (gas: 2209211) OptimismMintableTokenFactory_Test:test_createStandardL2TokenShouldRevertIfRemoteIsZero() (gas: 9399) OptimismPortalUpgradeable_Test:test_cannotInitImpl() (gas: 10686) -OptimismPortalUpgradeable_Test:test_cannotInitProxy() (gas: 15684) +OptimismPortalUpgradeable_Test:test_cannotInitProxy() (gas: 15662) OptimismPortalUpgradeable_Test:test_initValuesOnProxy() (gas: 15990) OptimismPortalUpgradeable_Test:test_upgrading() (gas: 230843) -OptimismPortal_Test:test_OptimismPortalConstructor() (gas: 17341) -OptimismPortal_Test:test_OptimismPortalContractCreationReverts() (gas: 14215) -OptimismPortal_Test:test_OptimismPortalReceiveEth() (gas: 126636) +OptimismPortal_Test:test_OptimismPortalConstructor() (gas: 17319) +OptimismPortal_Test:test_OptimismPortalContractCreationReverts() (gas: 14238) +OptimismPortal_Test:test_OptimismPortalReceiveEth() (gas: 126614) OptimismPortal_Test:test_cannotVerifyRecentWithdrawal() (gas: 31925) -OptimismPortal_Test:test_depositTransaction_NoValueContract() (gas: 75797) -OptimismPortal_Test:test_depositTransaction_NoValueEOA() (gas: 76121) +OptimismPortal_Test:test_depositTransaction_NoValueContract() (gas: 75820) +OptimismPortal_Test:test_depositTransaction_NoValueEOA() (gas: 76099) OptimismPortal_Test:test_depositTransaction_createWithZeroValueForContract() (gas: 75825) OptimismPortal_Test:test_depositTransaction_createWithZeroValueForEOA() (gas: 76146) OptimismPortal_Test:test_depositTransaction_withEthValueAndContractContractCreation() (gas: 82846) -OptimismPortal_Test:test_depositTransaction_withEthValueAndEOAContractCreation() (gas: 75029) -OptimismPortal_Test:test_depositTransaction_withEthValueFromContract() (gas: 82485) -OptimismPortal_Test:test_depositTransaction_withEthValueFromEOA() (gas: 83101) -OptimismPortal_Test:test_invalidWithdrawalProof() (gas: 45176) -OptimismPortal_Test:test_isOutputFinalized() (gas: 132184) -OptimismPortal_Test:test_simple_isOutputFinalized() (gas: 23978) +OptimismPortal_Test:test_depositTransaction_withEthValueAndEOAContractCreation() (gas: 75007) +OptimismPortal_Test:test_depositTransaction_withEthValueFromContract() (gas: 82550) +OptimismPortal_Test:test_depositTransaction_withEthValueFromEOA() (gas: 83145) +OptimismPortal_Test:test_invalidWithdrawalProof() (gas: 45154) +OptimismPortal_Test:test_isOutputFinalized() (gas: 132228) +OptimismPortal_Test:test_simple_isOutputFinalized() (gas: 24021) Proxy_Test:test_clashingFunctionSignatures() (gas: 101427) Proxy_Test:test_implementationKey() (gas: 20942) Proxy_Test:test_implementationProxyCallIfNotAdmin() (gas: 30021) -Proxy_Test:test_implementationZeroAddress() (gas: 48022) -Proxy_Test:test_itDelegatesToTheImplementation() (gas: 45184) -Proxy_Test:test_ownerKey() (gas: 19113) -Proxy_Test:test_ownerProxyCallIfNotAdmin() (gas: 34733) -Proxy_Test:test_payableUpgradeToAndCall() (gas: 53887) +Proxy_Test:test_implementationZeroAddress() (gas: 48000) +Proxy_Test:test_itDelegatesToTheImplementation() (gas: 45251) +Proxy_Test:test_ownerKey() (gas: 19091) +Proxy_Test:test_ownerProxyCallIfNotAdmin() (gas: 34711) +Proxy_Test:test_payableUpgradeToAndCall() (gas: 53865) Proxy_Test:test_revertUpgradeToAndCall() (gas: 104654) -Proxy_Test:test_upgradeToAndCall() (gas: 125238) -Proxy_Test:test_zeroAddressCaller() (gas: 14758) +Proxy_Test:test_upgradeToAndCall() (gas: 125305) +Proxy_Test:test_zeroAddressCaller() (gas: 14825) ProxyAdmin_Test:test_chugsplashChangeProxyAdmin() (gas: 35647) -ProxyAdmin_Test:test_chugsplashGetProxyAdmin() (gas: 15711) -ProxyAdmin_Test:test_chugsplashGetProxyImplementation() (gas: 51122) -ProxyAdmin_Test:test_chugsplashUpgrade() (gas: 48994) -ProxyAdmin_Test:test_chugsplashUpgradeAndCall() (gas: 82322) -ProxyAdmin_Test:test_delegateResolvedChangeProxyAdmin() (gas: 33976) -ProxyAdmin_Test:test_delegateResolvedGetProxyAdmin() (gas: 17685) +ProxyAdmin_Test:test_chugsplashGetProxyAdmin() (gas: 15689) +ProxyAdmin_Test:test_chugsplashGetProxyImplementation() (gas: 51167) +ProxyAdmin_Test:test_chugsplashUpgrade() (gas: 48972) +ProxyAdmin_Test:test_chugsplashUpgradeAndCall() (gas: 82345) +ProxyAdmin_Test:test_delegateResolvedChangeProxyAdmin() (gas: 34020) +ProxyAdmin_Test:test_delegateResolvedGetProxyAdmin() (gas: 17708) ProxyAdmin_Test:test_delegateResolvedGetProxyImplementation() (gas: 62016) -ProxyAdmin_Test:test_delegateResolvedUpgrade() (gas: 58422) -ProxyAdmin_Test:test_delegateResolvedUpgradeAndCall() (gas: 97948) +ProxyAdmin_Test:test_delegateResolvedUpgrade() (gas: 58466) +ProxyAdmin_Test:test_delegateResolvedUpgradeAndCall() (gas: 97926) ProxyAdmin_Test:test_erc1967ChangeProxyAdmin() (gas: 33863) ProxyAdmin_Test:test_erc1967GetProxyAdmin() (gas: 15672) -ProxyAdmin_Test:test_erc1967GetProxyImplementation() (gas: 52124) +ProxyAdmin_Test:test_erc1967GetProxyImplementation() (gas: 52102) ProxyAdmin_Test:test_erc1967Upgrade() (gas: 50036) ProxyAdmin_Test:test_erc1967UpgradeAndCall() (gas: 79019) -ProxyAdmin_Test:test_isUpgrading() (gas: 19530) +ProxyAdmin_Test:test_isUpgrading() (gas: 19575) ProxyAdmin_Test:test_onlyOwner() (gas: 22715) -ProxyAdmin_Test:test_onlyOwnerSetAddressManager() (gas: 10622) -ProxyAdmin_Test:test_onlyOwnerSetImplementationName() (gas: 11135) +ProxyAdmin_Test:test_onlyOwnerSetAddressManager() (gas: 10600) +ProxyAdmin_Test:test_onlyOwnerSetImplementationName() (gas: 11113) ProxyAdmin_Test:test_onlyOwnerSetProxyType() (gas: 10751) -ProxyAdmin_Test:test_owner() (gas: 9776) +ProxyAdmin_Test:test_owner() (gas: 9818) ProxyAdmin_Test:test_proxyType() (gas: 20622) -ProxyAdmin_Test:test_setImplementationName() (gas: 38957) +ProxyAdmin_Test:test_setImplementationName() (gas: 39002) RLPReader_Test:testReadBool() (gas: 1109) RLPReader_Test:test_readAddress() (gas: 1347) RLPReader_Test:test_readAddressSmall() (gas: 614) RLPReader_Test:test_readAddressTooLarge() (gas: 3646) -RLPReader_Test:test_readAddressTooShort() (gas: 3625) -RLPReader_Test:test_readBoolInvalidValue() (gas: 3699) -RLPReader_Test:test_readBoolLargeInput() (gas: 3572) -RLPReader_Test:test_readBytes32_revertOnList() (gas: 4020) -RLPReader_Test:test_readBytes32_revertOnTooLong() (gas: 3610) -RLPReader_Test:test_readBytes_bytestring00() (gas: 1845) +RLPReader_Test:test_readAddressTooShort() (gas: 3603) +RLPReader_Test:test_readBoolInvalidValue() (gas: 3677) +RLPReader_Test:test_readBoolLargeInput() (gas: 3550) +RLPReader_Test:test_readBytes32_revertOnList() (gas: 3998) +RLPReader_Test:test_readBytes32_revertOnTooLong() (gas: 3588) +RLPReader_Test:test_readBytes_bytestring00() (gas: 1823) RLPReader_Test:test_readBytes_bytestring01() (gas: 1846) -RLPReader_Test:test_readBytes_bytestring7f() (gas: 1779) -RLPReader_Test:test_readBytes_invalidListLength() (gas: 3834) -RLPReader_Test:test_readBytes_invalidStringLength() (gas: 3790) -RLPReader_Test:test_readBytes_revertListItem() (gas: 3944) +RLPReader_Test:test_readBytes_bytestring7f() (gas: 1844) +RLPReader_Test:test_readBytes_invalidListLength() (gas: 3812) +RLPReader_Test:test_readBytes_invalidStringLength() (gas: 3768) +RLPReader_Test:test_readBytes_revertListItem() (gas: 3922) RLPReader_Test:test_readList_dictTest1() (gas: 23791) RLPReader_Test:test_readList_empty() (gas: 4472) RLPReader_Test:test_readList_incorrectLengthInArray() (gas: 4210) RLPReader_Test:test_readList_int32Overflow() (gas: 3955) -RLPReader_Test:test_readList_int32Overflow2() (gas: 3998) -RLPReader_Test:test_readList_invalidShortList() (gas: 3788) +RLPReader_Test:test_readList_int32Overflow2() (gas: 4021) +RLPReader_Test:test_readList_invalidShortList() (gas: 3855) RLPReader_Test:test_readList_invalidValue() (gas: 3787) -RLPReader_Test:test_readList_leadingZerosInLongLengthArray1() (gas: 4215) -RLPReader_Test:test_readList_leadingZerosInLongLengthArray2() (gas: 4199) -RLPReader_Test:test_readList_leadingZerosInLongLengthList1() (gas: 38582) -RLPReader_Test:test_readList_listOfLists() (gas: 9641) -RLPReader_Test:test_readList_listOfLists2() (gas: 12456) +RLPReader_Test:test_readList_leadingZerosInLongLengthArray1() (gas: 4193) +RLPReader_Test:test_readList_leadingZerosInLongLengthArray2() (gas: 4177) +RLPReader_Test:test_readList_leadingZerosInLongLengthList1() (gas: 38560) +RLPReader_Test:test_readList_listOfLists() (gas: 9619) +RLPReader_Test:test_readList_listOfLists2() (gas: 12479) RLPReader_Test:test_readList_longList1() (gas: 29013) -RLPReader_Test:test_readList_longList2() (gas: 202917) -RLPReader_Test:test_readList_longStringLength() (gas: 3787) -RLPReader_Test:test_readList_multiList() (gas: 11961) -RLPReader_Test:test_readList_nonOptimalLongLengthArray1() (gas: 4222) +RLPReader_Test:test_readList_longList2() (gas: 202895) +RLPReader_Test:test_readList_longStringLength() (gas: 3853) +RLPReader_Test:test_readList_multiList() (gas: 12025) +RLPReader_Test:test_readList_nonOptimalLongLengthArray1() (gas: 4200) RLPReader_Test:test_readList_nonOptimalLongLengthArray2() (gas: 4223) -RLPReader_Test:test_readList_notLongEnough() (gas: 3863) -RLPReader_Test:test_readList_shortListMax1() (gas: 40596) -RLPReader_Test:test_readList_stringList() (gas: 16818) +RLPReader_Test:test_readList_notLongEnough() (gas: 3841) +RLPReader_Test:test_readList_shortListMax1() (gas: 40662) +RLPReader_Test:test_readList_stringList() (gas: 16796) RLPReader_Test:test_readString_emptyString() (gas: 1719) -RLPReader_Test:test_readString_longString() (gas: 3098) -RLPReader_Test:test_readString_longString2() (gas: 18546) -RLPReader_Test:test_readString_shortString() (gas: 2302) +RLPReader_Test:test_readString_longString() (gas: 3076) +RLPReader_Test:test_readString_longString2() (gas: 18524) +RLPReader_Test:test_readString_shortString() (gas: 2280) RLPReader_Test:test_readString_shortString2() (gas: 2775) -RLPReader_Test:test_readUint256_mediumInt1() (gas: 1257) +RLPReader_Test:test_readUint256_mediumInt1() (gas: 1235) RLPReader_Test:test_readUint256_mediumInt2() (gas: 1237) RLPReader_Test:test_readUint256_mediumInt3() (gas: 1238) -RLPReader_Test:test_readUint256_smallInt() (gas: 1106) +RLPReader_Test:test_readUint256_smallInt() (gas: 1084) RLPReader_Test:test_readUint256_smallInt2() (gas: 1151) -RLPReader_Test:test_readUint256_smallInt3() (gas: 1104) -RLPReader_Test:test_readUint256_smallInt4() (gas: 1150) +RLPReader_Test:test_readUint256_smallInt3() (gas: 1127) +RLPReader_Test:test_readUint256_smallInt4() (gas: 1128) RLPReader_Test:test_readUint256_zero() (gas: 1258) -RLPWriter_Test:test_writeList_dictTest1() (gas: 37170) -RLPWriter_Test:test_writeList_empty() (gas: 1773) -RLPWriter_Test:test_writeList_listoflists() (gas: 10991) +RLPWriter_Test:test_writeList_dictTest1() (gas: 37148) +RLPWriter_Test:test_writeList_empty() (gas: 1751) +RLPWriter_Test:test_writeList_listoflists() (gas: 10969) RLPWriter_Test:test_writeList_listoflists2() (gas: 16779) RLPWriter_Test:test_writeList_longlist1() (gas: 40730) -RLPWriter_Test:test_writeList_longlist2() (gas: 283255) -RLPWriter_Test:test_writeList_multiList() (gas: 22682) +RLPWriter_Test:test_writeList_longlist2() (gas: 283278) +RLPWriter_Test:test_writeList_multiList() (gas: 22660) RLPWriter_Test:test_writeList_shortListMax1() (gas: 36985) RLPWriter_Test:test_writeList_stringList() (gas: 10786) -RLPWriter_Test:test_writeString_bytestring00() (gas: 978) -RLPWriter_Test:test_writeString_bytestring01() (gas: 1000) +RLPWriter_Test:test_writeString_bytestring00() (gas: 1022) +RLPWriter_Test:test_writeString_bytestring01() (gas: 978) RLPWriter_Test:test_writeString_bytestring7f() (gas: 1002) -RLPWriter_Test:test_writeString_empty() (gas: 1659) -RLPWriter_Test:test_writeString_longstring() (gas: 17135) -RLPWriter_Test:test_writeString_longstring2() (gas: 261886) +RLPWriter_Test:test_writeString_empty() (gas: 1704) +RLPWriter_Test:test_writeString_longstring() (gas: 17180) +RLPWriter_Test:test_writeString_longstring2() (gas: 261864) RLPWriter_Test:test_writeString_shortstring() (gas: 2544) RLPWriter_Test:test_writeString_shortstring2() (gas: 15563) -RLPWriter_Test:test_writeUint_mediumint() (gas: 8452) +RLPWriter_Test:test_writeUint_mediumint() (gas: 8430) RLPWriter_Test:test_writeUint_mediumint2() (gas: 8780) RLPWriter_Test:test_writeUint_mediumint3() (gas: 9189) RLPWriter_Test:test_writeUint_smallint() (gas: 7350) RLPWriter_Test:test_writeUint_smallint2() (gas: 7352) RLPWriter_Test:test_writeUint_smallint3() (gas: 7372) -RLPWriter_Test:test_writeUint_smallint4() (gas: 7373) +RLPWriter_Test:test_writeUint_smallint4() (gas: 7351) RLPWriter_Test:test_writeUint_zero() (gas: 7798) -ResourceMetering_Test:test_initialResourceParams() (gas: 8986) +ResourceMetering_Test:test_initialResourceParams() (gas: 8964) ResourceMetering_Test:test_updateNoGasDelta() (gas: 2008317) -ResourceMetering_Test:test_updateOneEmptyBlock() (gas: 18126) +ResourceMetering_Test:test_updateOneEmptyBlock() (gas: 18171) ResourceMetering_Test:test_updateParamsNoChange() (gas: 13956) -ResourceMetering_Test:test_updateTenEmptyBlocks() (gas: 20593) +ResourceMetering_Test:test_updateTenEmptyBlocks() (gas: 20571) ResourceMetering_Test:test_updateTwoEmptyBlocks() (gas: 20594) -ResourceMetering_Test:test_useMaxSucceeds() (gas: 8017109) -ResourceMetering_Test:test_useMoreThanMaxReverts() (gas: 16069) -Semver_Test:test_behindProxy() (gas: 504930) -Semver_Test:test_major() (gas: 5428) +ResourceMetering_Test:test_useMaxSucceeds() (gas: 8017087) +ResourceMetering_Test:test_useMoreThanMaxReverts() (gas: 16047) +Semver_Test:test_behindProxy() (gas: 504908) +Semver_Test:test_major() (gas: 5406) Semver_Test:test_minor() (gas: 5430) -Semver_Test:test_patch() (gas: 5386) -SequencerFeeVault_Test:test_constructor() (gas: 7611) -SequencerFeeVault_Test:test_minWithdrawalAmount() (gas: 5429) +Semver_Test:test_patch() (gas: 5364) +SequencerFeeVault_Test:test_constructor() (gas: 7656) +SequencerFeeVault_Test:test_minWithdrawalAmount() (gas: 5407) SequencerFeeVault_Test:test_receive() (gas: 17338) -SequencerFeeVault_Test:test_revertWithdraw() (gas: 9267) -SequencerFeeVault_Test:test_withdraw() (gas: 147604) +SequencerFeeVault_Test:test_revertWithdraw() (gas: 9332) +SequencerFeeVault_Test:test_withdraw() (gas: 147582) diff --git a/packages/contracts-bedrock/contracts/test/CommonTest.t.sol b/packages/contracts-bedrock/contracts/test/CommonTest.t.sol index c5efa55b8a7a7..0bab742510273 100644 --- a/packages/contracts-bedrock/contracts/test/CommonTest.t.sol +++ b/packages/contracts-bedrock/contracts/test/CommonTest.t.sol @@ -413,3 +413,9 @@ contract NextImpl is Initializable { slot21 = slot21Init; } } + +contract Reverter { + fallback() external { + revert(); + } +} diff --git a/packages/contracts-bedrock/contracts/test/L1CrossDomainMessenger.t.sol b/packages/contracts-bedrock/contracts/test/L1CrossDomainMessenger.t.sol index 6b6bf614f7147..db0e70c4be863 100644 --- a/packages/contracts-bedrock/contracts/test/L1CrossDomainMessenger.t.sol +++ b/packages/contracts-bedrock/contracts/test/L1CrossDomainMessenger.t.sol @@ -2,7 +2,7 @@ pragma solidity 0.8.10; /* Testing utilities */ -import { Messenger_Initializer } from "./CommonTest.t.sol"; +import { Messenger_Initializer, Reverter } from "./CommonTest.t.sol"; import { L2OutputOracle_Initializer } from "./L2OutputOracle.t.sol"; /* Libraries */ @@ -215,4 +215,55 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer { vm.expectRevert("Pausable: paused"); L1Messenger.relayMessage(0, address(0), address(0), 0, 0, hex""); } + + // relayMessage: should send a successful call to the target contract after the first message + // fails and ETH gets stuck, but the second message succeeds + function test_L1MessengerRelayMessageFirstStuckSecondSucceeds() external { + address target = address(0xabcd); + address sender = PredeployAddresses.L2_CROSS_DOMAIN_MESSENGER; + uint256 value = 100; + + vm.expectCall(target, hex"1111"); + + bytes32 hash = Hashing.hashCrossDomainMessage(0, sender, target, value, 0, hex"1111"); + + uint256 senderSlotIndex = 51; + vm.store(address(op), bytes32(senderSlotIndex), bytes32(abi.encode(sender))); + vm.etch(target, address(new Reverter()).code); + vm.deal(address(op), value); + vm.prank(address(op)); + L1Messenger.relayMessage{value: value}( + 0, // nonce + sender, + target, + value, + 0, + hex"1111" + ); + + assertEq(address(L1Messenger).balance, value); + assertEq(address(target).balance, 0); + assertEq(L1Messenger.successfulMessages(hash), false); + assertEq(L1Messenger.receivedMessages(hash), true); + + vm.expectEmit(true, true, true, true); + + emit RelayedMessage(hash); + + vm.etch(target, address(0).code); + vm.prank(address(sender)); + L1Messenger.relayMessage( + 0, // nonce + sender, + target, + value, + 0, + hex"1111" + ); + + assertEq(address(L1Messenger).balance, 0); + assertEq(address(target).balance, value); + assertEq(L1Messenger.successfulMessages(hash), true); + assertEq(L1Messenger.receivedMessages(hash), true); + } } diff --git a/packages/contracts-bedrock/contracts/test/L2CrossDomainMessenger.t.sol b/packages/contracts-bedrock/contracts/test/L2CrossDomainMessenger.t.sol index f8381e08b1401..84c086b9ad206 100644 --- a/packages/contracts-bedrock/contracts/test/L2CrossDomainMessenger.t.sol +++ b/packages/contracts-bedrock/contracts/test/L2CrossDomainMessenger.t.sol @@ -1,7 +1,7 @@ //SPDX-License-Identifier: MIT pragma solidity 0.8.10; -import { Messenger_Initializer } from "./CommonTest.t.sol"; +import { Messenger_Initializer, Reverter } from "./CommonTest.t.sol"; import { AddressAliasHelper } from "../vendor/AddressAliasHelper.sol"; import { L2ToL1MessagePasser } from "../L2/L2ToL1MessagePasser.sol"; @@ -164,4 +164,52 @@ contract L2CrossDomainMessenger_Test is Messenger_Initializer { vm.expectRevert("Pausable: paused"); L2Messenger.relayMessage(0, address(0), address(0), 0, 0, hex""); } + + // relayMessage: should send a successful call to the target contract after the first message + // fails and ETH gets stuck, but the second message succeeds + function test_L2MessengerRelayMessageFirstStuckSecondSucceeds() external { + address target = address(0xabcd); + address sender = address(L1Messenger); + address caller = AddressAliasHelper.applyL1ToL2Alias(address(L1Messenger)); + uint256 value = 100; + + bytes32 hash = Hashing.hashCrossDomainMessage(0, sender, target, value, 0, hex"1111"); + + vm.etch(target, address(new Reverter()).code); + vm.deal(address(caller), value); + vm.prank(caller); + L2Messenger.relayMessage{value: value}( + 0, // nonce + sender, + target, + value, + 0, + hex"1111" + ); + + assertEq(address(L2Messenger).balance, value); + assertEq(address(target).balance, 0); + assertEq(L2Messenger.successfulMessages(hash), false); + assertEq(L2Messenger.receivedMessages(hash), true); + + vm.expectEmit(true, true, true, true); + + emit RelayedMessage(hash); + + vm.etch(target, address(0).code); + vm.prank(address(sender)); + L2Messenger.relayMessage( + 0, // nonce + sender, + target, + value, + 0, + hex"1111" + ); + + assertEq(address(L2Messenger).balance, 0); + assertEq(address(target).balance, value); + assertEq(L2Messenger.successfulMessages(hash), true); + assertEq(L2Messenger.receivedMessages(hash), true); + } }