Skip to content

Commit 1eeda3c

Browse files
committed
feat: add UpgradeToV2 deployment script
Forge script for upgrading existing SplitBaseV1 proxies to V2: - Deploys new SplitBaseV2 implementation - Executes upgradeToAndCall with initializeV2 - Outputs verification command for Basescan - Maintains storage compatibility with V1 Usage: PROXY_ADDRESS=0x... forge script script/UpgradeToV2.s.sol \ --rpc-url base_sepolia --broadcast --verify
1 parent 48fdde4 commit 1eeda3c

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

script/UpgradeToV2.s.sol

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.28;
3+
4+
import {Script, console} from "forge-std/Script.sol";
5+
import {SplitBaseV2} from "../src/SplitBaseV2.sol";
6+
7+
contract UpgradeToV2Script is Script {
8+
function run() external {
9+
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
10+
address proxyAddress = vm.envAddress("PROXY_ADDRESS");
11+
12+
console.log("Upgrading to SplitBaseV2...");
13+
console.log("Proxy address:", proxyAddress);
14+
console.log("Deployer:", vm.addr(deployerPrivateKey));
15+
16+
vm.startBroadcast(deployerPrivateKey);
17+
18+
SplitBaseV2 newImplementation = new SplitBaseV2();
19+
console.log("SplitBaseV2 implementation deployed at:", address(newImplementation));
20+
21+
SplitBaseV2 proxy = SplitBaseV2(proxyAddress);
22+
proxy.upgradeToAndCall(address(newImplementation), abi.encodeCall(proxy.initializeV2, ()));
23+
console.log("Upgrade to V2 complete");
24+
25+
vm.stopBroadcast();
26+
27+
console.log("\nVerification command:");
28+
console.log(
29+
"forge verify-contract",
30+
address(newImplementation),
31+
"src/SplitBaseV2.sol:SplitBaseV2",
32+
"--chain-id",
33+
block.chainid,
34+
"--watch"
35+
);
36+
}
37+
}

0 commit comments

Comments
 (0)