Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
fafdfdd2
Unverified
Commit
fafdfdd2
authored
Jan 05, 2023
by
mergify[bot]
Committed by
GitHub
Jan 05, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into sc/ctb-erc721-factory-unnecessary-code
parents
2d1d95e7
ce9e7f21
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
125 additions
and
126 deletions
+125
-126
l1crossdomainmessenger.go
op-bindings/bindings/l1crossdomainmessenger.go
+33
-33
l1crossdomainmessenger_more.go
op-bindings/bindings/l1crossdomainmessenger_more.go
+2
-2
l2crossdomainmessenger.go
op-bindings/bindings/l2crossdomainmessenger.go
+33
-33
l2crossdomainmessenger_more.go
op-bindings/bindings/l2crossdomainmessenger_more.go
+2
-2
.gas-snapshot
packages/contracts-bedrock/.gas-snapshot
+29
-29
.storage-layout
packages/contracts-bedrock/.storage-layout
+2
-2
L1CrossDomainMessenger.t.sol
...racts-bedrock/contracts/test/L1CrossDomainMessenger.t.sol
+11
-11
L2CrossDomainMessenger.t.sol
...racts-bedrock/contracts/test/L2CrossDomainMessenger.t.sol
+4
-4
CrossDomainMessenger.sol
...acts-bedrock/contracts/universal/CrossDomainMessenger.sol
+7
-8
messengers.md
specs/messengers.md
+2
-2
No files found.
op-bindings/bindings/l1crossdomainmessenger.go
View file @
fafdfdd2
This diff is collapsed.
Click to expand it.
op-bindings/bindings/l1crossdomainmessenger_more.go
View file @
fafdfdd2
This diff is collapsed.
Click to expand it.
op-bindings/bindings/l2crossdomainmessenger.go
View file @
fafdfdd2
This diff is collapsed.
Click to expand it.
op-bindings/bindings/l2crossdomainmessenger_more.go
View file @
fafdfdd2
This diff is collapsed.
Click to expand it.
packages/contracts-bedrock/.gas-snapshot
View file @
fafdfdd2
...
...
@@ -16,14 +16,14 @@ Bytes_Test:test_slice_fromZeroIdx_works() (gas: 20826)
Bytes_Test:test_toNibbles_expectedResult128Bytes_works() (gas: 129885)
Bytes_Test:test_toNibbles_expectedResult5Bytes_works() (gas: 6132)
Bytes_Test:test_toNibbles_zeroLengthInput_works() (gas: 966)
CrossDomainMessenger_BaseGas_Test:test_baseGas_succeeds() (gas: 20
098
)
CrossDomainMessenger_BaseGas_Test:test_baseGas_succeeds() (gas: 20
120
)
CrossDomainOwnableThroughPortal_Test:test_depositTransaction_crossDomainOwner_succeeds() (gas: 61806)
CrossDomainOwnable_Test:test_onlyOwner_notOwner_reverts() (gas: 10530)
CrossDomainOwnable_Test:test_onlyOwner_succeeds() (gas: 34861)
CrossDomainOwnable2_Test:test_onlyOwner_notMessenger_reverts() (gas: 8416)
CrossDomainOwnable2_Test:test_onlyOwner_notOwner2_reverts() (gas: 617
83
)
CrossDomainOwnable2_Test:test_onlyOwner_notOwner2_reverts() (gas: 617
38
)
CrossDomainOwnable2_Test:test_onlyOwner_notOwner_reverts() (gas: 16588)
CrossDomainOwnable2_Test:test_onlyOwner_succeeds() (gas: 77
811
)
CrossDomainOwnable2_Test:test_onlyOwner_succeeds() (gas: 77
766
)
DeployerWhitelist_Test:test_owner_succeeds() (gas: 7538)
DeployerWhitelist_Test:test_storageSlots_succeeds() (gas: 33395)
FeeVault_Test:test_constructor_succeeds() (gas: 10647)
...
...
@@ -56,26 +56,26 @@ L1BlockTest:test_updateValues_succeeds() (gas: 60481)
L1BlockNumberTest:test_fallback_succeeds() (gas: 18633)
L1BlockNumberTest:test_getL1BlockNumber_succeeds() (gas: 10603)
L1BlockNumberTest:test_receive_succeeds() (gas: 25340)
L1CrossDomainMessenger_Test:test_messageVersion_succeeds() (gas: 247
59
)
L1CrossDomainMessenger_Test:test_messageVersion_succeeds() (gas: 247
81
)
L1CrossDomainMessenger_Test:test_pause_callerIsNotOwner_reverts() (gas: 24517)
L1CrossDomainMessenger_Test:test_pause_succeeds() (gas: 52942)
L1CrossDomainMessenger_Test:test_relayMessage_legacyOldReplay_reverts() (gas: 56
662
)
L1CrossDomainMessenger_Test:test_relayMessage_legacyRetryAfterFailureThenSuccess_reverts() (gas: 212
695
)
L1CrossDomainMessenger_Test:test_relayMessage_legacyRetryAfterFailure_succeeds() (gas: 203
380
)
L1CrossDomainMessenger_Test:test_relayMessage_legacyRetryAfterSuccess_reverts() (gas: 126
553
)
L1CrossDomainMessenger_Test:test_relayMessage_legacy_succeeds() (gas: 766
88
)
L1CrossDomainMessenger_Test:test_relayMessage_paused_reverts() (gas: 60
521
)
L1CrossDomainMessenger_Test:test_relayMessage_reentrancy_reverts() (gas: 190
932
)
L1CrossDomainMessenger_Test:test_relayMessage_retryAfterFailure_succeeds() (gas: 197
320
)
L1CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 73
646
)
L1CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 65
91
7)
L1CrossDomainMessenger_Test:test_relayMessage_v2_reverts() (gas: 195
45
)
L1CrossDomainMessenger_Test:test_replayMessage_withValue_reverts() (gas: 382
65
)
L1CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 299
56
8)
L1CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 1490
458
)
L1CrossDomainMessenger_Test:test_relayMessage_legacyOldReplay_reverts() (gas: 56
574
)
L1CrossDomainMessenger_Test:test_relayMessage_legacyRetryAfterFailureThenSuccess_reverts() (gas: 212
474
)
L1CrossDomainMessenger_Test:test_relayMessage_legacyRetryAfterFailure_succeeds() (gas: 203
204
)
L1CrossDomainMessenger_Test:test_relayMessage_legacyRetryAfterSuccess_reverts() (gas: 126
420
)
L1CrossDomainMessenger_Test:test_relayMessage_legacy_succeeds() (gas: 766
00
)
L1CrossDomainMessenger_Test:test_relayMessage_paused_reverts() (gas: 60
476
)
L1CrossDomainMessenger_Test:test_relayMessage_reentrancy_reverts() (gas: 190
799
)
L1CrossDomainMessenger_Test:test_relayMessage_retryAfterFailure_succeeds() (gas: 197
144
)
L1CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 73
558
)
L1CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 65
82
7)
L1CrossDomainMessenger_Test:test_relayMessage_v2_reverts() (gas: 195
00
)
L1CrossDomainMessenger_Test:test_replayMessage_withValue_reverts() (gas: 382
20
)
L1CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 299
67
8)
L1CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 1490
502
)
L1CrossDomainMessenger_Test:test_unpause_callerIsNotOwner_reverts() (gas: 24516)
L1CrossDomainMessenger_Test:test_unpause_succeeds() (gas: 45185)
L1CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 840
65
)
L1CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 840
20
)
L1CrossDomainMessenger_Test:test_xDomainSender_notSet_reverts() (gas: 24274)
L1ERC721Bridge_Test:test_bridgeERC721To_localTokenZeroAddress_reverts() (gas: 52730)
L1ERC721Bridge_Test:test_bridgeERC721To_remoteTokenZeroAddress_reverts() (gas: 27332)
...
...
@@ -108,18 +108,18 @@ L1StandardBridge_FinalizeETHWithdrawal_Test:test_finalizeETHWithdrawal_succeeds(
L1StandardBridge_Getter_Test:test_getters_succeeds() (gas: 31449)
L1StandardBridge_Initialize_Test:test_initialize_succeeds() (gas: 22005)
L1StandardBridge_Receive_Test:test_receive_succeeds() (gas: 514475)
L2CrossDomainMessenger_Test:test_messageVersion_succeeds() (gas: 83
67
)
L2CrossDomainMessenger_Test:test_messageVersion_succeeds() (gas: 83
89
)
L2CrossDomainMessenger_Test:test_pause_notOwner_reverts() (gas: 10837)
L2CrossDomainMessenger_Test:test_pause_succeeds() (gas: 31846)
L2CrossDomainMessenger_Test:test_relayMessage_paused_reverts() (gas: 415
96
)
L2CrossDomainMessenger_Test:test_relayMessage_reentrancy_reverts() (gas: 1677
94
)
L2CrossDomainMessenger_Test:test_relayMessage_retry_succeeds() (gas: 1683
71
)
L2CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 53
212
)
L2CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 362
46
)
L2CrossDomainMessenger_Test:test_relayMessage_v2_reverts() (gas: 18
913
)
L2CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 122
533
)
L2CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 134
671
)
L2CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 52
623
)
L2CrossDomainMessenger_Test:test_relayMessage_paused_reverts() (gas: 415
51
)
L2CrossDomainMessenger_Test:test_relayMessage_reentrancy_reverts() (gas: 1677
27
)
L2CrossDomainMessenger_Test:test_relayMessage_retry_succeeds() (gas: 1683
27
)
L2CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 53
190
)
L2CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 362
01
)
L2CrossDomainMessenger_Test:test_relayMessage_v2_reverts() (gas: 18
868
)
L2CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 122
621
)
L2CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 134
715
)
L2CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 52
578
)
L2CrossDomainMessenger_Test:test_xDomainSender_senderNotSet_reverts() (gas: 10524)
L2ERC721Bridge_Test:test_bridgeERC721To_localTokenZeroAddress_reverts() (gas: 26432)
L2ERC721Bridge_Test:test_bridgeERC721To_remoteTokenZeroAddress_reverts() (gas: 21748)
...
...
packages/contracts-bedrock/.storage-layout
View file @
fafdfdd2
...
...
@@ -39,7 +39,7 @@
|--------------------+--------------------------+------+--------+-------+----------------------------------------------------------------|
| msgNonce | uint240 | 205 | 0 | 30 | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
|--------------------+--------------------------+------+--------+-------+----------------------------------------------------------------|
|
receivedMessages
| mapping(bytes32 => bool) | 206 | 0 | 32 | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
|
failedMessages
| mapping(bytes32 => bool) | 206 | 0 | 32 | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
|--------------------+--------------------------+------+--------+-------+----------------------------------------------------------------|
| __gap | uint256[42] | 207 | 0 | 1344 | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
+--------------------+--------------------------+------+--------+-------+----------------------------------------------------------------+
...
...
@@ -228,7 +228,7 @@
|--------------------+--------------------------+------+--------+-------+----------------------------------------------------------------|
| msgNonce | uint240 | 205 | 0 | 30 | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
|--------------------+--------------------------+------+--------+-------+----------------------------------------------------------------|
|
receivedMessages
| mapping(bytes32 => bool) | 206 | 0 | 32 | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
|
failedMessages
| mapping(bytes32 => bool) | 206 | 0 | 32 | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
|--------------------+--------------------------+------+--------+-------+----------------------------------------------------------------|
| __gap | uint256[42] | 207 | 0 | 1344 | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
+--------------------+--------------------------+------+--------+-------+----------------------------------------------------------------+
...
...
packages/contracts-bedrock/contracts/test/L1CrossDomainMessenger.t.sol
View file @
fafdfdd2
...
...
@@ -200,7 +200,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
// the message hash is in the successfulMessages mapping
assert(L1Messenger.successfulMessages(hash));
// it is not in the received messages mapping
assertEq(L1Messenger.
receiv
edMessages(hash), false);
assertEq(L1Messenger.
fail
edMessages(hash), false);
}
// relayMessage: should revert if attempting to relay a message sent to an L1 system contract
...
...
@@ -317,7 +317,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
assertEq(address(L1Messenger).balance, value);
assertEq(address(target).balance, 0);
assertEq(L1Messenger.successfulMessages(hash), false);
assertEq(L1Messenger.
receiv
edMessages(hash), true);
assertEq(L1Messenger.
fail
edMessages(hash), true);
vm.expectEmit(true, true, true, true);
...
...
@@ -337,7 +337,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
assertEq(address(L1Messenger).balance, 0);
assertEq(address(target).balance, value);
assertEq(L1Messenger.successfulMessages(hash), true);
assertEq(L1Messenger.
receiv
edMessages(hash), true);
assertEq(L1Messenger.
fail
edMessages(hash), true);
}
// relayMessage: should revert if recipient is trying to reenter
...
...
@@ -385,7 +385,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
);
assertEq(L1Messenger.successfulMessages(hash), false);
assertEq(L1Messenger.
receiv
edMessages(hash), true);
assertEq(L1Messenger.
fail
edMessages(hash), true);
}
function test_relayMessage_legacy_succeeds() external {
...
...
@@ -426,7 +426,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
// Message was successfully relayed.
assertEq(L1Messenger.successfulMessages(hash), true);
assertEq(L1Messenger.
receiv
edMessages(hash), false);
assertEq(L1Messenger.
fail
edMessages(hash), false);
}
function test_relayMessage_legacyOldReplay_reverts() external {
...
...
@@ -469,7 +469,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
// Message was not relayed.
assertEq(L1Messenger.successfulMessages(hash), false);
assertEq(L1Messenger.
receiv
edMessages(hash), false);
assertEq(L1Messenger.
fail
edMessages(hash), false);
}
function test_relayMessage_legacyRetryAfterFailure_succeeds() external {
...
...
@@ -517,7 +517,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
assertEq(address(L1Messenger).balance, value);
assertEq(address(target).balance, 0);
assertEq(L1Messenger.successfulMessages(hash), false);
assertEq(L1Messenger.
receiv
edMessages(hash), true);
assertEq(L1Messenger.
fail
edMessages(hash), true);
// Make the target not revert anymore.
vm.etch(target, address(0).code);
...
...
@@ -544,7 +544,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
assertEq(address(L1Messenger).balance, 0);
assertEq(address(target).balance, value);
assertEq(L1Messenger.successfulMessages(hash), true);
assertEq(L1Messenger.
receiv
edMessages(hash), true);
assertEq(L1Messenger.
fail
edMessages(hash), true);
}
function test_relayMessage_legacyRetryAfterSuccess_reverts() external {
...
...
@@ -589,7 +589,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
assertEq(address(L1Messenger).balance, 0);
assertEq(address(target).balance, value);
assertEq(L1Messenger.successfulMessages(hash), true);
assertEq(L1Messenger.
receiv
edMessages(hash), false);
assertEq(L1Messenger.
fail
edMessages(hash), false);
// Expect a revert.
vm.expectRevert("CrossDomainMessenger: message cannot be replayed");
...
...
@@ -647,7 +647,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
assertEq(address(L1Messenger).balance, value);
assertEq(address(target).balance, 0);
assertEq(L1Messenger.successfulMessages(hash), false);
assertEq(L1Messenger.
receiv
edMessages(hash), true);
assertEq(L1Messenger.
fail
edMessages(hash), true);
// Make the target not revert anymore.
vm.etch(target, address(0).code);
...
...
@@ -674,7 +674,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
assertEq(address(L1Messenger).balance, 0);
assertEq(address(target).balance, value);
assertEq(L1Messenger.successfulMessages(hash), true);
assertEq(L1Messenger.
receiv
edMessages(hash), true);
assertEq(L1Messenger.
fail
edMessages(hash), true);
// Expect a revert.
vm.expectRevert("CrossDomainMessenger: message has already been relayed");
...
...
packages/contracts-bedrock/contracts/test/L2CrossDomainMessenger.t.sol
View file @
fafdfdd2
...
...
@@ -149,7 +149,7 @@ contract L2CrossDomainMessenger_Test is Messenger_Initializer {
// the message hash is in the successfulMessages mapping
assert(L2Messenger.successfulMessages(hash));
// it is not in the received messages mapping
assertEq(L2Messenger.
receiv
edMessages(hash), false);
assertEq(L2Messenger.
fail
edMessages(hash), false);
}
// relayMessage: should revert if attempting to relay a message sent to an L1 system contract
...
...
@@ -232,7 +232,7 @@ contract L2CrossDomainMessenger_Test is Messenger_Initializer {
assertEq(address(L2Messenger).balance, value);
assertEq(address(target).balance, 0);
assertEq(L2Messenger.successfulMessages(hash), false);
assertEq(L2Messenger.
receiv
edMessages(hash), true);
assertEq(L2Messenger.
fail
edMessages(hash), true);
vm.expectEmit(true, true, true, true);
...
...
@@ -252,7 +252,7 @@ contract L2CrossDomainMessenger_Test is Messenger_Initializer {
assertEq(address(L2Messenger).balance, 0);
assertEq(address(target).balance, value);
assertEq(L2Messenger.successfulMessages(hash), true);
assertEq(L2Messenger.
receiv
edMessages(hash), true);
assertEq(L2Messenger.
fail
edMessages(hash), true);
}
// relayMessage: should revert if recipient is trying to reenter
...
...
@@ -300,6 +300,6 @@ contract L2CrossDomainMessenger_Test is Messenger_Initializer {
);
assertEq(L2Messenger.successfulMessages(hash), false);
assertEq(L2Messenger.
receiv
edMessages(hash), true);
assertEq(L2Messenger.
fail
edMessages(hash), true);
}
}
packages/contracts-bedrock/contracts/universal/CrossDomainMessenger.sol
View file @
fafdfdd2
...
...
@@ -123,12 +123,11 @@ abstract contract CrossDomainMessenger is
uint240 internal msgNonce;
/**
* @notice Mapping of message hashes to boolean receipt values. Note that a message will only
* be present in this mapping if it failed to be relayed on this chain at least once.
* If a message is successfully relayed on the first attempt, then it will only be
* present within the successfulMessages mapping.
* @notice Mapping of message hashes to a boolean if and only if the message has failed to be
* executed at least once. A message will not be present in this mapping if it
* successfully executed on the first attempt.
*/
mapping(bytes32 => bool) public
receiv
edMessages;
mapping(bytes32 => bool) public
fail
edMessages;
/**
* @notice Reserve extra slots in the storage layout for future upgrades.
...
...
@@ -293,7 +292,7 @@ abstract contract CrossDomainMessenger is
// These properties should always hold when the message is first submitted (as
// opposed to being replayed).
assert(msg.value == _value);
assert(!
receiv
edMessages[versionedHash]);
assert(!
fail
edMessages[versionedHash]);
} else {
require(
msg.value == 0,
...
...
@@ -301,7 +300,7 @@ abstract contract CrossDomainMessenger is
);
require(
receiv
edMessages[versionedHash],
fail
edMessages[versionedHash],
"CrossDomainMessenger: message cannot be replayed"
);
}
...
...
@@ -329,7 +328,7 @@ abstract contract CrossDomainMessenger is
successfulMessages[versionedHash] = true;
emit RelayedMessage(versionedHash);
} else {
receiv
edMessages[versionedHash] = true;
fail
edMessages[versionedHash] = true;
emit FailedRelayedMessage(versionedHash);
// Revert in this case if the transaction was triggered by the estimation address. This
...
...
specs/messengers.md
View file @
fafdfdd2
...
...
@@ -36,7 +36,7 @@ interface CrossDomainMessenger {
function MESSAGE_VERSION() view external returns (uint16);
function messageNonce() view external returns (uint256);
function otherMessenger() view external returns (address);
function
receiv
edMessages(bytes32) view external returns (bool);
function
fail
edMessages(bytes32) view external returns (bool);
function relayMessage(uint256 _nonce, address _sender, address _target, uint256 _value, uint256 _minGasLimit, bytes memory _message) payable external;
function sendMessage(address _target, bytes memory _message, uint32 _minGasLimit) payable external;
function successfulMessages(bytes32) view external returns (bool);
...
...
@@ -49,7 +49,7 @@ interface CrossDomainMessenger {
The
`sendMessage`
function is used to send a cross domain message. To trigger
the execution on the other side, the
`relayMessage`
function is called.
Successful messages have their hash stored in the
`successfulMessages`
mapping
while unsuccessful messages have their hash stored in the
`
receiv
edMessages`
while unsuccessful messages have their hash stored in the
`
fail
edMessages`
mapping.
The user experience when sending from L1 to L2 is a bit different than when
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment