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 the Reserve Bucket and mints the accrued amount of lcdETH 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 the Reserve 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.