Commit 3adc2cc4 authored by Maurelian's avatar Maurelian Committed by GitHub

Merge pull request #8465 from ethereum-optimism/ctb/l2-standard-bridge-init

contracts-bedrock: L2StandardBridge `initialize()`
parents afbe2e89 5e815e22
This diff is collapsed.
......@@ -68,8 +68,8 @@
"sourceCodeHash": "0x2b9b106a924ac21d6e8f57219e7f7c72f6581ea1cfd5cff77d79a7f144f0ebd2"
},
"src/L2/L2StandardBridge.sol": {
"initCodeHash": "0x2d6b3e6fee86b9edbfe56bc4e201d1fe0cd70db424121f0059772cd9a46cdb16",
"sourceCodeHash": "0xe6f70ea8495447be7aaa77c27ce9aed9c36e63c038332f3abb1550e40cb9baf9"
"initCodeHash": "0x0f39bfd5d2d61018845c9e189c7a206a71e85c813eb9fc6ff37c060a0e2d1431",
"sourceCodeHash": "0x13fd1bee99da3c71addf0dd5017ea80bb560e65dfaaf7535de1f6c9c380490ad"
},
"src/L2/L2ToL1MessagePasser.sol": {
"initCodeHash": "0x08bbede75cd6dfd076903b8f04d24f82fa7881576c135825098778632e37eebc",
......
......@@ -523,6 +523,13 @@
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "l1TokenBridge",
......
......@@ -52,14 +52,20 @@ contract L2StandardBridge is StandardBridge, ISemver {
bytes extraData
);
/// @custom:semver 1.6.0
string public constant version = "1.6.0";
/// @custom:semver 1.7.0
string public constant version = "1.7.0";
/// @notice Constructs the L2StandardBridge contract.
/// @param _otherBridge Address of the L1StandardBridge.
constructor(address payable _otherBridge)
StandardBridge(payable(Predeploys.L2_CROSS_DOMAIN_MESSENGER), _otherBridge)
{ }
{
initialize();
}
/// @notice Initializes the contract. This is a noop in the implementation but included to ensure that
/// the contract cannot be initialized a second time.
function initialize() public initializer { }
/// @notice Allows EOAs to bridge ETH by sending directly to the bridge.
receive() external payable override onlyEOA {
......
......@@ -103,6 +103,14 @@ contract Initializer_Test is Bridge_Initializer {
initializedSlotVal: deploy.loadInitializedSlot("ProtocolVersions", true)
})
);
// L2CrossDomainMessenger
contracts.push(
InitializeableContract({
target: address(l2CrossDomainMessenger),
initCalldata: abi.encodeCall(l2CrossDomainMessenger.initialize, ()),
initializedSlotVal: deploy.loadInitializedSlot("L2CrossDomainMessenger", false)
})
);
// L1StandardBridge
contracts.push(
InitializeableContract({
......@@ -111,12 +119,12 @@ contract Initializer_Test is Bridge_Initializer {
initializedSlotVal: deploy.loadInitializedSlot("L1StandardBridge", true)
})
);
// L2CrossDomainMessenger
// L2StandardBridge
contracts.push(
InitializeableContract({
target: address(l2CrossDomainMessenger),
initCalldata: abi.encodeCall(l2CrossDomainMessenger.initialize, ()),
initializedSlotVal: deploy.loadInitializedSlot("L2CrossDomainMessenger", false)
target: address(l2StandardBridge),
initCalldata: abi.encodeCall(l2StandardBridge.initialize, ()),
initializedSlotVal: deploy.loadInitializedSlot("L2StandardBridge", false)
})
);
// L1ERC721Bridge
......@@ -149,7 +157,12 @@ contract Initializer_Test is Bridge_Initializer {
// Attempt to re-initialize all contracts within the `contracts` array.
for (uint256 i; i < contracts.length; i++) {
InitializeableContract memory _contract = contracts[i];
uint256 size;
address target = _contract.target;
assembly {
size := extcodesize(target)
}
console.log(size);
// Assert that the contract is already initialized.
assertEq(_contract.initializedSlotVal, 1);
......
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