Skip to content

Commit 8246a11

Browse files
committed
wip
1 parent 7e69886 commit 8246a11

File tree

7 files changed

+56
-117
lines changed

7 files changed

+56
-117
lines changed

script/RLCCrosschainToken.s.sol

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

66
import {Script} from "forge-std/Script.sol";
7-
import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol";
7+
import {Options} from "openzeppelin-foundry-upgrades/Upgrades.sol";
88
import {RLCCrosschainToken} from "../src/RLCCrosschainToken.sol";
99
import {UUPSProxyUtils} from "./lib/UUPSProxyUtils.sol";
1010
import {ConfigLib} from "./lib/ConfigLib.sol";
@@ -65,12 +65,24 @@ contract Deploy is Script {
6565
contract Upgrade is Script {
6666
function run() external {
6767
vm.startBroadcast();
68-
UUPSProxyUtils.upgrade({
68+
upgrade({
6969
proxyAddress: address(0), // Replace with the actual proxy address
7070
contractName: "", // e.g., "ContractV2.sol:ContractV2"
7171
constructorData: new bytes(0), // Replace with the actual constructor data
7272
initData: new bytes(0) // Replace with the actual initialization data
7373
});
7474
vm.stopBroadcast();
7575
}
76+
77+
// TODO add tests in `RLCCrosschainTokenUpgrade.t.sol`.
78+
function upgrade(
79+
address proxyAddress,
80+
string memory contractName,
81+
bytes memory constructorData,
82+
bytes memory initData
83+
) public {
84+
Options memory opts;
85+
opts.constructorData = constructorData;
86+
UUPSProxyUtils.executeUpgrade(proxyAddress, contractName, initData, opts);
87+
}
7688
}

script/RLCLiquidityUnifier.s.sol

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

66
import {Script} from "forge-std/Script.sol";
7-
import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol";
7+
import {Options} from "openzeppelin-foundry-upgrades/Upgrades.sol";
88
import {RLCLiquidityUnifier} from "../src/RLCLiquidityUnifier.sol";
99
import {UUPSProxyUtils} from "./lib/UUPSProxyUtils.sol";
1010
import {ConfigLib} from "./lib/ConfigLib.sol";
@@ -65,12 +65,23 @@ contract Deploy is Script {
6565
contract Upgrade is Script {
6666
function run() external {
6767
vm.startBroadcast();
68-
UUPSProxyUtils.upgrade({
68+
upgrade({
6969
proxyAddress: address(0), // Replace with the actual proxy address
7070
contractName: "", // e.g., "ContractV2.sol:ContractV2"
7171
constructorData: new bytes(0), // Replace with the actual constructor data
7272
initData: new bytes(0) // Replace with the actual initialization data
7373
});
7474
vm.stopBroadcast();
7575
}
76+
77+
function upgrade(
78+
address proxyAddress,
79+
string memory contractName,
80+
bytes memory constructorData,
81+
bytes memory initData
82+
) public {
83+
Options memory opts;
84+
opts.constructorData = constructorData;
85+
UUPSProxyUtils.executeUpgrade(proxyAddress, contractName, initData, opts);
86+
}
7687
}

script/bridges/layerZero/IexecLayerZeroBridge.s.sol

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
pragma solidity ^0.8.22;
44

55
import {Script} from "forge-std/Script.sol";
6-
import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol";
6+
import {Options} from "openzeppelin-foundry-upgrades/Upgrades.sol";
77
import {EnforcedOptionParam} from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol";
88
import {OptionsBuilder} from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol";
99
import {ConfigLib} from "./../../lib/ConfigLib.sol";
@@ -100,12 +100,29 @@ contract Configure is Script {
100100
contract Upgrade is Script {
101101
function run() external {
102102
vm.startBroadcast();
103-
UUPSProxyUtils.upgrade({
103+
upgrade({
104104
proxyAddress: address(0), // Replace with the actual proxy address
105105
contractName: "", // e.g., "ContractV2.sol:ContractV2"
106106
constructorData: new bytes(0), // Replace with the actual constructor data
107107
initData: new bytes(0) // Replace with the actual initialization data
108108
});
109109
vm.stopBroadcast();
110110
}
111+
112+
function upgrade(
113+
address proxyAddress,
114+
string memory contractName,
115+
bytes memory constructorData,
116+
bytes memory initData
117+
) public {
118+
Options memory opts;
119+
opts.constructorData = constructorData;
120+
// Ignore checks related to LayerZero contracts:
121+
// - OAppSenderUpgradeable
122+
// - OAppReceiverUpgradeable
123+
// - OFTCoreUpgradeable
124+
// - OAppCoreUpgradeable
125+
opts.unsafeAllow = "constructor,state-variable-immutable,missing-initializer-call";
126+
UUPSProxyUtils.executeUpgrade(proxyAddress, contractName, initData, opts);
127+
}
111128
}

script/lib/UUPSProxyDeployer.sol

Lines changed: 0 additions & 96 deletions
This file was deleted.

script/lib/UUPSProxyUtils.sol

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -69,25 +69,17 @@ library UUPSProxyUtils {
6969
/**
7070
* Upgrades a UUPS proxy contract to a new implementation.
7171
* @param proxyAddress address of the UUPS proxy contract to upgrade
72-
* @param contractName name of the contract to upgrade (used to fetch creation code)
73-
* @param constructorData constructor arguments for the new implementation contract
72+
* @param contractName name of the contract to upgrade (e.g. "ContractV2.sol:ContractV2")
73+
* @param opts options for the upgrade, such as unsafeAllow and others.
7474
* @param initData initialization data for the proxy contract after upgrade
7575
* @return newImplementation address of the new implementation contract
7676
*/
77-
function upgrade(
77+
function executeUpgrade(
7878
address proxyAddress,
7979
string memory contractName,
80-
bytes memory constructorData,
81-
bytes memory initData
80+
bytes memory initData,
81+
Options memory opts
8282
) internal returns (address newImplementation) {
83-
Options memory opts;
84-
opts.constructorData = constructorData;
85-
// Ignore checks related to LayerZero contracts:
86-
// - OAppSenderUpgradeable
87-
// - OAppReceiverUpgradeable
88-
// - OFTCoreUpgradeable
89-
// - OAppCoreUpgradeable
90-
opts.unsafeAllow = "constructor,state-variable-immutable,missing-initializer-call";
9183
Upgrades.upgradeProxy(proxyAddress, contractName, initData, opts);
9284
newImplementation = Upgrades.getImplementationAddress(proxyAddress);
9385
console.log("Upgraded", contractName, " proxy to new implementation", newImplementation);

test/units/RLCLiquidityUnifierUpgrade.t.sol

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import {TestUtils} from "./utils/TestUtils.sol";
88
import {UUPSProxyUtils} from "../../script/lib/UUPSProxyUtils.sol";
99
import {RLCMock} from "./mocks/RLCMock.sol";
1010
import {RLCLiquidityUnifierV2} from "./mocks/RLCLiquidityUnifierV2Mock.sol";
11+
import {Upgrade as RLCLiquidityUnifierUpgradeScript} from "../../script/RLCLiquidityUnifier.s.sol";
1112

13+
// TODO remove useless LZ setup (endpoint, ...).
1214
contract RLCLiquidityUnifierUpgradeTest is TestHelperOz5 {
1315
using TestUtils for *;
1416

@@ -57,7 +59,7 @@ contract RLCLiquidityUnifierUpgradeTest is TestHelperOz5 {
5759

5860
// 3. Perform upgrade
5961
vm.startPrank(upgrader);
60-
UUPSProxyUtils.upgrade({
62+
new RLCLiquidityUnifierUpgradeScript().upgrade({
6163
proxyAddress: proxyAddress,
6264
contractName: "RLCLiquidityUnifierV2Mock.sol:RLCLiquidityUnifierV2",
6365
constructorData: abi.encode(rlcToken),

test/units/bridges/layerZero/IexecLayerZeroBridgeUpgrade.t.sol

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {TestUtils} from "./../../utils/TestUtils.sol";
88
import {UUPSProxyUtils} from "../../../../script/lib/UUPSProxyUtils.sol";
99
import {IexecLayerZeroBridge} from "../../../../src/bridges/layerZero/IexecLayerZeroBridge.sol";
1010
import {RLCCrosschainToken} from "../../../../src/RLCCrosschainToken.sol";
11+
import {Upgrade as IexecLayerZeroBridgeUpgradeScript} from "../../../../script/bridges/layerZero/IexecLayerZeroBridge.s.sol";
1112

1213
contract IexecLayerZeroBridgeUpgradeTest is TestHelperOz5 {
1314
using TestUtils for *;
@@ -53,7 +54,7 @@ contract IexecLayerZeroBridgeUpgradeTest is TestHelperOz5 {
5354

5455
// 3. Perform upgrade
5556
vm.startPrank(upgrader);
56-
UUPSProxyUtils.upgrade({
57+
new IexecLayerZeroBridgeUpgradeScript().upgrade({
5758
proxyAddress: proxyAddress,
5859
contractName: "IexecLayerZeroBridgeV2Mock.sol:IexecLayerZeroBridgeV2",
5960
constructorData: abi.encode(false, rlcCrosschainToken, mockEndpoint),

0 commit comments

Comments
 (0)