Skip to content

Commit 3057375

Browse files
authored
Merge branch 'develop' into jm/add-missing-oz-audit
2 parents f303768 + 73f0cdd commit 3057375

File tree

16 files changed

+73
-32
lines changed

16 files changed

+73
-32
lines changed

op-batcher/batcher/driver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ func NewBatchSubmitterWithSigner(cfg Config, addr common.Address, signer SignerF
163163
done: make(chan struct{}),
164164
log: l,
165165
state: NewChannelManager(l, cfg.ChannelTimeout),
166-
// TODO: this context only exists because the even loop doesn't reach done
166+
// TODO: this context only exists because the event loop doesn't reach done
167167
// if the tx manager is blocking forever due to e.g. insufficient balance.
168168
ctx: ctx,
169169
cancel: cancel,

op-bindings/bindings/l1standardbridge.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

op-bindings/bindings/l2standardbridge.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

op-bindings/bindings/l2standardbridge_more.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

op-chain-ops/crossdomain/legacy_withdrawal.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,3 +170,17 @@ func (w *LegacyWithdrawal) Value() (*big.Int, error) {
170170

171171
return value, nil
172172
}
173+
174+
// CrossDomainMessage turns the LegacyWithdrawal into
175+
// a CrossDomainMessage. LegacyWithdrawals do not have
176+
// the concept of value or gaslimit, so set them to 0.
177+
func (w *LegacyWithdrawal) CrossDomainMessage() *CrossDomainMessage {
178+
return &CrossDomainMessage{
179+
Nonce: w.Nonce,
180+
Sender: w.Sender,
181+
Target: w.Target,
182+
Value: new(big.Int),
183+
GasLimit: new(big.Int),
184+
Data: []byte(w.Data),
185+
}
186+
}

packages/contracts-bedrock/.gas-snapshot

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 261344)
22
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_1() (gas: 75851)
3-
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 348151)
4-
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 112583)
5-
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 348173)
6-
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 112604)
3+
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 348207)
4+
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 112639)
5+
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 348229)
6+
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 112660)
77
GasBenchMark_L1StandardBridge_Finalize:test_finalizeETHWithdrawal_benchmark() (gas: 40502)
88
GasBenchMark_L2OutputOracle:test_proposeL2Output_benchmark() (gas: 88513)
99
GasBenchMark_OptimismPortal:test_depositTransaction_benchmark() (gas: 74998)
@@ -92,11 +92,11 @@ L1ERC721Bridge_Test:test_finalizeBridgeERC721_notFromRemoteMessenger_reverts() (
9292
L1ERC721Bridge_Test:test_finalizeBridgeERC721_notViaLocalMessenger_reverts() (gas: 16093)
9393
L1ERC721Bridge_Test:test_finalizeBridgeERC721_selfToken_reverts() (gas: 17593)
9494
L1ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 323814)
95-
L1StandardBridge_DepositERC20To_Test:test_depositERC20To_succeeds() (gas: 575959)
96-
L1StandardBridge_DepositERC20_Test:test_depositERC20_succeeds() (gas: 573786)
95+
L1StandardBridge_DepositERC20To_Test:test_depositERC20To_succeeds() (gas: 576276)
96+
L1StandardBridge_DepositERC20_Test:test_depositERC20_succeeds() (gas: 574103)
9797
L1StandardBridge_DepositERC20_TestFail:test_depositERC20_notEoa_reverts() (gas: 22320)
98-
L1StandardBridge_DepositETHTo_Test:test_depositETHTo_succeeds() (gas: 324712)
99-
L1StandardBridge_DepositETH_Test:test_depositETH_succeeds() (gas: 367539)
98+
L1StandardBridge_DepositETHTo_Test:test_depositETHTo_succeeds() (gas: 324839)
99+
L1StandardBridge_DepositETH_Test:test_depositETH_succeeds() (gas: 367666)
100100
L1StandardBridge_DepositETH_TestFail:test_depositETH_notEoa_reverts() (gas: 40780)
101101
L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_incorrectValue_reverts() (gas: 34207)
102102
L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 34288)
@@ -105,9 +105,9 @@ L1StandardBridge_FinalizeERC20Withdrawal_Test:test_finalizeERC20Withdrawal_succe
105105
L1StandardBridge_FinalizeERC20Withdrawal_TestFail:test_finalizeERC20Withdrawal_notMessenger_reverts() (gas: 31148)
106106
L1StandardBridge_FinalizeERC20Withdrawal_TestFail:test_finalizeERC20Withdrawal_notOtherBridge_reverts() (gas: 31504)
107107
L1StandardBridge_FinalizeETHWithdrawal_Test:test_finalizeETHWithdrawal_succeeds() (gas: 58686)
108-
L1StandardBridge_Getter_Test:test_getters_succeeds() (gas: 31449)
108+
L1StandardBridge_Getter_Test:test_getters_succeeds() (gas: 32151)
109109
L1StandardBridge_Initialize_Test:test_initialize_succeeds() (gas: 22005)
110-
L1StandardBridge_Receive_Test:test_receive_succeeds() (gas: 514475)
110+
L1StandardBridge_Receive_Test:test_receive_succeeds() (gas: 519995)
111111
L2CrossDomainMessenger_Test:test_messageVersion_succeeds() (gas: 8389)
112112
L2CrossDomainMessenger_Test:test_pause_notOwner_reverts() (gas: 10837)
113113
L2CrossDomainMessenger_Test:test_pause_succeeds() (gas: 31846)
@@ -168,11 +168,11 @@ L2StandardBridge_Test:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 239
168168
L2StandardBridge_Test:test_finalizeBridgeETH_sendToSelf_reverts() (gas: 23893)
169169
L2StandardBridge_Test:test_finalizeDeposit_succeeds() (gas: 89473)
170170
L2StandardBridge_Test:test_initialize_succeeds() (gas: 24270)
171-
L2StandardBridge_Test:test_receive_succeeds() (gas: 131905)
172-
L2StandardBridge_Test:test_withdrawTo_succeeds() (gas: 344660)
173-
L2StandardBridge_Test:test_withdraw_insufficientValue_reverts() (gas: 19630)
171+
L2StandardBridge_Test:test_receive_succeeds() (gas: 141940)
172+
L2StandardBridge_Test:test_withdrawTo_succeeds() (gas: 344914)
173+
L2StandardBridge_Test:test_withdraw_insufficientValue_reverts() (gas: 19627)
174174
L2StandardBridge_Test:test_withdraw_notEOA_reverts() (gas: 251798)
175-
L2StandardBridge_Test:test_withdraw_succeeds() (gas: 343975)
175+
L2StandardBridge_Test:test_withdraw_succeeds() (gas: 344228)
176176
L2ToL1MessagePasserTest:test_burn_succeeds() (gas: 112572)
177177
L2ToL1MessagePasserTest:test_initiateWithdrawal_fromContract_succeeds() (gas: 70423)
178178
L2ToL1MessagePasserTest:test_initiateWithdrawal_fromEOA_succeeds() (gas: 75874)

packages/contracts-bedrock/contracts/L1/L1StandardBridge.sol

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,22 @@ contract L1StandardBridge is StandardBridge, Semver {
9191
);
9292

9393
/**
94-
* @custom:semver 1.0.0
94+
* @custom:semver 1.1.0
9595
*
9696
* @param _messenger Address of the L1CrossDomainMessenger.
9797
*/
9898
constructor(address payable _messenger)
99-
Semver(1, 0, 0)
99+
Semver(1, 1, 0)
100100
StandardBridge(_messenger, payable(Predeploys.L2_STANDARD_BRIDGE))
101101
{}
102102

103+
/**
104+
* @notice Allows EOAs to bridge ETH by sending directly to the bridge.
105+
*/
106+
receive() external payable override onlyEOA {
107+
_initiateETHDeposit(msg.sender, msg.sender, RECEIVE_DEFAULT_GAS_LIMIT, bytes(""));
108+
}
109+
103110
/**
104111
* @custom:legacy
105112
* @notice Finalizes a withdrawal of ERC20 tokens from L2.
@@ -261,7 +268,7 @@ contract L1StandardBridge is StandardBridge, Semver {
261268
address _from,
262269
address _to,
263270
uint32 _minGasLimit,
264-
bytes calldata _extraData
271+
bytes memory _extraData
265272
) internal {
266273
emit ETHDepositInitiated(_from, _to, msg.value, _extraData);
267274
_initiateBridgeETH(_from, _to, msg.value, _minGasLimit, _extraData);
@@ -285,7 +292,7 @@ contract L1StandardBridge is StandardBridge, Semver {
285292
address _to,
286293
uint256 _amount,
287294
uint32 _minGasLimit,
288-
bytes calldata _extraData
295+
bytes memory _extraData
289296
) internal {
290297
emit ERC20DepositInitiated(_l1Token, _l2Token, _from, _to, _amount, _extraData);
291298
_initiateBridgeERC20(_l1Token, _l2Token, _from, _to, _amount, _minGasLimit, _extraData);

packages/contracts-bedrock/contracts/L2/L2StandardBridge.sol

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,29 @@ contract L2StandardBridge is StandardBridge, Semver {
5959
);
6060

6161
/**
62-
* @custom:semver 1.0.0
62+
* @custom:semver 1.1.0
6363
*
6464
* @param _otherBridge Address of the L1StandardBridge.
6565
*/
6666
constructor(address payable _otherBridge)
67-
Semver(1, 0, 0)
67+
Semver(1, 1, 0)
6868
StandardBridge(payable(Predeploys.L2_CROSS_DOMAIN_MESSENGER), _otherBridge)
6969
{}
7070

71+
/**
72+
* @notice Allows EOAs to bridge ETH by sending directly to the bridge.
73+
*/
74+
receive() external payable override onlyEOA {
75+
_initiateWithdrawal(
76+
Predeploys.LEGACY_ERC20_ETH,
77+
msg.sender,
78+
msg.sender,
79+
msg.value,
80+
RECEIVE_DEFAULT_GAS_LIMIT,
81+
bytes("")
82+
);
83+
}
84+
7185
/**
7286
* @custom:legacy
7387
* @notice Initiates a withdrawal from L2 to L1.
@@ -165,7 +179,7 @@ contract L2StandardBridge is StandardBridge, Semver {
165179
address _to,
166180
uint256 _amount,
167181
uint32 _minGasLimit,
168-
bytes calldata _extraData
182+
bytes memory _extraData
169183
) internal {
170184
address l1Token = OptimismMintableERC20(_l2Token).l1Token();
171185
if (_l2Token == Predeploys.LEGACY_ERC20_ETH) {

packages/contracts-bedrock/contracts/test/L1StandardBridge.t.sol

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ contract L1StandardBridge_Getter_Test is Bridge_Initializer {
1616
assert(L1Bridge.OTHER_BRIDGE() == L2Bridge);
1717
assert(L1Bridge.messenger() == L1Messenger);
1818
assert(L1Bridge.MESSENGER() == L1Messenger);
19-
assertEq(L1Bridge.version(), "1.0.0");
19+
assertEq(L1Bridge.version(), "1.1.0");
2020
}
2121
}
2222

@@ -38,6 +38,10 @@ contract L1StandardBridge_Receive_Test is Bridge_Initializer {
3838
function test_receive_succeeds() external {
3939
assertEq(address(op).balance, 0);
4040

41+
// The legacy event must be emitted for backwards compatibility
42+
vm.expectEmit(true, true, true, true);
43+
emit ETHDepositInitiated(alice, alice, 100, hex"");
44+
4145
vm.expectEmit(true, true, true, true);
4246
emit ETHBridgeInitiated(alice, alice, 100, hex"");
4347

packages/contracts-bedrock/contracts/test/L2StandardBridge.t.sol

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ contract L2StandardBridge_Test is Bridge_Initializer {
3333
// TODO: withdrawal hash should be computed correctly
3434
// TODO: events from each contract
3535

36+
vm.expectEmit(true, true, true, true);
37+
emit WithdrawalInitiated(address(0), Predeploys.LEGACY_ERC20_ETH, alice, alice, 100, hex"");
38+
3639
vm.prank(alice, alice);
3740
(bool success, ) = address(L2Bridge).call{ value: 100 }(hex"");
3841
assertEq(success, true);

0 commit comments

Comments
 (0)