Bond Usage
The protocol consists of a Pending Bucket and a Reserve Bucket.
There are 4 important user-facing functions -
createBond()bondIn(uint256 bondId)bondOut(uint256 bondId)redeem(uint256 amountOfLcdETH, uint256 minAmount)
Creating a bond involves calling the payable createBond() function with ETH which mints a NFT representing the bond data.
The ETH is allocated to a Pending Bucket and earns staking yield. The Pending Bucket yield is allocated to the Reserve Bucket.
The NFT accrues a virtual balance of lcdETH according to a certain accrual curve.
A user can choose to either bondIn or bondOut after acquiring the NFT.
- Bonding in - This involves calling the
bondIn(uint256 bondId)function, which transfer the principal ETH + staking yield earned to theReserve Bucketand mints the accrued amount oflcdETHin the bond to the caller. - Bonding out - This involves calling the
bondOut(uint256 bondId)function, which transfers the principal amount back to the caller. The yield earned is allocated to theReserve Bucket.
A lcdETH holder can at any point of time choose to sell lcdETH for ETH in the open market or redeem for ETH from the protocol at the redemption price.