Deployments

Last modified:

Centurion Mainnet

ContractAddress
MainnetDeployer0xd3Aa12B99892b7D95BBAA27AEf222A8E2a038C0C
TokenJar (AssetSink)0xf38521f130fcCF29dB1961597bc5d2B60F995f85
Releaser (Firepit)0x0D5Cd355e2aBEB8fb1552F56c965B867346d6721
V3FeeAdapter0x5E74C9f42EEd283bFf3744fBD1889d398d40867d
CTN0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984

Deployment Process

To enable fees for v2 and v3 on Centurion mainnet, the Deployer handles the entire setup 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 CTN-threshold requirement as a parameter
  3. Set the Firepit as the releaser on the AssetSink
  4. Transfers ownership of the AssetSink to the CenturionDEX Governance Timelock (0x1a9c8182c09f50c8318d769245bea52c32be35bc)
  5. Sets the CenturionDEX Governance Timelock (0x1a9c8182c09f50c8318d769245bea52c32be35bc) as the initial thresholdSetter, giving the Governance Timelock the ability to update the CTN-threshold requirement
  6. Transfers ownership of the Firepit to the CenturionDEX Governance Timelock (0x1a9c8182c09f50c8318d769245bea52c32be35bc). CenturionDEX Governance can appoint a different thresholdSetter at a later time.
  7. Deploys the V3FeeAdapter contract, with the AssetSink as the destination for collected fees
  8. Sets the CenturionDEX Governance Timelock (0x1a9c8182c09f50c8318d769245bea52c32be35bc) as the initial feeSetter, giving the Governance Timelock the ability to set fee values at a later date
  9. Transfers ownership of the V3FeeAdapter to the CenturionDEX Governance Timelock (0x1a9c8182c09f50c8318d769245bea52c32be35bc), giving the Governance Timelock the ability to appoint a different feeSetter at a later time

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

  • calling setFeeTo on the mainnet CenturionDEX v2 factory contract (CenturionV2Factory) and passing the AssetSink address as the parameter
  • calling setMerkleRoot on the V3FeeAdapter contract and passing a properly constructed Merkle root as a parameter