# Technical Design

### Are Chicken Bonds tokens fungible?

bLUSD is fully fungible and adheres to the ERC20 technical standard.
The bond NFT tokens are ERC721s, and by definition non-fungible. Each bond NFT is unique and corresponds to one of the generative art pieces created by the artist Luchador.

### What are the underlying sources of yield in LUSD Chicken Bonds?

The system deposits funds to two yield sources: primarily to the Stability Pool, and secondarily to the Curve LUSD/3CRV Pool.
The auto-compounding of yields is handled by two external components:
B.Protocol deposits the LUSD in the Stability pool and auto-compounds the revenues by selling the LQTY rewards and ETH liquidation gains back to LUSD.
The Yearn Curve vault deploys the LUSD to Curve and stakes the LUSD-3CRV LP token in Convex finance, converting and auto-compounding the gains back into more LUSD.

### What is the process for harvesting yield?

Each yield source auto-compounds the yield it earns. B.Protocol automatically swaps ETH and LQTY yield for LUSD at a discount via its custom B.AMM. It is the ETH buyers in the B.AMM who effectively perform the B.Protocol harvest.
Yearn regularly harvests the Curve LUSD vault yield manually. The harvest transaction is performed by a keeper address controlled by Yearn. Yearn admin address multi-sigs are listed here.
In both cases, Chicken Bonds users do not need to perform any harvests themselves nor do they bear the harvest gas costs.

### What are the different system Buckets?

LUSD deposited in the system sits in one of three “buckets”:
Pending Bucket: holds the LUSD from all open bonds (which have not yet been Chickened In or Out). The yield earned by the Pending bucket is credited to the Reserve bucket.
Reserve Bucket: The Reserve bucket backs the whole bLUSD supply. bLUSD is fully redeemable for the LUSD in the Reserve. The Reserve receives a portion of the bonded LUSD from the Pending Bucket upon Chicken Ins and captures the yield from all 3 buckets.
Permanent Bucket: receives the other portion of the bonded LUSD from the Pending Bucket upon Chicken Ins. The LUSD in here is protocol-owned and can never be redeemed (except in case of a wind-down - [see What is the wind-down functionality?]). The yield earned by the Permanent Bucket is credited to the Reserve Bucket.

### How do the buckets relate to the yield sources in which the system deposits LUSD?

These buckets are virtual constructs inside the Chicken Bonds system and are purely used for internal accounting.
The yield sources however are actual external protocols: B.Protocol, and the Yearn Curve LUSD vault.
Funds in the pending bucket will always reside in B.Protocol (which in turn deposits them to the Stability Pool).
Funds in the Reserve and Permanent bucket can be in either B.Protocol or the Yearn Curve vault, and can be permissionlessly shifted between the two yield sources (depending on shifting restrictions - see [What are the conditions for shifting LUSD between the Stability Pool and Curve?]).

### Where does my bonded LUSD go when I create a bond?

The Chicken Bonds system deposits it directly to B.Protocol, which in turn immediately deposits it to the Liquity Stability Pool.
For internal accounting, your bonded LUSD is added to the Pending Bucket.

### Where does my bonded LUSD go when I Chicken In?

Chickening In does not move any LUSD between smart contracts. At the point of Chicken In, the bond’s LUSD remains deposited in B.Protocol.
However, your Chicken In causes changes in the system’s internal “bucket” accounting:
The bond is closed, and all of your bonded LUSD is removed from the Pending Bucket, and split into two portions. One portion is added to the “Reserve” bucket, and the other is added to the “Permanent” bucket.
The split ratio upon Chicken In depends on how much bLUSD your bond has accrued relative to your bLUSD cap - in other words, how “far along” your bond is on its accrual curve.
The closer your bond is to its bLUSD cap, the more of your deposited LUSD will be sent to the Reserve, and the less will be sent to the Permanent bucket.
The split quantities are given by these equations:
$b_r = sp_r$
$b_d = b - sp_r$
Where:
$b$
is the initial bond amount
$b_r$
is the bond amount sent to the Reserve
$b_d$
is the bond amount sent to the Permanent bucket
$s$
is the accrued amount of bLUSD
$p_r$
is the redemption price

### Can I *always* Chicken Out and reclaim my bonded funds?

Yes, except in a potential edge-case scenario in which Chickening Out may be temporarily suspended for a small portion of users.
That is if Liquity has incurred heavy liquidations depleting the LUSD CB’s system Stability Pool deposit (made through B.Protocol). In this case, it can take some time for the system to convert the ETH liquidation gains back into LUSD.
If all bonders were to Chicken Out, there may temporarily not be enough LUSD in B.Protocol to cover all bond withdrawals, and some transactions would revert.
However once the ETH gains have been converted back to LUSD, all users will be able to withdraw.
Note: This assumes that liquidations are at least break-even in terms of Stability Pool depositor returns. Historically, liquidations have always been profitable for depositors.

### Will Liquity AG host a Chicken Bonds front end?

No. However, we have extended the Liquity front end template to include LUSD Chicken Bonds functionality.
Several Liquity front end operators will enable front end access to the LUSD Chicken Bonds system. You will be able to create bonds, Chicken In, Chicken Out, and trade bLUSD against LUSD through these front ends.

### Can the system be upgraded or changed?

After deployment and initialization, no upgrade is possible. The Liquity AG team has no admin or governance control over the core system logic. However, the system is not entirely immutable - one limited change can be made:
Wind-down activation
There is a one-time “graceful wind-down” functionality that can be triggered by Yearn’s Governance address if/when the Yearn Curve LUSD vault becomes obsolete. See the [Potential future system migration] section for more information.