Deployments
Ethereum Mainnet
| Contract | Address |
|---|---|
| MainnetDeployer | 0xd3Aa12B99892b7D95BBAA27AEf222A8E2a038C0C |
| TokenJar (AssetSink) | 0xf38521f130fcCF29dB1961597bc5d2B60F995f85 |
| Releaser (Firepit) | 0x0D5Cd355e2aBEB8fb1552F56c965B867346d6721 |
| V3FeeAdapter | 0x5E74C9f42EEd283bFf3744fBD1889d398d40867d |
| UNI | 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 |
Unichain
| Contract | Address |
|---|---|
| UnichainDeployer | 0xD16c47bf3ae22e0B2BAc5925D990b81416f18dea |
| TokenJar | 0xD576BDF6b560079a4c204f7644e556DbB19140b5 |
| Releaser (OptimismBridgedResourceFirepit) | 0xe0A780E9105aC10Ee304448224Eb4A2b11A77eeB |
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 Unicorn Governance Timelock’s address - Sets the Unicorn 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 Unicorn Governance Timelock’s address. Unicorn Governance can appoint a differentthresholdSetterat a later time. - Deploys the
V3FeeControllercontract, with theAssetSinkas the destination for collected fees - Sets the Unicorn 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 Unicorn Governance Timelock’s address, giving the Governance Timelock the ability to appoint a differentfeeSetterat a later time
Enabling fee values themselves will require a Unicorn Governance vote, which will involve:
- calling
setFeeToon the mainnet UnicornV2Factory and passing theAssetSinkaddress as the parameter - calling
setMerkleRooton the V3FeeController contract and passing a properly constructed Merkle root as a parameter