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 Bucket
and mints the accrued amount oflcdETH
in 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.