Skip to content

Commit f8c1a4f

Browse files
test: adapt deployment scripts
1 parent 927f896 commit f8c1a4f

File tree

7 files changed

+41
-28
lines changed

7 files changed

+41
-28
lines changed

contracts/deploy/01-foreign-chain.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { parseEther } from "ethers/lib/utils";
22

33
import { HardhatRuntimeEnvironment } from "hardhat/types";
44
import { DeployFunction } from "hardhat-deploy/types";
5-
5+
import { ethers } from "hardhat";
66
import getContractAddress from "../deploy-helpers/getContractAddress";
77

88
enum ForeignChains {
@@ -15,16 +15,22 @@ const paramsByChainId = {
1515
deposit: parseEther("0.1"),
1616
epochPeriod: 86400, // 1 day
1717
homeChainId: 42161, // arbitrum
18+
arbInbox: "0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f", // https://developer.offchainlabs.com/docs/useful_addresses
19+
genesis: 1652709415 // sample genesis time
1820
},
1921
4: {
2022
deposit: parseEther("0.1"),
2123
epochPeriod: 120, // 2 min
22-
homeChainId: 421611,
24+
homeChainId: 421611, // arbitrum testnet
25+
arbInbox: "0x578BAde599406A8fE3d24Fd7f7211c0911F5B29e", //https://developer.offchainlabs.com/docs/useful_addresses
26+
genesis: 1652709415 // sample genesis time
2327
},
2428
31337: {
2529
deposit: parseEther("0.1"),
2630
epochPeriod: 120, // 2 min
2731
homeChainId: 31337,
32+
arbInbox: ethers.constants.AddressZero,
33+
genesis: 1652709415 // sample genesis time
2834
},
2935
};
3036

@@ -56,20 +62,25 @@ const deployForeignGateway: DeployFunction = async (hre: HardhatRuntimeEnvironme
5662
nonce = await homeChainProvider.getTransactionCount(deployer);
5763
nonce += 1; // HomeGatewayToEthereum deploy tx will the third tx after this on its home network, so we add two to the current nonce.
5864
}
59-
const { deposit, epochPeriod, homeChainId } = paramsByChainId[chainId];
65+
const { deposit, epochPeriod, homeChainId, arbInbox, genesis } = paramsByChainId[chainId];
6066
const bridgeAlpha = 5000;
6167
const homeChainIdAsBytes32 = hexZeroPad(homeChainId, 32);
6268
const chainIdAsBytes32 = hexZeroPad("0x" + chainId.toString(16), 32);
6369

6470
const homeGatewayAddress = getContractAddress(deployer, nonce);
6571
console.log("calculated future HomeGatewayToEthereum address for nonce %d: %s", nonce, homeGatewayAddress);
72+
nonce -= 1;
73+
const fastBridgeSenderAddress = getContractAddress(deployer, nonce);
74+
console.log("calculated future fastBridgeSender address for nonce %d: %s", nonce, fastBridgeSenderAddress);
6675

6776
const fastBridgeReceiver = await deploy("FastBridgeReceiverOnEthereum", {
6877
from: deployer,
6978
args: [
70-
ethers.constants.AddressZero, // should be Arbitrum Inbox
79+
arbInbox, // should be Arbitrum Inbox
7180
deposit,
7281
epochPeriod,
82+
fastBridgeSenderAddress,
83+
genesis // sample genesis time
7384
],
7485
log: true,
7586
});

contracts/deploy/02-home-chain.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@ const deployHomeGateway: DeployFunction = async (hre: HardhatRuntimeEnvironment)
2020
chainId === 31337
2121
? await deployments.get("FastBridgeReceiverOnEthereum")
2222
: await hre.companionNetworks.foreign.deployments.get("FastBridgeReceiverOnEthereum");
23+
//const genesisSynchronization = fastBridgeReceiver.
2324
const fastBridgeSender = await deploy("FastBridgeSenderToEthereum", {
2425
from: deployer,
25-
args: [deployer, fastBridgeReceiver.address, ethers.constants.AddressZero],
26+
args: [fastBridgeReceiver.address, 120, 1652709415],
2627
log: true,
2728
}); // nonce+0
2829

@@ -39,7 +40,9 @@ const deployHomeGateway: DeployFunction = async (hre: HardhatRuntimeEnvironment)
3940
klerosCore.address,
4041
fastBridgeSender.address,
4142
foreignGateway.address,
42-
foreignChainId],
43+
foreignChainId,
44+
chainId
45+
],
4346
log: true,
4447
}); // nonce+1
4548

@@ -49,6 +52,7 @@ const deployHomeGateway: DeployFunction = async (hre: HardhatRuntimeEnvironment)
4952
if (safeBridgeSender === ethers.constants.AddressZero) {
5053
await execute("FastBridgeReceiverOnEthereum", { from: deployer, log: true }, "setSafeBridgeSender", fastBridgeSender.address);
5154
}
55+
5256
};
5357

5458
deployHomeGateway.tags = ["HomeChain", "HomeGateway"];

contracts/src/bridge/FastBridgeReceiverOnEthereum.sol

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,13 @@ contract FastBridgeReceiverOnEthereum is SafeBridgeReceiverOnEthereum, IFastBrid
5555
constructor(
5656
address _inbox,
5757
uint256 _deposit,
58-
uint256 _epochPeriod
59-
) SafeBridgeReceiverOnEthereum(_inbox) {
58+
uint256 _epochPeriod,
59+
address _safeBridgeSender,
60+
uint256 _genesis
61+
) SafeBridgeReceiverOnEthereum(_inbox, _safeBridgeSender) {
6062
deposit = _deposit;
6163
epochPeriod = _epochPeriod;
62-
genesis = block.timestamp;
64+
genesis = _genesis;
6365
}
6466

6567
// ************************************* //

contracts/src/bridge/FastBridgeSenderToEthereum.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ contract FastBridgeSenderToEthereum is SafeBridgeSenderToEthereum, IFastBridgeSe
5353
uint256 _genesis
5454
) SafeBridgeSenderToEthereum() {
5555
fastBridgeReceiver = _fastBridgeReceiver;
56-
genesis = _genesis;
5756
epochPeriod = _epochPeriod;
57+
genesis = _genesis;
5858
}
5959

6060
// ************************************* //

contracts/src/bridge/SafeBridgeReceiverOnEthereum.sol

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,16 @@ contract SafeBridgeReceiverOnEthereum is ISafeBridgeReceiver {
2424
// ************************************* //
2525

2626
// will be set as immutable in production deployment for gas optimization
27-
address public safeBridgeSender; // The address of the Safe Bridge sender on Arbitrum.
27+
address public immutable safeBridgeSender; // The address of the Safe Bridge sender on Arbitrum.
2828
IInbox public immutable inbox; // The address of the Arbitrum Inbox contract.
2929

3030
/**
3131
* @dev Constructor.
3232
* @param _inbox The address of the Arbitrum Inbox contract.
3333
*/
34-
constructor(address _inbox) {
34+
constructor(address _inbox, address _safeBridgeSender) {
3535
inbox = IInbox(_inbox);
36-
}
37-
38-
function setSafeBridgeSender(address _safeBridgeSender) external {
39-
if (safeBridgeSender == address(0)) safeBridgeSender = _safeBridgeSender;
36+
safeBridgeSender = _safeBridgeSender;
4037
}
4138

4239
// ************************************* //

contracts/src/gateway/ForeignGatewayOnEthereum.sol

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ contract ForeignGatewayOnEthereum is IForeignGateway {
4646
address public governor;
4747
IFastBridgeReceiver public fastbridge;
4848
IFastBridgeReceiver public depreciatedFastbridge;
49-
uint256 fastbridgeExpiration;
50-
address public homeGateway;
49+
uint256 public fastbridgeExpiration;
50+
address public immutable homeGateway;
5151

5252
event OutgoingDispute(
5353
bytes32 disputeHash,
@@ -90,10 +90,11 @@ contract ForeignGatewayOnEthereum is IForeignGateway {
9090

9191
/** @dev Changes the fastBridge, useful to increase the claim deposit.
9292
* @param _fastbridge The address of the new fastBridge.
93+
* @param _gracePeriod The duration to accept messages from the deprecated bridge (if at all).
9394
*/
94-
function changeFastbridge(IFastBridgeReceiver _fastbridge) external onlyByGovernor {
95+
function changeFastbridge(IFastBridgeReceiver _fastbridge, uint256 _gracePeriod) external onlyByGovernor {
9596
// grace period to relay remaining messages in the relay / bridging process
96-
fastbridgeExpiration = block.timestamp + _fastbridge.epochPeriod() + 1209600; // 2 weeks
97+
fastbridgeExpiration = block.timestamp + _fastbridge.epochPeriod() + _gracePeriod; // 2 weeks
9798
depreciatedFastbridge = fastbridge;
9899
fastbridge = _fastbridge;
99100
}

contracts/src/gateway/HomeGatewayToEthereum.sol

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ contract HomeGatewayToEthereum is IHomeGateway {
2525
mapping(bytes32 => uint256) public disputeHashtoID;
2626

2727
address public governor;
28-
IArbitrator public arbitrator;
28+
IArbitrator public immutable arbitrator;
2929
IFastBridgeSender public fastbridge;
3030
address public override foreignGateway;
31-
uint256 public override chainID;
32-
uint256 public override foreignChainID;
31+
uint256 public immutable override chainID;
32+
uint256 public immutable override foreignChainID;
3333

3434
struct RelayedData {
3535
uint256 arbitrationCost;
@@ -42,17 +42,15 @@ contract HomeGatewayToEthereum is IHomeGateway {
4242
IArbitrator _arbitrator,
4343
IFastBridgeSender _fastbridge,
4444
address _foreignGateway,
45-
uint256 _foreignChainID
45+
uint256 _foreignChainID,
46+
uint256 _chainID
4647
) {
4748
governor = _governor;
4849
arbitrator = _arbitrator;
4950
fastbridge = _fastbridge;
5051
foreignGateway = _foreignGateway;
5152
foreignChainID = _foreignChainID;
52-
53-
assembly {
54-
sstore(chainID.slot, chainid())
55-
}
53+
chainID = _chainID;
5654

5755
emit MetaEvidence(0, "BRIDGE");
5856
}

0 commit comments

Comments
 (0)