Introduction
Lucidly Finance is a yield infrastructure layer on top of Liquid Staking Derivatives.
The first product offering is an ETH derivative called lcdETH
.
lcdETH
is minted from a Reserve Bucket
that is used to source liquidity and allocated to liquidity pools based on a voting mechanism.
Overview
A user deposits ETH
into the protocol and creates a bond. The bond is represented as an ERC-721
NFT which represents the bond amount, time of creation, accrued value & bond status in the metadata of the NFT.
The funds deposited for creating are bond are directed to a Pending bucket
and staked in a basket of LSDs and the bond accrues the boosted token lcdETH
as a virtual balance. The accrual rate or how fast/slow the bond accrues lcdETH
is depending on a bonding curve.
After creating a bond, a user has the option to bond in where they receive the amount of lcdETH
accrued in the bond by forfeiting the initial principal amount which they initially deposited. Every time a user bonds in, new lcdETH
in minted.
This ETH
+ staking yield then is directed toward the reserve bucket which acts as the backing for lcdETH
.
At any point after bond creation, a user has the option to cancel the bond or bond out, which will return the initial principal amount deposited and the yield generated from the ETH will be directed towards Reserve Bucket
. So at any point in time, the principal amount is essentially protected.
If a user decides to bond in they get lcdETH
, which they can either choose to sell on the open market for ETH
or redeem for ETH
from the protocol.
What are the different system buckets?
The ETH deposited in the protocol is in either one of the following buckets
-
Pending Bucket: Receives
ETH
from user deposits and is distributed in a basket of LSDs. The yield generated from the pending bucket is credited to theReserve Bucket
. -
Reserve Bucket: Backs the total
lcdETH
supply.lcdETH
is fully redeemable for the underlyingETH
in theReserve Bucket
.
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.
lcdETH balance accrual
Creating a bond involves calling a function called createBond()
with a minimum amount of ETH which then mints an NFT to the caller which denotes their bond data.
struct BondData {
uint256 ethAmount; // in wei amount
uint256 claimedLcdETHAmount; // in wei amount
uint64 startTime;
uint64 endTime; // timestamp of bondIn/bondOut event
BondStatus status;
}
The bond accrues lcdETH
according to a bonding curve which looks like this -
The accrual curve is asymptotic, i.e., it approaches but never exceeds a certain capped value.
The equation for accrued lcdLUSD
accrual is given by -
\[ accruedLcdETH = \frac{bondAmount}{redemptionPrice} \cdot \frac{t}{t + \alpha} \]
α
parametrizes the slope of the curve and could be automatically adjusted by the protocol in order to control the speed of the value accrual which depends on the evolving price premiumt
denotes time
Since the rate of lcdETH accrual is the change in accrued lcdETH per unit time, if everything else remains constant -
- Larger bonds accrue lcdETH faster than smaller bonds
- Younger bonds accrue lcdETH faster than older bonds
lcdETH accrual cap
The lcdETH cap is an upper bound on the amount of lcdETH that the bond can accrue, based on the accrual curve mentioned above.
The lcdETH cap is calculated by the following formula:
\[ cap = \frac{bondAmount}{redemptionPrice} \]
Pending Bucket
On a bond creation, funds are directed to the Pending Bucket
where they are staked to receive the base consensus layer rewards.
All the yield generated from the pending bucket are redirected to the reserve bucket which acts as the backing for lcdETH
.
Reserve Bucket
When a user bonds in, the initial principal amount + yield generated from the bonded principal is directed to the reserve bucket and in return the users claims their virtual balance of lcdETH
and forfeit the ETH which they had deposited for creating the bond.
The total supply of lcdETH
is backed by the total amount of ETH in the Reserve Bucket
.
Liquidity in the Reserve Bucket
is used to allocate liquidity to LSD/ETH pools on curve based on an auction for liquidity. DAOs/Protocols/Whales or other aligned parties get to rent this liquidity.
This bucket is implemented as ERC4626
Vault to allow liquidity allocation strategies to be plugged in and out.
ETH
coming in the form of bond ins are allocated to these pools in an optimal ratio to bring the final ratio closest to the target ratio decided by the market.
Lucidly pbLSD
will deploy an off-chain solver
model to find the optimal ratio to allocate new liquidity to align with the voted upon target ratio.
Liquidity Rebalancing
Liquidity in the Reserve Bucket
is auctioned through a Liquidity Allocation Vote
and the protocol uses an off-chain solver auction model to rebalance liquidity.
On each bondIn()
, the newly injected liquidity is allocated to pools in the Reserve Bucket
in a certain ratio closer to the target ratio
set through a Liquidity Allocation Vote
.
Rebalancing liquidity in the reserve bucket is incentivised with the bribes paid by parties renting liquidity.
Bonding in when the pool weights are imbalanced yields a short-term opportunity to capture a split portion of the bribes earned by protocol.
Backing Ratio
The total market cap of lcdETH
is backed by the total ETH in the Reserve Bucket
.
Liquidity flows into the Reserve Bucket
through the following sources -
- Yield generated by the
Pending Bucket
funds. - Bribes/Incentives by parties voting on the liquidity in the
Reserve Bucket
. - Trading fees/emissions from adding liquidity to LSD/ETH pools.
- Redemption fees paid from
lcdETH
➡️ETH
redemptions.
Redemptions
Users can redeem their lcdETH into ETH through the protocol.
The backing ratio for lcdETH = Amount in Reserve Bucket / Total lcdETH Supply
Redemption price = lcdETH floor
- redemption fee
The fee to redeem through the protocol is on a varying scale of anywhere between 3-5 basis points depending on the activity.
The redemption rate serves as the market floor price for lcdETH
.
The redeemer of n
lcdETH
would get slightly less than the pro rata share x < n * fairPrice
The difference is kept in the Reserve Bucket. The captured fee increases the fair price of lcdETH
by the same amount.
An exponentially decaying fee schedule is used to efficiently throttle redemptions: the fee is dynamically increased upon every redemption in function of the redeemed amount, decaying over time to a minimum when no redemptions take place.
Tokenomics
LCD
is the governance + voting utility token for pbLSD
.
LCD
is locked for durations of 13, 26, 39 or 52 weeks to receive veLCD
.
- 1
LCD
locked for 52 weeks mints 1veLCD
, 0.75veLCD
for 39 weeks and so on and the balance ofveLCD
decays proportionately similar toveCRV
tokenomics. - Holders of
veLCD
can choose to unlock with a penalty(tbd) which is directly proportional to the numbers of weeks left of the lock duration. veLCD
allows for setting unlimited number of approved delegates to vote on the holder's behalf.- Voting occurs with decay-adjusted balances.
Gauges
are allocated to each pool in theReserve Bucket
, which receive emissions adjusted by governance to any arbitrary logic.
veLCD
is non-transferrable and receives a tax(tbd) from the yield earned in the Reserve Bucket
and is used to vote on Liquidity Allocation
.