Provide quotes/budget for Smart Treasury development

Minor update to spec to include pool creation step, as defined by spec.

  1. Deploy Smart Treasury bootstrapping smart contract (BSC)
  2. Deploy a new Configurable Rights Pool (Smart Treasury) with parameters as defined in spec.
  3. (Governance) Withdraw 130,000 IDLE from ecosystem fund (representing 1% of supply) and deposit to BSC
  4. (Governance) Withdraw all assets from FeeTreasury to BSC,
  5. Retrieve IDLE/ETH conversion rate using an oracle.
  6. Convert FeeTreasury assets to ETH in BSC up to value of 1300 IDLE.
  7. If ETH value != 1,300 IDLE (1% of 130,000), sell UP TO 1300 IDLE on the open market until ETH value is equivalent to 1% of IDLE deposit (as defined in step 4).
  8. Convert ETH to WETH (Balancer only supports WETH)
  9. Deposit IDLE & WETH into the pool, bootstrapping the smart treasury.
  10. Send BalancerPoolToken to FeeCollection Contract. (Token representing stake in pool).
  11. Set pool controller as an address governance controls. (calling setController() )
  12. Transfer any remaining funds (eg ETH, or outstanding USDC, DAI etc) back to FeeTreasury.

This can be summarised in a basic interface, (reference only)

interface BootstrapSmartTreasuryContract {
   function initialise () {} // Create smart treasury pool, using parameters from spec
   function swap() {} // Exchange fees + IDLE if required for ETH
   function bootstrap() {} // fund the smart treasury pool, and call begin updating weights
   function relinquish() {} // transfer ownership to governance. 
}

The following sequence diagram can be helpful to visualise the process

4 Likes