From ebc9c859286365be950ea033f7b7da016d2caae0 Mon Sep 17 00:00:00 2001 From: Josh Levine Date: Wed, 24 Apr 2024 22:15:04 -0400 Subject: [PATCH] refactor(script): use create2 for deployments, prompt user for version --- contracts/script/PointTokenVault.s.sol | 34 ++++++++------------------ contracts/test/PointTokenVault.t.sol | 2 +- foundry.toml | 1 + lib/forge-std | 2 +- lib/openzeppelin-contracts | 2 +- lib/openzeppelin-contracts-upgradeable | 2 +- lib/solady | 2 +- 7 files changed, 16 insertions(+), 29 deletions(-) diff --git a/contracts/script/PointTokenVault.s.sol b/contracts/script/PointTokenVault.s.sol index f41c0c6..b0b2f8e 100644 --- a/contracts/script/PointTokenVault.s.sol +++ b/contracts/script/PointTokenVault.s.sol @@ -29,17 +29,11 @@ contract PointTokenVaultScripts is BatchScript { function run() public returns (address) { uint256 deployerPrivateKey = vm.envUint("DEPLOYER_PRIVATE_KEY"); + string memory version = vm.prompt("Enter PointTokenVault version:"); + vm.startBroadcast(deployerPrivateKey); - PointTokenVault pointTokenVaultImplementation = new PointTokenVault(); - - PointTokenVault pointTokenVault = PointTokenVault( - address( - new ERC1967Proxy( - address(pointTokenVaultImplementation), abi.encodeCall(PointTokenVault.initialize, (msg.sender)) - ) - ) - ); + PointTokenVault pointTokenVault = run(version); // Set roles pointTokenVault.grantRole(pointTokenVault.MERKLE_UPDATER_ROLE(), SEOPLIA_MERKLE_BOT_SAFE); @@ -56,23 +50,15 @@ contract PointTokenVaultScripts is BatchScript { return address(pointTokenVault); } - function deployPointTokenVault(address admin, string memory version) public returns (PointTokenVault) { - PointTokenVault pointTokenVaultImplementation = PointTokenVault( - CREATE3.deploy( - keccak256(bytes(string.concat("PointTokenVault", "-v", version))), type(PointTokenVault).creationCode, 0 - ) - ); + function run(string memory version) public returns (PointTokenVault) { + PointTokenVault pointTokenVaultImplementation = new PointTokenVault{salt: keccak256(abi.encode(version))}(); PointTokenVault pointTokenVault = PointTokenVault( - CREATE3.deploy( - keccak256(bytes(string.concat("PointTokenVaultProxy", "-v", version))), - abi.encodePacked( - type(ERC1967Proxy).creationCode, - abi.encode( - address(pointTokenVaultImplementation), abi.encodeCall(PointTokenVault.initialize, (admin)) - ) - ), - 0 + address( + new ERC1967Proxy{salt: keccak256(abi.encode(version))}( + address(pointTokenVaultImplementation), + abi.encodeCall(PointTokenVault.initialize, (msg.sender)) // msg.sender is admin + ) ) ); diff --git a/contracts/test/PointTokenVault.t.sol b/contracts/test/PointTokenVault.t.sol index c25a3fd..351ac20 100644 --- a/contracts/test/PointTokenVault.t.sol +++ b/contracts/test/PointTokenVault.t.sol @@ -35,7 +35,7 @@ contract PointTokenVaultTest is Test { PointTokenVaultScripts scripts = new PointTokenVaultScripts(); // Deploy the PointTokenVault - pointTokenVault = scripts.deployPointTokenVault(address(this), "0.0.1"); + pointTokenVault = scripts.run("0.0.1"); pointTokenVault.grantRole(pointTokenVault.DEFAULT_ADMIN_ROLE(), admin); pointTokenVault.grantRole(pointTokenVault.MERKLE_UPDATER_ROLE(), merkleUpdater); diff --git a/foundry.toml b/foundry.toml index c4806ed..c166df4 100644 --- a/foundry.toml +++ b/foundry.toml @@ -5,6 +5,7 @@ test = 'contracts/test' out = "contracts/out" libs = ["lib"] ffi = true +evm_version = "cancun" [rpc_endpoints] sepolia = "${SEPOLIA_RPC_URL}" diff --git a/lib/forge-std b/lib/forge-std index bb4ceea..93340e7 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit bb4ceea94d6f10eeb5b41dc2391c6c8bf8e734ef +Subproject commit 93340e7e6127c817e276bc956b4f4ed13d173449 diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts index dbb6104..4032b42 160000 --- a/lib/openzeppelin-contracts +++ b/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit dbb6104ce834628e473d2173bbc9d47f81a9eec3 +Subproject commit 4032b42694ff6599b17ffde65b2b64d7fc8a38f8 diff --git a/lib/openzeppelin-contracts-upgradeable b/lib/openzeppelin-contracts-upgradeable index 723f8ca..599bd5b 160000 --- a/lib/openzeppelin-contracts-upgradeable +++ b/lib/openzeppelin-contracts-upgradeable @@ -1 +1 @@ -Subproject commit 723f8cab09cdae1aca9ec9cc1cfa040c2d4b06c1 +Subproject commit 599bd5ba472eb5a7d0a16a81ec60ef0821ee6683 diff --git a/lib/solady b/lib/solady index 3240f31..a34977e 160000 --- a/lib/solady +++ b/lib/solady @@ -1 +1 @@ -Subproject commit 3240f31bbbc4af24fc80254878e65fa8294a8bee +Subproject commit a34977e56cc1437b7ac07e6356261d2b303da686