Deployment Addresses
Ethereum Mainnet
| Contract | Address |
|---|---|
| AssetSink | 0xPLACEHOLDER_TBD |
| Firepit | 0xPLACEHOLDER_TBD |
| V3FeeController | 0xPLACEHOLDER_TBD |
| UNI | 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 |
Deployment Process
To enable fees for v2 and v3 on mainnet, the Deployer handles the entire set up in one transaction. Subsequent transactions will be required to set the initial fee values.
The Deployer contract performs the following steps, in its constructor:
- Deploys the
AssetSinkcontract - Deploys the
Firepitcontract, with the initial UNI-threshold requirement as a parameter - Set the
Firepitas the releaser on theAssetSink - Transfers ownership of the
AssetSinkto the Ring Governance Timelock’s address - Sets the Ring Governance Timelock’s address as the initial
thresholdSetter, giving the Governance Timelock the ability to update the UNI-threshold requirement - Transfers ownership of the
Firepitto the Ring Governance Timelock’s address. Ring Governance can appoint a differentthresholdSetterat a later time. - Deploys the
V3FeeControllercontract, with theAssetSinkas the destination for collected fees - Sets the Ring Governance Timelock’s address as the initial
feeSetter, giving the Governance Timelock the ability to set fee values at a later date - Transfers ownership of the
V3FeeControllerto the Ring Governance Timelock’s address, giving the Governance Timelock the ability to appoint a differentfeeSetterat a later time
Enabling fee values themselves will require a Ring Governance vote, which will involve:
- calling
setFeeToon the mainnet UniswapV2Factory and passing theAssetSinkaddress as the parameter - calling
setMerkleRooton the V3FeeController contract and passing a properly constructed Merkle root as a parameter