From 0657cfe6c453303d847d9b0bc2e2b9af9d3f3e76 Mon Sep 17 00:00:00 2001 From: RafalMagrys Date: Tue, 24 Feb 2026 12:05:54 +0100 Subject: [PATCH 01/14] script --- script/Upgrade.s.sol | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 script/Upgrade.s.sol diff --git a/script/Upgrade.s.sol b/script/Upgrade.s.sol new file mode 100644 index 0000000..3238e3e --- /dev/null +++ b/script/Upgrade.s.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.25; + +import {Script, console} from "forge-std/Script.sol"; + +interface IUpgradeable { + function upgradeToAndCall(address newImpl, bytes calldata data) external; +} + +contract Upgrade is Script { + address proxy; + string memory name; + bytes memory cd; + + function run() external { + proxy = vm.envAddress("UPGRADE_PROXY_ADDRESS_TEST"); + name = vm.envString("UPGRADE_CONTRACT_NAME"); + cd = vm.envOr("UPGRADE_CALLDATA", bytes("")); + + vm.startBroadcast(vm.envUint("PRIVATE_KEY_TEST")); + + address impl = vm.deployCode(string.concat(name, ".sol:", name)); + + IUpgradeable(proxy).upgradeToAndCall(impl, cd); + + vm.stopBroadcast(); + } + + function _print() internal { + console.log("Contract: %s", name); + console.log("New impl: %s", impl); + console.log("Proxy: %s", proxy); + } +} From 2b98f88b809865ea443c7b5db7560a67f94bf482 Mon Sep 17 00:00:00 2001 From: RafalMagrys Date: Tue, 24 Feb 2026 12:51:30 +0100 Subject: [PATCH 02/14] env and just file --- .env.example | 7 ++++++- justfile | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index bc16bbe..cc7075e 100644 --- a/.env.example +++ b/.env.example @@ -13,4 +13,9 @@ ALLOCATOR= SP_REGISTRY= TERMINATION_ORACLE= ORACLE= -META_ALLOCATOR= \ No newline at end of file +META_ALLOCATOR= + +# Upgradeable contract envs +UPGRADE_CONTRACT_NAME= +UPGRADE_CALLDATA= + diff --git a/justfile b/justfile index 6a55fba..3d7a405 100644 --- a/justfile +++ b/justfile @@ -37,6 +37,10 @@ devnet_deploy: forge clean && forge build forge script script/Deploy.s.sol --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_TEST --private-key $PRIVATE_KEY_TEST +upgrade: + forge clean && forge build + forge script script/Upgrade.s.sol:Upgrade --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast + # CI equivalent check check: fmt-check lint test check-coverage build check-abis @echo "All checks passed." From 8234661a71c1bc124d0793da32e10bb68517ac28 Mon Sep 17 00:00:00 2001 From: RafalMagrys Date: Fri, 6 Mar 2026 15:58:26 +0100 Subject: [PATCH 03/14] lint --- script/Upgrade.s.sol | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/script/Upgrade.s.sol b/script/Upgrade.s.sol index 3238e3e..526587b 100644 --- a/script/Upgrade.s.sol +++ b/script/Upgrade.s.sol @@ -1,16 +1,17 @@ // SPDX-License-Identifier: MIT +// solhint-disable use-natspec pragma solidity ^0.8.25; -import {Script, console} from "forge-std/Script.sol"; +import {Script} from "forge-std/Script.sol"; interface IUpgradeable { function upgradeToAndCall(address newImpl, bytes calldata data) external; } contract Upgrade is Script { - address proxy; - string memory name; - bytes memory cd; + address internal proxy; + string internal name; + bytes internal cd; function run() external { proxy = vm.envAddress("UPGRADE_PROXY_ADDRESS_TEST"); @@ -25,10 +26,4 @@ contract Upgrade is Script { vm.stopBroadcast(); } - - function _print() internal { - console.log("Contract: %s", name); - console.log("New impl: %s", impl); - console.log("Proxy: %s", proxy); - } } From a3d9b4376b38e2ed1a5273e3c1d01c781a86910d Mon Sep 17 00:00:00 2001 From: RafalMagrys Date: Tue, 10 Mar 2026 11:36:44 +0100 Subject: [PATCH 04/14] feature --- foundry.toml | 8 +++++++- justfile | 2 +- script/Upgrade.s.sol | 14 +++++++++++++- script/utils/DeployUtils.sol | 18 ++++++++++++++++++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/foundry.toml b/foundry.toml index b4be143..9eeeff8 100644 --- a/foundry.toml +++ b/foundry.toml @@ -1,5 +1,11 @@ [profile.default] -src = "src" +solc_version = "0.8.25" +evm_version = "cancun" +optimizer_runs = 200 +fs_permissions = [ + { access = "read-write", path = "./deployments/" } +] +src = "src" out = "out" libs = ["lib"] via_ir = true diff --git a/justfile b/justfile index 3d7a405..88f27a9 100644 --- a/justfile +++ b/justfile @@ -39,7 +39,7 @@ devnet_deploy: upgrade: forge clean && forge build - forge script script/Upgrade.s.sol:Upgrade --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast + forge script script/Upgrade.s.sol:Upgrade --rpc-url $RPC_TEST --private-key $PRIVATE_KEY_TEST --broadcast # CI equivalent check check: fmt-check lint test check-coverage build check-abis diff --git a/script/Upgrade.s.sol b/script/Upgrade.s.sol index 526587b..9300b12 100644 --- a/script/Upgrade.s.sol +++ b/script/Upgrade.s.sol @@ -3,12 +3,16 @@ pragma solidity ^0.8.25; import {Script} from "forge-std/Script.sol"; +import {DeployUtils} from "./utils/DeployUtils.sol"; +import {stdJson} from "forge-std/StdJson.sol"; interface IUpgradeable { function upgradeToAndCall(address newImpl, bytes calldata data) external; } -contract Upgrade is Script { +contract Upgrade is Script, DeployUtils { + using stdJson for string; + address internal proxy; string internal name; bytes internal cd; @@ -18,6 +22,14 @@ contract Upgrade is Script { name = vm.envString("UPGRADE_CONTRACT_NAME"); cd = vm.envOr("UPGRADE_CALLDATA", bytes("")); + string memory json = readLatestDeploymentArtifact(name); + (,,, bytes memory deployedCodeHash) = deserializeContract(json, name); + bytes32 hash = generateContractHash(name); + + if (hash == abi.decode(deployedCodeHash, (bytes32))) { + revert("Code hash is unchanged, upgrade skipped"); + } + vm.startBroadcast(vm.envUint("PRIVATE_KEY_TEST")); address impl = vm.deployCode(string.concat(name, ".sol:", name)); diff --git a/script/utils/DeployUtils.sol b/script/utils/DeployUtils.sol index 3d12a4e..b8aa371 100644 --- a/script/utils/DeployUtils.sol +++ b/script/utils/DeployUtils.sol @@ -30,6 +30,24 @@ contract DeployUtils is Script { json.serialize(contractName, serialized); } + function readLatestDeploymentArtifact(string memory contractName) internal view returns (string memory json) { + json = vm.readFile(string.concat("./deployments/", network(), "/latest.json")); + } + + function deserializeContract(string memory json, string memory contractName) + internal + returns (bytes memory proxy, bytes memory impl, bytes memory codeHash, bytes memory deployedCodeHash) + { + proxy = json.parseRaw(string.concat(".", contractName, ".proxy")); + impl = json.parseRaw(string.concat(".", contractName, ".impl")); + codeHash = json.parseRaw(string.concat(".", contractName, ".codeHash")); + deployedCodeHash = json.parseRaw(string.concat(".", contractName, ".deployedCodeHash")); + } + + function generateContractHash(string memory contractName) internal view returns (bytes32 hash) { + hash = keccak256(vm.getDeployedCode(string.concat(contractName, ".sol:", contractName))); + } + function network() internal view returns (string memory) { if (block.chainid == 31415926) return "devnet"; else if (block.chainid == 314159) return "calibnet"; From f322151cdd55eaed3c691598691ee5d1597c3f6b Mon Sep 17 00:00:00 2001 From: rmagrys Date: Tue, 10 Mar 2026 16:47:46 +0100 Subject: [PATCH 05/14] saved example of upgrade artifact --- deployments/devnet/2792358.json | 42 +++++++++++++++++ .../devnet/upgrades/2796601_Client.json | 10 ++++ foundry.toml | 6 --- justfile | 4 +- script/Upgrade.s.sol | 35 +++++++++++--- script/utils/DeployUtils.sol | 46 +++++++++++++++++-- 6 files changed, 124 insertions(+), 19 deletions(-) create mode 100644 deployments/devnet/2792358.json create mode 100644 deployments/devnet/upgrades/2796601_Client.json diff --git a/deployments/devnet/2792358.json b/deployments/devnet/2792358.json new file mode 100644 index 0000000..2cf5718 --- /dev/null +++ b/deployments/devnet/2792358.json @@ -0,0 +1,42 @@ +{ + "Allocator": "0x2E6A0C4F8D1B3e7a9c5f2d4B6a8e0C1f3D5B7A90", + "Client": { + "codeHash": "0x1b7dcf32635e0ab901dfc511756d28f59d98912eabecd2c7429edc3225d58d97", + "deployedCodeHash": "0x9048d733b20c183768d445ac08c89687ab82d18e66152c90369e88a5ad7d68a9", + "impl": "0x9081E7483404A1e91CE48d14CCA978C318aeBAAe", + "proxy": "0xEf5Dde9035e57186545dE65a12c5E84BE1D2A2Df" + }, + "FilecoinPay": "0x4A8F3C2e1D9B7f6A0E5c8b3D2a1F9e7C4B6d8a2E", + "PoRepMarket": { + "codeHash": "0x7b6725aaa60b60df01388743106dfec05e1d5ecfb22fa29229647c40a89f3eb5", + "deployedCodeHash": "0xb031c9ec0abfd7acc802ef8f664c0c44c990fac55de0f4c42785fec7babf536b", + "impl": "0x88aAFcb9f78618bFaD5A83bb6Cb6D7BbCc864224", + "proxy": "0x3d95578A66f76A8BF8dca37e6Eb938C9B74FBd83" + }, + "SLIOracle": { + "codeHash": "0x4f9246c8527a06a651694145ba5ee45139f98b237387cee993f8a261b206ab05", + "deployedCodeHash": "0x84c90af6d48f5b7c953e9867829dbf0272b2a5312886dc8a572e6e4b0ce27df1", + "impl": "0x224cd8a80AD1d9f0068bC4bE46a864E9deF6e47C", + "proxy": "0x4334D484986CaeD58842967072b3A91Bd6Ee5560" + }, + "SLIScorer": { + "codeHash": "0x43d48a9721320e2ee57453f55e68586c6ef6ded0b845eb8604cc761402d4d1e1", + "deployedCodeHash": "0x60e6845fddd07ad022ba2b208194ce68cc92851a4ccbd428fd3ced081582d003", + "impl": "0x9aA1A0B9F220b876d2aEB591dBE4F64b1af5fc5f", + "proxy": "0x7e4439ab89B25676a24d11f9a3227bAaE5Fd70a7" + }, + "SPRegistry": "0x7C3D1A9f2e8b4c6a0d5E3f1B9C7A2d4E6f8b0c30", + "TerminationOracle": "0x9F1c5A3e7B2d4f6C8a0e3B1D5c7A9f2e4B6D8C00", + "ValidatorBeacon": "0xdcc5993a9964Aa4E84846d311Bf0ebC827ab7561", + "ValidatorFactory": { + "codeHash": "0x495982cc5256a7f941b7000de6d488b4a58eefada0152cb9ee064b3213c57d3b", + "deployedCodeHash": "0xb0f2743ea1faf0044cdeb564081139be8d6b563290f7d61b2d6eb3ae88283edc", + "impl": "0x9c2e8b4C32b2428FB7a066B73396635EBaF55fE0", + "proxy": "0xBE3B9b252Df0a0876884c44cbb7721cf3AAffcFd" + }, + "ValidatorImpl": "0xAa81B569f9022ff2646Fa276efb094157781D2A1", + "block": 2792358, + "chainId": 31415926, + "deployer": "0x149661aB3B2d343114e4F518fF3cC3b47266d8C4", + "timestamp": 1771263185 +} \ No newline at end of file diff --git a/deployments/devnet/upgrades/2796601_Client.json b/deployments/devnet/upgrades/2796601_Client.json new file mode 100644 index 0000000..f61dff9 --- /dev/null +++ b/deployments/devnet/upgrades/2796601_Client.json @@ -0,0 +1,10 @@ +{ + "chainId": 31415926, + "deployedCodeHash": "0x9048d733b20c183768d445ac08c89687ab82d18e66152c90369e88a5ad7d68a9", + "newCodeHash": "0x98a51bfccc1954c47b9f94ea76d5e18f426c3afef9cd750c3cc293614e6e353e", + "newImpl": "0x1793CAbf7B5E41aA9CDd3E8E1acbaCE344728dFC", + "prevCodeHash": "0xb2a1400631c73a64c50c286546b778fee73dc147e9ee8c2e5920a15ca8f970aa", + "prevImpl": "0x7F9094d2e982fe627CCa5F86841F81aCE0d1418B", + "proxy": "0xEf5Dde9035e57186545dE65a12c5E84BE1D2A2Df", + "upgradedAt": 1771280157 +} \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index 9eeeff8..f646854 100644 --- a/foundry.toml +++ b/foundry.toml @@ -1,10 +1,4 @@ [profile.default] -solc_version = "0.8.25" -evm_version = "cancun" -optimizer_runs = 200 -fs_permissions = [ - { access = "read-write", path = "./deployments/" } -] src = "src" out = "out" libs = ["lib"] diff --git a/justfile b/justfile index 88f27a9..77377c3 100644 --- a/justfile +++ b/justfile @@ -37,9 +37,9 @@ devnet_deploy: forge clean && forge build forge script script/Deploy.s.sol --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_TEST --private-key $PRIVATE_KEY_TEST -upgrade: +devnet_upgrade: forge clean && forge build - forge script script/Upgrade.s.sol:Upgrade --rpc-url $RPC_TEST --private-key $PRIVATE_KEY_TEST --broadcast + forge script script/Upgrade.s.sol:Upgrade --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_TEST --private-key $PRIVATE_KEY_TEST # CI equivalent check check: fmt-check lint test check-coverage build check-abis diff --git a/script/Upgrade.s.sol b/script/Upgrade.s.sol index 9300b12..86cb778 100644 --- a/script/Upgrade.s.sol +++ b/script/Upgrade.s.sol @@ -14,28 +14,51 @@ contract Upgrade is Script, DeployUtils { using stdJson for string; address internal proxy; + address internal prevImpl; + address internal impl; string internal name; + bytes32 internal deployedCodeHash; bytes internal cd; + error ContractAlreadyDeployed(); + function run() external { proxy = vm.envAddress("UPGRADE_PROXY_ADDRESS_TEST"); name = vm.envString("UPGRADE_CONTRACT_NAME"); cd = vm.envOr("UPGRADE_CALLDATA", bytes("")); - string memory json = readLatestDeploymentArtifact(name); - (,,, bytes memory deployedCodeHash) = deserializeContract(json, name); bytes32 hash = generateContractHash(name); + string memory json = readLatestDeploymentArtifact(); + (proxy, prevImpl,, deployedCodeHash) = deserializeContract(json, name); - if (hash == abi.decode(deployedCodeHash, (bytes32))) { - revert("Code hash is unchanged, upgrade skipped"); + if (hash == deployedCodeHash) { + revert ContractAlreadyDeployed(); } vm.startBroadcast(vm.envUint("PRIVATE_KEY_TEST")); - address impl = vm.deployCode(string.concat(name, ".sol:", name)); - + impl = vm.deployCode(string.concat(name, ".sol:", name)); IUpgradeable(proxy).upgradeToAndCall(impl, cd); vm.stopBroadcast(); + serializeAndSaveArtifact(); + } + + function serializeAndSaveArtifact() internal { + string memory json = name; + + json.serialize("proxy", proxy); + json.serialize("prevImpl", prevImpl); + json.serialize("newImpl", impl); + json.serialize("prevCodeHash", vm.toString(prevImpl.codehash)); + json.serialize("newCodeHash", vm.toString(impl.codehash)); + json.serialize("upgradedAt", block.timestamp); + json.serialize("chainId", block.chainid); + + string memory output = + json.serialize("deployedCodeHash", keccak256(vm.getDeployedCode(string.concat(name, ".sol:", name)))); + + saveUpgrade(output, name); + updateLatestImpl(name, impl); } } diff --git a/script/utils/DeployUtils.sol b/script/utils/DeployUtils.sol index b8aa371..22d3ef7 100644 --- a/script/utils/DeployUtils.sol +++ b/script/utils/DeployUtils.sol @@ -17,6 +17,23 @@ contract DeployUtils is Script { vm.writeJson(json, string.concat(base, "/", vm.toString(block.number), ".json")); } + function saveUpgrade(string memory json, string memory contractName) internal { + string memory base = string.concat("./deployments/", network(), "/upgrades"); + vm.createDir(base, true); + vm.writeJson(json, string.concat(base, "/", vm.toString(block.number), "_", contractName, ".json")); + } + + function updateLatestImpl(string memory contractName, address newImpl) internal { + string memory path = string.concat("./deployments/", network(), "/latest.json"); + vm.writeJson(vm.toString(newImpl), path, string.concat(".", contractName, ".impl")); + vm.writeJson(vm.toString(newImpl.codehash), path, string.concat(".", contractName, ".codeHash")); + vm.writeJson( + vm.toString(keccak256(vm.getDeployedCode(string.concat(contractName, ".sol:", contractName)))), + path, + string.concat(".", contractName, ".deployedCodeHash") + ); + } + function createProxy(bytes memory init, address impl) internal returns (address proxy) { proxy = address(new ERC1967Proxy(address(impl), init)); } @@ -26,21 +43,40 @@ contract DeployUtils is Script { obj.serialize("proxy", proxy); obj.serialize("impl", impl); obj.serialize("codeHash", vm.toString(impl.codehash)); - string memory serialized = obj.serialize("deployedCodeHash", keccak256(vm.getDeployedCode(contractName))); + string memory serialized = obj.serialize( + "deployedCodeHash", + keccak256(vm.getDeployedCode(string.concat(contractName, ".sol:", contractName))) // <-- fix + ); json.serialize(contractName, serialized); } - function readLatestDeploymentArtifact(string memory contractName) internal view returns (string memory json) { + function readLatestDeploymentArtifact() internal view returns (string memory json) { json = vm.readFile(string.concat("./deployments/", network(), "/latest.json")); } + function readLatestUpgradeArtifact() internal view returns (string memory json) { + json = vm.readFile(string.concat("./deployments/", network(), "/upgrades/latest.json")); + } + function deserializeContract(string memory json, string memory contractName) internal - returns (bytes memory proxy, bytes memory impl, bytes memory codeHash, bytes memory deployedCodeHash) + pure + returns (address proxy, address impl, bytes32 codeHash, bytes32 deployedCodeHash) + { + proxy = abi.decode(json.parseRaw(string.concat(".", contractName, ".proxy")), (address)); + impl = abi.decode(json.parseRaw(string.concat(".", contractName, ".impl")), (address)); + codeHash = abi.decode(json.parseRaw(string.concat(".", contractName, ".codeHash")), (bytes32)); + deployedCodeHash = abi.decode(json.parseRaw(string.concat(".", contractName, ".deployedCodeHash")), (bytes32)); + } + + function deserializeUpgrade(string memory json, string memory contractName) + internal + pure + returns (bytes memory proxy, bytes memory prevImpl, bytes memory newImpl, bytes memory deployedCodeHash) { proxy = json.parseRaw(string.concat(".", contractName, ".proxy")); - impl = json.parseRaw(string.concat(".", contractName, ".impl")); - codeHash = json.parseRaw(string.concat(".", contractName, ".codeHash")); + prevImpl = json.parseRaw(string.concat(".", contractName, ".prevImpl")); + newImpl = json.parseRaw(string.concat(".", contractName, ".newImpl")); deployedCodeHash = json.parseRaw(string.concat(".", contractName, ".deployedCodeHash")); } From 2d206b4847e68af073857b9771ca986068e410b7 Mon Sep 17 00:00:00 2001 From: rmagrys Date: Wed, 11 Mar 2026 15:30:45 +0100 Subject: [PATCH 06/14] removed unused methods --- script/utils/DeployUtils.sol | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/script/utils/DeployUtils.sol b/script/utils/DeployUtils.sol index 22d3ef7..270a486 100644 --- a/script/utils/DeployUtils.sol +++ b/script/utils/DeployUtils.sol @@ -54,10 +54,6 @@ contract DeployUtils is Script { json = vm.readFile(string.concat("./deployments/", network(), "/latest.json")); } - function readLatestUpgradeArtifact() internal view returns (string memory json) { - json = vm.readFile(string.concat("./deployments/", network(), "/upgrades/latest.json")); - } - function deserializeContract(string memory json, string memory contractName) internal pure @@ -69,17 +65,6 @@ contract DeployUtils is Script { deployedCodeHash = abi.decode(json.parseRaw(string.concat(".", contractName, ".deployedCodeHash")), (bytes32)); } - function deserializeUpgrade(string memory json, string memory contractName) - internal - pure - returns (bytes memory proxy, bytes memory prevImpl, bytes memory newImpl, bytes memory deployedCodeHash) - { - proxy = json.parseRaw(string.concat(".", contractName, ".proxy")); - prevImpl = json.parseRaw(string.concat(".", contractName, ".prevImpl")); - newImpl = json.parseRaw(string.concat(".", contractName, ".newImpl")); - deployedCodeHash = json.parseRaw(string.concat(".", contractName, ".deployedCodeHash")); - } - function generateContractHash(string memory contractName) internal view returns (bytes32 hash) { hash = keccak256(vm.getDeployedCode(string.concat(contractName, ".sol:", contractName))); } From 13a9de484eab2e5c238c0836699aa0434da77abb Mon Sep 17 00:00:00 2001 From: rmagrys Date: Wed, 11 Mar 2026 15:45:12 +0100 Subject: [PATCH 07/14] calibnet deploy and upgrade --- justfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/justfile b/justfile index 77377c3..0fbdfe4 100644 --- a/justfile +++ b/justfile @@ -41,6 +41,14 @@ devnet_upgrade: forge clean && forge build forge script script/Upgrade.s.sol:Upgrade --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_TEST --private-key $PRIVATE_KEY_TEST +calibnet_deploy: + forge clean && forge build + forge script script/Deploy.s.sol --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_CALIBNET --private-key $PRIVATE_KEY_CALIBNET + +calibnet_upgrade: + forge clean && forge build + forge script script/Upgrade.s.sol:Upgrade --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_CALIBNET --private-key $PRIVATE_KEY_CALIBNET + # CI equivalent check check: fmt-check lint test check-coverage build check-abis @echo "All checks passed." From 1d0ceba4109ac2d6ecb954aaad307d412ef8d7a9 Mon Sep 17 00:00:00 2001 From: rmagrys Date: Thu, 12 Mar 2026 09:54:44 +0100 Subject: [PATCH 08/14] calib net deploy --- deployments/calibnet/3532601.json | 42 +++++++++++++++++++++++++++++++ justfile | 4 +-- 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 deployments/calibnet/3532601.json diff --git a/deployments/calibnet/3532601.json b/deployments/calibnet/3532601.json new file mode 100644 index 0000000..dbfa6af --- /dev/null +++ b/deployments/calibnet/3532601.json @@ -0,0 +1,42 @@ +{ + "Allocator": "0x2E6A0C4F8D1B3e7a9c5f2d4B6a8e0C1f3D5B7A90", + "Client": { + "codeHash": "0x29e9a60036b60a4dfa7d25730f927ad5604c76b3d137b5b63bcd3632cf1c7558", + "deployedCodeHash": "0x9048d733b20c183768d445ac08c89687ab82d18e66152c90369e88a5ad7d68a9", + "impl": "0xc0CeeC756E03751fE6bb4209e5A1431D91aC2838", + "proxy": "0xe6ED0f172e59f3A0F4D5d213A6081d34E40a0D02" + }, + "FilecoinPay": "0x4A8F3C2e1D9B7f6A0E5c8b3D2a1F9e7C4B6d8a2E", + "PoRepMarket": { + "codeHash": "0xfccc6051f11302d00cf827801e63389015c272acaf9d31228b7548b191d326a8", + "deployedCodeHash": "0xb031c9ec0abfd7acc802ef8f664c0c44c990fac55de0f4c42785fec7babf536b", + "impl": "0xC27656aC968E7fe10e17DC74F4d2D59f90258A46", + "proxy": "0x9Ed75A4316A1b47b1fAb7eA1bc7bbb2e5a3249D1" + }, + "SLIOracle": { + "codeHash": "0x68d1cce1814f49c64dcb626324cb495dd418890284316a58d18ec972df0549ec", + "deployedCodeHash": "0x84c90af6d48f5b7c953e9867829dbf0272b2a5312886dc8a572e6e4b0ce27df1", + "impl": "0x263625134983613243dc000aC58577E4F4954561", + "proxy": "0x922902A2DaC4F2C8FFeA13Bd223c392B8eD0D23B" + }, + "SLIScorer": { + "codeHash": "0x41805f0bc242bdcb728c6a8b5dd6fd3893075309bb24583ad1f8a5e243770bea", + "deployedCodeHash": "0x60e6845fddd07ad022ba2b208194ce68cc92851a4ccbd428fd3ced081582d003", + "impl": "0x7c3D94DA9f116432DDf4C0C19F715E9A6829a8Cc", + "proxy": "0xA3db556b945502B7a0bd6C457E66a437344AC314" + }, + "SPRegistry": "0x7C3D1A9f2e8b4c6a0d5E3f1B9C7A2d4E6f8b0c30", + "TerminationOracle": "0xe4Cd56f91Bc79cC610AEfB1bE92b07BB5b6F2e30", + "ValidatorBeacon": "0x61F23E17E9623FbF0a51aE886F84B177EebCAA6F", + "ValidatorFactory": { + "codeHash": "0xff91ecdd7ed015281877c0ece98d1150cd525e679a5496ad5fb13fbd2d0ad7a4", + "deployedCodeHash": "0xb0f2743ea1faf0044cdeb564081139be8d6b563290f7d61b2d6eb3ae88283edc", + "impl": "0xfBc19A4936c077Bc76e9b3c0A46320DC9918eECE", + "proxy": "0x74b2Ca4cDBbb6FeB13a5852455778c38C8E1e2A3" + }, + "ValidatorImpl": "0x99eC1fD68cD7F082Dba885B19C79B9f13054D23d", + "block": 3532601, + "chainId": 314159, + "deployer": "0x149661aB3B2d343114e4F518fF3cC3b47266d8C4", + "timestamp": 1773304410 +} \ No newline at end of file diff --git a/justfile b/justfile index 0fbdfe4..d7215de 100644 --- a/justfile +++ b/justfile @@ -43,12 +43,12 @@ devnet_upgrade: calibnet_deploy: forge clean && forge build - forge script script/Deploy.s.sol --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_CALIBNET --private-key $PRIVATE_KEY_CALIBNET + forge script script/Deploy.s.sol --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --slow --rpc-url $RPC_CALIBNET --private-key $PRIVATE_KEY_CALIBNET calibnet_upgrade: forge clean && forge build forge script script/Upgrade.s.sol:Upgrade --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_CALIBNET --private-key $PRIVATE_KEY_CALIBNET - + # CI equivalent check check: fmt-check lint test check-coverage build check-abis @echo "All checks passed." From e7e31ceb6931bfd04a582cb5712670aa26e6180b Mon Sep 17 00:00:00 2001 From: rmagrys Date: Wed, 18 Mar 2026 10:49:00 +0100 Subject: [PATCH 09/14] env and justfile fixes --- .env.example | 4 ++-- justfile | 20 +++++++++++++------- script/Deploy.s.sol | 5 +++-- script/Upgrade.s.sol | 6 ++++-- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/.env.example b/.env.example index cc7075e..c2408e6 100644 --- a/.env.example +++ b/.env.example @@ -16,6 +16,6 @@ ORACLE= META_ALLOCATOR= # Upgradeable contract envs -UPGRADE_CONTRACT_NAME= -UPGRADE_CALLDATA= +UPGRADE_CONTRACT_NAME=Client +UPGRADE_CALLDATA=0x diff --git a/justfile b/justfile index d7215de..42764df 100644 --- a/justfile +++ b/justfile @@ -33,21 +33,27 @@ coverage: check-coverage: ./ci/check-full-coverage.sh +deploy flags='': + forge script script/Deploy.s.sol:Deploy --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_URL --private-key $PRIVATE_KEY {{flags}} + +upgrade flags='': + forge script script/Upgrade.s.sol:Upgrade --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_URL --private-key $PRIVATE_KEY {{flags}} + devnet_deploy: forge clean && forge build - forge script script/Deploy.s.sol --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_TEST --private-key $PRIVATE_KEY_TEST + RPC_URL=$RPC_TEST PRIVATE_KEY=$PRIVATE_KEY_TEST just deploy + +calibnet_deploy: + # forge clean && forge build + RPC_URL=$RPC_CALIBNET PRIVATE_KEY=$PRIVATE_KEY_CALIBNET just deploy --slow devnet_upgrade: forge clean && forge build - forge script script/Upgrade.s.sol:Upgrade --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_TEST --private-key $PRIVATE_KEY_TEST - -calibnet_deploy: - forge clean && forge build - forge script script/Deploy.s.sol --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --slow --rpc-url $RPC_CALIBNET --private-key $PRIVATE_KEY_CALIBNET + RPC_URL=$RPC_TEST PRIVATE_KEY=$PRIVATE_KEY_TEST PROXY_ADDRESS=$UPGRADE_PROXY_ADDRESS_TEST just upgrade calibnet_upgrade: forge clean && forge build - forge script script/Upgrade.s.sol:Upgrade --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_CALIBNET --private-key $PRIVATE_KEY_CALIBNET + RPC_URL=$RPC_CALIBNET PRIVATE_KEY=$PRIVATE_KEY_CALIBNET PROXY_ADDRESS=$UPGRADE_PROXY_ADDRESS_CALIBNET just upgrade --slow # CI equivalent check check: fmt-check lint test check-coverage build check-abis diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol index f269d92..8defff2 100644 --- a/script/Deploy.s.sol +++ b/script/Deploy.s.sol @@ -45,7 +45,8 @@ contract Deploy is Script, DeployUtils { error InvalidEnv(); function run() external { - admin = vm.addr(vm.envUint("PRIVATE_KEY_TEST")); + admin = vm.addr(vm.envUint("PRIVATE_KEY")); + allocator = vm.envAddress("ALLOCATOR"); terminationOracle = vm.envAddress("TERMINATION_ORACLE"); filecoinPay = vm.envAddress("FILECOIN_PAY"); oracleAddress = vm.envAddress("ORACLE"); @@ -53,7 +54,7 @@ contract Deploy is Script, DeployUtils { operatorAddress = vm.envOr("OPERATOR_ADDR", address(0)); metaAllocator = vm.envAddress("META_ALLOCATOR"); - vm.startBroadcast(vm.envUint("PRIVATE_KEY_TEST")); + vm.startBroadcast(admin); (validatorFactory, validatorFactoryImpl, validatorImpl) = _deployValidatorFactory(admin); (poRepMarket, poRepMarketImpl) = _deployPoRepMarket(admin, validatorFactory, spRegistry); diff --git a/script/Upgrade.s.sol b/script/Upgrade.s.sol index 86cb778..cfb77fb 100644 --- a/script/Upgrade.s.sol +++ b/script/Upgrade.s.sol @@ -13,6 +13,7 @@ interface IUpgradeable { contract Upgrade is Script, DeployUtils { using stdJson for string; + address internal admin; address internal proxy; address internal prevImpl; address internal impl; @@ -23,7 +24,8 @@ contract Upgrade is Script, DeployUtils { error ContractAlreadyDeployed(); function run() external { - proxy = vm.envAddress("UPGRADE_PROXY_ADDRESS_TEST"); + admin = vm.addr(vm.envUint("PRIVATE_KEY")); + proxy = vm.envAddress("PROXY_ADDRESS"); name = vm.envString("UPGRADE_CONTRACT_NAME"); cd = vm.envOr("UPGRADE_CALLDATA", bytes("")); @@ -35,7 +37,7 @@ contract Upgrade is Script, DeployUtils { revert ContractAlreadyDeployed(); } - vm.startBroadcast(vm.envUint("PRIVATE_KEY_TEST")); + vm.startBroadcast(admin); impl = vm.deployCode(string.concat(name, ".sol:", name)); IUpgradeable(proxy).upgradeToAndCall(impl, cd); From e72e76e2db63b64053aa6231720a083bb51a5ecc Mon Sep 17 00:00:00 2001 From: rmagrys Date: Wed, 18 Mar 2026 11:12:51 +0100 Subject: [PATCH 10/14] added deployer to upgrade json artifact --- deployments/devnet/upgrades/2796601_Client.json | 1 + script/Upgrade.s.sol | 1 + 2 files changed, 2 insertions(+) diff --git a/deployments/devnet/upgrades/2796601_Client.json b/deployments/devnet/upgrades/2796601_Client.json index f61dff9..aa96f7c 100644 --- a/deployments/devnet/upgrades/2796601_Client.json +++ b/deployments/devnet/upgrades/2796601_Client.json @@ -6,5 +6,6 @@ "prevCodeHash": "0xb2a1400631c73a64c50c286546b778fee73dc147e9ee8c2e5920a15ca8f970aa", "prevImpl": "0x7F9094d2e982fe627CCa5F86841F81aCE0d1418B", "proxy": "0xEf5Dde9035e57186545dE65a12c5E84BE1D2A2Df", + "deployer": "0x149661aB3B2d343114e4F518fF3cC3b47266d8C4", "upgradedAt": 1771280157 } \ No newline at end of file diff --git a/script/Upgrade.s.sol b/script/Upgrade.s.sol index cfb77fb..1903e13 100644 --- a/script/Upgrade.s.sol +++ b/script/Upgrade.s.sol @@ -56,6 +56,7 @@ contract Upgrade is Script, DeployUtils { json.serialize("newCodeHash", vm.toString(impl.codehash)); json.serialize("upgradedAt", block.timestamp); json.serialize("chainId", block.chainid); + json.serialize("deployer", admin); string memory output = json.serialize("deployedCodeHash", keccak256(vm.getDeployedCode(string.concat(name, ".sol:", name)))); From cb6faf469bc4375d17461bfcb59e9a211d15b77b Mon Sep 17 00:00:00 2001 From: rmagrys Date: Fri, 20 Mar 2026 10:34:10 +0100 Subject: [PATCH 11/14] cr fix --- deployments/calibnet/3532601.json | 42 -------------- deployments/devnet/2792358.json | 42 -------------- deployments/devnet/3476134.json | 48 +++++++++++++++ deployments/devnet/latest.json | 58 +++++++++---------- .../devnet/upgrades/2796601_Client.json | 11 ---- .../devnet/upgrades/3476201_Client.json | 11 ++++ justfile | 19 +++--- script/Deploy.s.sol | 4 +- script/Upgrade.s.sol | 1 - 9 files changed, 98 insertions(+), 138 deletions(-) delete mode 100644 deployments/calibnet/3532601.json delete mode 100644 deployments/devnet/2792358.json create mode 100644 deployments/devnet/3476134.json delete mode 100644 deployments/devnet/upgrades/2796601_Client.json create mode 100644 deployments/devnet/upgrades/3476201_Client.json diff --git a/deployments/calibnet/3532601.json b/deployments/calibnet/3532601.json deleted file mode 100644 index dbfa6af..0000000 --- a/deployments/calibnet/3532601.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "Allocator": "0x2E6A0C4F8D1B3e7a9c5f2d4B6a8e0C1f3D5B7A90", - "Client": { - "codeHash": "0x29e9a60036b60a4dfa7d25730f927ad5604c76b3d137b5b63bcd3632cf1c7558", - "deployedCodeHash": "0x9048d733b20c183768d445ac08c89687ab82d18e66152c90369e88a5ad7d68a9", - "impl": "0xc0CeeC756E03751fE6bb4209e5A1431D91aC2838", - "proxy": "0xe6ED0f172e59f3A0F4D5d213A6081d34E40a0D02" - }, - "FilecoinPay": "0x4A8F3C2e1D9B7f6A0E5c8b3D2a1F9e7C4B6d8a2E", - "PoRepMarket": { - "codeHash": "0xfccc6051f11302d00cf827801e63389015c272acaf9d31228b7548b191d326a8", - "deployedCodeHash": "0xb031c9ec0abfd7acc802ef8f664c0c44c990fac55de0f4c42785fec7babf536b", - "impl": "0xC27656aC968E7fe10e17DC74F4d2D59f90258A46", - "proxy": "0x9Ed75A4316A1b47b1fAb7eA1bc7bbb2e5a3249D1" - }, - "SLIOracle": { - "codeHash": "0x68d1cce1814f49c64dcb626324cb495dd418890284316a58d18ec972df0549ec", - "deployedCodeHash": "0x84c90af6d48f5b7c953e9867829dbf0272b2a5312886dc8a572e6e4b0ce27df1", - "impl": "0x263625134983613243dc000aC58577E4F4954561", - "proxy": "0x922902A2DaC4F2C8FFeA13Bd223c392B8eD0D23B" - }, - "SLIScorer": { - "codeHash": "0x41805f0bc242bdcb728c6a8b5dd6fd3893075309bb24583ad1f8a5e243770bea", - "deployedCodeHash": "0x60e6845fddd07ad022ba2b208194ce68cc92851a4ccbd428fd3ced081582d003", - "impl": "0x7c3D94DA9f116432DDf4C0C19F715E9A6829a8Cc", - "proxy": "0xA3db556b945502B7a0bd6C457E66a437344AC314" - }, - "SPRegistry": "0x7C3D1A9f2e8b4c6a0d5E3f1B9C7A2d4E6f8b0c30", - "TerminationOracle": "0xe4Cd56f91Bc79cC610AEfB1bE92b07BB5b6F2e30", - "ValidatorBeacon": "0x61F23E17E9623FbF0a51aE886F84B177EebCAA6F", - "ValidatorFactory": { - "codeHash": "0xff91ecdd7ed015281877c0ece98d1150cd525e679a5496ad5fb13fbd2d0ad7a4", - "deployedCodeHash": "0xb0f2743ea1faf0044cdeb564081139be8d6b563290f7d61b2d6eb3ae88283edc", - "impl": "0xfBc19A4936c077Bc76e9b3c0A46320DC9918eECE", - "proxy": "0x74b2Ca4cDBbb6FeB13a5852455778c38C8E1e2A3" - }, - "ValidatorImpl": "0x99eC1fD68cD7F082Dba885B19C79B9f13054D23d", - "block": 3532601, - "chainId": 314159, - "deployer": "0x149661aB3B2d343114e4F518fF3cC3b47266d8C4", - "timestamp": 1773304410 -} \ No newline at end of file diff --git a/deployments/devnet/2792358.json b/deployments/devnet/2792358.json deleted file mode 100644 index 2cf5718..0000000 --- a/deployments/devnet/2792358.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "Allocator": "0x2E6A0C4F8D1B3e7a9c5f2d4B6a8e0C1f3D5B7A90", - "Client": { - "codeHash": "0x1b7dcf32635e0ab901dfc511756d28f59d98912eabecd2c7429edc3225d58d97", - "deployedCodeHash": "0x9048d733b20c183768d445ac08c89687ab82d18e66152c90369e88a5ad7d68a9", - "impl": "0x9081E7483404A1e91CE48d14CCA978C318aeBAAe", - "proxy": "0xEf5Dde9035e57186545dE65a12c5E84BE1D2A2Df" - }, - "FilecoinPay": "0x4A8F3C2e1D9B7f6A0E5c8b3D2a1F9e7C4B6d8a2E", - "PoRepMarket": { - "codeHash": "0x7b6725aaa60b60df01388743106dfec05e1d5ecfb22fa29229647c40a89f3eb5", - "deployedCodeHash": "0xb031c9ec0abfd7acc802ef8f664c0c44c990fac55de0f4c42785fec7babf536b", - "impl": "0x88aAFcb9f78618bFaD5A83bb6Cb6D7BbCc864224", - "proxy": "0x3d95578A66f76A8BF8dca37e6Eb938C9B74FBd83" - }, - "SLIOracle": { - "codeHash": "0x4f9246c8527a06a651694145ba5ee45139f98b237387cee993f8a261b206ab05", - "deployedCodeHash": "0x84c90af6d48f5b7c953e9867829dbf0272b2a5312886dc8a572e6e4b0ce27df1", - "impl": "0x224cd8a80AD1d9f0068bC4bE46a864E9deF6e47C", - "proxy": "0x4334D484986CaeD58842967072b3A91Bd6Ee5560" - }, - "SLIScorer": { - "codeHash": "0x43d48a9721320e2ee57453f55e68586c6ef6ded0b845eb8604cc761402d4d1e1", - "deployedCodeHash": "0x60e6845fddd07ad022ba2b208194ce68cc92851a4ccbd428fd3ced081582d003", - "impl": "0x9aA1A0B9F220b876d2aEB591dBE4F64b1af5fc5f", - "proxy": "0x7e4439ab89B25676a24d11f9a3227bAaE5Fd70a7" - }, - "SPRegistry": "0x7C3D1A9f2e8b4c6a0d5E3f1B9C7A2d4E6f8b0c30", - "TerminationOracle": "0x9F1c5A3e7B2d4f6C8a0e3B1D5c7A9f2e4B6D8C00", - "ValidatorBeacon": "0xdcc5993a9964Aa4E84846d311Bf0ebC827ab7561", - "ValidatorFactory": { - "codeHash": "0x495982cc5256a7f941b7000de6d488b4a58eefada0152cb9ee064b3213c57d3b", - "deployedCodeHash": "0xb0f2743ea1faf0044cdeb564081139be8d6b563290f7d61b2d6eb3ae88283edc", - "impl": "0x9c2e8b4C32b2428FB7a066B73396635EBaF55fE0", - "proxy": "0xBE3B9b252Df0a0876884c44cbb7721cf3AAffcFd" - }, - "ValidatorImpl": "0xAa81B569f9022ff2646Fa276efb094157781D2A1", - "block": 2792358, - "chainId": 31415926, - "deployer": "0x149661aB3B2d343114e4F518fF3cC3b47266d8C4", - "timestamp": 1771263185 -} \ No newline at end of file diff --git a/deployments/devnet/3476134.json b/deployments/devnet/3476134.json new file mode 100644 index 0000000..77aa5dd --- /dev/null +++ b/deployments/devnet/3476134.json @@ -0,0 +1,48 @@ +{ + "Allocator": "0x2E6A0C4F8D1B3e7a9c5f2d4B6a8e0C1f3D5B7A90", + "Client": { + "codeHash": "0xe0ae09ae80420c88ee45f280a19e656898a8c20660452d30ff8a9ba16e549f43", + "deployedCodeHash": "0x25327e766b559d88ebd826b565abd3ebba15a665274dbe7dd9676437091bcb24", + "impl": "0x03655d36fEF529E29Cf60a26F50db5782F47B624", + "proxy": "0xcb863DF4C3BbAC402dCE5dFab2BB67241602c7a1" + }, + "FilecoinPay": "0x4A8F3C2e1D9B7f6A0E5c8b3D2a1F9e7C4B6d8a2E", + "PoRepMarket": { + "codeHash": "0xf47f6d1abf76ba7754f42341f35431e05b7fabf765b9f47f53642e9fa9165d8f", + "deployedCodeHash": "0x1ddc2e2e17549589fc87faee0a66110b7f054d561fc8029fb9ca5b67db65f196", + "impl": "0xc1694a7a3d4FC77f4340755B93Ff2c1d80afF7c4", + "proxy": "0x4f6109Ebf278f6932B562C2D117c36a7800cAE1D" + }, + "PoRepService": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F", + "SLIOracle": { + "codeHash": "0x6f437785368109b7d03ea34b13ec0ec9ad2792d664453f56c4a17d3aa8ae2b60", + "deployedCodeHash": "0xb2cf4f478ff232504963e838fb3110330b5241417adaa2d6ccd5ede0269a1de9", + "impl": "0x2076731193e63152d9A54C0637dEBB3b2fbF9C1D", + "proxy": "0x37Ddf4D9a9636aB12797967356aD727899d9aa15" + }, + "SLIScorer": { + "codeHash": "0xbadcd86fdee7e08b50b157ad3d6992e19ddc06111443d546912b8ae4eac14758", + "deployedCodeHash": "0xd2688d4ad5ed90b831c776f4fd081f79660dbdcb90e09397b642b2bf939eb33b", + "impl": "0x3a04e095eff0aeCea4C29dBf8AC61aed32120C0B", + "proxy": "0xc22aBcE7feCfF60f25e62482aFB3A6013FF92FeD" + }, + "SPRegistry": { + "codeHash": "0xf897e7f9d2dd5ada7d5534db82d86ec45a98941aac1d0939d597602e39c1ad9b", + "deployedCodeHash": "0x841ec3c8e2087c2690cb4195ab420d76660e4164c8bde081bfc9c632719951d4", + "impl": "0x6d52a6318e67Ee6fFde7f8Eb63800d25bc47f50d", + "proxy": "0xeD2322C4003fdB0D3532E79858A52A761F4F7304" + }, + "TerminationOracle": "0xe4Cd56f91Bc79cC610AEfB1bE92b07BB5b6F2e30", + "ValidatorBeacon": "0x66423783463AAcE944eBE562f9813D7fDF1fB625", + "ValidatorFactory": { + "codeHash": "0xd7c5a2c10bcf42de0c5986c906a8b61a54a0320137e70f64b12151dc6052119f", + "deployedCodeHash": "0x7137a3a01a3cb4e34e66441270fc99681c6640dac5bff2454605b6368c91e3e3", + "impl": "0x8F8543B857a30Cd0F4F9F158bf9B80EE62f2c3F3", + "proxy": "0x77E1C92c38bD2e4Aa78Ee71B0d063e686171B34F" + }, + "ValidatorImpl": "0x2d1Cd62D37F12f29e8130e41Bd8dBF8f6e2BE34C", + "block": 3476134, + "chainId": 31415926, + "deployer": "0x149661aB3B2d343114e4F518fF3cC3b47266d8C4", + "timestamp": 1773998289 +} \ No newline at end of file diff --git a/deployments/devnet/latest.json b/deployments/devnet/latest.json index cdca9ee..96016db 100644 --- a/deployments/devnet/latest.json +++ b/deployments/devnet/latest.json @@ -1,48 +1,48 @@ { "Allocator": "0x2E6A0C4F8D1B3e7a9c5f2d4B6a8e0C1f3D5B7A90", "Client": { - "codeHash": "0xa252a99ff38a463e73c73299a53b2002404fa49c2b4de33d86ba2315d2ce7ab9", - "deployedCodeHash": "0x11475ad5bb7cb44a3140c08d808466f94273230cdc8044af58f5498f5e91298d", - "impl": "0xbB455D4fc035cDe378C68D7DFDF51A29e3616a11", - "proxy": "0x691551C4ae2f693Ac84577fa35326746EF649eD9" + "codeHash": "0x1322b987c6e2fc8d60302b7a46d3d0fe0e530aa1b0bb9262a807cd2368e015e9", + "deployedCodeHash": "0x16b6a8ddaa80b097e7c2f7e229b2ee1698a42406e620c875b70f702dc98e237f", + "impl": "0xb519DFe9C3F5744DF7364B65938624435f21242b", + "proxy": "0xcb863DF4C3BbAC402dCE5dFab2BB67241602c7a1" }, "FilecoinPay": "0x4A8F3C2e1D9B7f6A0E5c8b3D2a1F9e7C4B6d8a2E", "PoRepMarket": { - "codeHash": "0x326171121bb051a255b22a5f9adf9eeaea77d62e8b9cd6d30fdeffa551122359", - "deployedCodeHash": "0x5ab3ca5ed1436801a7dfce3358a6f2e0a465e2e3a8dfd392fe14f8229e6143aa", - "impl": "0x84e07eb1855B177f2512228a48f3E887a9E8EAEE", - "proxy": "0x9CcaB4b6a09AbcCa34a723ceb8AC21791818D6C3" + "codeHash": "0xf47f6d1abf76ba7754f42341f35431e05b7fabf765b9f47f53642e9fa9165d8f", + "deployedCodeHash": "0x1ddc2e2e17549589fc87faee0a66110b7f054d561fc8029fb9ca5b67db65f196", + "impl": "0xc1694a7a3d4FC77f4340755B93Ff2c1d80afF7c4", + "proxy": "0x4f6109Ebf278f6932B562C2D117c36a7800cAE1D" }, "PoRepService": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F", "SLIOracle": { - "codeHash": "0xb8bb7516363fda691713fd7d440a6b09d2c19a6e8978ac93a1a51cd47426cdfd", - "deployedCodeHash": "0x84c90af6d48f5b7c953e9867829dbf0272b2a5312886dc8a572e6e4b0ce27df1", - "impl": "0x3BB762A405D9561112fc96cF23B3d3418Dd757e1", - "proxy": "0xE0728674c584928656457b50f16f5606b0D39D67" + "codeHash": "0x6f437785368109b7d03ea34b13ec0ec9ad2792d664453f56c4a17d3aa8ae2b60", + "deployedCodeHash": "0xb2cf4f478ff232504963e838fb3110330b5241417adaa2d6ccd5ede0269a1de9", + "impl": "0x2076731193e63152d9A54C0637dEBB3b2fbF9C1D", + "proxy": "0x37Ddf4D9a9636aB12797967356aD727899d9aa15" }, "SLIScorer": { - "codeHash": "0x0a46f9f465431e644c2b6d93cd497f49fd5c25b2f08000a5a542ad42c0dc8cee", - "deployedCodeHash": "0x60e6845fddd07ad022ba2b208194ce68cc92851a4ccbd428fd3ced081582d003", - "impl": "0xF0Bd955e9bCE3bd6729264F93D7DD15FB9224d30", - "proxy": "0x59482b61Ca25cDb3073d9Ebaa5F4025670DE0610" + "codeHash": "0xbadcd86fdee7e08b50b157ad3d6992e19ddc06111443d546912b8ae4eac14758", + "deployedCodeHash": "0xd2688d4ad5ed90b831c776f4fd081f79660dbdcb90e09397b642b2bf939eb33b", + "impl": "0x3a04e095eff0aeCea4C29dBf8AC61aed32120C0B", + "proxy": "0xc22aBcE7feCfF60f25e62482aFB3A6013FF92FeD" }, "SPRegistry": { - "codeHash": "0xd58505cd8ee976c9cb314682fb45150e17257ac891db1f651399ff5d38f71afa", - "deployedCodeHash": "0xd070d695c53beeae44a3df17a38bc39556740bcbbd9bc1e1f5d27ebd5088be36", - "impl": "0x1e69B532a6e11b8964523353F6E94a3C34a7d9cf", - "proxy": "0xF8f395a1c84b1F77aA9F704607afc0BD1D90c724" + "codeHash": "0xf897e7f9d2dd5ada7d5534db82d86ec45a98941aac1d0939d597602e39c1ad9b", + "deployedCodeHash": "0x841ec3c8e2087c2690cb4195ab420d76660e4164c8bde081bfc9c632719951d4", + "impl": "0x6d52a6318e67Ee6fFde7f8Eb63800d25bc47f50d", + "proxy": "0xeD2322C4003fdB0D3532E79858A52A761F4F7304" }, - "TerminationOracle": "0x9F1c5A3e7B2d4f6C8a0e3B1D5c7A9f2e4B6D8C00", - "ValidatorBeacon": "0x6a998bF68578cD33092C0aF9e91eF91C68729D2a", + "TerminationOracle": "0xe4Cd56f91Bc79cC610AEfB1bE92b07BB5b6F2e30", + "ValidatorBeacon": "0x66423783463AAcE944eBE562f9813D7fDF1fB625", "ValidatorFactory": { - "codeHash": "0xc2192b248c7f0bc3780c9681a056da041fc1b5653542b082214956dcf5516e58", - "deployedCodeHash": "0xea8dbaf35a14828a7317a10d2b16ff4bd993924ece23b4e7dba23cbd6c829e33", - "impl": "0x393cA3B9003d6C360371CF5Fa9C423C34e3F1aB8", - "proxy": "0xE531100D4c3dAC1977932a0454d6eB974707eBC5" + "codeHash": "0xd7c5a2c10bcf42de0c5986c906a8b61a54a0320137e70f64b12151dc6052119f", + "deployedCodeHash": "0x7137a3a01a3cb4e34e66441270fc99681c6640dac5bff2454605b6368c91e3e3", + "impl": "0x8F8543B857a30Cd0F4F9F158bf9B80EE62f2c3F3", + "proxy": "0x77E1C92c38bD2e4Aa78Ee71B0d063e686171B34F" }, - "ValidatorImpl": "0xAeda26aBf2Ce4B59b36e5527a9Fe5BCff87CBadb", - "block": 2779998, + "ValidatorImpl": "0x2d1Cd62D37F12f29e8130e41Bd8dBF8f6e2BE34C", + "block": 3476134, "chainId": 31415926, "deployer": "0x149661aB3B2d343114e4F518fF3cC3b47266d8C4", - "timestamp": 1771213745 + "timestamp": 1773998289 } \ No newline at end of file diff --git a/deployments/devnet/upgrades/2796601_Client.json b/deployments/devnet/upgrades/2796601_Client.json deleted file mode 100644 index aa96f7c..0000000 --- a/deployments/devnet/upgrades/2796601_Client.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "chainId": 31415926, - "deployedCodeHash": "0x9048d733b20c183768d445ac08c89687ab82d18e66152c90369e88a5ad7d68a9", - "newCodeHash": "0x98a51bfccc1954c47b9f94ea76d5e18f426c3afef9cd750c3cc293614e6e353e", - "newImpl": "0x1793CAbf7B5E41aA9CDd3E8E1acbaCE344728dFC", - "prevCodeHash": "0xb2a1400631c73a64c50c286546b778fee73dc147e9ee8c2e5920a15ca8f970aa", - "prevImpl": "0x7F9094d2e982fe627CCa5F86841F81aCE0d1418B", - "proxy": "0xEf5Dde9035e57186545dE65a12c5E84BE1D2A2Df", - "deployer": "0x149661aB3B2d343114e4F518fF3cC3b47266d8C4", - "upgradedAt": 1771280157 -} \ No newline at end of file diff --git a/deployments/devnet/upgrades/3476201_Client.json b/deployments/devnet/upgrades/3476201_Client.json new file mode 100644 index 0000000..4efbfd7 --- /dev/null +++ b/deployments/devnet/upgrades/3476201_Client.json @@ -0,0 +1,11 @@ +{ + "chainId": 31415926, + "deployedCodeHash": "0x16b6a8ddaa80b097e7c2f7e229b2ee1698a42406e620c875b70f702dc98e237f", + "deployer": "0x149661aB3B2d343114e4F518fF3cC3b47266d8C4", + "newCodeHash": "0x1322b987c6e2fc8d60302b7a46d3d0fe0e530aa1b0bb9262a807cd2368e015e9", + "newImpl": "0xb519DFe9C3F5744DF7364B65938624435f21242b", + "prevCodeHash": "0xe0ae09ae80420c88ee45f280a19e656898a8c20660452d30ff8a9ba16e549f43", + "prevImpl": "0x03655d36fEF529E29Cf60a26F50db5782F47B624", + "proxy": "0xcb863DF4C3BbAC402dCE5dFab2BB67241602c7a1", + "upgradedAt": 1773998557 +} \ No newline at end of file diff --git a/justfile b/justfile index 42764df..555ee92 100644 --- a/justfile +++ b/justfile @@ -17,6 +17,9 @@ test: build: forge build --build-info --sizes +clean: + forge clean + gen-abis: forge build for f in $(find src -name '*.sol' ! -path "*/interfaces/*" ! -path "*/types/*" ! -path "*/libs/*"); do \ @@ -39,21 +42,17 @@ deploy flags='': upgrade flags='': forge script script/Upgrade.s.sol:Upgrade --gas-estimate-multiplier 100000 --disable-block-gas-limit -vvvv --broadcast --rpc-url $RPC_URL --private-key $PRIVATE_KEY {{flags}} -devnet_deploy: - forge clean && forge build +devnet_deploy: clean build RPC_URL=$RPC_TEST PRIVATE_KEY=$PRIVATE_KEY_TEST just deploy -calibnet_deploy: - # forge clean && forge build +calibnet_deploy: clean build RPC_URL=$RPC_CALIBNET PRIVATE_KEY=$PRIVATE_KEY_CALIBNET just deploy --slow -devnet_upgrade: - forge clean && forge build - RPC_URL=$RPC_TEST PRIVATE_KEY=$PRIVATE_KEY_TEST PROXY_ADDRESS=$UPGRADE_PROXY_ADDRESS_TEST just upgrade +devnet_upgrade: clean build + RPC_URL=$RPC_TEST PRIVATE_KEY=$PRIVATE_KEY_TEST just upgrade -calibnet_upgrade: - forge clean && forge build - RPC_URL=$RPC_CALIBNET PRIVATE_KEY=$PRIVATE_KEY_CALIBNET PROXY_ADDRESS=$UPGRADE_PROXY_ADDRESS_CALIBNET just upgrade --slow +calibnet_upgrade: clean build + RPC_URL=$RPC_CALIBNET PRIVATE_KEY=$PRIVATE_KEY_CALIBNET just upgrade --slow # CI equivalent check check: fmt-check lint test check-coverage build check-abis diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol index 8defff2..524c51a 100644 --- a/script/Deploy.s.sol +++ b/script/Deploy.s.sol @@ -42,8 +42,6 @@ contract Deploy is Script, DeployUtils { address internal operatorAddress; address internal metaAllocator; - error InvalidEnv(); - function run() external { admin = vm.addr(vm.envUint("PRIVATE_KEY")); allocator = vm.envAddress("ALLOCATOR"); @@ -57,12 +55,12 @@ contract Deploy is Script, DeployUtils { vm.startBroadcast(admin); (validatorFactory, validatorFactoryImpl, validatorImpl) = _deployValidatorFactory(admin); + (spRegistry, spRegistryImpl) = _deploySPRegistry(admin); (poRepMarket, poRepMarketImpl) = _deployPoRepMarket(admin, validatorFactory, spRegistry); (clientSmartContract, clientSmartContractImpl) = _deployClientSmartContract(admin, terminationOracle, poRepMarket, metaAllocator); (sliOracle, sliOracleImpl) = _deploySLIOracle(admin, oracleAddress); (sliScorer, sliScorerImpl) = _deploySliScorer(admin, sliOracle); - (spRegistry, spRegistryImpl) = _deploySPRegistry(admin); validatorBeacon = ValidatorFactory(validatorFactory).getBeacon(); diff --git a/script/Upgrade.s.sol b/script/Upgrade.s.sol index 1903e13..855c6f9 100644 --- a/script/Upgrade.s.sol +++ b/script/Upgrade.s.sol @@ -25,7 +25,6 @@ contract Upgrade is Script, DeployUtils { function run() external { admin = vm.addr(vm.envUint("PRIVATE_KEY")); - proxy = vm.envAddress("PROXY_ADDRESS"); name = vm.envString("UPGRADE_CONTRACT_NAME"); cd = vm.envOr("UPGRADE_CALLDATA", bytes("")); From 1f8a7576532a6008a40098606fca98f926c88b35 Mon Sep 17 00:00:00 2001 From: rafalm Date: Tue, 24 Mar 2026 11:41:34 +0100 Subject: [PATCH 12/14] cr fix --- script/Upgrade.s.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/Upgrade.s.sol b/script/Upgrade.s.sol index 855c6f9..423d472 100644 --- a/script/Upgrade.s.sol +++ b/script/Upgrade.s.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT // solhint-disable use-natspec -pragma solidity ^0.8.25; +pragma solidity ^0.8.30; import {Script} from "forge-std/Script.sol"; import {DeployUtils} from "./utils/DeployUtils.sol"; From 2e1e839ecd16da98dfc9483fcd08aa12d7dcb902 Mon Sep 17 00:00:00 2001 From: rafalm Date: Tue, 24 Mar 2026 11:45:44 +0100 Subject: [PATCH 13/14] rebase fix --- .env.example | 1 - script/Deploy.s.sol | 1 - 2 files changed, 2 deletions(-) diff --git a/.env.example b/.env.example index c2408e6..4314cea 100644 --- a/.env.example +++ b/.env.example @@ -9,7 +9,6 @@ PRIVATE_KEY_CALIBNET= PRIVATE_KEY_MAINNET= FILECOIN_PAY= -ALLOCATOR= SP_REGISTRY= TERMINATION_ORACLE= ORACLE= diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol index 524c51a..5a8cdcf 100644 --- a/script/Deploy.s.sol +++ b/script/Deploy.s.sol @@ -44,7 +44,6 @@ contract Deploy is Script, DeployUtils { function run() external { admin = vm.addr(vm.envUint("PRIVATE_KEY")); - allocator = vm.envAddress("ALLOCATOR"); terminationOracle = vm.envAddress("TERMINATION_ORACLE"); filecoinPay = vm.envAddress("FILECOIN_PAY"); oracleAddress = vm.envAddress("ORACLE"); From a923ad505aa18b676df3c7a661f51dbf5238f236 Mon Sep 17 00:00:00 2001 From: rafalm Date: Tue, 24 Mar 2026 12:29:56 +0100 Subject: [PATCH 14/14] cr fix --- script/Upgrade.s.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/Upgrade.s.sol b/script/Upgrade.s.sol index 423d472..845be1d 100644 --- a/script/Upgrade.s.sol +++ b/script/Upgrade.s.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT // solhint-disable use-natspec -pragma solidity ^0.8.30; +pragma solidity =0.8.30; import {Script} from "forge-std/Script.sol"; import {DeployUtils} from "./utils/DeployUtils.sol";