Skip to content

Commit 01051e3

Browse files
gfournierProLe-Caigneczguesmi
authored
feat: update config on deploy (#56)
Co-authored-by: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Co-authored-by: Zied <26070035+zguesmi@users.noreply.github.com>
1 parent 1b33286 commit 01051e3

File tree

9 files changed

+142
-202
lines changed

9 files changed

+142
-202
lines changed

Makefile

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ deploy-on-testnets:
5252
$(MAKE) deploy-all \
5353
SOURCE_CHAIN=sepolia SOURCE_RPC=$(SEPOLIA_RPC_URL) \
5454
TARGET_CHAIN=arbitrum_sepolia TARGET_RPC=$(ARBITRUM_SEPOLIA_RPC_URL) \
55-
OPTIONS=--verify
55+
OPTIONS=--verify
5656

5757
deploy-all: # SOURCE_CHAIN, SOURCE_RPC, TARGET_CHAIN, TARGET_RPC, OPTIONS
58-
$(MAKE) deploy-contract CONTRACT=RLCLiquidityUnifier CHAIN=$(SOURCE_CHAIN) RPC_URL=$(SOURCE_RPC) OPTIONS=$(OPTIONS)
59-
$(MAKE) deploy-contract CONTRACT=bridges/layerZero/IexecLayerZeroBridge CHAIN=$(SOURCE_CHAIN) RPC_URL=$(SOURCE_RPC) OPTIONS=$(OPTIONS)
60-
$(MAKE) deploy-contract CONTRACT=RLCCrosschainToken CHAIN=$(TARGET_CHAIN) RPC_URL=$(TARGET_RPC) OPTIONS=$(OPTIONS)
61-
$(MAKE) deploy-contract CONTRACT=bridges/layerZero/IexecLayerZeroBridge CHAIN=$(TARGET_CHAIN) RPC_URL=$(TARGET_RPC) OPTIONS=$(OPTIONS)
58+
$(MAKE) deploy-contract CONTRACT=RLCLiquidityUnifier CHAIN=$(SOURCE_CHAIN) RPC_URL=$(SOURCE_RPC) OPTIONS=$(OPTIONS)
59+
$(MAKE) deploy-contract CONTRACT=bridges/layerZero/IexecLayerZeroBridge CHAIN=$(SOURCE_CHAIN) RPC_URL=$(SOURCE_RPC) OPTIONS=$(OPTIONS)
60+
$(MAKE) deploy-contract CONTRACT=RLCCrosschainToken CHAIN=$(TARGET_CHAIN) RPC_URL=$(TARGET_RPC) OPTIONS=$(OPTIONS)
61+
$(MAKE) deploy-contract CONTRACT=bridges/layerZero/IexecLayerZeroBridge CHAIN=$(TARGET_CHAIN) RPC_URL=$(TARGET_RPC) OPTIONS=$(OPTIONS)
6262
$(MAKE) configure-bridge SOURCE_CHAIN=$(SOURCE_CHAIN) TARGET_CHAIN=$(TARGET_CHAIN) RPC_URL=$(SOURCE_RPC)
6363
$(MAKE) configure-bridge SOURCE_CHAIN=$(TARGET_CHAIN) TARGET_CHAIN=$(SOURCE_CHAIN) RPC_URL=$(TARGET_RPC)
6464

@@ -71,15 +71,16 @@ upgrade-on-anvil:
7171
SOURCE_CHAIN=sepolia SOURCE_RPC=$(ANVIL_SEPOLIA_RPC_URL) \
7272
TARGET_CHAIN=arbitrum_sepolia TARGET_RPC=$(ANVIL_ARBITRUM_SEPOLIA_RPC_URL)
7373

74+
# TODO : RLCMultichain and RLCLiquidityUnifier upgrades
7475
upgrade-on-testnets:
7576
$(MAKE) upgrade-all \
7677
SOURCE_CHAIN=sepolia SOURCE_RPC=$(SEPOLIA_RPC_URL) \
7778
TARGET_CHAIN=arbitrum_sepolia TARGET_RPC=$(ARBITRUM_SEPOLIA_RPC_URL) \
78-
OPTIONS=--verify
79+
OPTIONS=--verify
7980

8081
upgrade-all: # SOURCE_CHAIN, SOURCE_RPC, TARGET_CHAIN, TARGET_RPC, OPTIONS
81-
$(MAKE) upgrade-contract CONTRACT=bridges/layerZero/IexecLayerZeroBridge CHAIN=$(SOURCE_CHAIN) RPC_URL=$(SOURCE_RPC) OPTIONS=$(OPTIONS)
82-
$(MAKE) upgrade-contract CONTRACT=bridges/layerZero/IexecLayerZeroBridge CHAIN=$(TARGET_CHAIN) RPC_URL=$(TARGET_RPC) OPTIONS=$(OPTIONS)
82+
$(MAKE) upgrade-contract CONTRACT=bridges/layerZero/IexecLayerZeroBridge CHAIN=$(SOURCE_CHAIN) RPC_URL=$(SOURCE_RPC) OPTIONS=$(OPTIONS)
83+
$(MAKE) upgrade-contract CONTRACT=bridges/layerZero/IexecLayerZeroBridge CHAIN=$(TARGET_CHAIN) RPC_URL=$(TARGET_RPC) OPTIONS=$(OPTIONS)
8384

8485
#
8586
# Generic deployment targets
@@ -121,7 +122,7 @@ configure-bridge: # SOURCE_CHAIN, TARGET_CHAIN, RPC_URL
121122
-vvv
122123

123124
#
124-
# Individual upgrade targets
125+
# Individual upgrade targets
125126
#
126127

127128
upgrade-layerzero-bridge: # CHAIN, RPC_URL

config/config.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
"lzChainId": 40161
1616
},
1717
"arbitrum_sepolia": {
18-
"rlcCrossChainTokenAddress": "0x0000000000000000000000000000000000000000",
19-
"rlcCrossChainTokenCreatexSalt": "0x0000000000000000000000000000000000000000000000000000000000000000",
20-
"approvalRequired": false,
18+
"rlcCrosschainTokenAddress": "0x0000000000000000000000000000000000000000",
19+
"rlcCrosschainTokenCreatexSalt": "0x0000000000000000000000000000000000000000000000000000000000000000",
2120
"iexecLayerZeroBridgeAddress": "0x0000000000000000000000000000000000000000",
2221
"iexecLayerZeroBridgeCreatexSalt": "0x0000000000000000000000000000000000000000000000000000000000000000",
23-
"lzEndpointAddress": "0x6EDCE65403992e310A62460808c4b910D972f10f",
22+
"lzEndpointAddress": "0x6EDCE65403992e310A62460808c4b910D972f10f",
23+
"approvalRequired": false,
2424
"lzChainId": 40231
2525
}
2626
}

script/RLCCrosschainToken.s.sol

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
pragma solidity ^0.8.22;
55

66
import {Script} from "forge-std/Script.sol";
7+
import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol";
78
import {RLCCrosschainToken} from "../src/RLCCrosschainToken.sol";
89
import {UUPSProxyDeployer} from "./lib/UUPSProxyDeployer.sol";
9-
import {EnvUtils} from "./lib/UpdateEnvUtils.sol";
1010
import {ConfigLib} from "./lib/ConfigLib.sol";
1111

1212
/**
@@ -19,23 +19,21 @@ contract Deploy is Script {
1919
* @return address of the deployed RLCCrosschainToken proxy contract.
2020
*/
2121
function run() external returns (address) {
22-
string memory config = vm.readFile("config/config.json");
2322
string memory chain = vm.envString("CHAIN");
23+
ConfigLib.CommonConfigParams memory params = ConfigLib.readCommonConfig(chain);
2424

25-
ConfigLib.CommonConfigParams memory params = ConfigLib.readCommonConfig(config, chain);
2625
vm.startBroadcast();
2726
address rlcCrosschainTokenProxy = deploy(
2827
"iEx.ec Network Token",
2928
"RLC",
3029
params.initialAdmin,
3130
params.initialUpgrader,
3231
params.createxFactory,
33-
params.rlcCrossChainTokenCreatexSalt
32+
params.rlcCrosschainTokenCreatexSalt
3433
);
3534
vm.stopBroadcast();
3635

37-
//TODO: use config file to store addresses.
38-
EnvUtils.updateEnvVariable("RLC_CROSSCHAIN_ADDRESS", rlcCrosschainTokenProxy);
36+
ConfigLib.updateConfigAddress(chain, "rlcCrosschainTokenAddress", rlcCrosschainTokenProxy);
3937
return rlcCrosschainTokenProxy;
4038
}
4139

script/RLCLiquidityUnifier.s.sol

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
pragma solidity ^0.8.22;
55

66
import {Script} from "forge-std/Script.sol";
7+
import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol";
78
import {RLCLiquidityUnifier} from "../src/RLCLiquidityUnifier.sol";
89
import {UUPSProxyDeployer} from "./lib/UUPSProxyDeployer.sol";
9-
import {EnvUtils} from "./lib/UpdateEnvUtils.sol";
1010
import {ConfigLib} from "./lib/ConfigLib.sol";
1111
import {UpgradeUtils} from "./lib/UpgradeUtils.sol";
1212
/**
@@ -20,10 +20,8 @@ contract Deploy is Script {
2020
* @return address of the deployed RLCLiquidityUnifier proxy contract.
2121
*/
2222
function run() external returns (address) {
23-
string memory config = vm.readFile("config/config.json");
2423
string memory chain = vm.envString("CHAIN");
25-
26-
ConfigLib.CommonConfigParams memory params = ConfigLib.readCommonConfig(config, chain);
24+
ConfigLib.CommonConfigParams memory params = ConfigLib.readCommonConfig(chain);
2725

2826
vm.startBroadcast();
2927
address liquidityUnifierProxy = deploy(
@@ -35,8 +33,7 @@ contract Deploy is Script {
3533
);
3634
vm.stopBroadcast();
3735

38-
//TODO: use config file to store addresses.
39-
EnvUtils.updateEnvVariable("RLC_LIQUIDITY_UNIFIER_PROXY_ADDRESS", liquidityUnifierProxy);
36+
ConfigLib.updateConfigAddress(chain, "rlcLiquidityUnifierAddress", liquidityUnifierProxy);
4037
return liquidityUnifierProxy;
4138
}
4239

@@ -68,18 +65,16 @@ contract Deploy is Script {
6865

6966
contract Upgrade is Script {
7067
function run() external {
71-
vm.startBroadcast();
72-
73-
address proxyAddress = vm.envAddress("RLC_LIQUIDITY_UNIFIER_PROXY_ADDRESS");
74-
address rlcToken = vm.envAddress("RLC_ADDRESS");
68+
string memory chain = vm.envString("CHAIN");
69+
ConfigLib.CommonConfigParams memory commonParams = ConfigLib.readCommonConfig(chain);
7570

71+
vm.startBroadcast();
7672
UpgradeUtils.UpgradeParams memory params = UpgradeUtils.UpgradeParams({
77-
proxyAddress: proxyAddress,
78-
constructorData: abi.encode(rlcToken),
73+
proxyAddress: commonParams.rlcLiquidityUnifierAddress,
74+
constructorData: abi.encode(commonParams.rlcToken),
7975
contractName: "RLCLiquidityUnifierV2Mock.sol:RLCLiquidityUnifierV2", // Would be production contract in real deployment
8076
newStateVariable: 1000000 * 10 ** 9
8177
});
82-
8378
UpgradeUtils.executeUpgrade(params);
8479
vm.stopBroadcast();
8580
}

script/SendArbitrumToEthereum.s.sol

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,11 @@ contract SendTokensToSepolia is Script {
2020
}
2121

2222
function run() external {
23-
vm.startBroadcast();
24-
25-
string memory config = vm.readFile("config/config.json");
2623
string memory sourceChain = vm.envString("SOURCE_CHAIN");
2724
string memory targetChain = vm.envString("TARGET_CHAIN");
2825

29-
ConfigLib.CommonConfigParams memory sourceParams = ConfigLib.readCommonConfig(config, sourceChain);
30-
ConfigLib.CommonConfigParams memory targetParams = ConfigLib.readCommonConfig(config, targetChain);
26+
ConfigLib.CommonConfigParams memory sourceParams = ConfigLib.readCommonConfig(sourceChain);
27+
ConfigLib.CommonConfigParams memory targetParams = ConfigLib.readCommonConfig(targetChain);
3128

3229
// Contract addresses
3330
address iexecLayerZeroBridgeAddress = sourceParams.iexecLayerZeroBridgeAddress;
@@ -48,6 +45,7 @@ contract SendTokensToSepolia is Script {
4845
bytes memory _extraOptions =
4946
abi.encodePacked(uint16(3), uint8(1), uint16(33), uint8(1), uint128(65000), uint128(0));
5047

48+
vm.startBroadcast();
5149
SendParam memory sendParam = SendParam(
5250
destinationChainId,
5351
addressToBytes32(recipientAddress),

script/SendEthereumToArbitrum.s.sol

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,11 @@ contract SendTokensToArbitrumSepolia is Script {
2121
}
2222

2323
function run() external {
24-
vm.startBroadcast();
25-
string memory config = vm.readFile("config/config.json");
2624
string memory sourceChain = vm.envString("SOURCE_CHAIN");
2725
string memory targetChain = vm.envString("TARGET_CHAIN");
2826

29-
ConfigLib.CommonConfigParams memory sourceParams = ConfigLib.readCommonConfig(config, sourceChain);
30-
ConfigLib.CommonConfigParams memory targetParams = ConfigLib.readCommonConfig(config, targetChain);
27+
ConfigLib.CommonConfigParams memory sourceParams = ConfigLib.readCommonConfig(sourceChain);
28+
ConfigLib.CommonConfigParams memory targetParams = ConfigLib.readCommonConfig(targetChain);
3129

3230
// Contract addresses
3331
address iexecLayerZeroBridgeAddress = sourceParams.iexecLayerZeroBridgeAddress;
@@ -39,6 +37,7 @@ contract SendTokensToArbitrumSepolia is Script {
3937
address recipientAddress = targetParams.initialAdmin; // TODO read recipient address from env variables.
4038
uint256 amount = 5 * 10 ** 9; // RLC tokens (adjust the amount as needed)
4139

40+
vm.startBroadcast();
4241
// First, approve the adapter to spend your tokens
4342
IERC20 rlcToken = IERC20(rlcTokenAddress);
4443
console.log("Approving RLCLiquidityUnifier contract to spend %s RLC", amount / 10 ** 9);

script/bridges/layerZero/IexecLayerZeroBridge.s.sol

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol";
77
import {ConfigLib} from "./../../lib/ConfigLib.sol";
88
import {IexecLayerZeroBridge} from "../../../src/bridges/layerZero/IexecLayerZeroBridge.sol";
99
import {UUPSProxyDeployer} from "../../lib/UUPSProxyDeployer.sol";
10-
import {EnvUtils} from "../../lib/UpdateEnvUtils.sol";
1110
import {UpgradeUtils} from "../../lib/UpgradeUtils.sol";
1211

1312
contract Deploy is Script {
@@ -16,15 +15,12 @@ contract Deploy is Script {
1615
* @return address of the deployed IexecLayerZeroBridge proxy contract.
1716
*/
1817
function run() external returns (address) {
19-
vm.startBroadcast();
20-
21-
string memory config = vm.readFile("config/config.json");
2218
string memory chain = vm.envString("CHAIN");
19+
ConfigLib.CommonConfigParams memory params = ConfigLib.readCommonConfig(chain);
2320

24-
ConfigLib.CommonConfigParams memory params = ConfigLib.readCommonConfig(config, chain);
25-
21+
vm.startBroadcast();
2622
address iexecLayerZeroBridgeProxy = deploy(
27-
params.approvalRequired ? params.rlcLiquidityUnifierAddress : params.rlcCrossChainTokenAddress,
23+
params.approvalRequired ? params.rlcLiquidityUnifierAddress : params.rlcCrosschainTokenAddress,
2824
params.lzEndpoint,
2925
params.initialAdmin,
3026
params.initialUpgrader,
@@ -34,10 +30,7 @@ contract Deploy is Script {
3430
);
3531

3632
vm.stopBroadcast();
37-
38-
address implementationAddress = Upgrades.getImplementationAddress(iexecLayerZeroBridgeProxy);
39-
EnvUtils.updateEnvVariable("LAYERZERO_BRIDGE_IMPLEMENTATION_ADDRESS", implementationAddress);
40-
EnvUtils.updateEnvVariable("LAYERZERO_BRIDGE_PROXY_ADDRESS", iexecLayerZeroBridgeProxy);
33+
ConfigLib.updateConfigAddress(chain, "iexecLayerZeroBridgeAddress", iexecLayerZeroBridgeProxy);
4134
return iexecLayerZeroBridgeProxy;
4235
}
4336

@@ -62,48 +55,38 @@ contract Deploy is Script {
6255

6356
contract Configure is Script {
6457
function run() external {
65-
string memory config = vm.readFile("config/config.json");
6658
string memory sourceChain = vm.envString("SOURCE_CHAIN");
6759
string memory targetChain = vm.envString("TARGET_CHAIN");
60+
ConfigLib.CommonConfigParams memory sourceParams = ConfigLib.readCommonConfig(sourceChain);
61+
ConfigLib.CommonConfigParams memory targetParams = ConfigLib.readCommonConfig(targetChain);
6862

69-
ConfigLib.CommonConfigParams memory sourceParams = ConfigLib.readCommonConfig(config, sourceChain);
70-
ConfigLib.CommonConfigParams memory targetParams = ConfigLib.readCommonConfig(config, targetChain);
7163
vm.startBroadcast();
72-
7364
IexecLayerZeroBridge sourceBridge = IexecLayerZeroBridge(sourceParams.iexecLayerZeroBridgeAddress);
7465
sourceBridge.setPeer(
7566
targetParams.lzChainId, bytes32(uint256(uint160(targetParams.iexecLayerZeroBridgeAddress)))
7667
);
77-
7868
vm.stopBroadcast();
7969
}
8070
}
8171

8272
contract Upgrade is Script {
8373
function run() external {
84-
vm.startBroadcast();
85-
86-
string memory config = vm.readFile("config/config.json");
8774
string memory chain = vm.envString("CHAIN");
75+
ConfigLib.CommonConfigParams memory commonParams = ConfigLib.readCommonConfig(chain);
8876

89-
ConfigLib.CommonConfigParams memory commonParams = ConfigLib.readCommonConfig(config, chain);
9077
// For testing purpose
9178
uint256 newStateVariable = 1000000 * 10 ** 9;
92-
9379
address bridgeableToken = commonParams.approvalRequired
9480
? commonParams.rlcLiquidityUnifierAddress
95-
: commonParams.rlcCrossChainTokenAddress;
81+
: commonParams.rlcCrosschainTokenAddress;
82+
vm.startBroadcast();
9683
UpgradeUtils.UpgradeParams memory params = UpgradeUtils.UpgradeParams({
9784
proxyAddress: commonParams.iexecLayerZeroBridgeAddress,
9885
constructorData: abi.encode(bridgeableToken, commonParams.lzEndpoint),
9986
contractName: "IexecLayerZeroBridgeV2Mock.sol:IexecLayerZeroBridgeV2", // Would be production contract in real deployment
10087
newStateVariable: newStateVariable
10188
});
102-
103-
address newImplementationAddress = UpgradeUtils.executeUpgrade(params);
104-
89+
UpgradeUtils.executeUpgrade(params);
10590
vm.stopBroadcast();
106-
107-
EnvUtils.updateEnvVariable("LAYERZERO_BRIDGE_IMPLEMENTATION_ADDRESS", newImplementationAddress);
10891
}
10992
}

0 commit comments

Comments
 (0)