Skip to content

Commit 67529a1

Browse files
committed
arbitrum gateways
1 parent 4aa8b6e commit 67529a1

File tree

9 files changed

+1958
-0
lines changed

9 files changed

+1958
-0
lines changed

contracts/_mocks/MockArbitrum.sol

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
// SPDX-License-Identifier: GPL-3.0-or-later
2+
pragma solidity 0.6.11;
3+
pragma experimental ABIEncoderV2;
4+
5+
import {InboxMock} from "arb-bridge-peripherals/contracts/tokenbridge/test/InboxMock.sol";
6+
import {L1ArbitrumMessenger} from "arb-bridge-peripherals/contracts/tokenbridge/ethereum/L1ArbitrumMessenger.sol";
7+
import {L2ArbitrumMessenger} from "arb-bridge-peripherals/contracts/tokenbridge/arbitrum/L2ArbitrumMessenger.sol";
8+
import {L1ArbitrumTestMessenger} from "arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol";
9+
import {L2ArbitrumTestMessenger} from "arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol";
10+
import {IBridge} from "arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol";
11+
import {AMPLArbitrumGateway} from "../base-chain/bridge-gateways/AMPLArbitrumGateway.sol";
12+
import {ArbitrumXCAmpleGateway} from "../satellite-chain/bridge-gateways/ArbitrumXCAmpleGateway.sol";
13+
14+
contract MockArbitrumInbox is InboxMock {}
15+
16+
// Mocking sendTxToL2
17+
// https://shorturl.at/dgABO
18+
contract MockAMPLArbitrumGateway is L1ArbitrumTestMessenger, AMPLArbitrumGateway {
19+
constructor(
20+
address ampl_,
21+
address policy_,
22+
address vault_
23+
) public AMPLArbitrumGateway(ampl_, policy_, vault_) {}
24+
25+
function sendTxToL2(
26+
address _inbox,
27+
address _to,
28+
address _user,
29+
uint256 _l1CallValue,
30+
uint256 _l2CallValue,
31+
uint256 _maxSubmissionCost,
32+
uint256 _maxGas,
33+
uint256 _gasPriceBid,
34+
bytes memory _data
35+
) internal virtual override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) returns (uint256) {
36+
return
37+
L1ArbitrumTestMessenger.sendTxToL2(
38+
_inbox,
39+
_to,
40+
_user,
41+
_l1CallValue,
42+
_l2CallValue,
43+
_maxSubmissionCost,
44+
_maxGas,
45+
_gasPriceBid,
46+
_data
47+
);
48+
}
49+
50+
function getL2ToL1Sender(address _inbox)
51+
internal
52+
view
53+
virtual
54+
override(L1ArbitrumMessenger, L1ArbitrumTestMessenger)
55+
returns (address)
56+
{
57+
return L1ArbitrumTestMessenger.getL2ToL1Sender(_inbox);
58+
}
59+
60+
function getBridge(address _inbox)
61+
internal
62+
view
63+
virtual
64+
override(L1ArbitrumMessenger, L1ArbitrumTestMessenger)
65+
returns (IBridge)
66+
{
67+
return L1ArbitrumTestMessenger.getBridge(_inbox);
68+
}
69+
}
70+
71+
contract MockArbitrumXCAmpleGateway is L2ArbitrumTestMessenger, ArbitrumXCAmpleGateway {
72+
constructor(address xcAmple_, address xcController_)
73+
public
74+
ArbitrumXCAmpleGateway(xcAmple_, xcController_)
75+
{}
76+
77+
function sendTxToL1(
78+
uint256 _l1CallValue,
79+
address _from,
80+
address _to,
81+
bytes memory _data
82+
) internal virtual override(L2ArbitrumMessenger, L2ArbitrumTestMessenger) returns (uint256) {
83+
return L2ArbitrumTestMessenger.sendTxToL1(_l1CallValue, _from, _to, _data);
84+
}
85+
}

contracts/_test/UFragmentsTestnet.sol

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// SPDX-License-Identifier: GPL-3.0-or-later
2+
// Importing uFragments contract dependencies to be compiled for integration tests
3+
pragma solidity 0.7.6;
4+
5+
import {UFragments} from "uFragments/contracts/UFragments.sol";
6+
7+
contract UFragmentsTestnet is UFragments {
8+
event Result(bool result, bytes reason);
9+
10+
function isArbitrumEnabled() external view returns (uint8) {
11+
return uint8(0xa4b1);
12+
}
13+
14+
// NOTE: this allows the token contarct to register itself with the bridge on testnet
15+
// The AMPL contract on mainnet is immutable and this can't be used!
16+
function externalCall(
17+
address destination,
18+
bytes calldata data,
19+
uint256 value
20+
) external payable {
21+
(bool result, bytes memory reason) = destination.call{value: value}(data);
22+
emit Result(result, reason);
23+
}
24+
}

0 commit comments

Comments
 (0)