# About ZooFinance

ZooFinance is a native structured asset protocol that provides innovative, capital-efficient liquidity solutions for all types of locked or illiquid crypto assets. By depositing assets or rights into ZooFinance vaults, users instantly gain access to a full suite of tradable financial instruments tailored to different risk appetites and strategies.

There are currently four core vault types:

* LNT-Vault (Liquid Node Token Vault)\
  A solution tailored for INO models. Users deposit node license NFTs into the LNT-Vault and immediately receive VT + YT. VT is the Vesting Token that tokenizes the future guaranteed native token (T) rewards; YT is the Yield Token that captures unpredictable extra earnings (airdrop, fee share, etc.).
* LVT-Vault (Liquid Vesting Token Vault)\
  Designed specifically for traditional vesting schedules and SAFT allocations. Project or early investors can mint VT in advance based on their locked token amounts (whether from team linear releases, treasury schedules, or notarized SAFTs). VT can then be freely traded on the secondary market at a discount for instant liquidity. When the underlying tokens (T) are actually released, VT holders can redeem 1:1, giving buyers discounted exposure and sellers early cash without breaking vesting rules.
* L-Vault (Liquidity Vault)\
  Users deposit assets and receive stablecoins + Margin Tokens (MT). The stablecoin uses a rebase mechanism, so the balance automatically grows with yield. MT provides leveraged exposure to the underlying assets—perfect for amplifying upside in bull markets.
* B-Vault (Bribe Vault)\
  Built for Berachain’s Proof-of-Liquidity ecosystem. Depositors receive Principal Tokens (PT) and Yield Tokens (YT). PT represents ownership with automatic base-currency returns (rebase), while YT captures all real-time yields and additional Bribe rewards.

ZooFinance now covers the full lifecycle of crypto asset liquidity: node operations (LNT), project & investor vesting (LVT), leveraged positions (L-Vault), and bribe/yield optimization (B-Vault)—making illiquid promises instantly tradable for everyone.


# Background

The crypto fundraising landscape has evolved from the early days of ICOs to various forms like IEOs and IDOs. These models provided convenience for early-stage projects and accessible fundraising channels. However, from a regulatory perspective, the lack of structure in these early models led to rampant scams, misinformation, and significant losses for investors.

Today, the industry is increasingly moving towards compliance, making fundraising under a sound framework more crucial than ever. **Initial Node Offering (INO)** has emerged as a novel fundraising model for crypto projects. In this model, node operating rights are presold to community contributors via a complete KYC process, clearly distinguishing between pure investors and contributors.

\
Furthermore, INO uses participant segmentation to match users with different risk appetites and engagement levels, minimizing speculative behavior and deepening long-term holders' understanding of the project. Compared to early models, INOs are inherently more compliant. Many projects have already adopted similar solutions. Our mission is to systematize and standardize INO processes, offering projects a plug-and-play service so that teams can focus on building without the burden of designing a compliant fundraising flow from scratch.

We believe the two key challenges facing the current INO market are **asset liquidity** and **participant engagement**. INOs are not mere token sales — participants purchase functional rights tied to node operation, which entitles them to future token rewards. This creates a liquidity bottleneck: early assets are illiquid, and the technical complexity of operating nodes raises the barrier to entry, ultimately reducing participation rates. However, broad participation and strong community consensus are vital for decentralized projects. To resolve this tension, we have designed the **Liquid Node Token (LNT)** protocol — a solution tailored for INO models that injects liquidity into node-based assets and significantly improves user accessibility.


# Product Design

The Zoo LNT Vault is a decentralized protocol designed to facilitate the issuance and management of node-based assets through Non-Fungible Tokens (NFTs) and derivative financial instruments. By integrating vesting mechanisms, yield generation, and dynamic liquidity pools, the protocol enables users to maximize capital efficiency while ensuring compliance with project-specific vesting schedules.


# Core Concept

Liquid Node Token (LNT) separates assets into **Vesting Token (VT)** and **Yield Token (YT)**.

Users deposit their Node NFT into the **LNT Vault**. The Vault calculates and issues **VT (Vesting Tokens)** based on the vesting schedule and expected future rewards associated with the Node license. Simultaneously, the Vault generates a **YT (Yield Token)** for the user.

### **VT (Vesting Token):**

**VT** tokenizes the future guaranteed native token (T) rewards (**Deterministic Rewards**)associated with a node license, allowing participants to trade or transfer these rights immediately. Upon maturity, each VT can be redeemed 1:1 for the native token (T). When a user deposits their node license NFT into the **LNT Vault**, they receive the corresponding amount of VT tokens. To reclaim their NFT license, users must burn the requisite number of VT tokens.

### **YT (Yield Token):**

Beyond the guaranteed rewards represented by VT, node licenses often come with *uncertain, variable yields* — such as transaction fee revenues or airdrops(**Non-Deterministic Rewards**). These unpredictable earnings are captured via **YT** tokens. Each YT represents a claim to one node license NFT. If a user wishes to reclaim their NFT *before maturity*, they must burn a YT along with the required VT amount. After maturity, burning a single YT suffices to retrieve the NFT without additional VT.YT tokens are fully transferable and tradable on DEXs. Yield calculations and reward distributions are handled automatically by the protocol.

### aVT(Accrued Vesting Token):

aVT (Accrued Vesting Token) represents the total number of tokens a node is eligible to receive in the future upon depositing a License into the Vault. The aVT value is tied to the timing of the deposit: earlier deposits result in more VTs, while later deposits obtain fewer VTs. Over time, the aVT gradually decreases, reaching zero upon expiration.

### VT Put Option:

VT holders have the right to redeem their VT. Redemption follows a 1:1 principle of one VT for one T, but the protocol charges a certain percentage as a service fee. Depending on the project design, the timing of redemption may vary. The general mechanism is as follows: when holders deposit VT into the redemption contract, the Vault, after receiving the revenue token T from the nodes, converts the user's VT into T. If the amount of VT in the redemption contract exceeds the received T, the distribution will be proportional. If the amount of VT in the redemption contract is less than the received T, any remaining T after distribution will be allocated in the next cycle.

### Optimal Performance Assumption

Node licenses typically require the operator to maintain a certain quality of service, such as remaining online or validating transactions, in order to unlock their full rewards. However, evaluating node performance at scale is complex. In LNT's design, we **assume optimal node performance** — meaning all node obligations are met. This assumption is backed by partnerships with professional node operation service providers (e.g., NodeOps) to ensure the highest industry standards.


# How does LNT work

Liquid Node Token (LNT) separates assets into **Vesting Token (VT)** and **Yield Token (YT)**.

Users deposit their Node NFT into the **LNT Vault**. The Vault calculates and issues **VT (Vesting Tokens)** based on the vesting schedule and expected future rewards associated with the Node license. Simultaneously, the Vault generates a **YT (Yield Token)** for the user.

The LNT protocol categorizes node rewards into two buckets:

* **Deterministic Rewards**: Pre-defined, calculable yields that users can expect simply by maintaining basic node operation.
* **Non-Deterministic Rewards**: Unpredictable or externally contingent rewards such as bonus fees or airdrops.

Deterministic future token yields are mapped into **VT** tokens for immediate liquidity, while non-deterministic node earnings are captured via **YT** tokens, which are also liquid. Node license NFTs deposited into the Vault automatically receive deterministic native token rewards (T). These rewards are provided for the systematic redemption of VT. Upon maturity, the remaining Ts are redeemable 1:1 against outstanding VTs. Any surplus (non-deterministic) rewards accrue to YT holders.


# Node Deposit/VT Mint

When a user deposits a Node NFT into the LNT Vault, the protocol mints VT based on the aVT parameters.

$$
VT Amount = aVT \* (1 -VTC)
$$

Where:

aVT: Accrued Vesting Token. Different projects have distinct methods for calculating aVT.

VTC: Commission collected by LNT

### Workflow:

1 . Validation: The vault verifies the NFT's authenticity and aVT parameters.

2 . Calculation: VT Amount is computed using the above formula.

3 . Minting: VT and YT are issued to the user's wallet.

4 . Escrow: The NFT is securely held in the vault contract until redemption.


# Node Redemption/VT Burn

Users may reclaim their NFT by burning VT equivalent to the aVT

### Workflow:

1 . Request submission: The user initiates a redemption request.

2 . Balance check: The vault verifies that the user holds sufficient VT.

3 . Burn & Release: Upon VT burn confirmation, the NFT is transferred back to the user.


# VT Swap

VT liquidity is provided through an Automated Market Maker (AMM) pool with a specially designed price formula, aimed at achieving less gap between the prices of VT and T as the vesting period nears its end.

### Price Formula:

$$
\text{price}(t) = \frac{1}{\text{rateScalar}(t) }\times \ln \left( \frac{p(t)}{(1 - p(t))\*R} \right) + \text{rateAnchor}(t)
$$

* **Normalized time ( t )** ranges from 0 (Vesting End) to 1.
* **P(t)** is a metric that measures the proportion of VT in the pool. Calculated by the formula: **P(t) = Amount of VT / (Amount of VT + Amount of T)**
* **rateScalar:** **rateScalar(t)=ScalarRoot/t**, adjusts dynamically to maintain capital efficiency.
* **rateAnchor:** **rateAnchor(t) = 1 + (InitialAnchor-1) \* t**, adjusts the expected discount between VT and T.
* **R**: Initial Liquidity Rate of VT/T

{% hint style="info" %}
Example:

Alice wants to swap 100 T for VT.

Given $$\text{rateScalar} =100$$, $$\text{rateAnchor} = 1.1$$，R=1 Initial VT proportion $$( p\_{\text{before}} = 0.6 )$$

$$
\text{price}\_{\text{before}} = \frac{1}{100} \times \ln\left(\frac{0.6}{0.4}\right) + 1.1 = 1.104055
$$

After swapping 100 T for VT, assuming $$p\_{\text{after}} = 0.55$$

$$
\text{price}\_{\text{after}} = \frac{1}{100} \times \ln\left(\frac{0.55}{0.45}\right) + 1.1 = 1.102007
$$

$$
dVT = 100 \times \frac{1.104055 + 1.102007}{2} = 110.3031
$$

Alice received 110.3031 VT
{% endhint %}


# VT Value Anchoring

The value of VT is anchored through the following three methods.

### Price formula

In the swap price formula for VT and T, **rateAnchor** plays a certain anchoring role. As time progresses, rateAnchor will gradually approach 1, meaning that the price of VT will slowly converge toward T.

### VT Put Option Mechanism:

Although rateAnchor exists, the market may still experience price instability due to fluctuations in supply and demand dynamics. VT holders have the right to redeem VT for T via the protocol; this mechanism can increase VT price stability and reduce the gap between VT and T.

Node licenses held in the Vault will participate in the protocol's operations and earn Token rewards. Some protocols distribute rewards immediately, while others implement a delayed claim mechanism. Regardless of the approach, once the Vault receives the Token rewards, it will allocate these rewards to a redemption pool for VT. The operational mechanism is as follows:

* Users can deposit the VT into the redemption contract that they wish to redeem.
* Once the Vault receives the rewards, it will convert the users' VT to T automatically.
* If the amount of VT in the pool exceeds the rewards for the current period, participating users will receive settlement on a pro-rata basis. The remaining VT will continue to wait for the next batch of redemption until fully converted.

Note: The conversion ratio here is not 1:1 (including protocol service fee). Users can choose to accept it or wait until maturity for a 1:1 redemption(no service fee).

The workflow is as follows:

<figure><img src="/files/Rbikh1Nz42pBwhIsjL0t" alt=""><figcaption></figcaption></figure>

### Buyback via Swap

In addition to the above method, the Vault will also reserve a portion of tokens to conduct buybacks from the secondary market via swaps. This portion's timing and quantity will be determined based on market prices.

The workflow is as follows:

<figure><img src="/files/Zb3QxuXegxFY0zwdOvYu" alt=""><figcaption></figcaption></figure>

### Rigid redemption at the end

This is the ultimate guarantee of value anchoring: after the Vault operation ends, all circulating VT can be redeemed 1:1 for T.


# VT Implied APY

### Bullet Maturity Redemption

The implied Annual Percentage Yield (APY) for a bullet maturity redemption is derived from the compound growth rate that equates the current price to the future face value over the remaining term. It assumes no intermediate cash flows beyond interest (which is often separately accounted for in yield-to-maturity calculations) and focuses on the principal's appreciation or depreciation.

The implied APY is calculated as:

$$
Implied APY= \text{Price}(t\_0)^{\frac{1}{T\_{\text{yearstoexpiry}}}} - 1
$$

Where:

* $$\text{Price}(t\_0)$$ : The current market price of VT.
* $$T\_{\text{years to expiry}}$$: The time to maturity in years.

For example, if $$( \text{Price}(t\_0) = 4 )$$ and $$( T\_{\text{yearstoexpiry}} = 3 )$$

$$
Implied APY= 4^{1/3} - 1 = 0.59
$$

### Amortizing Redemption

Amortizing redemption is redeemed in installments over a defined period, rather than in a single lump sum at maturity. This approach spreads out the redemption payments, which introduces complexity in yield calculations due to the time value of money.

For illustration, consider a hypothetical amortizing redemption schedule: the total face value (FV) is redeemed over 10 months, with 10% of the principal redeemed each month (i.e., equal installments totaling 100%). The present value (PV) of the investment is known upfront. The goal is to determine the APY, which accounts for compounding effects.

#### Precise Calculation: Iterative Internal Rate of Return (IRR) Method

Calculating the APY for amortizing redemptions requires solving for the monthly internal rate of return (IRR, denoted as ( r )) that equates the present value of the cash inflows (redemption payments) to the initial investment (PV). This involves the annuity present value formula, as the redemptions form an ordinary annuity.

Step 1: Solve (r) from Annuity Present Value Formula

The PV of an ordinary annuity (payments at the end of each period) is given by:

$$
PV = PMT \times \frac{1 - (1 + r)^{-n}}{r}
$$

Where:

* ( PV ): Present value of the investment (e.g., initial purchase price).
* ( PMT ): Periodic payment
* ( n ): Number of periods (e.g., 10 months).
* ( r ): Monthly IRR (to be solved for).

Step 2: Compute APY

Once ( r ) is obtained, annualize it assuming monthly compounding:

$$
ImpliedAPY=(1+r)^{12}−1
$$

This method is accurate but computationally intensive, especially for longer periods or variable payments.

#### Simplified Approximation: Adjusted Geometric Mean Method

Given the complexity of iteration, a practical approximation can be used. This leverages the geometric growth rate over an "average holding period" to estimate the APY without solving the full annuity equation.

The implied APY is calculated as:

$$
Implied APY= \text{Price}(t\_0)^{\frac{2}{T\_{\text{yearstoexpiry}}}} - 1
$$

Where:

* $$\text{Price}(t\_0)$$ : The current market price of VT.
* $$T\_{\text{years to expiry}}$$: The time to maturity in years.

For example, if $$( \text{Price}(t\_0) = 4 )$$ and $$( T\_{\text{yearstoexpiry}} = 3 )$$

$$
Implied APY= 4^{2/3} - 1 = 1.52
$$


# Pre-deposit

Pre-deposit is a warm-up feature of LNT Vault, tailored for partner projects of Node sales. Users can deposit their Node NFTs into the pre-deposit pool after purchase, potentially earning event rewards while also accessing the vesting tokens at the earliest.


# Active Vaults

[Aethir Checker Node Vault](/active-vaults/aethir-checker-node)


# Aethir Checker Node

## About Aethir

Aethir is best described as distributed cloud compute infrastructure. It aggregates enterprise-grade GPU chips into a single global network to increase the supply of on-demand cloud compute resources for the AI, gaming, and virtualized compute sectors.\
Checker nodes ensure the integrity and service quality of Aethir network by checking the GPU specifications and its service process.

## Calculation of aVT（Accrued Vesting Token）

We use the following method to determine the number of VTs a user can obtain by depositing a Checker Node into the Vault.

* **Total Allocation for Checker Nodes**

According to Aethir's documentation

{% embed url="<https://docs.aethir.com/aethir-tokenomics/token-distribution-of-aethir>" %}

The tokens allocated to Checker Nodes account for 15% of the total supply, which is **6,300,000,000** ATH.

* **Number of Checker Nodes**

The total cap of Aethir Checker Nodes is 100,000, with the actual number being **91,759**, as verified on Arbiscan.

{% embed url="<https://arbiscan.io/token/0xc227e25544edd261a9066932c71a25f4504972f1>" %}

Since Aethir Node Sale has been closed, this number will not increase further.

* **Distribution duration**

Start Date: June 12, 2024

End Date: June 11, 2028

Duration: 1,460 days

* **Final Calculation**

To find the theoretical daily ATH per Checker Node, we divide the total allocated tokens by the number of days and then by the number of nodes:

$$
aDVT = \frac{TA}{TD\*N}
$$

Where:

aDVT: Average daily ATH per Checker Node

TA: Total Allocation

TD: Total Days

N: Number of Checker Nodes

Substitute the values:

$$
aDVT= \frac{6,300,000,000}{1,460\*91,759} = 47.027
$$

We discard the decimal and get aDVT = 47.

And we can get the **aVT = aDVT \* Remaining Days**

Finally, deposits a Node will obtain **VT amount = aVT \* (1 -VTC)**

## Parameters

<table><thead><tr><th width="145.79998779296875">Symbol</th><th width="351.199951171875">Description</th><th>Data</th></tr></thead><tbody><tr><td>ED</td><td>End Date</td><td>June 11, 2028</td></tr><tr><td>aDVT</td><td>Average daily ATH per Checker Node</td><td>47</td></tr><tr><td>VTC</td><td>VT's commission when depositing</td><td>5%</td></tr><tr><td>VTF</td><td>VT Swap Fees</td><td>0.3%</td></tr><tr><td>R</td><td>Initial Liquidity Rate of VT/T</td><td>3</td></tr></tbody></table>


# 0G AI Alignment Node

## About 0G

0G (Zero Gravity) is the first decentralized AI L1 chain that orchestrates hardware resources (storage, compute) and software assets (data, models) to handle AI workloads at scale. It bridges the gap between Web2 AI capabilities and Web3 decentralization.

## Calculation of aVT（Accrued Vesting Token）

According to the official 0G documentation, the total number of tokens attributed to one Node License is 854.7 tokens. This means that when a Node License NFT is deposited into the LNT Vault, the maximum aVT value is 854.7.

{% embed url="<https://0g.ai/blog/ai-alignment-node-rewards-distribution-schedule-eligibility>" %}

This total is divided into two parts: Part 1 and Part 2.

### Part 1:

The maximum total reward for Part 1 is 282.05 $0G tokens. To receive the full amount, users must claim it after September 22, 2026. Our LNT Vault will automatically perform the claim after this date, so the aVT contribution from this part is fixed at 282.05.

Considering that users have already claimed a portion of Part 1 rewards before depositing the NFT, users will not immediately receive the corresponding VT upon deposit. Instead, after the LNT Vault queries the remaining unclaimed Part 1 amount from the 0G database, the VT will be airdropped to the user's address, after which the user can manually claim it.

### Part 2:

The maximum total reward for Part 2 is 572.65 $0G tokens. This portion requires the NFT to be delegated, and rewards are claimed daily. The daily reward (DVT) is approximately 0.52 $0G tokens.\
When the user deposits the NFT, they can immediately receive the VT corresponding to Part 2, calculated:

**VT = DVT × remaining days**

This calculation assumes that the user has already fully claimed all previous Part 2 rewards before making a deposit. If the user had not previously delegated the NFT, the missing portion will similarly be queried by the LNT Vault from the 0G database and airdropped to the user's address after detection, after which the user can manually claim it.

## Parameters

<table><thead><tr><th width="145.79998779296875">Symbol</th><th width="351.199951171875">Description</th><th>Data</th></tr></thead><tbody><tr><td>ED</td><td>End Date</td><td>Sep 21, 2028</td></tr><tr><td>DVT</td><td>Daily 0G per Checker Node</td><td>0.522968</td></tr><tr><td>VTC</td><td>VT's commission when depositing</td><td>0%</td></tr><tr><td>VTF</td><td>VT Swap Fees</td><td>0.3%</td></tr><tr><td>R</td><td>Initial Liquidity Rate of VT/T</td><td>3</td></tr></tbody></table>


# Reppo Solver Node

## About Reppo

Reppo's mission is to build a decentralized version of Scale AI on-chain where everyone involved in the generation and monetization of AI training data shares the upside, without intermediaries involved.

## Calculation of aVT（Accrued Vesting Token）

Reppo Solver Nodes are divided into two types: Standard Node and Premium Node. According to Reppo's documentation, the amount of tokens they can earn is:

* 1 Standard Node can earn 2555.6 $REPPO — aVT= 2555.6
* 1 Premium Node can earn 7202.2 $REPPO — aVT = 7207.2

## Parameters

<table><thead><tr><th width="145.79998779296875">Symbol</th><th width="351.199951171875">Description</th><th>Data</th></tr></thead><tbody><tr><td>ED</td><td>End Date</td><td>Nov 22, 2027</td></tr><tr><td>VTC</td><td>VT's commission when depositing</td><td>5%</td></tr><tr><td>VTF</td><td>VT Swap Fees</td><td>0.3%</td></tr><tr><td>R</td><td>Initial Liquidity Rate of VT/T</td><td>3</td></tr></tbody></table>


# Background

Crypto fundraising has come a long way since the wild ICO days of 2017-2018, when projects raised huge sums with few rules, often ending in scams and big losses for investors. Models like IEOs and IDOs introduced additional checks through exchanges, but they still prioritized quick cash over long-term health. By 2022, tougher regulations—like SEC crackdowns on unregistered tokens—pushed everyone toward safer setups. This led to the emergence of SAFTs (simple agreements for future tokens) and vesting schedules, where teams, advisors, and early backers lock up their tokens for periods ranging from 6 months to 4 years. These help keep people focused on building the project instead of quick flips, and they've become standard in most token plans.

Now, vesting is everywhere in crypto. Projects use simple schedules—like steady monthly releases or big "cliffs" after key milestones—to drip out tokens over time. This happens through smart contracts or secure wallets, keeping the supply controlled and rewarding real contributors. Early investors sign SAFTs that turn into tokens later. Tools from companies like TokenSoft make it easy to set up. It's helped a lot: vesting has cut down on post-launch price crashes in many projects.

But vesting isn't perfect yet. The biggest issue is **lack of liquidity**: teams and investors are stuck waiting months or years to cash out, which starves projects of funds and forces backers to miss other opportunities—often leading to shady off-market deals at big discounts. **Compliance headaches** come from different rules in each country, plus the tech hassle of proving SAFTs with oracles, which splits up trading pools. **Low engagement** is another problem: side markets don't let people bet early on future gains, so speculators take over while true fans get left out, and delays in releases frustrate everyone. In the end, a lot of locked tokens just sit unused, wasting potential.LVT（Liquid Vesting Token） Vault fixes these vesting headaches by offering a simple, rule-friendly way to add liquidity to locked tokens.


# Introduction to LVT

LVT（Liquid Vesting Token）is a smart new way to make locked-up tokens in crypto projects tradeable right away, without breaking the rules or the project's long-term plans. Think of it like turning a "promise" for future tokens into something you can buy, sell, or hold on exchanges today. It works by creating special tokens called VT (Vesting Tokens) that represent your share of those future releases—based on real vesting schedules from project teams or legal deals like SAFTs. For example, if a project has 1 million tokens set to unlock over two years, LVT lets them "mint" VT upfront, so the team can sell some at a discount to raise cash early for building. Buyers get in cheap, then cash out for full value when the real tokens drop. It's all handled by secure smart contracts that check everything, keeping things fair and compliant. This builds on ideas from node-based models but fits perfectly for vesting, helping everyone—teams, investors, and fans—get liquidity without the old headaches.


# Product Design

Largely identical to LNT Vault: A protocol for minting and managing node-like asset derivatives (here, vesting rights). Users deposit/verify vesting details → Receive VT → Trade/Hold → Put Option → Mature redemption (burn VT to reclaim rights); integrates with DEXs for VT liquidity.

Key differences:

* Input: Vesting plans or notarized SAFT contracts instead of Node NFTs.
* Output: VT mint based on an economic model and does not involve the operation of physical mining nodes.


# VT Circulation Logic

Core to LVT, differing from LNT's Node NFT deposit-based dynamic VT calculation. LVT mints a VT supply upfront, tied 1:1 to total vesting T, enabling immediate liquidity via discounted sales.

Two exclusive scenarios:

### **Project Token Release Scenario**:

* Project defines vesting plan (e.g., 1M T over 24 months, linear).
* Contract mints VT.
* VT trading: Locked token holders sell VT on secondary markets; buyers lock through cliff for T upside.
* Put Option: As T releases, VT holders exercise VT -->T conversion;
* Redeemption: After the Vault operation ends, all circulating VT can be redeemed 1:1 for T.

### **SAFT Contract Scenario**:

* Early investor uploads notarized SAFT (verified by multi-sig).
* Protocol parses terms (e.g., 1M T with a 6-month cliff, then linear).
* Contract Mints VT.
* VT trading: Investors sell VT on secondary markets; buyers lock through cliff for T upside.
* Put Option: As T releases, VT holders exercise VT -->T conversion;
* Redeemption: After the Vault operation ends, all circulating VT can be redeemed 1:1 for T.


# Background

Berachain is an innovative blockchain platform that enhances the decentralized finance (DeFi) ecosystem through its unique consensus mechanism and economic model. It distinguishes itself from other blockchain networks by utilizing Proof-of-Liquidity (PoL), a novel approach combining Proof-of-Stake (PoS) and liquidity provision. This model encourages participants to contribute liquidity to the network, fostering a more dynamic and liquid DeFi environment.

The native token of Berachain, Bera Governance Token (BGT), which are rewarded to liquidity providers and then used to delegate to validators responsible for securing the network. This system not only incentivizes liquidity but also democratizes network governance by distributing decision-making power based on active contribution rather than mere wealth. However, BGT is a non-transferable governance token that’s forever bound to the address that earns it, there remains significant potential to enhance BGT’s liquidity further and unlock greater value within the Berachain ecosystem.

Given this context, there is a substantial opportunity to develop DeFi projects that leverage Berachain's PoL economic model to bolster BGT's liquidity and usability. By creating innovative DeFi derivatives and liquidity pools specifically designed for BGT, we can enhance the token’s utility and attractiveness to both liquidity providers and traders. This approach not only strengthens the overall liquidity of the Berachain network but also opens up new financial products and strategies for users, thus driving greater engagement and adoption within the ecosystem.

Our proposed DeFi project aims to capitalize on these opportunities by introducing advanced liquidity mechanisms and derivative products tailored for Berachain. These initiatives will create new avenues for yield generation, and support the sustainable growth of the Berachain DeFi ecosystem.


# Overview

Zoo Finance is a native structured asset protocol on Berachain, providing innovative and capital-efficient liquidity solutions. By depositing assets into Zoo’s vaults, users can access a variety of financial instruments tailored to different needs. There are two types of vaults: the Liquidity Vault (L-Vault) and the Bribe Vault (B-Vault), each serving distinct purposes.

When users deposit assets into the **L-Vault**, they receive stablecoins and Margin Tokens (MT). The stablecoin is a rebase mechanism token that accrues interest simply by holding it, offering a stable store of value with added growth potential. The Margin Token, on the other hand, provides leveraged exposure to the underlying assets, enabling greater gains during a bull market.

Depositing assets into the **B-Vault** obtains Principal Tokens (PT) and Yield Tokens (YT). The Principal Token represents ownership of the underlying assets, granting holders automatic returns denominated in the base currency. The Yield Token reflects all real-time yields generated by the underlying assets, providing the opportunity for holders to earn additional Bribe rewards.


# Liquidity Vault (L-Vault)

Liquidity Vault (L-Vault) is a MakerDao-like product where users can deposit assets to receive a stablecoin similar to DAI. The difference is that our innovative Pooled CDP mechanism also releases the liquidity of the over-collateralized portion as a margin token, achieving 100% asset efficiency.

In traditional over-collateralization models, users typically operate individual vaults, each generating its Collateralized Debt Position (CDP). ZOO Finance, however, innovates by aggregating vaults, which harmonizes the assets minted and obviates the necessity for singular liquidations. Within this aggregated structure lies a pooled CDP that encapsulates all circulating margin tokens, with the debt acknowledged as collective. Consequently, every margin token holder assumes a proportional share of this communal debt.

ZOO Finance employs the Asset Adequacy Ratio (AAR) as a metric to gauge the health of the vault. A heightened AAR diminishes the leverage ratio applicable to margin tokens. Conversely, a diminished AAR indicates potential debt repayment risks associated with USB. Thus, maintaining the AAR balance is crucial.

Initially, the L-Vault supports iBGT (a liquid staking derivative of BGT built with Infrared) and Bera, with plans to support more assets in the future.


# Stablecoin--ZUSD

## What is ZUSD? <a href="#what-is-usb" id="what-is-usb"></a>

Like the DAI in the MakerDAO protocol, ZUSD is a decentralized, asset-backed circulating token designed with a price using Oracle feeds, serving as a soft peg to the US dollar.

## How to Obtain ZUSD? <a href="#how-to-obtain-usb" id="how-to-obtain-usb"></a>

ZUSD is minted through the process of depositing collateral into the L-Vault. The protocol supports a variety of assets for minting ZUSD. Conversely, holding ZUSD grants users the ability to redeem their collateral from the Vault, with each ZUSD token representing $1 worth of collateral. This design effectively ties the value of ZUSD to the US dollar, ensuring its stability and reliability as a medium of exchange.

## Where do the earnings come from? <a href="#where-do-the-earnings-come-from" id="where-do-the-earnings-come-from"></a>

ZUSD is a rebasable, interest-bearing stablecoin, generating earnings through financing interest paid by holders of margin tokens.


# Margin Token

## What is a Margin Token？ <a href="#what-is-a-margin-token" id="what-is-a-margin-token"></a>

A margin token is a type of crypto asset to represents an open position. Essentially, when an investor wants to open a leveraged position—meaning they want to borrow funds to increase their exposure to an asset—they can do so by acquiring margin tokens.

For example, holding a margin token might signify that you have a position that is 2x or 3x the value of the collateral in the vault. This allows for potentially higher gains if the collateral's value increases, but it also comes with increased risk, as the losses are also magnified if the collateral's value decreases.

Margin tokens enable these open positions to be managed in a decentralized manner, without the need for an intermediary. It can be traded, bought, and sold like other tokens, and the value is linked to the performance of the collateral and the leverage level it represents. This makes it a powerful tool for sophisticated trading strategies in DeFi.

## How to Obtain Margin Tokens? <a href="#how-to-obtain-margin-tokens" id="how-to-obtain-margin-tokens"></a>

Margin tokens are minted through the deposit of collateral, with all supported assets eligible for minting their respective margin tokens. Each type of collateral is associated with a specific margin token. For instance, ETH correlates with the margin token ETHx, while WBTC correlates with the margin token WBTCx. Holding margin tokens grants the ability to redeem collateral from the Vault. Nevertheless, the method of redemption may differ based on the current state of the protocol.

## Advantages of Margin Tokens <a href="#advantages-of-margin-tokens" id="advantages-of-margin-tokens"></a>

Margin tokens offer several advantages compared with derivative trading.

* **No Margin Deposits Required:** Eliminates the need for margin deposits, significantly lowering the entry barrier for investors.
* **No Liquidation Risk:** Offers peace of mind and stability, as there's no risk of liquidation in the investment strategy.
* **Auto-Balanced Leverage Ratio:** Ensures sustainable positions without the need for constant monitoring, as the leverage ratio is automatically balanced.
* **High Composability in DeFi:** Allows integration with various financial instruments and strategies within the DeFi ecosystem.
* **Trade Like Spot Assets:** Margin tokens can be traded just like spot assets, combining the familiarity of traditional trading with the benefits of leverage.
* **Redeemable for Open Position:** Investors can claim the open position at any time, providing flexibility and control over their investments.
* **Lower Financing Costs:** Typically have lower financing costs compared to derivatives, making them a more cost-effective option for leveraging.
* **Transparency and Security:** Features inherent transparency and security thanks to blockchain technology.
* **Suitable for All Investor Levels:** Cater to both new entrants and experienced traders, offering efficient capital use and risk management.


# Asset Adequacy Ratio

Asset Adequacy Ratio (AAR) signifies the capability of the protocol vault to cover the ZUSD debt. It is used to assess the vault's health. Below is the calculation for AAR, taking the iBGT vault as an example.

## Calculation of AAR <a href="#calculation-of-aar" id="calculation-of-aar"></a>

The AAR for iBGT vault is calculated as follows:

$$
AAR\_{iBGT} = \frac{M\_{iBGT} \times P\_{iBGT}}{M\_{ZUSD}} \times 100%
$$

Where:

* $$M\_{iBGT}$$ is the amount of iBGT in the vault.
* $$P\_{iBGT}$$ is the current price of iBGT, obtained from the oracle.
* $$M\_{ZUSD}$$ is the amount of ZUSD minted from the iBGT vault.

## Thresholds of AAR

* **AART**: Target AAR

  Target AAR represents the ideal state of the vault.
* **AARS**: Safety AAR

  When below the Safety AAR, the pool's ability to repay USB debt is at risk.
* **AARU**: Upper AAR

  When above the Upper AAR, the leverage ratio of Margin tokens becomes less attractive.

The thresholds of AAR for each vault can be set individually.

## AAR Rebalancing

Unlike traditional lending protocols, Wand does not enforce liquidations. Instead, it introduces an Adjustment mode, [Price Trigger Yield](/berachain-eco/liquidity-vault-l-vault/price-trigger-yield) and a [Discount Offer](/berachain-eco/liquidity-vault-l-vault/discount-offer) mechanism to dynamically adjust the AAR. This allows anyone to participate and potentially earn arbitrage profits, ensuring the Vault's health.


# Deposit/Mint

Depositing collateral into L-Vault can mint both ZUSD and margin tokens.

The L-Vault operates in two modes, starting initially with the stability mode, when the Vault's AAR deviates below the set lower limit (Safety AAR, AARS) or exceeds the upper limit (Upper AAR, AARU), the protocol enters an adjustment phase.

Taking the iBGT vault as an example:

## Stability Mode

When assets are first deposited into the Vault for minting, as the quantities of existing ZUSD and xiBGT are zero, we calculate the minting ratio based on the initial price and then maintain this minting ratio unchanged throughout the stability phase. The protocol records the quantity of ZUSD minted in each Vault, and the total supply of ZUSD is the sum of ZUSD minted across all Vaults.

**When the contract is initially created,** ZUSD and xiBGT are generated in a fixed ratio. The specific quantities and ratios are calculated using the following formula:

$$\Delta ZUSD = \Delta iBGT \times P\_{iBGT-i} \times \frac{1}{AART\_{iBGT}}$$

$$\Delta xiBGT = \Delta iBGT \times \left(1 - \frac{1}{AART\_{iBGT}}\right)$$

Where:

* $$\Delta ZUSD$$ : The quantity of minted ZUSD.
* $$\Delta xiBGT$$: The quantity of minted xiBGT.
* $$\Delta iBGT$$: The quantity of iBGT used for minting.
* $$P\_{iBGT}$$: The initial price of iBGT relative to USD (provided by an oracle).
* $$AART\_{iBGT}$$: The protocol's target AAR (Asset Adequacy Ratio) for the iBGT vault.

**After the initiation, when depositing into the iBGT vault**, users can mint ZUSD and xiBGT in a fixed ratio. The formulas for calculating the minted amounts are as follows:

$$\Delta ZUSD = \Delta iBGT \times \frac{M\_{ZUSD}}{M\_{iBGT}}$$

$$\Delta xiBGT = \frac{\Delta ZUSD \times M\_{xiBGT}}{M\_{ZUSD}}$$

{% hint style="info" %}
**Example：**

We assume $$AART\_{iBGT}$$=150% when 2 iBGT are first deposited into the Vault, and the real-time market price of iBGT at that time is $20, then:

$$\Delta ZUSD = \Delta iBGT \times P\_{iBGT} \times \frac{1}{AART\_{iBGT}} = 2 \times 20 \times 0.6667 = 26.67;$$

$$\Delta xiBGT = \Delta iBGT \times \left(1 - \frac{1}{AART\_{iBGT}}\right) = 2 \times 0.3333 = 0.67$$

If another user deposits 1 iBGT into the Vault, assuming the market price of iBGT is $22, and the protocol is still in the stability phase, the user can obtain $$\Delta ZUSD$$ and $$\Delta xiBGT$$ as follows:

$$\Delta ZUSD = \Delta iBGT \times \frac{M\_{ZUSD}}{M\_{iBGT}}=1 \times \frac{26.67}{2}=13.33$$

$$\Delta xiBGT = \frac{\Delta ZUSD \times M\_{xiBGT}}{M\_{ZUSD}} =\frac{13.34 \times 0.6667}{26.67}=0.33$$

In this scenario, with a total of 3 iBGT in the Vault, the Vault has generated a total of 40 ZUSD and 1 xiBGT.
{% endhint %}

From the examples provided above, we can observe that within the protocol's stability phase, the number of ZUSD and xiBGT generated for each iBGT deposited remains constant.

## Adjustment Mode

When the Vault's AAR deviates below the set lower limit (Safety AAR, AARS) or exceeds the upper limit (Upper AAR, AARU), the protocol enters an adjustment phase. During this adjustment phase, the method of asset minting changes.

**When AAR rises above AARU,** users can mint ZUSD individually. The corresponding minting formula is as follows:

$$\Delta ZUSD = \Delta iBGT \times P\_{iBGT}$$

{% hint style="warning" %}
If users want to mint xiBGT, they still need to mint ZUSD+xiBGT according to the protocol's calculated ratio.
{% endhint %}

**When AAR falls below AARS**, users can mint xiBGT alone using the underlying asset. The minting formula in this case is:

$$\Delta xiBGT = \frac{\Delta iBGT \times P\_{iBGT} \times M\_{xiBGT}}{M\_{iBGT} \times P\_{iBGT} - M\_{ZUSD}}$$

**When AAR further drops below 101%**, the formula for minting ETHx alone will change to:

$$\Delta xiBGT = \frac{\Delta iBGT \times P\_{iBGT} \times M\_{xiBGT} \times 100}{M\_{ZUSD}}$$

Where:

* $$\Delta ZUSD$$ : The quantity of ZUSD minted.
* $$\Delta xiBGT$$: The quantity of xiBGT minted.
* $$\Delta iBGT$$: The quantity of iBGT used for minting.
* $$P\_{iBGT}$$: The real-time price of iBGT relative to USD (provided by the oracle).
* $$M\_{iBGT}$$: The quantity of iBGT in the Vault.
* $$M\_{xiBGT}$$: The quantity of xiBGT minted in the iBGT Vault.
* $$M\_{ZUSD}$$: The quantity of ZUSD already minted in the iBGT Vault.

{% hint style="warning" %}
If users want to mint ZUSD, they still need to mint ZUSD+xiBGT according to the protocol's calculated ratio.
{% endhint %}

When Vault's AAR returns to AART, the protocol returns to the Stability Mode, and the asset minting formula reverts to the calculation used during the stability phase.


# Withdraw/Redeem

The protocol's asset redemption mechanism also consists of two modes: the stability phase and the adjustment phase.

## Stability Mode

During the stability phase, users must hold a fixed ratio of ZUSD and xiBGT to redeem the corresponding iBGT from the Vault. For example, if a user wishes to redeem a certain amount of xiBGT, they need to pair it with the corresponding quantity of ZUSD, and vice versa. The calculation formula is as follows:

$$\Delta ZUSD = \frac{\Delta xiBGT \times M\_{ZUSD}}{M\_{xiBGT}}$$

The amount of iBGT redeemed with the paired $$\Delta xiBGT$$ and $$\Delta ZUSD$$ is:

$$\Delta iBGT = \frac{\Delta xiBGT \times M\_{iBGT}}{M\_{xiBGT}}$$

{% hint style="info" %}
**Example:**

Based on the data from the previous example, where there are a total of 7 iBGT in the Vault, the protocol has generated 93.33 ZUSD, and 2.33 xiBGT, when a user wishes to redeem 1 xiBGT, they need to accompany it with ZUSD for redemption. The required amount of ZUSD to accompany the redemption is:

$$\Delta ZUSD = \frac{\Delta xiBGT \times M\_{ZUSD}}{M\_{xiBGT}} = \frac{1 \times 93.33}{2.33} = 40$$

Then, the amount of iBGT to redeem when accompanying 1 xiBGT with 40 ZUSD for redemption (assuming no transaction fees) is:

$$\Delta iBGT = \frac{\Delta xiBGT \times M\_{iBGT}}{M\_{xiBGT}} = \frac{1 \times 7}{2.33} \times 1 = 3$$
{% endhint %}

***

## Adjustment Mode

When the protocol enters the adjustment phase, the user redemption rules change. If AAR rises above AARU, users can redeem xiBGT alone. The redemption quantity calculation formula is as follows:

$$\Delta iBGT = \frac{\Delta xiBGT \times (M\_{iBGT} \times P\_{iBGT} - M\_{ZUSD})}{M\_{xiBGT} \times P\_{iBGT}}$$

If AAR falls below AARS, users can redeem ZUSD alone, and the quantity calculation formula is as follows:

$$\Delta iBGT = \frac{\Delta ZUSD}{P\_{iBGT}}$$

In the extreme scenario where AAR falls below 100%, the USB redemption mechanism is as follows:

$$\Delta iBGT = \frac{\Delta ZUSD \times M\_{iBGT}}{M\_{ZUSD}} \quad \text{if AAR} < 100%$$

Excluding the two situations mentioned above, users still need to pair two assets together for redemption.

{% hint style="warning" %}
The redemption fee is 0.5%
{% endhint %}


# Interest Settlement

ZUSD is a rebase token that accrues interest automatically. Because the interest is embodied through a balance rebase, users who hold ZUSD will not see any transactions sent to their wallet, rather, users could see their ZUSD balance automatically increase without an accompanying transaction taking place.

The Vault creates interest based on a predesign rate, each Vaults have its interest rate.

Check it in [Parameters](/berachain-eco/liquidity-vault-l-vault/parameters)


# Price Trigger Yield

As mentioned earlier, the methods for asset minting and redemption during the adjustment phase have been altered to guide the AAR back to the safe range. Another adjustment method is the "Price Trigger Yield".

There are two ways --'Buy Low' and 'Sell High'

'Buy Low' means that users can stake ZUSD and agree to buy iBGT at a price lower than the market. Users will get a high yield during staking. When the iBGT market price drops to the target, the staked USB will totally or partially be converted into iBGT

'Sell High' means that users can stake iBGT and agree to sell iBGT at a price higher than the market. Users will get a high yield during staking. When the iBGT market price rises to the target, the staked iBGT will totally or partially be converted into ZUSD .


# Discount Offer

**'Discount offer' is a mechanism that is only activated in Adjustment Mode.** In this mechanism, users can purchase margin tokens like xiBGT using ZUSD, and when AAR is lower than AART, the discount for purchases gradually increases over time. It is a Dutch auction-based exchange.

***

**Let's take the xiBGT discount offer as an example:**

* In the Adjustment Mode, when AAR is between 101% and AART, the formula for trading xiBGT with ZUSD is:

$$\Delta xiBGT = \frac{\Delta ZUSD \times M\_{xiBGT}}{M\_{iBGT} \times P\_{iBGT} - M\_{ZUSD}} \times (1 + r)$$

Where ( r ) is the compensation coefficient, which gradually increases over time.

{% hint style="warning" %}
Additionally, to prevent extreme volatility risks, when the AAR falls below 110%, the 'Discount offer' will be paused for half an hour, and it will resume after one hour.
{% endhint %}

* When AAR falls below 101%, the formula for trading xiBGT with ZUSD changes to:

$$\Delta xiBGT = \frac{\Delta ZUSD \times M\_{xiBGT} \times 100}{M\_{ZUSD}}$$

* When AAR rises over AART, it enters Stability Mode, and the discount offer ends.


# Parameters

These are the initial parameters, which can be changed through DAO governance.

<table><thead><tr><th>Item</th><th>Code</th><th>Value</th><th data-hidden>Range</th></tr></thead><tbody><tr><td>Financing Interest</td><td>y_iBGT</td><td>=DSR(DAI Savings Rate)</td><td>0 - 100%</td></tr><tr><td>Target AAR</td><td>AART_iBGT</td><td>165%</td><td>100% - 1000%</td></tr><tr><td>Safety AAR</td><td>AARS_iBGT</td><td>130%</td><td>100% - 1000%</td></tr><tr><td>Upper AAR</td><td>AARU_iBGT</td><td>200%</td><td>100% - 1000%</td></tr><tr><td>Circuit Breaker AAR</td><td>AARC_iBGT</td><td>110%</td><td>100% - 1000%</td></tr><tr><td>Redemption fee</td><td>C</td><td>0.5%</td><td>0-10%</td></tr><tr><td>Compensation Coefficient</td><td>r</td><td>+0.001 per hr</td><td>0-1</td></tr></tbody></table>


# Bribe Vault (B-Vault)

Under Berachain's Proof of Liquidity (PoL) mechanism, liquidity providers (LPs) are incentivized through emissions rewards. Zoo Finance's structured protocol leverages this PoL mechanism to create the Bribe Vault further enhancing the liquidity and capital efficiency within the Berachain ecosystem.

Bribe Vault (B-Vault) is a Pendle-like protocol. Users deposit assets and receive Principal Tokens (PT) and Yield Tokens (YT). Holding PT signifies ownership of the principal, while YT represents all real-time yields from the underlying assets. Unlike Pendle, It is perpetual, allowing users to hold PT or YT indefinitely without dealing with expiration.

The B-Vaults will be divided into epochs based on a fixed time cycle, with each subsequent epoch being generated only after the previous one ends. PT remains unchanged across different epochs. However, each epoch will have a uniquely numbered YT corresponding to that period.

Initially, we will set up B-Vaults for incentive assets on Berachain. Let's use USDC as an incentive asset example to explain the working mechanism of the B-Vault.

<figure><img src="/files/28T8LnFbtyDsmbktagf3" alt="" width="563"><figcaption></figcaption></figure>

When users deposit USDC into the B-Vault, they receive pUSDC at a 1:1 ratio. pUSDC is a rebasable token that provides interest earnings in USDC. At the same time, yUSDC is also generated at a 1:1 ratio and temporarily held in the contract. Users need to pay USDC to purchase a certain amount of yUSDC. The USDC used to purchase yUSDC serves as the interest source for pUSDC and is distributed to pUSDC holders. Additionally, the B-Vault earns rewards from Berachain's PoL mechanism, which are then distributed to yUSDC buyers.

<figure><img src="/files/9YXLbVmDxtaoCJ9kqCKm" alt=""><figcaption></figcaption></figure>


# Price Curve

To implement a perpetual version of Pendle, YT is not minted initially but is tracked by the contract. To obtain YT, users need to purchase in the contract. The price of YT is determined by a pricing curve set by the contract. This curve fully accounts for changes in supply and demand, as well as price decay over time, and incorporates a Dutch auction mechanism to achieve efficient price discovery.

## Price Decay Line

To achieve efficient price discovery, the price of YT will initially open at a higher level and then decrease at a certain rate until someone is willing to trade at that price. The decay formula is given by

$$P(t) = P\_a - b\times(t-t\_0)$$

Here, ‘Pa’ is the initial set value, and ‘b’ is the decay coefficient, causing the price to decrease gradually. Assuming we want the price to decay to 0 over a while ‘T’, then

$$𝑏=𝑎 / 𝑇$$， So we can combine the formula into

$$P(t) = P\_a \times\left(1 - \frac{t-t\_0}{T}\right)$$

Where ：

* $$P\_a$$ is the initial price;
* $$T$$ is the price decay period;
* $$t$$ is the current time;
* $$t\_0$$ is the initial time.

## Price Floor Line

According to this price decay line, if there are no trades for an extended period, the price will eventually drop to zero, which is not our desired outcome. Therefore, we have set a price floor; once the price decays to this floor, it will not decrease further.

The price floor is also a time-dependent process because YT has an intrinsic value at the start of an epoch, which gradually decreases over time until it eventually reaches zero. Thus, we have formulated this price floor accordingly.

$$P\_f (t)=P\_i \times(t\_e-t)/D$$

Where ：

* $$Pi$$ is the initial floor price;
* $$t\_e$$ is expiration time;
* $$t$$ is the current time;
* $$D$$ is the duration of the epoch.

Combining the two price lines above, we can see how the price changes over time in this diagram:

<figure><img src="/files/Kxtv65gvUuItX93IiqL2" alt=""><figcaption></figcaption></figure>

## Price Impact Line

In addition to time affecting the price, changes in the supply and demand of YT will also impact the price. An increase in demand will cause the price to rise, while an increase in supply will cause the price to fall. To address this, we designed a formula to simulate the impact of supply and demand on the price.

We assume that at the beginning of an epoch, the total supply of YT is ‘M’, which increases when someone makes a deposit. Initially, all these YTs are held in the contract. As people buy YT, the amount in the contract decreases, leaving a remaining stock of YT in the contract as ‘S’. We incorporate the changes in ‘M’ and ‘S’ into the above price formula.

The original formula is $$P(t) = P\_a \times\left(1 - \frac{t-t\_0}{T}\right)$$

The changes in ‘M’ and ‘S’ will affect $$P\_a$$, and the impact factor is designed as $$1 + \frac{e\_1 \times (M - S)}{M}$$

At the same time, the changes in ‘M’ and ‘S’ will also affect T (the decay period). We similarly apply a factor as $$1 + \frac{M - S}{e\_2 \times M}$$.

Thus, the final formula becomes:

$$
P{(M,S,t)} = P\_a \times \left( \left( 1 + \frac{e\_1 \times (M - S)}{M} \right) - \frac{t-t\_0}{T \times \left(1 + \frac{M - S}{e\_2 \times M}\right)} \right)
$$

Where:

* $$P\_a$$ is the initial price;
* $$T$$ is the price decay period;
* $$t$$ is the current time;
* $$t\_0$$ is the initial time, at the beginning, it is the start time of Epoch, and after a transaction occurs, the initial time will be updated to the last transaction time;
* $$M$$ is the total supply of YT;
* $$S$$ is the stock of YT in the contract;
* $$e\_1$$ is the price impact coefficient;
* $$e\_2$$ is the price decay period variation coefficient.

## Calculation Example

Now, let's use the above formula to calculate how much it costs（Y） to purchase number X of YT.

Here, since the price is not fixed, after purchasing number X of YT, the inventory amount of YT, S, will decrease, and the price will change accordingly. We can represent this relationship through a graph.

<figure><img src="/files/iYBsYeWRPChNMwncxuCE" alt=""><figcaption></figcaption></figure>

In the graph, we can see that due to the purchasing action, ‘S’ decreases, which in turn causes the price to increase. The shaded area in the graph represents the amount ‘Y’ that needs to be spent. We use calculus to calculate the area of the shaded region.

$$
Y = \int\_{S}^{S-X} P\_{(M,S,t)} , ds
$$

By substituting the price formula, we can obtain:

$$
Y = \int\_{S}^{S-X} \left\[ P\_a + \frac{e\_1 \times P\_a \times (M - S)}{M} - \frac{P\_a \times (t - t\_0)}{T \times \left(1 + \frac{M - St}{e\_2 \times M}\right)} \right] ds
$$

The final calculation formula is:

$$Y = P\_a \times X + e\_1 \times P\_a \times \left( X - \frac{X^2}{2M} \right) - \frac{P\_a \times (t - t\_0) \times X}{T \times \left(1 + \frac{M - St}{e\_2 \times M}\right)}$$


# Principal Token

## Buy PT

Principal Token (PT) is minted at a 1:1 ratio with the underlying assets. Holding PT signifies ownership of the principal and entitles the holder to interest earnings. The interest is distributed as a rebase, increasing the amount of PT the user holds.

<figure><img src="/files/STUcRCwNjI9vYMhroQHS" alt="" width="375"><figcaption></figcaption></figure>

Although the B-Vault is divided into multiple Epochs over time, PT holders do not need to take any action. The protocol will automatically continue at the end of each Epoch.

## Withdraw Underlying Assets

Users can initiate the process at any time when they want to withdraw their underlying assets. Each PT corresponds to an equal amount of the underlying asset. Upon a successful request, users will not receive the underlying assets immediately; instead, they can view the amount being redeemed under 'Pending Requests'. After the current Epoch ends, users can then proceed with the claim.

<figure><img src="/files/QyBkVZXhBsH5kdK5p8de" alt="" width="371"><figcaption></figcaption></figure>

PTs in 'Pending Requests' still accrue interest. A redemption fee is charged, with a default rate of 0.5%, which can be adjusted through governance in the future.


# Yield Token

Yield Token(YT) represents all real-time yields from the underlying assets. Each Epoch will generate YTs with different serial numbers, and these YTs can only claim the rewards corresponding to their specific Epoch.

## Buy YT

YT is not initially minted but is tracked by the contract. Users need to purchase YT in the contract to obtain it. The price of YT is determined by a bonding curve and a virtual AMM set by the contract. It fully accounts for supply and demand changes and incorporates a Dutch auction mechanism to achieve efficient price discovery. This is Zoo Finance's innovative mechanism, which we have named [Dutch-VAMM](/berachain-eco/bribe-vault-b-vault/dutch-vamm)

## Harvest Rewards

Due to the Dutch-VAMM mechanism, YT cannot be completely bought out by users, and some will remain in the contract. The YTs remaining in the contract do not participate in the reward distribution. As a result, the rewards earned by the YTs purchased by users are greater than the yield of the corresponding amount of underlying assets.

For example, there are a total of 100 underlying assets, initially generating 100 PTs and 100 YTs. All YTs are initially held in the contract. Throughout the Epoch, 50 YTs are bought by users, leaving 50 YTs in the contract. Since the 50 YTs remaining in the contract do not participate in the reward distribution, each YT held by users represents the yield of 2 underlying assets.

The rewards for YT holders are divided into two types:

* One type is distributed based on the holder's **YT Balance**, which is suitable for regular rewards, such as BGT emissions.
* The other type is distributed based on the holder's **YT Points**, which is suitable for irregular rewards like one-time airdrops and bribes. YT Points are calculated based on the duration of YT holding. Users must click "Claim" to receive their corresponding YT Points.

<figure><img src="/files/WRj8t7yI6FMXsdbwZkpy" alt=""><figcaption></figcaption></figure>


# Dutch-VAMM

## Bonding Curve of Pricing

To achieve efficient price discovery, the price of YT will initially open at a higher level and then decrease at a certain rate until someone is willing to trade at that price. This is very similar to a Dutch auction. The bonding curve of pricing is given by:

$$P(t) = {P\_a}/{(1 + t )^2}$$

Where ：

* $$P\_a$$ is the initial price of YT;
* $$t$$ is the time elapsed in the current epoch, measured in days.

<figure><img src="/files/0LDBHmmZwwmPSKYAVAi8" alt="" width="559"><figcaption></figcaption></figure>

When a user buys YT, the price will experience a jump due to changes in the supply and demand dynamics. This is different from a standard Dutch auction. So the price decline appears as shown in the following chart.

<figure><img src="/files/zp0kEkDzEuharWylxNYJ" alt="" width="545"><figcaption></figcaption></figure>

## Virtual AMM

We draw inspiration from Uniswap's classic AMM mechanism to facilitate the purchase of YT. In our contract, we have virtually created a trading pair of YT and underlying assets, but only allow one-way purchasing of YT.

In a standard AMM, the relationship is

$$X \times Y =k$$

Where:

* $$X$$ is the number of YT;
* $$Y$$ is the number of underlying assets which is virtually generated by the contract. $$Y=P\_a\times X$$
* $$k$$ is a constant

Therefore, we can use the above formula to calculate how many YT (m) can be purchased with '𝑛' units of the underlying asset.

$$
(X - m) \times (Y + n) = k
$$

Then we can get

$$
m = X - \frac{k}{Y + n}
$$

However, because we have incorporated a Dutch auction-style Bonding Curve, $$k$$ in our VAMM is not constant but instead continuously decays over time.

$$k(t) = {k\_0}/{(1 + t )^2}$$

Where

* $$k\_0$$ is the constant at the beginning;
* $$t$$ is the time elapsed in the current epoch, measured in days.

Therefore, the final formula for calculating ‘𝑚’ is:

$$
m(t) = X - \frac{k\_0}{(Y + n)\times(1+t)^2}
$$


# Parameters

<table><thead><tr><th>Item</th><th>Code</th><th>Value</th><th data-hidden>Range</th></tr></thead><tbody><tr><td>Duration of Epoch</td><td>D</td><td>30days（BetaTest 3days）</td><td>0 - 100%</td></tr><tr><td>Initial Price Coefficient</td><td>APRi</td><td>2</td><td>100% - 1000%</td></tr><tr><td>PT Redemption Fee</td><td>f1</td><td>0.5%</td><td>100% - 1000%</td></tr><tr><td>YT Transaction Fee</td><td>f2</td><td>2%</td><td>100% - 1000%</td></tr></tbody></table>


# Audit Report

Audited by Certik

<https://raw.githubusercontent.com/zoofiio/zoo-bribe-vault/main/audits/Certik/REP-final-20250228T122450Z.pdf>


