Skip to content

Commit 66a0fcb

Browse files
feat: optimism accum
1 parent 4c2e9af commit 66a0fcb

File tree

2 files changed

+60
-14
lines changed

2 files changed

+60
-14
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// SPDX-License-Identifier: GPL-3.0-only
2+
pragma solidity 0.8.7;
3+
4+
import "../NativeBridgeAccum.sol";
5+
import "../../../interfaces/native-bridge/ICrossDomainMessenger.sol";
6+
7+
contract OptimismAccum is NativeBridgeAccum {
8+
ICrossDomainMessenger public crossDomainMessenger;
9+
10+
constructor(
11+
address socket_,
12+
address notary_,
13+
uint32 remoteChainSlug_,
14+
uint32 chainSlug_
15+
) NativeBridgeAccum(socket_, notary_, remoteChainSlug_, chainSlug_) {
16+
if ((block.chainid == 10 || block.chainid == 420)) {
17+
crossDomainMessenger = ICrossDomainMessenger(
18+
0x4200000000000000000000000000000000000007
19+
);
20+
} else {
21+
crossDomainMessenger = block.chainid == 1
22+
? ICrossDomainMessenger(
23+
0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1
24+
)
25+
: ICrossDomainMessenger(
26+
0x5086d1eEF304eb5284A0f6720f79403b4e9bE294
27+
);
28+
}
29+
}
30+
31+
/**
32+
* @param bridgeParams - only one index, gas limit needed to execute data
33+
* @param data - encoded data to be sent to remote notary
34+
*/
35+
function sendL2Message(uint256[] calldata bridgeParams, bytes memory data)
36+
internal
37+
override
38+
{
39+
crossDomainMessenger.sendMessage(
40+
remoteNotary,
41+
data,
42+
uint32(bridgeParams[0])
43+
);
44+
}
45+
}

src/notaries/native-bridge/OptimismReceiver.sol

+15-14
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,31 @@ import "../../interfaces/native-bridge/ICrossDomainMessenger.sol";
55
import {NativeBridgeNotary} from "./NativeBridgeNotary.sol";
66

77
contract OptimismReceiver is NativeBridgeNotary {
8-
address public immutable OVM_L2_CROSS_DOMAIN_MESSENGER;
8+
address public OVM_L2_CROSS_DOMAIN_MESSENGER;
99
bool public isL2;
1010

1111
modifier onlyRemoteAccumulator() override {
12-
if (isL2) {
13-
if (
14-
msg.sender != OVM_L2_CROSS_DOMAIN_MESSENGER ||
15-
ICrossDomainMessenger(OVM_L2_CROSS_DOMAIN_MESSENGER)
16-
.xDomainMessageSender() !=
17-
remoteTarget
18-
) revert InvalidSender();
19-
} else {
20-
// for l2 to l1
21-
}
12+
if (
13+
msg.sender != OVM_L2_CROSS_DOMAIN_MESSENGER &&
14+
ICrossDomainMessenger(OVM_L2_CROSS_DOMAIN_MESSENGER)
15+
.xDomainMessageSender() !=
16+
remoteTarget
17+
) revert InvalidSender();
2218
_;
2319
}
2420

2521
constructor(
26-
address ovmL2CrossDomainMessenger,
2722
address signatureVerifier_,
2823
uint32 chainSlug_,
2924
address remoteTarget_
3025
) NativeBridgeNotary(signatureVerifier_, chainSlug_, remoteTarget_) {
31-
isL2 = (block.chainid == 10 || block.chainid == 420) ? true : false;
32-
OVM_L2_CROSS_DOMAIN_MESSENGER = ovmL2CrossDomainMessenger;
26+
if ((block.chainid == 10 || block.chainid == 420)) {
27+
isL2 = true;
28+
OVM_L2_CROSS_DOMAIN_MESSENGER = 0x4200000000000000000000000000000000000007;
29+
} else {
30+
OVM_L2_CROSS_DOMAIN_MESSENGER = block.chainid == 1
31+
? 0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1
32+
: 0x5086d1eEF304eb5284A0f6720f79403b4e9bE294;
33+
}
3334
}
3435
}

0 commit comments

Comments
 (0)