Commit 0043cbec authored by mergify[bot]'s avatar mergify[bot] Committed by GitHub

Merge pull request #4329 from ethereum-optimism/sc/ctb-fix-portal-gas

feat(ctb): update portal gas amount
parents 9ee4f3d7 5bb91e51
This diff is collapsed.
This diff is collapsed.
...@@ -13,9 +13,9 @@ CrossDomainOwnableThroughPortal_Test:test_depositTransaction_crossDomainOwner_su ...@@ -13,9 +13,9 @@ CrossDomainOwnableThroughPortal_Test:test_depositTransaction_crossDomainOwner_su
CrossDomainOwnable_Test:test_onlyOwner_notOwner_reverts() (gas: 10530) CrossDomainOwnable_Test:test_onlyOwner_notOwner_reverts() (gas: 10530)
CrossDomainOwnable_Test:test_onlyOwner_succeeds() (gas: 34861) CrossDomainOwnable_Test:test_onlyOwner_succeeds() (gas: 34861)
CrossDomainOwnable2_Test:test_onlyOwner_notMessenger_reverts() (gas: 8416) CrossDomainOwnable2_Test:test_onlyOwner_notMessenger_reverts() (gas: 8416)
CrossDomainOwnable2_Test:test_onlyOwner_notOwner2_reverts() (gas: 61733) CrossDomainOwnable2_Test:test_onlyOwner_notOwner2_reverts() (gas: 61776)
CrossDomainOwnable2_Test:test_onlyOwner_notOwner_reverts() (gas: 16588) CrossDomainOwnable2_Test:test_onlyOwner_notOwner_reverts() (gas: 16610)
CrossDomainOwnable2_Test:test_onlyOwner_succeeds() (gas: 77782) CrossDomainOwnable2_Test:test_onlyOwner_succeeds() (gas: 77804)
DeployerWhitelist_Test:test_owner_succeeds() (gas: 7538) DeployerWhitelist_Test:test_owner_succeeds() (gas: 7538)
DeployerWhitelist_Test:test_storageSlots_succeeds() (gas: 33395) DeployerWhitelist_Test:test_storageSlots_succeeds() (gas: 33395)
FeeVault_Test:test_constructor_succeeds() (gas: 10601) FeeVault_Test:test_constructor_succeeds() (gas: 10601)
...@@ -38,11 +38,11 @@ L1BlockNumberTest:test_fallback_succeeds() (gas: 18633) ...@@ -38,11 +38,11 @@ L1BlockNumberTest:test_fallback_succeeds() (gas: 18633)
L1BlockNumberTest:test_getL1BlockNumber_succeeds() (gas: 10603) L1BlockNumberTest:test_getL1BlockNumber_succeeds() (gas: 10603)
L1BlockNumberTest:test_receive_succeeds() (gas: 25340) L1BlockNumberTest:test_receive_succeeds() (gas: 25340)
L1CrossDomainMessenger_Test:test_messageVersion_succeeds() (gas: 24716) L1CrossDomainMessenger_Test:test_messageVersion_succeeds() (gas: 24716)
L1CrossDomainMessenger_Test:test_pause_callerIsNotOwner_reverts() (gas: 24539) L1CrossDomainMessenger_Test:test_pause_callerIsNotOwner_reverts() (gas: 24561)
L1CrossDomainMessenger_Test:test_pause_succeeds() (gas: 52964) L1CrossDomainMessenger_Test:test_pause_succeeds() (gas: 53008)
L1CrossDomainMessenger_Test:test_relayMessage_paused_reverts() (gas: 60498) L1CrossDomainMessenger_Test:test_relayMessage_paused_reverts() (gas: 60520)
L1CrossDomainMessenger_Test:test_relayMessage_reentrancy_reverts() (gas: 190881) L1CrossDomainMessenger_Test:test_relayMessage_reentrancy_reverts() (gas: 190902)
L1CrossDomainMessenger_Test:test_relayMessage_retryAfterFailure_succeeds() (gas: 197235) L1CrossDomainMessenger_Test:test_relayMessage_retryAfterFailure_succeeds() (gas: 197256)
L1CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 73617) L1CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 73617)
L1CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 65858) L1CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 65858)
L1CrossDomainMessenger_Test:test_relayMessage_v0_reverts() (gas: 33214) L1CrossDomainMessenger_Test:test_relayMessage_v0_reverts() (gas: 33214)
...@@ -50,9 +50,9 @@ L1CrossDomainMessenger_Test:test_replayMessage_withValue_reverts() (gas: 38214) ...@@ -50,9 +50,9 @@ L1CrossDomainMessenger_Test:test_replayMessage_withValue_reverts() (gas: 38214)
L1CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 299523) L1CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 299523)
L1CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 1490457) L1CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 1490457)
L1CrossDomainMessenger_Test:test_unpause_callerIsNotOwner_reverts() (gas: 24472) L1CrossDomainMessenger_Test:test_unpause_callerIsNotOwner_reverts() (gas: 24472)
L1CrossDomainMessenger_Test:test_unpause_succeeds() (gas: 45149) L1CrossDomainMessenger_Test:test_unpause_succeeds() (gas: 45202)
L1CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 84036) L1CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 84080)
L1CrossDomainMessenger_Test:test_xDomainSender_notSet_reverts() (gas: 24252) L1CrossDomainMessenger_Test:test_xDomainSender_notSet_reverts() (gas: 24274)
L1StandardBridge_DepositERC20To_Test:test_depositERC20To_succeeds() (gas: 575962) L1StandardBridge_DepositERC20To_Test:test_depositERC20To_succeeds() (gas: 575962)
L1StandardBridge_DepositERC20_Test:test_depositERC20_succeeds() (gas: 573786) L1StandardBridge_DepositERC20_Test:test_depositERC20_succeeds() (gas: 573786)
L1StandardBridge_DepositERC20_TestFail:test_depositERC20_notEoa_reverts() (gas: 22320) L1StandardBridge_DepositERC20_TestFail:test_depositERC20_notEoa_reverts() (gas: 22320)
...@@ -70,18 +70,18 @@ L1StandardBridge_Getter_Test:test_getters_succeeds() (gas: 31449) ...@@ -70,18 +70,18 @@ L1StandardBridge_Getter_Test:test_getters_succeeds() (gas: 31449)
L1StandardBridge_Initialize_Test:test_initialize_succeeds() (gas: 22005) L1StandardBridge_Initialize_Test:test_initialize_succeeds() (gas: 22005)
L1StandardBridge_Receive_Test:test_receive_succeeds() (gas: 514475) L1StandardBridge_Receive_Test:test_receive_succeeds() (gas: 514475)
L2CrossDomainMessenger_Test:test_messageVersion_succeeds() (gas: 8367) L2CrossDomainMessenger_Test:test_messageVersion_succeeds() (gas: 8367)
L2CrossDomainMessenger_Test:test_pause_notOwner_reverts() (gas: 10859) L2CrossDomainMessenger_Test:test_pause_notOwner_reverts() (gas: 10881)
L2CrossDomainMessenger_Test:test_pause_succeeds() (gas: 31846) L2CrossDomainMessenger_Test:test_pause_succeeds() (gas: 31823)
L2CrossDomainMessenger_Test:test_relayMessage_paused_reverts() (gas: 41596) L2CrossDomainMessenger_Test:test_relayMessage_paused_reverts() (gas: 41618)
L2CrossDomainMessenger_Test:test_relayMessage_reentrancy_reverts() (gas: 167766) L2CrossDomainMessenger_Test:test_relayMessage_reentrancy_reverts() (gas: 167787)
L2CrossDomainMessenger_Test:test_relayMessage_retry_succeeds() (gas: 168292) L2CrossDomainMessenger_Test:test_relayMessage_retry_succeeds() (gas: 168313)
L2CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 53183) L2CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 53183)
L2CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 36194) L2CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 36194)
L2CrossDomainMessenger_Test:test_relayMessage_v0_reverts() (gas: 18870) L2CrossDomainMessenger_Test:test_relayMessage_v0_reverts() (gas: 18870)
L2CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 122533) L2CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 122533)
L2CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 134671) L2CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 134671)
L2CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 52594) L2CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 52638)
L2CrossDomainMessenger_Test:test_xDomainSender_senderNotSet_reverts() (gas: 10524) L2CrossDomainMessenger_Test:test_xDomainSender_senderNotSet_reverts() (gas: 10546)
L2OutputOracleTest:test_computeL2Timestamp_succeeds() (gas: 37184) L2OutputOracleTest:test_computeL2Timestamp_succeeds() (gas: 37184)
L2OutputOracleTest:test_constructor_badTimestamp_reverts() (gas: 70717) L2OutputOracleTest:test_constructor_badTimestamp_reverts() (gas: 70717)
L2OutputOracleTest:test_constructor_succeeds() (gas: 33760) L2OutputOracleTest:test_constructor_succeeds() (gas: 33760)
...@@ -177,10 +177,10 @@ OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifWith ...@@ -177,10 +177,10 @@ OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifWith
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifWithdrawalProofNotOldEnough_reverts() (gas: 196155) OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifWithdrawalProofNotOldEnough_reverts() (gas: 196155)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onInsufficientGas_reverts() (gas: 196877) OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onInsufficientGas_reverts() (gas: 196877)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onRecentWithdrawal_reverts() (gas: 176869) OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onRecentWithdrawal_reverts() (gas: 176869)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReentrancy_reverts() (gas: 235239) OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReentrancy_reverts() (gas: 235280)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReplay_reverts() (gas: 236849) OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReplay_reverts() (gas: 236890)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_provenWithdrawalHash_succeeds() (gas: 228530) OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_provenWithdrawalHash_succeeds() (gas: 228571)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_targetFails_fails() (gas: 331166) OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_targetFails_fails() (gas: 8797746687696163587)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_timestampLessThanL2OracleStart_reverts() (gas: 192879) OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_timestampLessThanL2OracleStart_reverts() (gas: 192879)
OptimismPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_onInvalidOutputRootProof_reverts() (gas: 83498) OptimismPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_onInvalidOutputRootProof_reverts() (gas: 83498)
OptimismPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_onInvalidWithdrawalProof_reverts() (gas: 135228) OptimismPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_onInvalidWithdrawalProof_reverts() (gas: 135228)
......
...@@ -306,7 +306,12 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver { ...@@ -306,7 +306,12 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver {
// Trigger the call to the target contract. We use SafeCall because we don't // Trigger the call to the target contract. We use SafeCall because we don't
// care about the returndata and we don't want target contracts to be able to force this // care about the returndata and we don't want target contracts to be able to force this
// call to run out of gas via a returndata bomb. // call to run out of gas via a returndata bomb.
bool success = SafeCall.call(_tx.target, _tx.gasLimit, _tx.value, _tx.data); bool success = SafeCall.call(
_tx.target,
gasleft() - FINALIZE_GAS_BUFFER,
_tx.value,
_tx.data
);
// Reset the l2Sender back to the default value. // Reset the l2Sender back to the default value.
l2Sender = DEFAULT_L2_SENDER; l2Sender = DEFAULT_L2_SENDER;
......
...@@ -70,6 +70,14 @@ abstract contract CrossDomainMessenger is ...@@ -70,6 +70,14 @@ abstract contract CrossDomainMessenger is
*/ */
uint64 public constant MIN_GAS_CALLDATA_OVERHEAD = 16; uint64 public constant MIN_GAS_CALLDATA_OVERHEAD = 16;
/**
* @notice Address to use when estimating gas for a message where the minimum gas limit on the
* message would not be sufficient to successfully execute the message. We use
* address(1) because we want to guarantee that the estimation address will never have
* code and address(1) is the ecrecover precompile on all EVM-equivalent chains.
*/
address public constant ESTIMATION_ADDRESS = address(1);
/** /**
* @notice Minimum amount of gas required to relay a message. * @notice Minimum amount of gas required to relay a message.
*/ */
...@@ -329,6 +337,15 @@ abstract contract CrossDomainMessenger is ...@@ -329,6 +337,15 @@ abstract contract CrossDomainMessenger is
} else { } else {
receivedMessages[versionedHash] = true; receivedMessages[versionedHash] = true;
emit FailedRelayedMessage(versionedHash); emit FailedRelayedMessage(versionedHash);
// Revert in this case if the transaction was triggered by the estimation address. This
// should only be possible during gas estimation or we have bigger problems. Reverting
// here will make the behavior of gas estimation change such that the gas limit
// computed will be the amount required to relay the message, even if that amount is
// greater than the minimum gas limit specified by the user.
if (tx.origin == ESTIMATION_ADDRESS) {
revert("CrossDomainMessenger: failed to relay message");
}
} }
} }
......
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