This project uses Just recipes and TypeScript scripts to deploy and upgrade SSV Network contracts.
For full documentation on environments, workflows, and config schema, see deployments/README.md.
just deploy-fresh localDeploys everything from scratch: SSVToken (mock), all modules, SSVNetwork + proxy, SSVNetworkViews + proxy, CSSVToken, and runs the staking upgrade. Config is read from deployments/local/config.json.
just deploy mainnetDeploys implementations + modules only (no proxy upgrade). Writes deployments/mainnet/deploy-result.json.
anvil --fork-url "$HOODI_RPC_URL" --port 8545
just upgrade-test-fork hoodi-stageRuns upgrade on local fork and then executes strict fork tests.
just upgrade hoodi-stageRequires the deployer private key to match the on-chain owner.
just generate-attestation mainnetGenerates deployments/mainnet/deployment-attestation.json with bytecode hashes, deployer info, constructor args, and config snapshot for committee review.
just generate-safe-batch mainnetGenerates deployments/mainnet/multisig-batch.json for import into SAFE Transaction Builder.
just verify-upgrade mainnetReads config.json and verifies all on-chain values match expected parameters.
just upgrade-contract SSVNetwork 0xPROXY hoodijust upgrade-contract SSVNetwork 0xPROXY hoodi 0xIMPLjust deploy-module SSVOperators hoodi 12345just attach-module hoodi-stage SSVClusters 0xMODULE- Storage safety: Never add state variables to
SSVNetworkorSSVNetworkViews. All state goes through diamond storage libraries. - UUPS pattern: Upgrades use the UUPS Proxy pattern.
- Library changes: When modifying a library, you must also redeploy all modules that use it.