Commit 7d68f82f authored by smartcontracts's avatar smartcontracts Committed by GitHub

feat(ctb): introduce extra data event to XDM (#3066)

Introduces a new SentMessageExtraData event to the CrossDomainMessenger
base contract. We need this event so that we can properly find all
relevant message data in the SDK. SDK cannot function without this
event. We also cannot add to the old SentMessage event without breaking
the ABI of our contract, so we're stuck adding an extra data event.
parent 82d47b70
---
'@eth-optimism/contracts-bedrock': patch
---
Adds a new event SentMessageExtension1 to the CrossDomainMessenger contract. Includes additional data that's being attached to messages sent after the Bedrock upgrade.
GasBenchMark_L1CrossDomainMessenger:test_L1MessengerSendMessage_benchmark_0() (gas: 262012) GasBenchMark_L1CrossDomainMessenger:test_L1MessengerSendMessage_benchmark_0() (gas: 263435)
GasBenchMark_L1CrossDomainMessenger:test_L1MessengerSendMessage_benchmark_1() (gas: 76172) GasBenchMark_L1CrossDomainMessenger:test_L1MessengerSendMessage_benchmark_1() (gas: 77595)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 352984) GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 354407)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 117162) GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 118585)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 353006) GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 354429)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 117137) GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 118560)
GasBenchMark_L1StandardBridge_Finalize:test_finalizeETHWithdrawal_benchmark() (gas: 45432) GasBenchMark_L1StandardBridge_Finalize:test_finalizeETHWithdrawal_benchmark() (gas: 45432)
GasBenchMark_L2OutputOracle:test_proposeL2Output_benchmark() (gas: 68671) GasBenchMark_L2OutputOracle:test_proposeL2Output_benchmark() (gas: 68671)
GasBenchMark_OptimismPortal:test_depositTransaction_benchmark() (gas: 74964) GasBenchMark_OptimismPortal:test_depositTransaction_benchmark() (gas: 74964)
...@@ -43,16 +43,16 @@ L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageSucceeds() (gas: 77841) ...@@ -43,16 +43,16 @@ L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageSucceeds() (gas: 77841)
L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageToSystemContract() (gas: 67957) L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageToSystemContract() (gas: 67957)
L1CrossDomainMessenger_Test:test_L1MessengerRelayShouldRevertIfPaused() (gas: 60463) L1CrossDomainMessenger_Test:test_L1MessengerRelayShouldRevertIfPaused() (gas: 60463)
L1CrossDomainMessenger_Test:test_L1MessengerReplayMessageWithValue() (gas: 38169) L1CrossDomainMessenger_Test:test_L1MessengerReplayMessageWithValue() (gas: 38169)
L1CrossDomainMessenger_Test:test_L1MessengerSendMessage() (gas: 298226) L1CrossDomainMessenger_Test:test_L1MessengerSendMessage() (gas: 301583)
L1CrossDomainMessenger_Test:test_L1MessengerTwiceSendMessage() (gas: 1489724) L1CrossDomainMessenger_Test:test_L1MessengerTwiceSendMessage() (gas: 1492570)
L1CrossDomainMessenger_Test:test_L1MessengerUnpause() (gas: 40872) L1CrossDomainMessenger_Test:test_L1MessengerUnpause() (gas: 40872)
L1CrossDomainMessenger_Test:test_L1MessengerXDomainSenderReverts() (gas: 24316) L1CrossDomainMessenger_Test:test_L1MessengerXDomainSenderReverts() (gas: 24316)
L1CrossDomainMessenger_Test:test_L1MessengerxDomainMessageSenderResets() (gas: 86376) L1CrossDomainMessenger_Test:test_L1MessengerxDomainMessageSenderResets() (gas: 86376)
L1StandardBridge_Test:test_depositERC20() (gas: 578067) L1StandardBridge_Test:test_depositERC20() (gas: 579490)
L1StandardBridge_Test:test_depositERC20To() (gas: 580274) L1StandardBridge_Test:test_depositERC20To() (gas: 581697)
L1StandardBridge_Test:test_depositETH() (gas: 372525) L1StandardBridge_Test:test_depositETH() (gas: 373948)
L1StandardBridge_Test:test_depositETHTo() (gas: 329661) L1StandardBridge_Test:test_depositETHTo() (gas: 331084)
L1StandardBridge_Test:test_finalizeBridgeERC20FailSendBack() (gas: 680307) L1StandardBridge_Test:test_finalizeBridgeERC20FailSendBack() (gas: 681445)
L1StandardBridge_Test:test_finalizeERC20Withdrawal() (gas: 490132) L1StandardBridge_Test:test_finalizeERC20Withdrawal() (gas: 490132)
L1StandardBridge_Test:test_finalizeETHWithdrawal() (gas: 64273) L1StandardBridge_Test:test_finalizeETHWithdrawal() (gas: 64273)
L1StandardBridge_Test:test_initialize() (gas: 26334) L1StandardBridge_Test:test_initialize() (gas: 26334)
...@@ -60,7 +60,7 @@ L1StandardBridge_Test:test_onlyEOADepositERC20() (gas: 22376) ...@@ -60,7 +60,7 @@ L1StandardBridge_Test:test_onlyEOADepositERC20() (gas: 22376)
L1StandardBridge_Test:test_onlyEOADepositETH() (gas: 40859) L1StandardBridge_Test:test_onlyEOADepositETH() (gas: 40859)
L1StandardBridge_Test:test_onlyL2BridgeFinalizeERC20Withdrawal() (gas: 36268) L1StandardBridge_Test:test_onlyL2BridgeFinalizeERC20Withdrawal() (gas: 36268)
L1StandardBridge_Test:test_onlyPortalFinalizeERC20Withdrawal() (gas: 35573) L1StandardBridge_Test:test_onlyPortalFinalizeERC20Withdrawal() (gas: 35573)
L1StandardBridge_Test:test_receive() (gas: 519143) L1StandardBridge_Test:test_receive() (gas: 520566)
L2CrossDomainMessenger_Test:testCannot_L2MessengerPause() (gas: 10845) L2CrossDomainMessenger_Test:testCannot_L2MessengerPause() (gas: 10845)
L2CrossDomainMessenger_Test:test_L1MessengerRelayMessageRevertsOnReentrancy() (gas: 171930) L2CrossDomainMessenger_Test:test_L1MessengerRelayMessageRevertsOnReentrancy() (gas: 171930)
L2CrossDomainMessenger_Test:test_L2MessengerMessageVersion() (gas: 8411) L2CrossDomainMessenger_Test:test_L2MessengerMessageVersion() (gas: 8411)
...@@ -69,8 +69,8 @@ L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageFirstStuckSecondSucceeds ...@@ -69,8 +69,8 @@ L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageFirstStuckSecondSucceeds
L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageSucceeds() (gas: 57372) L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageSucceeds() (gas: 57372)
L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageToSystemContract() (gas: 36193) L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageToSystemContract() (gas: 36193)
L2CrossDomainMessenger_Test:test_L2MessengerRelayShouldRevertIfPaused() (gas: 41619) L2CrossDomainMessenger_Test:test_L2MessengerRelayShouldRevertIfPaused() (gas: 41619)
L2CrossDomainMessenger_Test:test_L2MessengerSendMessage() (gas: 120254) L2CrossDomainMessenger_Test:test_L2MessengerSendMessage() (gas: 121522)
L2CrossDomainMessenger_Test:test_L2MessengerTwiceSendMessage() (gas: 133398) L2CrossDomainMessenger_Test:test_L2MessengerTwiceSendMessage() (gas: 135934)
L2CrossDomainMessenger_Test:test_L2MessengerXDomainSenderReverts() (gas: 10609) L2CrossDomainMessenger_Test:test_L2MessengerXDomainSenderReverts() (gas: 10609)
L2CrossDomainMessenger_Test:test_L2MessengerxDomainMessageSenderResets() (gas: 54887) L2CrossDomainMessenger_Test:test_L2MessengerxDomainMessageSenderResets() (gas: 54887)
L2OutputOracleTest:testCannot_ProposeWithUnmatchedBlockhash() (gas: 26829) L2OutputOracleTest:testCannot_ProposeWithUnmatchedBlockhash() (gas: 26829)
...@@ -96,15 +96,15 @@ L2OutputOracleUpgradeable_Test:test_cannotInitImpl() (gas: 19428) ...@@ -96,15 +96,15 @@ L2OutputOracleUpgradeable_Test:test_cannotInitImpl() (gas: 19428)
L2OutputOracleUpgradeable_Test:test_cannotInitProxy() (gas: 24427) L2OutputOracleUpgradeable_Test:test_cannotInitProxy() (gas: 24427)
L2OutputOracleUpgradeable_Test:test_initValuesOnProxy() (gas: 39086) L2OutputOracleUpgradeable_Test:test_initValuesOnProxy() (gas: 39086)
L2OutputOracleUpgradeable_Test:test_upgrading() (gas: 230843) L2OutputOracleUpgradeable_Test:test_upgrading() (gas: 230843)
L2StandardBridge_Test:test_ERC20BridgeFailed_whenLocalTokenIsBridge() (gas: 132928) L2StandardBridge_Test:test_ERC20BridgeFailed_whenLocalTokenIsBridge() (gas: 134196)
L2StandardBridge_Test:test_cannotWithdrawEthWithoutSendingIt() (gas: 21619) L2StandardBridge_Test:test_cannotWithdrawEthWithoutSendingIt() (gas: 21619)
L2StandardBridge_Test:test_finalizeBridgeERC20FailSendBack() (gas: 498305) L2StandardBridge_Test:test_finalizeBridgeERC20FailSendBack() (gas: 499320)
L2StandardBridge_Test:test_finalizeDeposit() (gas: 93125) L2StandardBridge_Test:test_finalizeDeposit() (gas: 93125)
L2StandardBridge_Test:test_finalizeDeposit_failsToCompleteOutboundTransfer() (gas: 139943) L2StandardBridge_Test:test_finalizeDeposit_failsToCompleteOutboundTransfer() (gas: 141211)
L2StandardBridge_Test:test_initialize() (gas: 14823) L2StandardBridge_Test:test_initialize() (gas: 14823)
L2StandardBridge_Test:test_receive() (gas: 136491) L2StandardBridge_Test:test_receive() (gas: 137760)
L2StandardBridge_Test:test_withdraw() (gas: 352294) L2StandardBridge_Test:test_withdraw() (gas: 353308)
L2StandardBridge_Test:test_withdrawTo() (gas: 353049) L2StandardBridge_Test:test_withdrawTo() (gas: 354064)
L2StandardBridge_Test:test_withdraw_onlyEOA() (gas: 251674) L2StandardBridge_Test:test_withdraw_onlyEOA() (gas: 251674)
L2ToL1MessagePasserTest:test_burn() (gas: 112246) L2ToL1MessagePasserTest:test_burn() (gas: 112246)
L2ToL1MessagePasserTest:test_initiateWithdrawal_fromContract() (gas: 68198) L2ToL1MessagePasserTest:test_initiateWithdrawal_fromContract() (gas: 68198)
...@@ -272,4 +272,4 @@ SequencerFeeVault_Test:test_constructor() (gas: 7678) ...@@ -272,4 +272,4 @@ SequencerFeeVault_Test:test_constructor() (gas: 7678)
SequencerFeeVault_Test:test_minWithdrawalAmount() (gas: 5440) SequencerFeeVault_Test:test_minWithdrawalAmount() (gas: 5440)
SequencerFeeVault_Test:test_receive() (gas: 17338) SequencerFeeVault_Test:test_receive() (gas: 17338)
SequencerFeeVault_Test:test_revertWithdraw() (gas: 9342) SequencerFeeVault_Test:test_revertWithdraw() (gas: 9342)
SequencerFeeVault_Test:test_withdraw() (gas: 147354) SequencerFeeVault_Test:test_withdraw() (gas: 148623)
...@@ -185,6 +185,11 @@ contract Messenger_Initializer is L2OutputOracle_Initializer { ...@@ -185,6 +185,11 @@ contract Messenger_Initializer is L2OutputOracle_Initializer {
uint256 gasLimit uint256 gasLimit
); );
event SentMessageExtension1(
address indexed sender,
uint256 value
);
event WithdrawalInitiated( event WithdrawalInitiated(
uint256 indexed nonce, uint256 indexed nonce,
address indexed sender, address indexed sender,
......
...@@ -107,6 +107,10 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer { ...@@ -107,6 +107,10 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
vm.expectEmit(true, true, true, true); vm.expectEmit(true, true, true, true);
emit SentMessage(recipient, alice, hex"ff", L1Messenger.messageNonce(), 100); emit SentMessage(recipient, alice, hex"ff", L1Messenger.messageNonce(), 100);
// SentMessageExtension1 event
vm.expectEmit(true, true, true, true);
emit SentMessageExtension1(alice, 0);
vm.prank(alice); vm.prank(alice);
L1Messenger.sendMessage(recipient, hex"ff", uint32(100)); L1Messenger.sendMessage(recipient, hex"ff", uint32(100));
} }
......
...@@ -131,6 +131,15 @@ abstract contract CrossDomainMessenger is ...@@ -131,6 +131,15 @@ abstract contract CrossDomainMessenger is
uint256 gasLimit uint256 gasLimit
); );
/**
* @notice Additional event data to emit, required as of Bedrock. Cannot be merged with the
* SentMessage event without breaking the ABI of this contract, this is good enough.
*
* @param sender Address of the sender of the message.
* @param value ETH value sent along with the message to the recipient.
*/
event SentMessageExtension1(address indexed sender, uint256 value);
/** /**
* @notice Emitted whenever a message is successfully relayed on this chain. * @notice Emitted whenever a message is successfully relayed on this chain.
* *
...@@ -193,6 +202,7 @@ abstract contract CrossDomainMessenger is ...@@ -193,6 +202,7 @@ abstract contract CrossDomainMessenger is
); );
emit SentMessage(_target, msg.sender, _message, messageNonce(), _minGasLimit); emit SentMessage(_target, msg.sender, _message, messageNonce(), _minGasLimit);
emit SentMessageExtension1(msg.sender, msg.value);
unchecked { unchecked {
++msgNonce; ++msgNonce;
......
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