Skip to content

Commit 707da40

Browse files
committed
feat: integrate CreateX for proxy deployment in RLCAdapter and RLCOFT scripts
1 parent d15fadc commit 707da40

File tree

5 files changed

+25
-9
lines changed

5 files changed

+25
-9
lines changed

.env.template

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# CreateX Factory Address
2+
CREATE_X_FACTORY_ADDRESS=0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed
3+
SALT=0x<salt-value>
4+
15
# Ethereum Sepolia Configuration
26
SEPOLIA_RPC_URL="https://gateway.tenderly.co/public/sepolia"
37
LAYER_ZERO_SEPOLIA_ENDPOINT_ADDRESS=0x6EDCE65403992e310A62460808c4b910D972f10f

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,6 @@
1919
[submodule "lib/openzeppelin-contracts"]
2020
path = lib/openzeppelin-contracts
2121
url = https://github.com/OpenZeppelin/openzeppelin-contracts
22+
[submodule "lib/createx"]
23+
path = lib/createx
24+
url = https://github.com/pcaversaccio/createx

foundry.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ remappings = [
2222
'@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/',
2323
'@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/',
2424
'@openzeppelin-foundry/contracts/=lib/openzeppelin-foundry-upgrades/src/',
25+
'@createx/contracts/=lib/createx/src/',
2526
]
2627

2728

script/RLCAdapter.s.sol

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {Upgrades, Options} from "@openzeppelin-foundry/contracts/Upgrades.sol";
77
import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
88
import {RLCAdapter} from "../src/RLCAdapter.sol";
99
import {EnvUtils} from "./UpdateEnvUtils.sol";
10+
import {ICreateX} from "@createx/contracts/ICreateX.sol";
1011

1112
contract Deploy is Script {
1213
function run() external {
@@ -21,9 +22,12 @@ contract Deploy is Script {
2122
console.log("RLCAdapter implementation deployed at:", address(rlcAdapterImplementation));
2223

2324
// Deploy the proxy contract
24-
ERC1967Proxy rlcAdapterProxy = new ERC1967Proxy(
25-
address(rlcAdapterImplementation),
26-
abi.encodeWithSelector(rlcAdapterImplementation.initialize.selector, ownerAddress)
25+
ICreateX createX = ICreateX(vm.envAddress("CREATE_X_FACTORY_ADDRESS"));
26+
address rlcAdapterProxy = createX.deployCreate2AndInit(
27+
vm.envBytes32("SALT"), // salt
28+
abi.encodePacked(type(ERC1967Proxy).creationCode, abi.encode(address(rlcAdapterImplementation), "")), // initCode
29+
abi.encodeWithSelector(rlcAdapterImplementation.initialize.selector, ownerAddress), // data for initialize
30+
ICreateX.Values({constructorAmount: 0, initCallAmount: 0}) // values for CreateX
2731
);
2832
console.log("RLCAdapter proxy deployed at:", address(rlcAdapterProxy));
2933

script/RLCOFT.s.sol

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {Upgrades, Options} from "openzeppelin-foundry-upgrades/Upgrades.sol";
77
import {RLCOFT} from "../src/RLCOFT.sol";
88
import {EnvUtils} from "./UpdateEnvUtils.sol";
99
import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
10+
import {ICreateX} from "@createx/contracts/ICreateX.sol";
1011

1112
contract Deploy is Script {
1213
function run() external {
@@ -20,16 +21,19 @@ contract Deploy is Script {
2021
RLCOFT rlcOFTImplementation = new RLCOFT(lzEndpoint);
2122
console.log("RLCOFT implementation deployed at:", address(rlcOFTImplementation));
2223

23-
// Deploy the proxy contract
24-
ERC1967Proxy rlcOFTProxy = new ERC1967Proxy(
25-
address(rlcOFTImplementation),
26-
abi.encodeWithSelector(rlcOFTImplementation.initialize.selector, name, symbol, owner)
24+
// Use CreateX Factory to deploy the proxy contract
25+
ICreateX createX = ICreateX(vm.envAddress("CREATE_X_FACTORY_ADDRESS"));
26+
address rlcOFTProxy = createX.deployCreate2AndInit(
27+
vm.envBytes32("SALT"), // salt
28+
abi.encodePacked(type(ERC1967Proxy).creationCode, abi.encode(address(rlcOFTImplementation), "")), // initCode
29+
abi.encodeWithSelector(rlcOFTImplementation.initialize.selector, name, symbol, owner), // data for initialize
30+
ICreateX.Values({constructorAmount: 0, initCallAmount: 0}) // values for CreateX
2731
);
28-
console.log("RLCOFT proxy deployed at:", address(rlcOFTProxy));
32+
console.log("RLCOFT proxy deployed at:", rlcOFTProxy);
2933

3034
vm.stopBroadcast();
3135

32-
EnvUtils.updateEnvVariable("RLC_ARBITRUM_SEPOLIA_OFT_ADDRESS", address(rlcOFTProxy));
36+
EnvUtils.updateEnvVariable("RLC_ARBITRUM_SEPOLIA_OFT_ADDRESS", rlcOFTProxy);
3337
}
3438
}
3539

0 commit comments

Comments
 (0)