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
c646b470
Unverified
Commit
c646b470
authored
Jan 04, 2023
by
mergify[bot]
Committed by
GitHub
Jan 04, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into jg/weird_reog
parents
77137e38
f7973b3a
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
419 additions
and
69 deletions
+419
-69
l1crossdomainmessenger.go
op-bindings/bindings/l1crossdomainmessenger.go
+1
-1
l1crossdomainmessenger_more.go
op-bindings/bindings/l1crossdomainmessenger_more.go
+1
-1
l2crossdomainmessenger.go
op-bindings/bindings/l2crossdomainmessenger.go
+1
-1
l2crossdomainmessenger_more.go
op-bindings/bindings/l2crossdomainmessenger_more.go
+1
-1
migrate.go
op-chain-ops/crossdomain/migrate.go
+5
-2
config.go
op-chain-ops/genesis/config.go
+4
-1
chains.go
op-node/chaincfg/chains.go
+30
-0
cmd.go
op-node/cmd/genesis/cmd.go
+13
-20
.gas-snapshot
packages/contracts-bedrock/.gas-snapshot
+30
-25
L1CrossDomainMessenger.t.sol
...racts-bedrock/contracts/test/L1CrossDomainMessenger.t.sol
+312
-6
L2CrossDomainMessenger.t.sol
...racts-bedrock/contracts/test/L2CrossDomainMessenger.t.sol
+7
-5
CrossDomainMessenger.sol
...acts-bedrock/contracts/universal/CrossDomainMessenger.sol
+14
-6
No files found.
op-bindings/bindings/l1crossdomainmessenger.go
View file @
c646b470
This diff is collapsed.
Click to expand it.
op-bindings/bindings/l1crossdomainmessenger_more.go
View file @
c646b470
This diff is collapsed.
Click to expand it.
op-bindings/bindings/l2crossdomainmessenger.go
View file @
c646b470
This diff is collapsed.
Click to expand it.
op-bindings/bindings/l2crossdomainmessenger_more.go
View file @
c646b470
This diff is collapsed.
Click to expand it.
op-chain-ops/crossdomain/migrate.go
View file @
c646b470
...
@@ -63,7 +63,10 @@ func MigrateWithdrawal(withdrawal *LegacyWithdrawal, l1CrossDomainMessenger *com
...
@@ -63,7 +63,10 @@ func MigrateWithdrawal(withdrawal *LegacyWithdrawal, l1CrossDomainMessenger *com
return
nil
,
err
return
nil
,
err
}
}
versionedNonce
:=
EncodeVersionedNonce
(
withdrawal
.
Nonce
,
common
.
Big1
)
// Migrated withdrawals are specified as version 0. Both the
// L2ToL1MessagePasser and the CrossDomainMessenger use the same
// versioning scheme. Both should be set to version 0
versionedNonce
:=
EncodeVersionedNonce
(
withdrawal
.
Nonce
,
new
(
big
.
Int
))
// Encode the call to `relayMessage` on the `CrossDomainMessenger`.
// Encode the call to `relayMessage` on the `CrossDomainMessenger`.
// The minGasLimit can safely be 0 here.
// The minGasLimit can safely be 0 here.
data
,
err
:=
abi
.
Pack
(
data
,
err
:=
abi
.
Pack
(
...
@@ -83,7 +86,7 @@ func MigrateWithdrawal(withdrawal *LegacyWithdrawal, l1CrossDomainMessenger *com
...
@@ -83,7 +86,7 @@ func MigrateWithdrawal(withdrawal *LegacyWithdrawal, l1CrossDomainMessenger *com
gasLimit
:=
uint64
(
len
(
data
)
*
16
+
200
_000
)
gasLimit
:=
uint64
(
len
(
data
)
*
16
+
200
_000
)
w
:=
NewWithdrawal
(
w
:=
NewWithdrawal
(
withdrawal
.
Nonce
,
versioned
Nonce
,
&
predeploys
.
L2CrossDomainMessengerAddr
,
&
predeploys
.
L2CrossDomainMessengerAddr
,
l1CrossDomainMessenger
,
l1CrossDomainMessenger
,
value
,
value
,
...
...
op-chain-ops/genesis/config.go
View file @
c646b470
...
@@ -108,6 +108,9 @@ type DeployConfig struct {
...
@@ -108,6 +108,9 @@ type DeployConfig struct {
// Check will ensure that the config is sane and return an error when it is not
// Check will ensure that the config is sane and return an error when it is not
func
(
d
*
DeployConfig
)
Check
()
error
{
func
(
d
*
DeployConfig
)
Check
()
error
{
if
d
.
L1StartingBlockTag
==
nil
{
return
fmt
.
Errorf
(
"%w: L2StartingBlockTag cannot be nil"
,
ErrInvalidDeployConfig
)
}
if
d
.
L1ChainID
==
0
{
if
d
.
L1ChainID
==
0
{
return
fmt
.
Errorf
(
"%w: L1ChainID cannot be 0"
,
ErrInvalidDeployConfig
)
return
fmt
.
Errorf
(
"%w: L1ChainID cannot be 0"
,
ErrInvalidDeployConfig
)
}
}
...
@@ -327,7 +330,7 @@ func NewDeployConfig(path string) (*DeployConfig, error) {
...
@@ -327,7 +330,7 @@ func NewDeployConfig(path string) (*DeployConfig, error) {
var
config
DeployConfig
var
config
DeployConfig
if
err
:=
json
.
Unmarshal
(
file
,
&
config
);
err
!=
nil
{
if
err
:=
json
.
Unmarshal
(
file
,
&
config
);
err
!=
nil
{
return
nil
,
err
return
nil
,
fmt
.
Errorf
(
"cannot unmarshal deploy config: %w"
,
err
)
}
}
return
&
config
,
nil
return
&
config
,
nil
...
...
op-node/chaincfg/chains.go
View file @
c646b470
...
@@ -39,8 +39,38 @@ var Beta1 = rollup.Config{
...
@@ -39,8 +39,38 @@ var Beta1 = rollup.Config{
L1SystemConfigAddress
:
common
.
HexToAddress
(
"0x686df068eaa71af78dadc1c427e35600e0fadac5"
),
L1SystemConfigAddress
:
common
.
HexToAddress
(
"0x686df068eaa71af78dadc1c427e35600e0fadac5"
),
}
}
var
Goerli
=
rollup
.
Config
{
Genesis
:
rollup
.
Genesis
{
L1
:
eth
.
BlockID
{
Hash
:
common
.
HexToHash
(
""
),
Number
:
0
,
},
L2
:
eth
.
BlockID
{
Hash
:
common
.
HexToHash
(
""
),
Number
:
0
,
},
L2Time
:
0
,
SystemConfig
:
eth
.
SystemConfig
{
BatcherAddr
:
common
.
HexToAddress
(
""
),
Overhead
:
eth
.
Bytes32
(
common
.
HexToHash
(
""
)),
Scalar
:
eth
.
Bytes32
(
common
.
HexToHash
(
""
)),
GasLimit
:
0
,
},
},
BlockTime
:
2
,
MaxSequencerDrift
:
0
,
SeqWindowSize
:
0
,
ChannelTimeout
:
0
,
L1ChainID
:
big
.
NewInt
(
5
),
L2ChainID
:
big
.
NewInt
(
420
),
BatchInboxAddress
:
common
.
HexToAddress
(
""
),
DepositContractAddress
:
common
.
HexToAddress
(
""
),
L1SystemConfigAddress
:
common
.
HexToAddress
(
""
),
}
var
NetworksByName
=
map
[
string
]
rollup
.
Config
{
var
NetworksByName
=
map
[
string
]
rollup
.
Config
{
"beta-1"
:
Beta1
,
"beta-1"
:
Beta1
,
//"goerli": Goerli,
}
}
func
AvailableNetworks
()
[]
string
{
func
AvailableNetworks
()
[]
string
{
...
...
op-node/cmd/genesis/cmd.go
View file @
c646b470
...
@@ -3,7 +3,6 @@ package genesis
...
@@ -3,7 +3,6 @@ package genesis
import
(
import
(
"context"
"context"
"encoding/json"
"encoding/json"
"errors"
"fmt"
"fmt"
"math/big"
"math/big"
"os"
"os"
...
@@ -114,16 +113,24 @@ var Subcommands = cli.Commands{
...
@@ -114,16 +113,24 @@ var Subcommands = cli.Commands{
return
err
return
err
}
}
if
config
.
L1StartingBlockTag
==
nil
{
depPath
,
network
:=
filepath
.
Split
(
ctx
.
String
(
"deployment-dir"
))
return
errors
.
New
(
"must specify a starting block tag in genesis"
)
hh
,
err
:=
hardhat
.
New
(
network
,
nil
,
[]
string
{
depPath
})
if
err
!=
nil
{
return
err
}
// Read the appropriate deployment addresses from disk
if
err
:=
config
.
GetDeployedAddresses
(
hh
);
err
!=
nil
{
return
err
}
}
if
config
.
L2GenesisBlockGasLimit
==
0
{
// TODO: this is a hotfix, need to set default values in more clean way + sanity check the config
// Sanity check the config
config
.
L2GenesisBlockGasLimit
=
15
_000_000
if
err
:=
config
.
Check
();
err
!=
nil
{
return
err
}
}
client
,
err
:=
ethclient
.
Dial
(
ctx
.
String
(
"l1-rpc"
))
client
,
err
:=
ethclient
.
Dial
(
ctx
.
String
(
"l1-rpc"
))
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
fmt
.
Errorf
(
"cannot dial %s: %w"
,
ctx
.
String
(
"l1-rpc"
),
err
)
}
}
var
l1StartBlock
*
types
.
Block
var
l1StartBlock
*
types
.
Block
...
@@ -136,20 +143,6 @@ var Subcommands = cli.Commands{
...
@@ -136,20 +143,6 @@ var Subcommands = cli.Commands{
return
fmt
.
Errorf
(
"error getting l1 start block: %w"
,
err
)
return
fmt
.
Errorf
(
"error getting l1 start block: %w"
,
err
)
}
}
depPath
,
network
:=
filepath
.
Split
(
ctx
.
String
(
"deployment-dir"
))
hh
,
err
:=
hardhat
.
New
(
network
,
nil
,
[]
string
{
depPath
})
if
err
!=
nil
{
return
err
}
// Read the appropriate deployment addresses from disk
if
err
:=
config
.
GetDeployedAddresses
(
hh
);
err
!=
nil
{
return
err
}
// Sanity check the config
if
err
:=
config
.
Check
();
err
!=
nil
{
return
err
}
// Build the developer L2 genesis block
// Build the developer L2 genesis block
l2Genesis
,
err
:=
genesis
.
BuildL2DeveloperGenesis
(
config
,
l1StartBlock
)
l2Genesis
,
err
:=
genesis
.
BuildL2DeveloperGenesis
(
config
,
l1StartBlock
)
if
err
!=
nil
{
if
err
!=
nil
{
...
...
packages/contracts-bedrock/.gas-snapshot
View file @
c646b470
...
@@ -21,9 +21,9 @@ CrossDomainOwnableThroughPortal_Test:test_depositTransaction_crossDomainOwner_su
...
@@ -21,9 +21,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: 617
54
)
CrossDomainOwnable2_Test:test_onlyOwner_notOwner2_reverts() (gas: 617
83
)
CrossDomainOwnable2_Test:test_onlyOwner_notOwner_reverts() (gas: 16588)
CrossDomainOwnable2_Test:test_onlyOwner_notOwner_reverts() (gas: 16588)
CrossDomainOwnable2_Test:test_onlyOwner_succeeds() (gas: 77
782
)
CrossDomainOwnable2_Test:test_onlyOwner_succeeds() (gas: 77
811
)
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: 10647)
FeeVault_Test:test_constructor_succeeds() (gas: 10647)
...
@@ -55,22 +55,27 @@ L1BlockTest:test_updateValues_succeeds() (gas: 60481)
...
@@ -55,22 +55,27 @@ L1BlockTest:test_updateValues_succeeds() (gas: 60481)
L1BlockNumberTest:test_fallback_succeeds() (gas: 18633)
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: 24759)
L1CrossDomainMessenger_Test:test_pause_callerIsNotOwner_reverts() (gas: 24539)
L1CrossDomainMessenger_Test:test_pause_callerIsNotOwner_reverts() (gas: 24517)
L1CrossDomainMessenger_Test:test_pause_succeeds() (gas: 52964)
L1CrossDomainMessenger_Test:test_pause_succeeds() (gas: 52942)
L1CrossDomainMessenger_Test:test_relayMessage_paused_reverts() (gas: 60498)
L1CrossDomainMessenger_Test:test_relayMessage_legacyOldReplay_reverts() (gas: 56662)
L1CrossDomainMessenger_Test:test_relayMessage_reentrancy_reverts() (gas: 190902)
L1CrossDomainMessenger_Test:test_relayMessage_legacyRetryAfterFailureThenSuccess_reverts() (gas: 212695)
L1CrossDomainMessenger_Test:test_relayMessage_retryAfterFailure_succeeds() (gas: 197256)
L1CrossDomainMessenger_Test:test_relayMessage_legacyRetryAfterFailure_succeeds() (gas: 203380)
L1CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 73617)
L1CrossDomainMessenger_Test:test_relayMessage_legacyRetryAfterSuccess_reverts() (gas: 126553)
L1CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 65858)
L1CrossDomainMessenger_Test:test_relayMessage_legacy_succeeds() (gas: 76688)
L1CrossDomainMessenger_Test:test_relayMessage_v0_reverts() (gas: 33214)
L1CrossDomainMessenger_Test:test_relayMessage_paused_reverts() (gas: 60521)
L1CrossDomainMessenger_Test:test_replayMessage_withValue_reverts() (gas: 38214)
L1CrossDomainMessenger_Test:test_relayMessage_reentrancy_reverts() (gas: 190932)
L1CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 299523)
L1CrossDomainMessenger_Test:test_relayMessage_retryAfterFailure_succeeds() (gas: 197320)
L1CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 1490457)
L1CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 73646)
L1CrossDomainMessenger_Test:test_unpause_callerIsNotOwner_reverts() (gas: 24472)
L1CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 65917)
L1CrossDomainMessenger_Test:test_unpause_succeeds() (gas: 45149)
L1CrossDomainMessenger_Test:test_relayMessage_v2_reverts() (gas: 19545)
L1CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 84036)
L1CrossDomainMessenger_Test:test_replayMessage_withValue_reverts() (gas: 38265)
L1CrossDomainMessenger_Test:test_xDomainSender_notSet_reverts() (gas: 24252)
L1CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 299568)
L1CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 1490458)
L1CrossDomainMessenger_Test:test_unpause_callerIsNotOwner_reverts() (gas: 24516)
L1CrossDomainMessenger_Test:test_unpause_succeeds() (gas: 45185)
L1CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 84065)
L1CrossDomainMessenger_Test:test_xDomainSender_notSet_reverts() (gas: 24274)
L1ERC721Bridge_Test:test_bridgeERC721To_localTokenZeroAddress_reverts() (gas: 52730)
L1ERC721Bridge_Test:test_bridgeERC721To_localTokenZeroAddress_reverts() (gas: 52730)
L1ERC721Bridge_Test:test_bridgeERC721To_remoteTokenZeroAddress_reverts() (gas: 27332)
L1ERC721Bridge_Test:test_bridgeERC721To_remoteTokenZeroAddress_reverts() (gas: 27332)
L1ERC721Bridge_Test:test_bridgeERC721To_succeeds() (gas: 354722)
L1ERC721Bridge_Test:test_bridgeERC721To_succeeds() (gas: 354722)
...
@@ -103,17 +108,17 @@ L1StandardBridge_Getter_Test:test_getters_succeeds() (gas: 31449)
...
@@ -103,17 +108,17 @@ 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: 108
59
)
L2CrossDomainMessenger_Test:test_pause_notOwner_reverts() (gas: 108
37
)
L2CrossDomainMessenger_Test:test_pause_succeeds() (gas: 31846)
L2CrossDomainMessenger_Test:test_pause_succeeds() (gas: 31846)
L2CrossDomainMessenger_Test:test_relayMessage_paused_reverts() (gas: 41596)
L2CrossDomainMessenger_Test:test_relayMessage_paused_reverts() (gas: 41596)
L2CrossDomainMessenger_Test:test_relayMessage_reentrancy_reverts() (gas: 1677
87
)
L2CrossDomainMessenger_Test:test_relayMessage_reentrancy_reverts() (gas: 1677
94
)
L2CrossDomainMessenger_Test:test_relayMessage_retry_succeeds() (gas: 1683
13
)
L2CrossDomainMessenger_Test:test_relayMessage_retry_succeeds() (gas: 1683
71
)
L2CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 53
183
)
L2CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 53
212
)
L2CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 36
194
)
L2CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 36
246
)
L2CrossDomainMessenger_Test:test_relayMessage_v
0_reverts() (gas: 18870
)
L2CrossDomainMessenger_Test:test_relayMessage_v
2_reverts() (gas: 18913
)
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: 52
594
)
L2CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 52
623
)
L2CrossDomainMessenger_Test:test_xDomainSender_senderNotSet_reverts() (gas: 10524)
L2CrossDomainMessenger_Test:test_xDomainSender_senderNotSet_reverts() (gas: 10524)
L2ERC721Bridge_Test:test_bridgeERC721To_localTokenZeroAddress_reverts() (gas: 26432)
L2ERC721Bridge_Test:test_bridgeERC721To_localTokenZeroAddress_reverts() (gas: 26432)
L2ERC721Bridge_Test:test_bridgeERC721To_remoteTokenZeroAddress_reverts() (gas: 21748)
L2ERC721Bridge_Test:test_bridgeERC721To_remoteTokenZeroAddress_reverts() (gas: 21748)
...
...
packages/contracts-bedrock/contracts/test/L1CrossDomainMessenger.t.sol
View file @
c646b470
This diff is collapsed.
Click to expand it.
packages/contracts-bedrock/contracts/test/L2CrossDomainMessenger.t.sol
View file @
c646b470
...
@@ -93,18 +93,20 @@ contract L2CrossDomainMessenger_Test is Messenger_Initializer {
...
@@ -93,18 +93,20 @@ contract L2CrossDomainMessenger_Test is Messenger_Initializer {
L2Messenger.xDomainMessageSender();
L2Messenger.xDomainMessageSender();
}
}
function test_relayMessage_v
0
_reverts() external {
function test_relayMessage_v
2
_reverts() external {
address target = address(0xabcd);
address target = address(0xabcd);
address sender = address(L1Messenger);
address sender = address(L1Messenger);
address caller = AddressAliasHelper.applyL1ToL2Alias(address(L1Messenger));
address caller = AddressAliasHelper.applyL1ToL2Alias(address(L1Messenger));
vm.prank(caller);
// Expect a revert.
vm.expectRevert(
vm.expectRevert(
"CrossDomainMessenger: only version
1 messages are supported after the Bedrock upgrad
e"
"CrossDomainMessenger: only version
0 or 1 messages are supported at this tim
e"
);
);
// Try to relay a v2 message.
vm.prank(caller);
L2Messenger.relayMessage(
L2Messenger.relayMessage(
0
, // nonce
Encoding.encodeVersionedNonce(0, 2)
, // nonce
sender,
sender,
target,
target,
0, // value
0, // value
...
...
packages/contracts-bedrock/contracts/universal/CrossDomainMessenger.sol
View file @
c646b470
...
@@ -263,15 +263,23 @@ abstract contract CrossDomainMessenger is
...
@@ -263,15 +263,23 @@ abstract contract CrossDomainMessenger is
bytes calldata _message
bytes calldata _message
) external payable nonReentrant whenNotPaused {
) external payable nonReentrant whenNotPaused {
(, uint16 version) = Encoding.decodeVersionedNonce(_nonce);
(, uint16 version) = Encoding.decodeVersionedNonce(_nonce);
// Block any messages that aren't version 1. All version 0 messages have been guaranteed to
// be relayed OR have been migrated to version 1 messages. Version 0 messages do not commit
// to the value or minGasLimit fields, which can create unexpected issues for end-users.
require(
require(
version
== 1
,
version
< 2
,
"CrossDomainMessenger: only version
1 messages are supported after the Bedrock upgrad
e"
"CrossDomainMessenger: only version
0 or 1 messages are supported at this tim
e"
);
);
// If the message is version 0, then it's a migrated legacy withdrawal. We therefore need
// to check that the legacy version of the message has not already been relayed.
if (version == 0) {
bytes32 oldHash = Hashing.hashCrossDomainMessageV0(_target, _sender, _message, _nonce);
require(
successfulMessages[oldHash] == false,
"CrossDomainMessenger: legacy withdrawal already relayed"
);
}
// We use the v1 message hash as the unique identifier for the message because it commits
// to the value and minimum gas limit of the message.
bytes32 versionedHash = Hashing.hashCrossDomainMessageV1(
bytes32 versionedHash = Hashing.hashCrossDomainMessageV1(
_nonce,
_nonce,
_sender,
_sender,
...
...
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