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 Uniswap Governance Timelock’s address - Sets the Uniswap 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 Uniswap Governance Timelock’s address. Uniswap Governance can appoint a differentthresholdSetterat a later time. - Deploys the
V3FeeControllercontract, with theAssetSinkas the destination for collected fees - Sets the Uniswap 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 Uniswap Governance Timelock’s address, giving the Governance Timelock the ability to appoint a differentfeeSetterat a later time
Enabling fee values themselves will require a Uniswap 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