Skip to main content

Deployment Addresses

Ethereum Mainnet

ContractAddress
AssetSink0xPLACEHOLDER_TBD
Firepit0xPLACEHOLDER_TBD
V3FeeController0xPLACEHOLDER_TBD
UNI0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984

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:

  1. Deploys the AssetSink contract
  2. Deploys the Firepit contract, with the initial UNI-threshold requirement as a parameter
  3. Set the Firepit as the releaser on the AssetSink
  4. Transfers ownership of the AssetSink to the Uniswap Governance Timelock’s address
  5. Sets the Uniswap Governance Timelock’s address as the initial thresholdSetter, giving the Governance Timelock the ability to update the UNI-threshold requirement
  6. Transfers ownership of the Firepit to the Uniswap Governance Timelock’s address. Uniswap Governance can appoint a different thresholdSetter at a later time.
  7. Deploys the V3FeeController contract, with the AssetSink as the destination for collected fees
  8. 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
  9. Transfers ownership of the V3FeeController to the Uniswap Governance Timelock’s address, giving the Governance Timelock the ability to appoint a different feeSetter at a later time

Enabling fee values themselves will require a Uniswap Governance vote, which will involve:

  • calling setFeeTo on the mainnet UniswapV2Factory and passing the AssetSink address as the parameter
  • calling setMerkleRoot on the V3FeeController contract and passing a properly constructed Merkle root as a parameter