This checklist is seen as a guide to deploy the stack to a new chain.
- Choose an ENS domain for DAOs
- Choose an ENS domain for plugins
- Check if there is an official ENS deployment for the chosen chain and if yes:
- Check if there is already an entry for it in
packages/contracts/deploy/helpers.ts - Check that the owner of the DAO domain is the deployer
- Check that the owner of the plugin domain is the deployer
- Check if there is already an entry for it in
- Run
yarnin the repository root to install the dependencies - Run
yarn buildinpackages/contractsto make sure the contracts compile - Run
yarn testinpackages/contractsto make sure the contract tests succeed - Run
yarn deploy --network hardhat --resetto make sure the deploy scripts work - Set
ETH_KEYin.envto the deployers private key - Set the right API key for the chains blockchain explorer in
.env(e.g. for mainnet it isETHERSCAN_KEY) - Set the chosen DAO ENS domain (in step 1) to
NETWORK_DAO_ENS_DOMAINin.envand replaceNETWORKwith the correct network name (e.g. for mainnet it isMAINNET_DAO_ENS_DOMAIN) - Set the chosen Plugin ENS domain (in step 2) to
NETWORK_PLUGIN_ENS_DOMAINin.envand replaceNETWORKwith the correct network name (e.g. for mainnet it isMAINNET_PLUGIN_ENS_DOMAIN)
To deploy run yarn deploy --network NETWORK in packages/contracts and replace NETWORK with the correct network name (e.g. for mainnet it is yarn deploy --network mainnet)
- Take the addresses from this file
packages/contracts/deployed_contracts.json - Wait for the deployment script finishing verification
- Go to the blockchain explorer and verify that each address is verified
- If it is not try to verfiy it with
npx hardhat verify --network NETWORK ADDRESS CONTRUCTOR-ARGS. More infos on how to use this command can be found here: https://hardhat.org/hardhat-runner/docs/guides/verifying - If it is a proxy try to activate the blockchain explorer's proxy feature
- If it is not try to verfiy it with
- Update
active_contracts.jsonwith the new deployed addresses - Update
packages/contracts/Releases.mdwith the new deployed addresses
- Check if the managing DAO set in the
DAO_ENSSubdomainRegistrar - Check if the managing DAO set in the
Plugin_ENSSubdomainRegistrar - Check if the managing DAO set in the
DAORegistry - Check if the
DAO_ENSSubdomainRegistrarset in theDAORegistry - Check if the managing DAO set in the
PluginRepoRegistry - Check if the
Plugin_ENSSubdomainRegistrarset in thePluginRepoRegistry - Check if the
PluginRepoRegistryis set in thePluginRepoFactory - Check if the managing DAO set in the
PluginSetupProcessor - Check if the
PluginRepoRegistryset in thePluginSetupProcessor - Check if the
DAORegistryset in theDAOFactory - Check if the
PluginSetupProcessorset in theDAOFactory
- Check that the deployer has the ROOT permission on the managing DAO
- Check if
DAO_ENSSubdomainRegistraris approved for all for the DAO' ENS domain. CallisApprovedForAllon the ENS registry - Check if
Plugin_ENSSubdomainRegistraris approved for all for the plugin' ENS domain. CallisApprovedForAllon the ENS registry - Check if the
DAORegistryhasREGISTER_ENS_SUBDOMAIN_PERMISSIONonDAO_ENSSubdomainRegistrar - Check if the
PluginRepoRegistryhasREGISTER_ENS_SUBDOMAIN_PERMISSIONonPlugin_ENSSubdomainRegistrar - Check if the
DAOFactoryhasREGISTER_DAO_PERMISSIONonDAORegistry - Check if the
PluginRepoFactoryhasREGISTER_PLUGIN_REPO_PERMISSIONonPluginRepoRegistry
- Publish a new version of
@aragon/core-contracts(./packages/contracts) to NPM - Publish a new version of
@aragon/core-contracts-ethers(./packages/contracts) to NPM
- Update
packages/subgraph/manifest/data/NETWORK.jsonwhereNETWORKis replaced with the deployed network with the new contract addresses. If the file doesn't exist create a new one. - Update the version in
packages/subgraph/package.json - Update
packages/subgraph/.envwith the correct values- set
NETWORK_NAMEto the deployed network - set
SUBGRAPH_NAMEtocore - set
GRAPH_KEYwith the value obtained from the Satsuma Dashboard - set the
SUBGRAPH_VERSIONto the same value as inpackages/subgraph/package.json
- set
- Run
yarn manifestinpackages/subgraphto generate the manifest - Run
yarn buildinpackages/subgraphto build the subgraph - Run
yarn testinpackages/subgraphto test the subgraph - Run
yarn deployinpackages/subgraphto deploy the subgraph - Test the new deployed subgraph with the frontend team
- Promote the new subgraph to live in the Satsuma Dashboard
- Changing the owner of the chosen ENS domains will also revoke the permissions of the
DAO_ENSSubdomainRegistrarandPlugin_ENSSubdomainRegistrar. Therefore if the ownership gets transfered, restore the approval for these 2 contracts.