Minor update to spec to include pool creation step, as defined by spec.
- Deploy Smart Treasury bootstrapping smart contract (BSC)
- Deploy a new Configurable Rights Pool (Smart Treasury) with parameters as defined in spec.
- (Governance) Withdraw 130,000 IDLE from ecosystem fund (representing 1% of supply) and deposit to BSC
- (Governance) Withdraw all assets from FeeTreasury to BSC,
- Retrieve IDLE/ETH conversion rate using an oracle.
- Convert FeeTreasury assets to ETH in BSC up to value of 1300 IDLE.
- 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).
- Convert ETH to WETH (Balancer only supports WETH)
- Deposit IDLE & WETH into the pool, bootstrapping the smart treasury.
- Send BalancerPoolToken to FeeCollection Contract. (Token representing stake in pool).
- Set pool controller as an address governance controls. (calling
setController()
) - 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