Deploy Script
Badger DAO Deployment
The Badger system has a number of moving parts, and requires a fairly elaborate setup. This setup is handled by the deploy script.
These include deploying and configuring:
Distribution Geysers (which are a slightly modified version of the Ampleforth Token Geyser)
TimeLock contracts to lock up a portion of $BADGER and $DIGG tokens for the DAO
Additional required infrastructure, if on a local instance (Uniswap, Gnosis Safe, ENS, AragonPM, etc...)
In the code, the segments of the deployment process are shown clearly in the deploy system file, with the initial configuration coming from the config file.
System Roles
Deployer 🏗
This is an EOA that handles the initial deploys and wiring up of the system, using the deploy script. It transfers ownership of all owned contracts to the DAO Agent after initialization is complete.
DAOAgent 🤖
This is the DAO contract that interacts with other contracts. It is the 'avatar' of the DAO to the outside Ethereum world. It will be the owner of the Digg system, distribution geysers.
DAOFinance 💵
This is the DAO contract that handles financial transactions of ETH and ERC20s. It provides a nicer interface for these common actions than the DAOAgent. The DAOAgent is able to utilize funds in the DAOFinance to interact with external contracts.
[Local only] Deploy Infrastructure
External components used by the contracts are deployed, such as the Uniswap factory & router, Gnosis safe master copy, ENS, AragonPM, Staking assets etc..
[Public network] Connect Infrastructure
Existing external components used by the contracts are connected to, using addresses specified in the config fig.
Deploy DAO
The DAO is deployed via the Badger DAO template. This will deploy the initial set of Aragon apps, including the DAOAgent and DAOFinance. The initial supply of BADGER is minted to the deployer, to be placed into the various staking & locking contracts.
⚠️ Note that once the Deployer sends their governance tokens and no longer controls >50% of the voting rights, actions cannot be taken immediately and must wait for the DAO voting period (1 week)
Deploy & Initialize Digg System
The Digg Core and Digg Oracles are deployed, initialized, and configured.
Deploy Liquidity Pools
Uniswap pools for WETH/BADGER and WETH/DIGG are created using the UniswapV2Factory. No liquidity is provided at deploy time.
A Balancer pool for WETH/BADGER is deployed, and provided with the minimum possible liquidity as per the BPool requirements.
Deploy Distribution Geysers
Distribution Geysers are deployed and appropriate amounts of tokens are locked within, as per the configuration.
Deploy Token Timelocks
Distribution Geysers are deployed and appropriate amounts of tokens are locked within, as per the configuration.
Confirm Deployment Parameters
We're ready to go: This will ensure all parameters of the system are what we expect The geyser parameters will be tested using confirmGeyserParams() function
Transfer ownership to DAO
This will transfer ownership of all contracts from the Deployer to the DAO Agent.
Final Checks
Confirm that the ownership of contracts is successfully transferred. (Including the ProxyAdmin for the upgradable contracts, uFragments and uFragmentsSupply)
The Complete Badger & Digg Systems
Was this helpful?