Commit 301b518b authored by smartcontracts's avatar smartcontracts Committed by GitHub

test(ctb): add test for stuck ETH on failed msg (#3029)

Adds a test that ETH gets properly stuck in the CrossDomainMessenger
contracts but then is unstuck when the message is replayed.
Co-authored-by: default avatarMark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: default avatarMaurelian <maurelian@protonmail.ch>
Co-authored-by: default avatarmergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
parent 177a9ea8
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)
......@@ -413,3 +413,9 @@ contract NextImpl is Initializable {
slot21 = slot21Init;
}
}
contract Reverter {
fallback() external {
revert();
}
}
......@@ -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);
}
}
//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);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment