# Introduction

#### MetaStreet is the first protocol being built by the team at [Permian Labs](https://www.permianlabs.xyz/), a software development company consisting of TradFi and Web3 builders.

Permian Labs' mission is to develop new DeFi primitives that enable **liquidity** and **yield capture** from hard-to-trade on-chain assets (Objects), which has been termed: **Object-Oriented Finance ("OOF")**

Before we dive into the mechanics of OOF and the infrastructure/products we are building, give this two-part research report on the industry to understand where the market has been, where it is today, and where it's going.

{% hint style="info" %}
Nansen Two-Part Research Report

1. [Object-Oriented Finance](https://research.nansen.ai/articles/object-oriented-finance)
2. [NodeFi and GPU Financing](https://research.nansen.ai/articles/nodefi-gpu)
   {% endhint %}

Let's dive in!


# Object-Oriented Finance

Today, Objects are made up almost entirely of ERC721 or ERC1155 tokens, that sit idle in a user's wallet. With the emergence of new narratives, such as DePIN/AI, these Objects are becoming more and more productive through **yield**, such as emissions or airdrops. Below are some examples of yielding and non-yielding objects in the market.

| Types                     | Yielding                 | Not Yielding      |
| ------------------------- | ------------------------ | ----------------- |
| Traditional NFTs          | PFPs receiving airdrops  | Most PFPs or Art  |
| Gaming                    | Assets earning rewards   | Collectibles      |
| Real World Assets ("RWA") | Rented land              | Watches, diamonds |
| Nodes                     | Regular emissions        | --                |
| GPUs                      | Off-chain compute rental | --                |

The MetaStreet protocol lays the groundwork for the key infrastructure layers that will help accomplish our mission of scaling digital object markets. Currently, the 2 key layers are:

1. Liquidity Layer -> creating debt markets for Objects
2. Yield Capture Layer -> tokenizing yield from Objects

These layers are composable, meaning neither layer requires the other, but instead are built on top of each other. However, when the layers are used in tandem, users can truly extract maximum value out of Object-Oriented Finance.


# Links

### Websites:   [Permian Labs](https://permianlabs.xyz/)   |   [MetaStreet](https://metastreet.xyz/)

### Apps:   [MetaStreet Protocol](https://app.metastreet.xyz/)   |   [Ascend](https://ascend.metastreet.xyz/)&#x20;

### X:   [Permian Labs](https://x.com/permianlabs)   |   [MetaStreet](https://x.com/metastreetxyz)&#x20;

### Analytics:   [Dune Analytics](https://dune.com/metastreet/metastreet)   |   [DefiLlama](https://defillama.com/protocol/metastreet)

***

### NodeFi Website: [NodeFi](https://nodefinance.xyz/)

***

### Nansen Reports: [Object-Oriented Finance](https://research.nansen.ai/articles/object-oriented-finance) | [NodeFi and GPU Financing](https://research.nansen.ai/articles/nodefi-gpu)


# Overview

## Powered by MetaStreet v2: The ATM

The ATM or Automatic Tranche Maker is a permissionless lending protocol that provides the most efficient borrow/lend experience for all stakeholders. With the ATM:

* Lenders can create pools for any Object against any ERC20 and then every lender in that pool works together based on their individual risk and return (rate) profiles
* Borrowers are then able to accept the aggregated loan offers, which are the most optimal terms for their borrowing objectives because each offer is a blended rate based on all lenders

{% embed url="<https://vimeo.com/838103407?share=copy>" %}

The key innovation to the ATM are Liquid Credit Tokens ("LCTs"), a liquid, composable ERC-20 representing each lender's position within a pool. LCTs help scale liquidity even further because they:

1. **Encourage longer duration loans:** secondary liquidity for the lender during the loan term
2. **Support/stabilize floor prices:** more lenders at higher LTV loans reduce sell pressure
3. **Maximize yield:** composable tokens can be used within all aspects of DeFi

{% embed url="<https://vimeo.com/857575516>" %}

## Liquidity Layer (Pools) FAQs

#### What are Pools?

> A basket of funds (made up many different lenders) used to originate NFT loans from a single collection.

#### Is my deposit tied to a single NFT loan?

> No! Your deposit will likely be exposed to many NFT loans within the pool for that NFT Collection. Whenever you have an active deposit, you should think of that as the risk tolerance you have right now for the NFT collection to which you're lending.

#### How do withdrawals work? Why do I have to enter a redemption queue before withdrawing?

> 1. Add to Queue = Your position is always active in the pool, whether the pool is utilized or not. Entering the redemption queue will move your funds into an inactive status, which will prevent it from participating in new loans
> 2. Withdraw = If there is enough cash, you will not have to wait to withdraw. However, if your funds are being utilized, you will have to enter the redemption queue above and wait until outstanding loans mature until you can transfer those funds into your wallet.&#x20;

#### What happens when there's a default?

> * When a borrower defaults on a loan, MetaStreet puts the NFT up for a 24-hour auction. After the auction concludes, the principal and interest owed to the pool is returned starting from the lowest price (least risky Ticks).
> * If the NFT is sold for a value greater than the original borrowed amount, then the Borrower will receive the excess proceeds to prevent situations where a Borrower could have sold an NFT before defaulting to pay back the entirety of a loan.

#### I just deposited and it immediately showed negative earnings, what's going on?

> In order to prevent Lenders from gaming the system by depositing and withdrawing at opportune times (i.e. right before maturity when interest is paid), Lenders "buy in" to the outstanding loans and over time the negative earnings will turn positive.


# How Pools Work \[ELI5]

## Market Participants

**Lenders** choose the following terms when they deposit funds into a pool

1. Collateral = the collection you want to lend to
2. Loan Limit (Price or LTV) = highest price (or LTV) you are comfortable lending at
3. Max Term = longest duration you are comfortable lending to
4. Rate Tier = target interest rate you are comfortable lending at (defaults to market)
5. Deposit Amount = how much capital you are comfortable lending

**Borrowers** will see single offers according to these terms and can then borrow from that pool

## How Pool capital is organized and aggregated

Capital is organized by Price, Term, and Rate Tier first THEN aggregated with all Deposits. This allows ALL lenders to act collaboratively and provides borrowers with the best possible terms.

* **All risk tolerances:** Lenders with low risk tolerances can participate at lower returns in the same loan as high risk tolerance lenders who want higher returns. The low risk lenders get insurance (default protection) from the high risk lenders, while high risk lenders get leverage (boosted returns) from low risk lenders.
* **No capital requirement:** all capital is aggregated so no matter how much you deposit, your capital will be combined with other depositors to originate loans.&#x20;
* **Single offer for Borrowers:** once the capital is organized and aggregated, single loan offers with the best possible terms are then made available to Borrowers. Borrowers simply choose the Term and Amount they want to borrow in a single click.&#x20;

### Market Organization by Price (Vertical Stacking)

Let's assume an Aethir Node is currently worth 80k ATH. In the example below, there are two lenders with different risk profiles:

* Lender 1 is willing to lend 60k @ 18% APR
* Lender 2 is willing to lend 30k @ 12% APR

The borrower takes a loan for 60k @ a blended rate of 15% APR because:

* Lender 1 supplies 30k at 18% APR
* Lender 2 supplies 30k at 12% APR

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

While the borrower receives a single interest rate of 15%, the Lenders will split the interest disproportionality, so that Lender 1 is compensated for taking on higher risk of bad debt.&#x20;

* Lender 1 receives 20% APR on their 30k
* Lender 2 receives 10% APR on their 30k

In the same way that return is split disproportionally, so too is the risk carried by each lender. If the value of the asset decline from 80k to 50k and the borrower defaults:

* Lender 1 bears the loss first, up to 100%, in this case 10k
* Lender 2 bears no loss unless the asset value drops below their Loan Limit of 30k

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

### Market Organization by Rate and Duration (Horizontal Stacking)

While price decisions drive lender collaboration, rate decisions drive lender competition and act as a ranking mechanism when two lenders have identical price decisions. Borrower preferences on duration are first matched to the appropriate lender decision, then backfills any remaining capacity in ascending order of duration.

* Rate Tier: the interest rate offered by the lender to the Borrower
* Duration: the term/length of the loan offered by the lender to the Borrower

Continuing our above example, if two separate lenders are both offering the same Loan Limit of 60k, but have different Rate Tiers or Durations, then the priority of their capital is organized by:

* Rate Tier: the lowest APR has the highest priority
* Duration: the longest term has the highest priority

This ensures that the Borrower always utilizes the capital in the order that offers the best terms.

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

#### Conclusion

This protocol design provides the most efficient borrow/lend experience for all stakeholders

* Capital aggregation creates the deepest liquidity possible
* Lenders no longer need to compete, but can work together and be compensated for where they stand on the risk spectrum
* Borrowers no longer need to worry about receiving the most efficient loan offer given the parameters of their needs


# Earn

{% hint style="success" %}
Earn simplifies the lending experience and enables users to earn yield in a matter of a few clicks. The Earn interface utilizes the core MetaStreet v2 infrastructure (Pool View) but streamlines the user experience for users of all levels.
{% endhint %}

### Choose a Pool by clicking on the MINT button

1. Header = NFT Collection / Deposit Currency and the Network
2. APR up to = maximum return on the various deposit options (click Mint to see all)
3. Deposits = TVL in the pool

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

### 2.  Choose a Tick (specific risk and return) to deposit into

1. APR = Current APR of the Tick
2. Loan Limit = Maximum principal borrowers can borrow
   1. Dynamic = based on LTV
   2. Fixed = based on a fixed price
3. LTV = current loan limit as a % of floor price

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

### 3.  Enter amount and Mint (or Add Funds to onramp via Coinbase)

1. Mint = follow through the transaction confirmations (approve currency, deposit)
2. Add Funds = use a debit card or transfer from Coinbase to your wallet

### 4.  View your Position on Portfolio

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


# Manage

Detailed information on how to manage your lending positions.

### Details

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

1. Pool Name = NFT Collection and Deposit Currency
2. Position Details
   1. Deposit Amount = total amount deposited
   2. Current Value = current value of position based on deposit price
   3. Current APR = current return on position
   4. Projected Annual Earnings = annualized return based on current APR and position value
   5. Loan Limit = maximum risk limit for position
3. Redemption Details
   1. Status
      1. Open = position is currently open with no redemptions
      2. Pending = all or part of the position is currently being redeemed
      3. Available = all or part of redemption available to withdraw
   2. Available = amount ready to withdraw
   3. Pending = amount currently in redemption queue

### Actions

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

1. Mint More = Deposit more into the same position
2. Request Redemption
   1. LCT = amount of shares you want to redeem
   2. Estimated Redemption Value = estimated value in deposit currency of LCT shares
   3. Foregone interest = amount of interest being foregone due to the fact that pools are constantly rolling into new loans
   4. Estimated Wait Time = estimated time until withdrawable is available, which can be shorter or longer depending on future value


# Borrow

The Borrow interface allows a holder to use their Object (NFT) as collateral in order to take out a loan.

1. View the available offers from your wallet
2. Select the collateral you would like to use (up to 32 in a bundle)
3. Select the currency you want to receive (assuming there are multiple options)
4. Select the amount you want to borrow and how long of a duration&#x20;

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

## Borrow FAQs

#### What happens if the value of my NFT declines below my borrowed amount during a loan?

> MetaStreet loans are UN-liquidatable! You will NEVER get liquidated while a loan is outstanding - you can borrow with peace of mind, just remember to repay or extend your loan before the due date!

#### Can I repay part of my loan before maturity?

> Yes! Go to 'Current Borrows' to select the loan you want to repay. Once you select the correct loan, pick the duration you want your new loan to mature. In order to repay part of the loan, you will first need to check the **'Reduce principal to lower costs'** box, then choose a custom amount that you want to leave outstanding. The difference in the original loan and the new amount is what you are prepaying.&#x20;

#### If I repay my loan before maturity, do I have to pay all the interest?

> No! You only pay interest pro rata from when your loan was outstanding. This means if you get a 30 day loan, but its only outstanding for 15 days, you will pay for 15 days of interest, not 30.

#### What if my loan is coming due, but I don't have enough money to repay the loan?

> As long as there is capital in the pool, you can extend your loan at the most favorable terms offered by lenders. Let's say you borrowed 10 ETH on a NFT worth 20 ETH, and then lost the 10 ETH you borrowed. As long as there is capital in the pool at a price of 10 ETH per NFT when your loan comes due, simply extend your loan.&#x20;

#### I let my loan default by accident, but the NFT was worth more than the loan! What happens now?

> When a loan defaults, the NFT is immediately put up for sale via 24-hour auction. If the NFT sells for MORE than the principal plus interest of the loan, the excess proceeds will be RETURNED TO THE BORROWER.

#### Can I borrow against more than 1 NFT in a single transaction?

> Yes! You can batch up to 32 NFTs of the same collection and borrow against them in a single loan.&#x20;


# Manual Loan Repayment

Direct-to-contract instructions for how to Repay a Loan in the event that the MetaStreet App cannot be accessed.

1. Find the original <mark style="color:red;">`Loan Origination`</mark> transaction

{% hint style="warning" %}
Example Link: <https://etherscan.io/tx/0xa26a78f3905d9b458eb261cef8e0029c0906dafa3c1710d62b06b4915b60a25c>
{% endhint %}

2. Copy the long <mark style="color:red;">`loanReceipt`</mark> chunk under data from the <mark style="color:red;">`LoanOriginated`</mark> event

{% hint style="warning" %}
Example Link: <https://etherscan.io/tx/0xa26a78f3905d9b458eb261cef8e0029c0906dafa3c1710d62b06b4915b60a25c#eventlog>
{% endhint %}

For the above transaction, the <mark style="color:red;">`loanReceipt`</mark> is the following:

{% code overflow="wrap" %}

```html
0100000000000000000000000000000000000000000000000022B1C8C1227A000000000000000000000000000000000000000000000000000022FAC900712AFF00D543A0BE0684F0556786586B83F4C9FD16A4DC350000000064EA6F7F0000000000278D0057A204AA1042F6E66DD7730813F4024114D74F3700000000000000000000000000000000000000000000000000000000000001E100000000000000000030927F74C9DE000040000000000000000022B1C8C1227A0000000000000000000022FAC90071-2AFF00
```

{% endcode %}

3. Click on the contract address that the above transaction <mark style="color:red;">`Interacted With (To)`</mark>&#x20;

{% hint style="warning" %}
Contract Address:

<https://etherscan.io/address/0xe13f46cf28835047cc4ac5553de05d98a479625f>
{% endhint %}

4. Click <mark style="color:red;">`Contract`</mark> -> <mark style="color:red;">`Write as Proxy`</mark>
5. Click <mark style="color:red;">`Connect to Web3`</mark> to connect your wallet that the Loan was originated with
6. Scroll down to <mark style="color:red;">`10. Repay`</mark>
7. Type <mark style="color:red;">`0x`</mark> followed by pasting the loan receipt above (long string from Step 2)
8. Click <mark style="color:red;">`Write`</mark>, this will generate a transaction to repay the loan
9. <mark style="color:red;">`Confirm`</mark> the transaction in your wallet


# Auctions

When a borrower defaults on a loan, the underlying asset is auctioned in order to recoup capital for the lenders in the pool. Below are some important details:

### **Bid**

1. Enter amount and click "Bid"
2. The amount you bid will be held in escrow (leave your wallet)
3. If another bid comes in higher, your bid will be returned (go back to your wallet)

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

### **Claim**

1. **If you win the auction, you will be able to claim the NFT on the auction homepage or your portfolio page**
2. **Click "Claim NFT" and the NFT will be sent to your wallet**

<figure><img src="/files/8PFPLhk82iUUvlJo6l3P" alt=""><figcaption></figcaption></figure>

## **Auction FAQs**

#### **What is the format of the Auction?**

> * Fully on-chain English Auction
> * Each bid triggers a deposit of the bid amount and reimburses the previously high bid
> * If a bid is made in the last 10 minutes, the auction is extended for another 10 minutes
> * A new bid must be 2% greater than the prior bid

**What happens to the Proceeds of the auction?**&#x20;

> * Capital is returned to the pool lenders in order to make them whole
> * Any capital in excess of the original loan amount + interest/fees is returned to the borrower
> * The lenders with the lowest Loan Limit (risk) receive capital first, then waterfalls up

**How do I get my NFT if I win an auction?**

> A winner must go back to the auction page and claim the NFT in order to take possession of it


# Overview

## Powered by Yield Pass

Yield Pass, which also includes the Airdrop Pass product, allows a holder to deposit any object and split it into two distinct assets:

1. **Yield (or Airdrop) Pass** -> representing future yield only \[ERC-20]
2. **Node (or Discount) Pass** -> representing object ownership without future yield \[ERC-721]

<table><thead><tr><th width="176">Assets</th><th width="261">Yield Pass ("YP" or "AP")</th><th>Node Pass ("NP" or "DP")</th></tr></thead><tbody><tr><td>Token</td><td>ERC20</td><td>ERC721</td></tr><tr><td>Tradable</td><td>Yes, in fractional amounts</td><td>Yes, in whole amounts</td></tr><tr><td>User Claims</td><td>Yield via emissions or airdrop</td><td>Ownership of underlying</td></tr><tr><td>Usable as Debt</td><td>Not on MetaStreet</td><td>Yes</td></tr></tbody></table>

By creating these new assets, current market participants (holders, speculators, farmers, retail) will all be able to participate in accruing yield, managing risks, and unlocking more liquidity in an otherwise illiquid object and NFT market.

* **Unlocking Liquidity:** Sell future yields (YP/AP) without selling your NFT.
* **Yield Maximization:** Increase yield exposure by holding or buying more YP tokens.
* **Flexible Ownership:** Access NFT ecosystems with minimal capital.
* **Risk Management:** Split ownership to hedge against market volatility.
* **Market Participation:** Earn trading fees by providing liquidity in AP and DP markets.

{% hint style="warning" %}
***Disclaimer:** The object market is a highly risky and speculative market, thus assets like YP and DP contain even more risk and speculation. Please make sure you understand the product and risks associated with it before purchasing.*
{% endhint %}


# How it Works \[ELI5]

{% hint style="success" %}

* Only NFT Holders of the specified collection can mint $AP & NP.
* Minting is the first and most critical step as it creates the supply.
  {% endhint %}

## Minting $YP (or $AP) and NP (or DP)

1. For each NFT, you will receive:
   * 1 $AP Token:  ERC-20 that can be traded in fractional units and can be sold immediately upon minting.
   * 1 NP Token:  ERC-721 that represents a holder’s claim to the underlying 721 and can only be redeemed upon the expiration of the vault.
2. Then click on Mint to receive the $AP and NP tokens in your wallet.

## Buying YP

{% hint style="warning" %}

* For non-Holders (or Holders), you are able to purchase $AP/NP in the open market
* Add exposure (or leveraged exposure) to collections you don't own (or do own)
  {% endhint %}

1. On the homepage, choose an NFT collection, then select “Swap” on the Airdrop Pass card.
2. You will swap ETH for the $AP token, which should resemble any other swap modal you see. **Please be careful of slippage caused by low liquidity in the trading LP.** Once you confirm the details, hit “Buy” and you will receive the $AP tokens shortly.
3. To sell, select the “Sell” tab and follow the same steps. *Note that slippage can occur, resulting in impermanent loss.*

## Claiming Yield

1. On the homepage, choose an NFT collection, then select “Claim” on the Airdrop Pass card.
2. Choose how many $AP tokens you want to redeem. You will see the available airdrops, which are ready to be claimed. Once the $AP tokens are redeemed, you will then be able to Claim your airdrop tokens.

## Buying Discount Pass

If you’re a user that just wants to buy a discounted NFT without the airdrop yields, then buying the DP token will be a better fit for you. NP is an ERC-721 that cannot be fractionalized and represents the holder’s right to claim that NFT when the NP vault expires.

1. On the homepage, choose an NFT collection, then select “Buy” on the Discount Pass card.
2. The current floor NFT will automatically load, showing you the Floor Price of the NFT, the discount you are receiving (Airdrop Pass Value), and the amount you will need to pay.

{% hint style="info" %}
NP = Existing Value of the NFT (Floor Price) - $AP
{% endhint %}

## Redeeming Object

{% hint style="success" %}
To redeem your NP for the underlying NFT (when the vault expires), click on the Redeem tab and select the NFTs you want to redeem.
{% endhint %}

{% hint style="danger" %}
Discount Pass is only redeemable after the Maturity Date.
{% endhint %}

1. On the homepage, choose an NFT collection, then select “Claim” on the Airdrop Pass card.
2. Select the NFTs you want to redeem and click Redeem. Each Discount Pass will be burned and the NFT will be sent to your wallet.

If you have a strong understanding of LPing and want to earn trading fees while holding $AP tokens, consider providing liquidity.&#x20;

1. On the homepage, choose an NFT collection, then select “Supply” on the Provide Liquidity card.
2. Enter the # of $AP tokens you would like to LP and the corresponding amount in the trading pair (usually ETH) will automatically populate in a balanced deposit.
3. If you do not currently own any $AP tokens, you can navigate directly to the Swap page to purchase by clicking on the **Buy $AP** link OR if you own the NFT, you can Mint AP/NP tokens.In order to claim airdrops for $AP tokens that are in the LP, you will need to Remove Liquidity.
4. To remove liquidity, enter the # of LP Tokens you want to burn in order to receive the token pairs back to your wallet.&#x20;

{% hint style="warning" %}
***Disclaimer:** The object market is a highly risky and speculative market, thus assets like $AP and NP contain even more risk and speculation. Please make sure you understand the product and risks associated with it before purchasing.*
{% endhint %}


# NodeFi (Yield Pass)

{% hint style="success" %}
NodeFi utilizes:

1. Yield Capture layer via Yield Pass
2. &#x20;Liquidity layer via the ATM
3. Additional external liquidity layer via AMMs for LPing
   {% endhint %}

NodeFi is a new primitive combining the two infrastructure layers that MetaStreet has built. Nodes can be Proof of Work (like Bitcoin), Proof of Stake (like ETH), or Proof of Compute (like DePIN).

1. In the Yield Capture layer, a Node is deposited and then split via Yield Pass into a Yield Token (YP) and a Principal Token (NP or Node Pass). This allows the owner to manage their yield risk (or speculate) by retaining claims on their token emissions or selling their future claims.
2. In the Liquidity layer, the owner uses their NP to borrow the underlying emission token and reinvest it at a higher rate (Positive Carry Trade). For example, if a user can borrow at a 5% APR, but reinvest those tokens for the duration at 10% APR, they are generating 5% additional yield they previously did not have access to.
3. The final piece is the LP layer, which exists via AMMs. NodeFi's standard process is to provide liquidity to this layer for two main purposes: making Node emission rates a liquid market for retail, risk management, speculation or generating additional yield from swap fees.

## FAQs

#### Are all Yield Pass products the same?

> No, you can expect some slight differences, although the NodeFi features and benefits are largely the same. For example, Aethir nodes require a node to be delegated to an integrated operator to ensure it is producing emissions, while Xai nodes require staking in a top-tier pool to ensure the same level of quality for all depositors.

#### How are emissions and airdrops distributed to Yield Pass holders?

> All emissions and airdrops from the respective nodes deposited on Yield Pass are combined into a single aggregated pool. Each participant receives emissions proportional to their share of the total pool, ensuring consistent and fair rewards. This structure allows for smoother distribution and maximizes efficiency. After the pool’s expiration date (typically 90 days from pool launch) and subsequent vesting period, you will be able to redeem your $YP token for the respective protocol's emission token.

#### Can I track the status of my Nodes deposited on Yield Pass and emissions accrued and claimable with the Yield Pass token? What about my Node Crystals?&#x20;

> Yes. NodeFi is designed to be simple and intuitive. On the specific protocol's Yield Pass page, you will be able to track your deposits, borrows, and emissions after connecting your wallet. Starting in February 2025, you will also be able to directly track your Node Crystals (MetaStreet Rewards) on MetaStreet’s native app as well.&#x20;

#### **Is there a limit to the number of nodes I can stake?**

> Yes, you can stake up to 128 nodes per transaction. This limit is set to protect against errors that could occur during blockchain transactions, such as node loss or operational issues. If you hold more than 128 nodes, you can easily split your deposits across multiple transactions to stake them all effectively.

#### What are the risks of depositing into Yield Pass?

> The biggest risk is defaulting on your node when choosing the Deposit & Earn option. This option initiates a loan using your NP as collateral and the NP represents ownership of your underlying node, so if after pool expiration, you do not withdraw your node, it will be auctioned off in order for lenders to be made whole. Always review the pool expiration, loan terms, and set reminders to manage these risks effectively.


# Aethir on Yield Pass

### Checker Node Owners have two options to use Yield Pass. Below is how they work, the benefits, and the potential risks of each:

1. **DEPOSIT & EARN:** Earn swap fees and <mark style="color:red;">**MetaStreet Node Crystals**</mark> when you deposit and become a Liquidity Provider for $ATH and Yield Pass ($YP) Tokens
2. **DEPOSIT & SELL:** Instantly unlock liquidity when you deposit and sell your $YP for $ATH, however, you will NOT be eligible for MetaStreet Node Crystals

{% hint style="info" %}
**IMPORTANT NOTES:**

* Node must be delegated (cannot be self-run) to one of our partners: Easeflow, Infstones, NodesOps or Zentry in order to be eligible for deposit
* To earn Node Crystals, you must (1) create an Ascend account and (2) not sell your LP tokens. Any Crystals earned prior to selling your LP will remain
  {% endhint %}

***

### 1.  Deposit & Earn

This option allows you to earn swap fees and <mark style="color:red;">**MetaStreet Node Crystals**</mark> (our native rewards) by becoming a Liquidity Provider (LP).

#### How it Works:

> *Reminder:  These three steps occur in one single, bundled transaction*
>
> 1. **Deposit & Mint:**  Deposit your node to mint two tokens:
>    1. Yield Pass ($YP):  represents future $ATH emissions and airdrops, claimable when the pool expires
>    2. Node Pass (NP):  represents node ownership, claimable when the pool expires
> 2. **Borrow:**  Use your NP as collateral to borrow $ATH with the following terms:
>    1. Amount and Rate:  3,000 $ATH at 0% APR (introductory rate)
>    2. Term:  120 days or 1 year, depending on when you deposited
> 3. **Provide Liquidity:**  Supply $YP and $ATH to the Liquidity Pool to:
>    1. Earn swap fees by creating a new liquid swap market for $ATH

{% hint style="success" %}
**Benefits:**

* Access liquidity without selling your node or waiting for emissions and/or vesting
* Earn yield through swap fees and earn MetaStreet's Node Crystals
* Borrow at 0% APR for a limited time
  {% endhint %}

{% hint style="danger" %}
**Risks:**

* **Impermanent Loss:** Market fluctuations in price between the time of deposit and withdrawal may change the value of your underlying LP position, specifically the quantity of each token
* **Loan Default:**  Failing to repay your loan before maturity date will result in the loss of your node. Set calendar reminders to avoid default. [Read about Withdrawals below](#final-steps-withdraw-rollover-claim)
  {% endhint %}

### 2.  Deposit & Sell

Instantly unlock liquidity when you deposit and sell your $YP for $ATH, however, you will NOT be eligible for MetaStreet Node Crystals.

**How it Works:**

> 1. **Deposit & Mint:**  Deposit your node to mint two tokens:
>    1. Yield Pass ($YP):  represents future $ATH emissions and airdrops, claimable when the pool expires
>    2. Node Pass (NP):  represents node ownership, claimable when the pool expires
> 2. **Sell:**  Swap $YP for $ATH instantly from the Liquidity Pool (Uniswap)

{% hint style="success" %}
**Benefits:**

* Immediate liquidity without waiting for pool expiration and/or the 180 day vesting period
  {% endhint %}

{% hint style="danger" %}
**Risks:**

* You are accepting the current swap rate for $ATH, which is market dependent
* You forfeit the ability to earn swap fees and MetaStreet Node Crystals
  {% endhint %}

***

## Final Steps:  Withdraw, Rollover, Claim

### Depositors have two options at the pool expiration:

1. **ROLLOVER:**  Roll your node over into the next Yield pass pool
2. **WITHDRAW:**  Exit the pool by removing your node from Yield Pass

{% hint style="info" %}
**IMPORTANT NOTES:**

* You MUST complete either option prior to loan maturity to avoid default
* Rollovers do not impact the claims process since each new pool will have a new Yield Pass pool
  {% endhint %}

### **1.  ROLLOVER**

This option allows a depositor to fully exit their position from Yield Pass. Here are the steps:

> *Unlike for Deposit, these transactions will require individual steps*
>
> 1. **Remove LP Tokens:**  Remove liquidity to receive $YP and $ATH
> 2. **Refinance Node:**  Refinance your NP loan
> 3. **Rollover Node:**  Rollover your node into the new pool
> 4. **Claim $ATH Emissions:**  Burn your $YP to receive $ATH

{% hint style="success" %}
Node will not have idle time where it isn't earning emissions
{% endhint %}

### **2.  WITHDRAW**

This option allows a depositor to fully exit their position from Yield Pass. Here are the steps:

> *Unlike for Deposit, these transactions will require individual steps*
>
> 1. **Remove LP Tokens:**  Remove liquidity to receive $YP and $ATH
> 2. **Repay Borrowed $ATH:**  Repay your loan to reclaim your NP Token
> 3. **Redeem Node:**  Use your NP to reclaim your node
> 4. **Claim $ATH Emissions:**  Burn your $YP to receive $ATH

{% hint style="warning" %}
The user must re-delegate their node after they exit with their operator
{% endhint %}

### CLAIM

If you minted $YP or purchased $YP via swaps, you are not affected by either Withdraw or Rollover options. Here are the steps:

> 1. **Vesting:**  Claims will open 180 days after pool expiration
> 2. **Claim:**  Claim your $vATH emissions and receive $ATH immediately

{% hint style="info" %}
**IMPORTANT NOTES:**

1. Claims will open 180 days after pool's expiration due to the required Aethir vesting period
2. Once claims open, claims will be processed with no additional vesting
3. Claims are a one-time process to avoid confusion and errors (you will not be able to redeem for less than the full amount of YP you own)
   {% endhint %}

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


# Xai on Yield Pass

### Tiny Key Node Owners have two options to use Yield Pass. Below is how they work, the benefits, and the potential risks of each:

1. **DEPOSIT & EARN:** Earn swap fees and <mark style="color:red;">**MetaStreet Node Crystals**</mark> when you deposit and become a Liquidity Provider for $XAI and Yield Pass ($YP) Tokens
2. **DEPOSIT & SELL:** Instantly unlock liquidity when you deposit and sell your $YP for $XAI, however, you will NOT be eligible for MetaStreet Node Crystals

{% hint style="info" %}
**IMPORTANT NOTES:**

* Tiny Keys must be staked in a Diamond or Platinum pool in order to be eligible for deposit to ensure consistent yield disbursement for participants. Inconsistent or lower emissions would impact the overall yield quality for all depositors.
* To earn Node Crystals, you must (1) create an Ascend account and (2) not sell your LP tokens. Any Crystals earned prior to selling your LP will remain
  {% endhint %}

***

### 1.  Deposit & Earn

This option allows you to earn swap fees and <mark style="color:red;">**MetaStreet Node Crystals**</mark> (our native rewards) by becoming a Liquidity Provider (LP).

#### How it Works:

> *Reminder:  These three steps occur in one single, bundled transaction*
>
> 1. **Deposit & Mint:**  Deposit your node to mint two tokens:
>    1. Yield Pass ($YP):  represents future $esXAI emissions and airdrops, claimable when the pool expires
>    2. Node Pass (NP):  represents node ownership, claimable when the pool expires
> 2. **Borrow:**  Use your NP as collateral to borrow $XAI with the following terms:
>    1. Amount and Rate:  10 $XAI at 0% APR (introductory rate)
>    2. Term:  140 days from when you deposited (50d buffer after pool expiry)
> 3. **Provide Liquidity:**  Supply $YP and $XAI to the Liquidity Pool to:
>    1. Earn swap fees by creating a new liquid swap market for $XAI

{% hint style="success" %}
**Benefits:**

* Access $XAI liquidity without selling your node, waiting for emissions or vesting
* Earn yield through swap fees and earn MetaStreet's Node Crystals
* Borrow at 0% APR for a limited time
  {% endhint %}

{% hint style="danger" %}
**Risks:**

* **Impermanent Loss:** Market fluctuations in price between the time of deposit and withdrawal may change the value of your underlying LP position, specifically the quantity of each token
* **Loan Default:**  Failing to repay your loan before maturity date will result in the loss of your node. Set calendar reminders to avoid default. [Read about Withdrawals below](#final-steps-withdraw-rollover-claim)
  {% endhint %}

### 2.  Deposit & Sell

Instantly unlock liquidity when you deposit and sell your $YP for $XAI, however, you will NOT be eligible for MetaStreet Node Crystals.

**How it Works:**

> 1. **Deposit & Mint:**  Deposit your node to mint two tokens:
>    1. Yield Pass ($YP):  represents future $esXAI emissions and airdrops, claimable when the pool expires
>    2. Node Pass (NP):  represents node ownership, claimable when the pool expires
> 2. **Sell:**  Swap $YP for $XAI instantly from the Liquidity Pool (Uniswap)

{% hint style="success" %}
**Benefits:**

* Immediate liquidity without waiting for pool expiration or the 180 day vesting period
  {% endhint %}

{% hint style="danger" %}
**Risks:**

* You are accepting the current swap rate for $XAI, which is market dependent
* You forfeit the ability to earn swap fees and MetaStreet Node Crystals
  {% endhint %}

***

## Final Steps:  Withdraw, Rollover, Claim

### Depositors have two options at the pool expiration:

1. **ROLLOVER:**  Roll your node over into the next Yield pass pool
2. **WITHDRAW:**  Exit the pool by removing your node from Yield Pass

{% hint style="info" %}
**IMPORTANT NOTES:**

* You can begin the NP withdrawal or rollover process at pool expiration
* You MUST complete either option prior to loan maturity to avoid default
* Rollovers do not impact the claims process since each new pool will have a new Yield Pass pool
  {% endhint %}

### **1.  ROLLOVER**

This option allows a depositor to fully exit their position from Yield Pass. Here are the steps:

> *Unlike for Deposit, these transactions will require individual steps*
>
> 1. **Remove LP Tokens:**  Remove liquidity to receive $YP and $XAI
> 2. **Refinance Node:**  Refinance your NP loan
> 3. **Rollover Node:**  Rollover your node into the new pool
> 4. **Claim $esXAI Emissions:**  Burn your $YP to receive $esXAI

{% hint style="success" %}
Node will not have idle time where it isn't earning emissions as it will remain staked
{% endhint %}

### **2.  WITHDRAW**

This option allows a depositor to fully exit their position from Yield Pass. Here are the steps:

> *Unlike for Deposit, these transactions will require individual steps*
>
> 1. **Remove LP Tokens:**  Remove liquidity to receive $YP and $XAI
> 2. **Repay Borrowed $XAI:**  Repay your loan to reclaim your NP Token
> 3. **Redeem Node:**  Use your NP to reclaim your node
> 4. **Claim $esXAI Emissions:**  Burn your $YP to receive $esXAI

{% hint style="success" %}
The user does not have to restake their node after they exit, as it will remain staked in the same pool as prior to and during NodeFi
{% endhint %}

### CLAIM

If you minted $YP or purchased $YP via swaps, you are not affected by either Withdraw or Rollover options. Here are the steps:

> 1. **Claim:**  Claim your $esXAI emissions and receive $esXAI immediately
> 2. Manage:  Redeem for $XAI or Stake $esXAI in a staking pool

{% hint style="info" %}
**IMPORTANT NOTES:**

1. Claims for $esXAI emissions will open immediately after pool's expiration
2. User is then responsible for redeeming for $XAI or staking on Xai's app
3. Claims are a one-time process to avoid confusion and errors (you will not be able to redeem for less than the full amount of $YP you own)
   {% endhint %}

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


# GPU Financing

Coming soon!


# Audits

{% file src="/files/PEY5dnKKbvANC4mQQAQ0" %}


# Dashboard

Yield Pass Dashboard

{% embed url="<https://yield-pass-dashboard.metastreet.xyz/>" %}


# Airdrop Pass

A high level overview of Airdrop Pass

{% hint style="info" %}
Quick Navigation

* [Beta Launch Blog](https://metastreet.xyz/blog/AirdropPassBeta)
* [How it Works](/yield-capture-layer/airdrop-pass/minting-ap-and-dp)
  {% endhint %}

## Overview

As we continue to build the foundation of Object-Oriented Finance, Airdrop Pass (AP) and its counterpart, Discount Pass (DP), will help transform existing NFTs and other illiquid digital objects into flexible, capital efficient assets by splitting their value into two distinct assets:

1. **Airdrop Pass** = representing future yield only \[ERC-20]
2. **Discount Pass** = representing object ownership without future yield \[ERC-721]

By creating these new assets, current market participants (holders, speculators, farmers) will all be able to increase yields, manage risks, and unlock more liquidity in an otherwise illiquid object and NFT market.

***Disclaimer:** The object market is a highly risky and speculative market, thus assets like AP and DP contain even more risk and speculation. Please make sure you understand the product and risks associated with it before purchasing.*

## **NFT Owners**

For owners of supported NFTs, Airdrop Pass (AP) and Discount Pass (DP) offer maximum flexibility to tailor market exposure and capture yield potential. Holders can unlock immediate liquidity from future airdrops without selling their NFTs or vice versa. They can manage risk by splitting ownership, selling & LPing that future stream of yields. This LPing allows them to boost yields by providing liquidity for the trading of AP and DP tokens. In summary, the benefits include:

* **Unlocking Liquidity:** Mint AP to sell future yields without selling your NFT.
* **Yield Maximization:** Increase yield exposure by holding or buying more AP tokens.
* **Flexible Ownership:** Access NFT ecosystems with minimal capital.
* **Risk Management:** Split ownership to hedge against market volatility.
* **Market Participation:** Earn trading fees by providing liquidity in AP and DP markets.

## **Traders**

If you do not have any NFTs in the supported collections, but you want to add exposure (or leveraged exposure) to any of these collections and their future airdrops, you may want to consider buying or swapping AP and DP tokens.

* **Why Buy AP Tokens?** AP tokens allow you to leverage exposure to potential yield. Instead of buying one NFT for its airdrop, you can buy multiple AP tokens, multiplying yield without for less than the cost of owning one NFT. A single AP token lets you claim the airdrop rewards equivalent to one NFT.
* **Why Buy DP Tokens?** Users might buy DP tokens to own an NFT from an existing collection without needing airdrop yields or to bet on the NFT's future value increasing (eg including all the airdrops AFTER the maturity!). For instance, you could buy a discounted NFT for 9 ETH even though the NFT is worth 10 ETH (so the Airdrop Pass is worth 1 ETH), and if the floor doesnt move price (is still 10 ETH at the maturity), you’ve earned 1 ETH of value.

## **Conclusion**

Overall, Airdrop Pass offers a powerful tool for users looking to leverage their exposure across the four current NFT collections. Depending on beta performance, MetaStreet may expand the offering with more collections and features.

{% hint style="warning" %}
***Disclaimer:** The object market is a highly risky and speculative market, thus assets like AP and DP contain even more risk and speculation. Please make sure you understand the product and risks associated with it before purchasing.*
{% endhint %}


# Minting AP & DP

{% hint style="success" %}

* Only NFT Holders of the specified collection can mint AP & DP.
* Minting is the first and most critical step as it creates the supply.
  {% endhint %}

1. Click on the “Mint” button in the Top Right corner of the App

   <figure><img src="/files/7WJ27ok1KG01zOb7xvdi" alt=""><figcaption></figcaption></figure>
2. Select the NFT to deposit, but make sure you 100% want to proceed because **you will not be able to redeem your NFT until the expiration of the vault.**

   <figure><img src="/files/pzefTQn1ljg3UAONFBGO" alt=""><figcaption></figcaption></figure>
3. For each NFT, you will receive:
   * 1 AP Token:  ERC-20 that can be traded in fractional units and can be sold immediately upon minting.
   * 1 DP Token:  ERC-721 that represents a holder’s claim to the underlying 721 and can only be redeemed upon the expiration of the vault.
4. Then click on Mint to receive the AP and DP tokens in your wallet.

{% hint style="warning" %}
***Disclaimer:** The object market is a highly risky and speculative market, thus assets like AP and DP contain even more risk and speculation. Please make sure you understand the product and risks associated with it before purchasing.*
{% endhint %}


# Trading AP

{% hint style="warning" %}

* For non-Holders (or Holders), you are able to purchase AP/DP in the open market
* Add exposure (or leveraged exposure) to collections you don't own (or do own)
  {% endhint %}

1. On the homepage, choose an NFT collection, then select “Swap” on the Airdrop Pass card.

   <figure><img src="/files/21wOdWzIrCnanJWRY0gR" alt=""><figcaption></figcaption></figure>
2. You will swap ETH for the AP token, which should resemble any other swap modal you see. **Please be careful of slippage caused by low liquidity in the trading LP.** Once you confirm the details, hit “Buy” and you will receive the AP tokens shortly.

   <figure><img src="/files/QLY2zt7lSToiednhnuYp" alt="" width="375"><figcaption></figcaption></figure>
3. To sell, select the “Sell” tab and follow the same steps. *Note that slippage can occur, resulting in impermanent loss.*

{% hint style="warning" %}
***Disclaimer:** The object market is a highly risky and speculative market, thus assets like AP and DP contain even more risk and speculation. Please make sure you understand the product and risks associated with it before purchasing.*
{% endhint %}


# AP: Claiming Airdrops

## Airdrop Pass: Claiming Airdrops

{% hint style="danger" %}
Airdrop Pass is redeemable anytime before the Maturity Date, however, claiming early may prevent your ability to claim future airdrops.
{% endhint %}

1. On the homepage, choose an NFT collection, then select “Claim” on the Airdrop Pass card.

   <figure><img src="/files/nLAADAKIe8k04dmyH7Pt" alt=""><figcaption></figcaption></figure>
2. Choose how many AP tokens you want to redeem. You will see the available airdrops, which are ready to be claimed. Once the AP tokens are redeemed, you will then be able to Claim your airdrop tokens.

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


# Buying DP

If you’re a user that just wants to buy a discounted NFT without the airdrop yields, then buying the DP token will be a better fit for you. DP is an ERC-721 that cannot be fractionalized and represents the holder’s right to claim that NFT when the DP vault expires.

1. On the homepage, choose an NFT collection, then select “Buy” on the Discount Pass card.

   <figure><img src="/files/blWOmzO1BH4TIc819ZwV" alt=""><figcaption></figcaption></figure>
2. The current floor NFT will automatically load, showing you the Floor Price of the NFT, the discount you are receiving (Airdrop Pass Value), and the amount you will need to pay.

{% hint style="info" %}
DP = Existing Value of the NFT (Floor Price) - AP
{% endhint %}

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

{% hint style="success" %}
To redeem your DP for the underlying NFT (when the vault expires), click on the Redeem tab and select the NFTs you want to redeem.
{% endhint %}

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

{% hint style="warning" %}
***Disclaimer:** The object market is a highly risky and speculative market, thus assets like AP and DP contain even more risk and speculation. Please make sure you understand the product and risks associated with it before purchasing.*
{% endhint %}


# DP: Redeeming NFTs

{% hint style="danger" %}
Discount Pass is only redeemable after the Maturity Date.
{% endhint %}

1. On the homepage, choose an NFT collection, then select “Claim” on the Airdrop Pass card.

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

2. Select the NFTs you want to redeem and click Redeem. Each Discount Pass will be burned and the NFT will be sent to your wallet.

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


# Providing Liquidity

If you have a strong understanding of LPing and want to earn trading fees while holding AP tokens, consider providing liquidity.&#x20;

1. On the homepage, choose an NFT collection, then select “Supply” on the Provide Liquidity card.

   <figure><img src="/files/r66Ml261a6a0Uu3RN5A1" alt=""><figcaption></figcaption></figure>
2. Enter the # of AP tokens you would like to LP and the corresponding amount in the trading pair (usually ETH) will automatically populate in a balanced deposit.

   <figure><img src="/files/RRrF4WeSlv4TlZy3tMNu" alt=""><figcaption></figcaption></figure>
3. If you do not currently own any AP tokens, you can navigate directly to the Swap page to purchase by clicking on the **Buy AP** link OR if you own the NFT, you can Mint AP/DP tokens.

{% hint style="danger" %}
In order to claim airdrops for AP tokens that are in the LP, you will need to Remove Liquidity.
{% endhint %}

4. To remove liquidity, enter the # of LP Tokens you want to burn in order to receive the token pairs back to your wallet.&#x20;

{% hint style="warning" %}
***Disclaimer:** The object market is a highly risky and speculative market, thus assets like AP and DP contain even more risk and speculation. Please make sure you understand the product and risks associated with it before purchasing.*
{% endhint %}


# Protocol Design

The MetaStreet v2 Pool is a permissionless lending pool for NFT collateral with automatic tranching. Pool is responsible for organizing lending capital with different risk and rate profiles from depositors into fixed-duration loans for borrowers.

Pools can be instantiated permissionlessly for any ERC721 token. Capital deposited into a Pool carries user-defined risk parameters, including a maximum loan limit, a maximum loan duration, and an interest rate tier. The loan limit imposes a maximum limit that the deposit funds can be used in when the Pool originates a loan. Similarly, the maximum loan duration imposes the maximum duration the deposit funds can be used for. The interest rate tier determines the cost of borrowing the deposit funds.

Borrowers can construct a loan using deposits of ascending loan limits. In turn, the ascending deposits function as the tranches of the loan. The higher loan limit tranches receive greater interest, in exchange for higher default risk. The lower loan limit tranches receive less interest, in exchange for the insurance of the higher tranches. In the event of a default, the highest tranches absorb any loss in descending order, while the lowest tranches are made whole in ascending order, up to the available liquidation proceeds.

Loans originated are of fixed duration with prorated repayments. Borrowers can also choose to cash-in or cash-out refinance their loans, also with proration, allowing them to continually extend loans beyond the Pool's maximum fixed duration, provided suitable deposits are available. Overdue loans are subject to liquidation, but borrowers are afforded a grace period to repay the loan until an external actor triggers the liquidation. Borrowers also receive any liquidation surplus beyond the defaulted loan repayment amount.


# Deposit Flow

Depositors can deposit currency tokens in exchange for shares under a particular tick, which identifies the maximum loan limit, maximum duration, and interest rate tier associated with the funds. Ticks and their use in loans are described in more detail in the [Liquidity Ticks](/technical-overview/protocol-design/liquidity-ticks) section.

Every tick maintains independent accounting of deposits and shares. Ticks are valued in two ways: realized value and accrued value. The realized value is the sum of deposits plus the interest and losses of all completed loans. The accrued value is the realized value plus the current real-time interest accrued from all active loans that are borrowing from the tick.

$$\text{Realized Value} = \text{Cash Value + Interest and Losses from Completed Loans}$$&#x20;

$$\text{Accrued Value} = \text{Realized Value} + \text{Accrued Interest from Active Loans}$$

The number of shares minted for a deposit is determined by the tick's **deposit share price**, which is calculated from the tick's accrued value and outstanding shares.

$$\text{Deposit Share Price} = \frac{\text{Accrued Value}}{\text{Outstanding Shares}}$$

Depositors can later redeem their shares in a particular tick for currency tokens. The shares will be exchanged for currency tokens at the tick's **redemption share price**, which is calculated from the tick's realized value and outstanding shares.

$$\text{Redemption Share Price} = \frac{\text{Realized Value}}{\text{Outstanding Shares}}$$

In general, the redemption share price is less than or equal to the deposit share price. In the case that there are no active loans using the tick, the two share prices are equal. Since Pool loans are fixed duration and repaid in a single balloon repayment, the asymmetric deposit and redemption share prices serve two purposes: to prevent depositors from capturing interest prematurely before loan repayment, and to allow for fair appreciation within the tick, irrespective of a deposit's timing.

Redemptions are processed immediately from available cash in the tick, after which, the remaining, unredeemed shares are scheduled for future redemption when cash is available again to the tick from a loan repayment or liquidation. Scheduled redemptions may be executed at various redemption share prices, as repayment and liquidation activity affect the tick's realized value. Redemptions are serviced in the order they are scheduled.

Redeemed cash can be withdrawn as soon as it becomes available. Instead of withdrawing to currency tokens, depositors may also choose to redeposit their redeemed shares into another tick in the Pool without any currency token transfers, in an operation called rebalancing.


# Borrow Flow

Borrowers can originate fixed-duration loans using funds from Pool deposits, collateralized with an NFT supported by the Pool. The maximum principal of a loan and interest rate are dictated by the deposit ticks used, which is described in more detail in the [Liquidity Ticks](/technical-overview/protocol-design/liquidity-ticks) section. Borrowers can later repay their loan at any point with a prorated repayment, and recover their NFT collateral.

Pools can be configured with various [Collateral Filters](/technical-overview/protocol-design/collateral-filters), to further specify a subset of token IDs allowed by the Pool. Additionally, Pools support borrowing against bundles of NFTs using [Collateral Wrappers](/technical-overview/protocol-design/collateral-wrappers), which extends the collateral supported by the Pool beyond a single NFT collection to various wrapped forms. This feature is also used to provide indirect support for ERC1155 collateral.

Borrowers can choose to refinance their loan at any time, also with proration, subject to the availability of deposit funds. Refinancing will result in a cash-in or cash-out transfer, depending on the difference between new loan principal amount and previous loan's repayment amount. In cases where depositors have redeemed the underlying funds used in a loan, borrowers may only be able to perform a cash-in refinance for a lower principal, or may not be able to refinance at all.

When a loan matures without repayment and is in default, any external actor can liquidate the loan, which transfers the associated collateral to the Pool's configured collateral liquidator for liquidation. Currently, this liquidation process is an English Auction. Proceeds from the liquidation are used to repay the deposit ticks that funded the loan. If the liquidation results in a surplus beyond the defaulted loan repayment amount, the surplus is remitted to the borrower.


# Liquidity Ticks

Ticks are unsigned, 128-bit identifiers that encode conditions on liquidity, including a maximum loan limit, duration index, and rate index. The [`Tick`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/Tick.sol) utility library is responsible for encoding and decoding ticks. Deposits are made into specific ticks by depositors, and liquidity is sourced from a selection of ticks to assemble the funds of a loan for borrowers. The ticks used in a loan become the tranches of the loan.

{% code fullWidth="false" %}

```
                            Tick Bit Layout
+-------------------------------------------------------------------+
|                                 128                               |
+--------------------------------------|----------|----------|------+
|                  120                 |    3     |     3    |   2  |
|                 Limit                | Dur. Idx | Rate Idx | Type |
+-------------------------------------------------------------------+
```

{% endcode %}

Limit is a 120-bit value that imposes the maximum limit for funds sourced from the tick can be used in. Duration index is the maximum duration that funds sourced from the tick can be used for, and rate index is the interest rate tier associated with the funds. Duration index and rate index are indices into predetermined, discrete tiers that are assigned at Pool initialization. Finally, the type field is currently set to zero for absolute loan limit ticks.

Ticks can be combined in an ascending fashion to source incrementally larger principals for loans. Each tick used to source funds for a loan must be strictly larger than the previous, following the order implied from the bit encoding: limit, followed by duration, followed by rate.

Example of a possible configuration of durations, rates, and ticks:

<table data-header-hidden><thead><tr><th width="150"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Durations</strong></td><td>30 days</td><td>14 days</td><td>7 days</td></tr><tr><td><strong>Rates</strong></td><td>10%</td><td>30%</td><td>50%</td></tr></tbody></table>

<table><thead><tr><th width="75">#</th><th>Tick (Loan Limit, Duration, Rate)</th><th>Liquidity Available</th></tr></thead><tbody><tr><td>6</td><td><code>(50 ETH,   7 days, 50%)</code></td><td>20 ETH</td></tr><tr><td>5</td><td><code>(40 ETH,   7 days, 50%)</code></td><td>30 ETH</td></tr><tr><td>4</td><td><code>(30 ETH,  14 days, 30%)</code></td><td>30 ETH</td></tr><tr><td>3</td><td><code>(15 ETH,  30 days, 30%)</code></td><td>50 ETH</td></tr><tr><td>2</td><td><code>(5  ETH,  30 days, 10%)</code></td><td>100 ETH</td></tr><tr><td>1</td><td><code>(2.5 ETH, 30 days, 10%)</code></td><td>150 ETH</td></tr></tbody></table>

To assemble a 30 day loan, ticks 1, 2, 3 can be used to create a 15 ETH loan that is organized as follows: 2.5 ETH from tick 1, 2.5 ETH from tick 2, 10 ETH from tick 3. The interest for the loan would be determined by applying the `10%`, `10%`, and `30%` interest rate tiers to the amounts used from each tick and the loan duration.

<table><thead><tr><th width="71">#</th><th>Tick (Loan Limit, Duration, Rate)</th><th>Sourced</th></tr></thead><tbody><tr><td>3</td><td><code>(15 ETH,  30 days, 30%)</code></td><td>10 ETH</td></tr><tr><td>2</td><td><code>(5  ETH,  30 days, 10%)</code></td><td>2.5 ETH</td></tr><tr><td>1</td><td><code>(2.5 ETH, 30 days, 10%)</code></td><td>2.5 ETH</td></tr></tbody></table>

$$\text{Principal} = \text{2.5 ETH} + \text{2.5 ETH} + \text{10 ETH} = \text{15 ETH}$$

$$\text{Interest} = 10% \text{ APR} \times \text{2.5 ETH} + 10% \text{ APR} \times \text{2.5 ETH} + 30% \text{ APR} \times \text{10 ETH} = \text{0.287671 ETH}$$

$$\text{Repayment} = \text{Principal} + \text{Interest} = \text{15.287671 ETH}$$

Note that ticks 4, 5, 6 are ineligible for a 30 day loan, because the loan duration exceeds their maximum duration. A 14 day loan can be assembled from ticks 1-4, and a 7 day loan from ticks 1-6. Longer duration ticks can be used for shorter duration loans.

The loan limit imposes an upper bound on the amount of funds that can be used from a tick, as well as the maximum position of the tick in the capital stack for a loan, but the actual amount pulled from each tick depends on the cumulative amount built up from previous ticks.

Lowers ticks have seniority over higher ones in a loan, meaning that if a loan is liquidated and the liquidation proceeds fall short of the loan repayment, lower ticks will be repaid before higher ones. However, higher ticks will tend to receive greater interest than lower ones, based on the interest distribution described in the [Interest Rate Models](/technical-overview/protocol-design/interest-rate-models) section.

Being an oracleless protocol, the Pool does not make assumptions or impose restrictions on the maximum or safe loan limits based on a collateral's current market value. Instead, depositors choose loan limits corresponding to the LTV and risk they are comfortable lending at. This means that it is possible for a depositor to create a very risky, high-LTV position to try to capture more interest, or to create a very conservative, low-LTV position that is underutilized.

The job of selecting ticks for a loan is a process known as tick routing, and is accomplished by the [MetaStreet SDK](https://github.com/metastreet-labs/metastreet-sdk-v2). The tick routing algorithm builds a route through the ticks up to a specified loan amount, choosing the best incremental tick by cost of capital, and prunes the route to a maximum number of ticks by greatest capital contribution. The SDK API is described in more detail in the [SDK](/technical-overview/sdk) section.


# Tokenization

Deposit ticks can be optionally represented by an ERC20 token, offering users a basic ERC20 interface to their deposit position. This is enabled for a tick by an external actor calling `tokenize(uint128 tick)` on the [`Pool`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/Pool.sol), which deploys an ERC20 token bound to the specified deposit tick. Once an ERC20 token exists for a tick, all users of that tick are automatically minted and burned tokens for deposit and redeem operations on that tick.

The basic ERC20 interface (`balanceOf()`, `allowance()`, `approve()`, `transfer()`, `transferFrom()`, etc.) operates in terms of deposit tick **shares**, rather than currency value, allowing for a stable, non-rebasing unit of account. The ERC20 token is also extended with several convenience APIs, including `depositSharePrice()` and `redemptionSharePrice()` price getters, for converting the shares amounts to a currency value using one of the two tick valuation approaches discussed in the [Deposit Flow](/technical-overview/protocol-design/deposit-flow) section.

Tokenized ERC20 deposits can be used with other protocols in DeFi, such as automated market makers, lending protocols, etc.

See the [`ERC20DepositTokenImplementation`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/tokenization/ERC20DepositTokenImplementation.sol) contract for more information and the exposed API.


# Collateral Filters

Pools exist in a variety of configurations, primarily differing in the type of collateral filter used. The collateral filter is responsible for validating NFT collateral when originating a loan.

Currently, four basic collateral filters exist: the [`CollectionCollateralFilter`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/filters/CollectionCollateralFilter.sol) for accepting an entire collection (all token IDs), the [`RangedCollectionCollateralFilter`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/filters/RangedCollectionCollateralFilter.sol) for accepting a range of token IDs within a collection, and the [`SetCollectionCollateralFilter`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/filters/SetCollectionCollateralFilter.sol) for accepting a small set of token IDs within a collection, and the [`MerkleCollectionCollateralFilter`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/filters/MerkleCollectionCollateralFilter.sol) for accepting a larger set of token IDs within a collection via a merkle proof. When a new Pool is created, it can configure one of these four variants of collateral filter to specify the NFT collateral allowed for lending.

Collateral may also be first wrapped by a supported [Collateral Wrapper](/technical-overview/protocol-design/collateral-wrappers) (e.g. for bundles). The collateral filter is applied to the enumerated elements of the wrapped collateral when originating a loan.

Collateral filters are implemented with the internal [`CollateralFilter`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/filters/CollateralFilter.sol) abstract contract API.


# Collateral Wrappers

Collateral wrappers allow a Pool to recognize collateral that exists in a wrapped form for a loan. This facility is useful for implementing a number of extensions to the Pool, such as bundles and airdrop receivers.

Collateral wrappers are implemented as an ERC721 token that the Pool takes custody of instead of the native collateral token for a loan. Collateral wrappers implement the [`ICollateralWrapper`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/interfaces/ICollateralWrapper.sol) interface, which allows a Pool to enumerate the underlying collateral for validation with its collateral filter, and allows a collateral liquidator to unwrap the underlying collateral for liquidation.

The two official collateral wrappers are the [`BundleCollateralWrapper`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/BundleCollateralWrapper.sol), which can be used to create reusable collateral bundles, and the [`ERC1155CollateralWrapper`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/ERC1155CollateralWrapper.sol), which gives Pools indirect support for ERC1155 collateral with loans.

Pools may recognize up to five collateral wrapper contracts, which are bound to the Pool implementation contract at deployment time.


# Interest Rate Models

The role of the interest rate model is to calculate the total interest for a loan and to distribute the interest to the liquidity ticks used. Ticks and their use in loans are described in more detail in the [Liquidity Ticks](/technical-overview/protocol-design/liquidity-ticks) section.

The primary interest rate model is the [`WeightedInterestRateModel`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/rates/WeightedInterestRateModel.sol). It determines the total interest of a loan by summing the weighted interest due to each tick at their assigned rate. For example, if a 25 ETH, 30 day loan borrowed funds from the three ticks: `5 ETH at 10%`, `10 ETH at 10%`, and `10 ETH at 30%`, the total interest would be:

$$\begin{aligned}\text{Total Interest} &= \quad \text{5 ETH} \times 10% \times 30/365 \ &\quad + \text{10 ETH} \times 10% \times {30/365} \ &\quad + \text{10 ETH} \times 30% \times 30/365 = \text{0.369863 ETH}\end{aligned}$$

The interest rate model is also responsible for distributing the interest to the ticks, which does not necessarily correspond to the individual interest amount contributed by each tick. For example, the [`WeightedInterestRateModel`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/rates/WeightedInterestRateModel.sol) will redistribute more of the total interest towards the higher ticks, in compensation for their greater default risk.

The [`WeightedInterestRateModel`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/rates/WeightedInterestRateModel.sol) assigns a weighted interest to each tick based on its capital contributed and the cumulative repayment. In other words, ticks that contribute more capital, closer to the total repayment, receive a greater weight. The weighting is determined by:

$$\text{Tick Contribution}\[i] = \text{Amount Used}\[i] \times (1 + \text{Tick Rate}\[i] \times \text{Loan Duration})$$

$$\text{Tick Weight}\[i] = ( \sum\_{j=0}^{i} \text{Tick Contribution}\[j] ) \times \text{Tick Contribution}\[i]$$

Finally, the interest is assigned to each tick using its weight and the normalization of all weights:

$$\text{Tick Interest}\[i] = \frac{\text{Total Interest} \times \text{Tick Weight}\[i]}{\sum\_{j=0}^{N} \text{Tick Weight}\[j]}$$

For most balanced liquidity tick usage, this will result in higher ticks receiving greater effective APRs and lower ticks receiving lower effective APRs compared to the loan's overall APR. Ticks that contribute little or dust liquidity, anywhere in the capital stack, will receive little interest, due to their weight being diminished by their absolute contribution.

Interest rate models are implemented with the internal [`InterestRateModel`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/rates/InterestRateModel.sol) abstract contract API.

Below are examples showing the distribution of interest and effective APRs by the [`WeightedInterestRateModel`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/rates/WeightedInterestRateModel.sol) under various tick usage profiles:

#### Profile: Balanced, 10 Ticks

```
Principal        40.00000000 ETH
Repayment        40.32876712 ETH
Interest         0.32876712 ETH
Overall Rate     10.0000%

Liquidity Used   [4.00 at 10.00%, 4.00 at 10.00%, 4.00 at 10.00%, 4.00 at 10.00%,
                  4.00 at 10.00%, 4.00 at 10.00%, 4.00 at 10.00%, 4.00 at 10.00%,
                  4.00 at 10.00%, 4.00 at 10.00%]
Tick Interests   [0.0060, 0.0120, 0.0179, 0.0239, 0.0299, 0.0359, 0.0418, 0.0478,
                  0.0538, 0.0598]
Effective Rates  [1.8182%, 3.6364%, 5.4545%, 7.2727%, 9.0909%, 10.9091%, 12.7273%,
                  14.5455%, 16.3636%, 18.1818%]
```

<figure><img src="/files/7k4PNg1MTAmYX5lp9AoK" alt="" width="480"><figcaption></figcaption></figure>

#### Profile: Balanced, 32 Ticks

```
Principal        40.00000000 ETH
Repayment        40.32876712 ETH
Interest         0.32876712 ETH
Overall Rate     10.0000%

Liquidity Used   [1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%,
                  1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%,
                  1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%,
                  1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%,
                  1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%,
                  1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%,
                  1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%,
                  1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%, 1.25 at 10.00%]
Tick Interests   [0.0006, 0.0012, 0.0019, 0.0025, 0.0031, 0.0037, 0.0044, 0.0050,
                  0.0056, 0.0062, 0.0068, 0.0075, 0.0081, 0.0087, 0.0093, 0.0100,
                  0.0106, 0.0112, 0.0118, 0.0125, 0.0131, 0.0137, 0.0143, 0.0149,
                  0.0156, 0.0162, 0.0168, 0.0174, 0.0181, 0.0187, 0.0193, 0.0199]
Effective Rates  [0.6061%, 1.2121%, 1.8182%, 2.4242%, 3.0303%, 3.6364%, 4.2424%,
                  4.8485%, 5.4545%, 6.0606%, 6.6667%, 7.2727%, 7.8788%, 8.4848%,
                  9.0909%, 9.6970%, 10.3030%, 10.9091%, 11.5152%, 12.1212%,
                  12.7273%, 13.3333%, 13.9394%, 14.5455%, 15.1515%, 15.7576%,
                  16.3636%, 16.9697%, 17.5758%, 18.1818%, 18.7879%, 19.3939%]
```

<figure><img src="/files/5psi2SWCQlgnXnQGNjuL" alt="" width="480"><figcaption></figcaption></figure>

#### Profile: Large + Dust, 32 Ticks

```
Principal        40.00310000 ETH
Repayment        40.33199452 ETH
Interest         0.32889452 ETH
Overall Rate     10.0031%

Liquidity Used   [40.00 at 10.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%]
Tick Interests   [0.3289, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
                  0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
                  0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
                  0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000]
Effective Rates  [10.0031%, 10.3293%, 10.3293%, 10.3293%, 10.3294%, 10.3294%,
                  10.3294%, 10.3294%, 10.3295%, 10.3295%, 10.3295%, 10.3296%,
                  10.3296%, 10.3296%, 10.3296%, 10.3297%, 10.3297%, 10.3297%,
                  10.3297%, 10.3298%, 10.3298%, 10.3298%, 10.3298%, 10.3299%,
                  10.3299%, 10.3299%, 10.3300%, 10.3300%, 10.3300%, 10.3300%,
                  10.3301%, 10.3301%]
```

<figure><img src="/files/WKIgLDOtA3CMCFvAw3mM" alt="" width="480"><figcaption></figcaption></figure>

#### Profile: Large + Dust, 6 Ticks

```
Principal        10.00050000 ETH
Repayment        10.41146301 ETH
Interest         0.41096301 ETH
Overall Rate     49.9980%

Liquidity Used   [10.00 at 50.00%, 0.00 at 10.00%, 0.00 at 10.00%, 0.00 at 10.00%,
                  0.00 at 10.00%, 0.00 at 10.00%]
Tick Interests   [0.4109, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000]
Effective Rates  [49.9981%, 48.4197%, 48.4201%, 48.4206%, 48.4211%, 48.4215%]
```

<figure><img src="/files/UmMknoLutA8JOF5T8Z5o" alt="" width="480"><figcaption></figcaption></figure>

#### Profile: Large + Dust + Small, 32 Ticks

```
Principal        45.00300000 ETH
Repayment        45.53736986 ETH
Interest         0.53436986 ETH
Overall Rate     14.4468%

Liquidity Used   [40.00 at 10.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%,
                  0.00 at 50.00%, 0.00 at 50.00%, 0.00 at 50.00%, 5.00 at 50.00%]
Tick Interests   [0.4664, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
                  0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
                  0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
                  0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0680]
Effective Rates  [14.1852%, 14.6478%, 14.6478%, 14.6479%, 14.6479%, 14.6480%,
                  14.6480%, 14.6480%, 14.6481%, 14.6481%, 14.6481%, 14.6482%,
                  14.6482%, 14.6483%, 14.6483%, 14.6483%, 14.6484%, 14.6484%,
                  14.6484%, 14.6485%, 14.6485%, 14.6486%, 14.6486%, 14.6486%,
                  14.6487%, 14.6487%, 14.6487%, 14.6488%, 14.6488%, 14.6489%,
                  14.6489%, 16.5396%]
```

<figure><img src="/files/54omSY9eSfP19XoSJJy7" alt="" width="480"><figcaption></figcaption></figure>

#### Profile: Random, 32 Ticks

```
Principal        40.00000000 ETH
Repayment        41.24150013 ETH
Interest         1.24150013 ETH
Overall Rate     37.7623%

Liquidity Used   [0.16 at 10.00%, 0.27 at 50.00%, 1.27 at 50.00%, 0.34 at 50.00%,
                  2.82 at 50.00%, 0.12 at 30.00%, 1.68 at 10.00%, 1.04 at 30.00%,
                  2.66 at 50.00%, 0.50 at 50.00%, 1.05 at 30.00%, 1.04 at 50.00%,
                  0.77 at 50.00%, 0.01 at 50.00%, 1.36 at 50.00%, 0.27 at 50.00%,
                  1.87 at 30.00%, 0.22 at 50.00%, 0.99 at 50.00%, 1.40 at 30.00%,
                  2.83 at 30.00%, 0.29 at 50.00%, 0.44 at 10.00%, 2.47 at 50.00%,
                  0.07 at 10.00%, 2.85 at 50.00%, 1.79 at 10.00%, 0.83 at 30.00%,
                  2.62 at 50.00%, 2.40 at 30.00%, 1.07 at 10.00%, 2.50 at 30.00%]
Tick Interests   [0.0000, 0.0002, 0.0033, 0.0010, 0.0206, 0.0009, 0.0161, 0.0117,
                  0.0413, 0.0081, 0.0185, 0.0202, 0.0157, 0.0001, 0.0308, 0.0063,
                  0.0474, 0.0057, 0.0272, 0.0409, 0.0944, 0.0100, 0.0150, 0.0956,
                  0.0025, 0.1227, 0.0793, 0.0383, 0.1332, 0.1288, 0.0582, 0.1473]
Effective Rates  [0.2816%, 0.7906%, 3.1256%, 3.7431%, 8.9102%, 8.9815%, 11.7206%,
                  13.7567%, 18.8630%, 19.7784%, 21.3390%, 23.5952%, 25.0009%,
                  25.0104%, 27.5119%, 28.0142%, 30.8909%, 31.7872%, 33.5959%,
                  35.5554%, 40.5839%, 41.7669%, 41.2124%, 47.0863%, 45.7135%,
                  52.4284%, 53.8561%, 56.2078%, 61.9133%, 65.2056%, 66.0064%,
                  71.5341%]
```

<figure><img src="/files/x68CqfFYBCaVeUT4y4FQ" alt="" width="480"><figcaption></figcaption></figure>


# Liquidation

Overdue loans in a Pool can be liquidated by any external actor. The loan collateral is then transferred to the Pool's configured collateral liquidator. After the collateral is sold, the proceeds are remitted to the Pool and used to repay the deposit ticks that funded the loan. Liquidation proceeds are used to repay lower ticks before higher ones, so that the highest ticks will absorb any losses from a shortfall of the loan repayment. If the liquidation results in a surplus beyond the defaulted loan's repayment, the surplus is remitted to the borrower.

The official collateral liquidator is the [`EnglishAuctionCollateralLiquidator`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/liquidators/EnglishAuctionCollateralLiquidator.sol). This liquidator hosts an onchain English Auction, where the highest bid wins the collateral at the highest bid price. This liquidator also supports collateral wrappers, including the [`BundleCollateralWrapper`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/BundleCollateralWrapper.sol) and [`ERC1155CollateralWrapper`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/ERC1155CollateralWrapper.sol), so that bundled collateral is first unwrapped into individual auctions for each of the bundled token IDs. When all collateral associated with a liquidated loan is sold, the aggregated proceeds are remitted to the Pool.

English Auctions are currently configured for 24 hour duration, 10 minute extension window, 15 minute extension time, and 2% bid spacing.


# Deployment

Initial deployment of the MetaStreet v2 Pool contracts is proxied to allow for upgrades and bug fixes. However, deployment will ultimately migrate to immutable Pools, which are already supported by the codebase.

Proxied contracts are currently owned by the MetaStreet Labs multisig, but will ultimately be transferred to protocol governance.

#### Pool Factory

The [`PoolFactory`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/PoolFactory.sol) contract is deployed as an ERC1967 proxy, with a permissioned `upgradeToAndCall()` API to facilitate upgrades, and permissioned `addPoolImplementation()` and `removePoolImplementation()` to add and remove supported Pool implementations.

#### Pool Deployment

Proxied pools are deployed as an ERC1967 `BeaconProxy` with the [`PoolFactory`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/PoolFactory.sol) `createProxied()` function, which accepts a Pool implementation beacon and initialization parameters.

Immutable pools are deployed as an ERC1167 minimal clone proxy with the [`PoolFactory`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/PoolFactory.sol) `create()` function, which accepts a Pool implementation contract and initialization parameters.

Pools can be created permissionlessly. The admin for all Pools is the [`PoolFactory`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/PoolFactory.sol), which currently is only used to set the admin fee rate and withdraw admin fees. See the [Admin Fees](/technical-overview/protocol-design/admin-fees) section for more information on admin fees.

As the Pool contract stabilizes, deployment will ultimately switch from `createProxied()` to `create()` and use versioned Pool implementations for newly created Pools.

#### Collateral Liquidator Deployment

The [`EnglishAuctionCollateralLiquidator`](https://github.com/metastreet-labs/metastreet-contracts-v2/tree/master/contracts/liquidators) contract is deployed as an ERC1967 `BeaconProxy`. This contract can also be deployed immutably.

#### Collateral Wrapper Deployment

The [`BundleCollateralWrapper`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/BundleCollateralWrapper.sol) and [`ERC1155CollateralWrapper`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/ERC1155CollateralWrapper.sol) contracts are deployed as ERC1967 `TransparentUpgradeableProxy`. These contracts can also be deployed immutably.


# Admin Fees

Admin fees are collected from loan repayments, as a fixed percentage of the total interest of the loan. Only successfully repaid loans contribute admin fees. In the case of a defaulted loan, the admin fee is used to offset liquidation losses.

Only the [`PoolFactory`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/PoolFactory.sol) contract can set the admin fee rate on a Pool and withdraw accumulated admin fees from a Pool.

Admin fees are set to zero for the time being. They can be enabled and managed through a governance process in the future to accrue fees to the protocol.


# Contract Addresses

### Mainnet

<table data-full-width="true"><thead><tr><th width="322">Name</th><th>Contract Address</th></tr></thead><tbody><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/PoolFactory.sol">PoolFactory</a></td><td><a href="https://etherscan.io/address/0x1c91c822F6C5e117A2abe2B33B0E64b850e67095">0x1c91c822F6C5e117A2abe2B33B0E64b850e67095</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/liquidators/EnglishAuctionCollateralLiquidator.sol">EnglishAuctionCollateralLiquidator</a></td><td><a href="https://etherscan.io/address/0xE0194F47040E2424b8a65cB5F7112a5DBE1F93Bf">0xE0194F47040E2424b8a65cB5F7112a5DBE1F93Bf</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/BundleCollateralWrapper.sol">BundleCollateralWrapper</a></td><td><a href="https://etherscan.io/address/0xc4dC9eF8763433aAe26635bc5a09e362605fAd18">0xc4dC9eF8763433aAe26635bc5a09e362605fAd18</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/ERC1155CollateralWrapper.sol">ERC1155CollateralWrapper</a></td><td><a href="https://etherscan.io/address/0x4512b49d3081e1D258EebEF7c435f2310e7d3090">0x4512b49d3081e1D258EebEF7c435f2310e7d3090</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/KongzBundleCollateralWrapper.sol">KongzBundleCollateralWrapper</a></td><td><a href="https://etherscan.io/address/0x6E689C90347Ee467fBF6C16F9dfc84a27BfB772A">0x6E689C90347Ee467fBF6C16F9dfc84a27BfB772A</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/tokenization/ERC20DepositTokenImplementation.sol">ERC20DepositTokenImplementation</a></td><td><a href="https://etherscan.io/address/0x23b915eb10caFb2C5194e10D68932d7c6cC9AFF3">0x23b915eb10caFb2C5194e10D68932d7c6cC9AFF3</a></td></tr></tbody></table>

### Sepolia

<table data-full-width="true"><thead><tr><th width="319">Name</th><th>Contract Address</th></tr></thead><tbody><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/PoolFactory.sol">PoolFactory</a></td><td><a href="https://sepolia.etherscan.io/address/0x5FC53D3C3B108aD1c1D27399AcB8124b65229eD6">0x5FC53D3C3B108aD1c1D27399AcB8124b65229eD6</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/liquidators/EnglishAuctionCollateralLiquidator.sol">EnglishAuctionCollateralLiquidator</a></td><td><a href="https://sepolia.etherscan.io/address/0xC29a8D5AE1Deb4B5985125C63e457b682e1E8Dd4">0xC29a8D5AE1Deb4B5985125C63e457b682e1E8Dd4</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/BundleCollateralWrapper.sol">BundleCollateralWrapper</a></td><td><a href="https://sepolia.etherscan.io/address/0x83c7bc92bcFF43b9F682B7C2eE897A7130a36543">0x83c7bc92bcFF43b9F682B7C2eE897A7130a36543</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/ERC1155CollateralWrapper.sol">ERC1155CollateralWrapper</a></td><td><a href="https://sepolia.etherscan.io/address/0x5ea2fEfE67992D9e9e65FaF1B566731081d46a73">0x5ea2fEfE67992D9e9e65FaF1B566731081d46a73</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/tokenization/ERC20DepositTokenImplementation.sol">ERC20DepositTokenImplementation</a></td><td><a href="https://sepolia.etherscan.io/address/0x66b82f3c4c30d9eD4E2E5751E929BD535E38f13F">0x66b82f3c4c30d9eD4E2E5751E929BD535E38f13F</a></td></tr></tbody></table>

### Blast

<table data-full-width="true"><thead><tr><th width="317">Name</th><th>Contract Address</th></tr></thead><tbody><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/PoolFactory.sol">PoolFactory</a></td><td><a href="https://blastscan.io/address/0x5F42c24Af1227c3c669035a6cB549579ed0F99dF">0x5F42c24Af1227c3c669035a6cB549579ed0F99dF</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/liquidators/EnglishAuctionCollateralLiquidator.sol">EnglishAuctionCollateralLiquidator</a></td><td><a href="https://blastscan.io/address/0x7953D3408c4362F94fff0193745Ee34A361319F9">0x7953D3408c4362F94fff0193745Ee34A361319F9</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/BundleCollateralWrapper.sol">BundleCollateralWrapper</a></td><td><a href="https://blastscan.io/address/0xD3954A8fCDF90Db6018CC2D0b96B77E88A749363">0xD3954A8fCDF90Db6018CC2D0b96B77E88A749363</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/tokenization/ERC20DepositTokenImplementation.sol">ERC20DepositTokenImplementation</a></td><td><a href="https://blastscan.io/address/0x80ec82A0CbaF8067a9cB0AB62625E2b9E084F2cE">0x80ec82A0CbaF8067a9cB0AB62625E2b9E084F2cE</a></td></tr></tbody></table>

### Blast Sepolia

<table data-full-width="true"><thead><tr><th width="319">Name</th><th>Contract Address</th></tr></thead><tbody><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/PoolFactory.sol">PoolFactory</a></td><td><a href="https://testnet.blastscan.io/address/0x12a12a1346d84615b0a30B583632312e9e373402">0x12a12a1346d84615b0a30B583632312e9e373402</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/liquidators/EnglishAuctionCollateralLiquidator.sol">EnglishAuctionCollateralLiquidator</a></td><td><a href="https://testnet.blastscan.io/address/0xE7968F42EF0601F89306d8Eb9Cd2FA42669029ff">0xE7968F42EF0601F89306d8Eb9Cd2FA42669029ff</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/BundleCollateralWrapper.sol">BundleCollateralWrapper</a></td><td><a href="https://testnet.blastscan.io/address/0x25dEeD6fBF3d03d6282550d7493cf23265e1bC82">0x25dEeD6fBF3d03d6282550d7493cf23265e1bC82</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/tokenization/ERC20DepositTokenImplementation.sol">ERC20DepositTokenImplementation</a></td><td><a href="https://testnet.blastscan.io/address/0x40793D044d383cdBBCee157107d7adB591a3feF0">0x40793D044d383cdBBCee157107d7adB591a3feF0</a></td></tr></tbody></table>

### Base

<table><thead><tr><th width="319">Name</th><th>Contract Address</th></tr></thead><tbody><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/PoolFactory.sol">PoolFactory</a></td><td><a href="https://basescan.org/address/0x41cF7ea4Ba650191e829A6bD31B9e2049C78D858">0x41cF7ea4Ba650191e829A6bD31B9e2049C78D858</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/liquidators/EnglishAuctionCollateralLiquidator.sol">EnglishAuctionCollateralLiquidator</a></td><td><a href="https://basescan.org/address/0xceb5856C525bbb654EEA75A8852A0F51073C4a58">0xceb5856C525bbb654EEA75A8852A0F51073C4a58</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/wrappers/BundleCollateralWrapper.sol">BundleCollateralWrapper</a></td><td><a href="https://basescan.org/address/0xC2356bf42c8910fD6c28Ee6C843bc0E476ee5D26">0xC2356bf42c8910fD6c28Ee6C843bc0E476ee5D26</a></td></tr><tr><td><a href="https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/tokenization/ERC20DepositTokenImplementation.sol">ERC20DepositTokenImplementation</a></td><td><a href="https://basescan.org/address/0x74C6E545DF9E4B725f28fb322F7f8121E1DD7ef5">0x74C6E545DF9E4B725f28fb322F7f8121E1DD7ef5</a></td></tr></tbody></table>


# Token Bridges

### Mainnet (Beta)

<table><thead><tr><th width="193">Contract</th><th width="207">Token Symbol</th><th>Address</th></tr></thead><tbody><tr><td>SimpleOFTAdapter</td><td><code>mwstETH-WPUNKS:20</code></td><td><a href="https://etherscan.io/address/0x5f1888eD757a7a0d382839cdDFf1663B81B8284f">0x5f1888eD757a7a0d382839cdDFf1663B81B8284f</a></td></tr><tr><td>SimpleOFTAdapter</td><td><code>mwstETH-WPUNKS:40</code></td><td><a href="https://etherscan.io/address/0x2F37080F905E828182bC5226Ef45e8De1B9Aee23">0x2F37080F905E828182bC5226Ef45e8De1B9Aee23</a></td></tr><tr><td>SimpleOFTAdapter</td><td><code>mWETH-PPG:5</code></td><td><a href="https://etherscan.io/address/0x869c4a61d71511Bec22CC30570980a16abBC3Faa">0x869c4a61d71511Bec22CC30570980a16abBC3Faa</a></td></tr><tr><td>SimpleOFTAdapter</td><td><code>mWETH-PPG:10</code></td><td><a href="https://etherscan.io/address/0x1d774528EEC9A66EBE7920800426143D6c135B86">0x1d774528EEC9A66EBE7920800426143D6c135B86</a></td></tr></tbody></table>

### Blast

<table><thead><tr><th width="193">Contract</th><th width="206">Token Symbol</th><th>Address</th></tr></thead><tbody><tr><td>BlastOFT</td><td><code>mwstETH-WPUNKS:20</code></td><td><a href="https://blastscan.io/address/0x9a50953716bA58e3d6719Ea5c437452ac578705F">0x9a50953716bA58e3d6719Ea5c437452ac578705F</a></td></tr><tr><td>BlastOFT</td><td><code>mwstETH-WPUNKS:40</code></td><td><a href="https://blastscan.io/address/0x999f220296B5843b2909Cc5f8b4204AacA5341D8">0x999f220296B5843b2909Cc5f8b4204AacA5341D8</a></td></tr><tr><td>BlastOFT</td><td><code>mWETH-PPG:5</code></td><td><a href="https://blastscan.io/address/0x41cF7ea4Ba650191e829A6bD31B9e2049C78D858">0x41cF7ea4Ba650191e829A6bD31B9e2049C78D858</a></td></tr><tr><td>BlastOFT</td><td><code>mWETH-PPG:10</code></td><td><a href="https://blastscan.io/address/0x6531ae67098Bc73Db9179DcBc6F161FCd9fd4c01">0x6531ae67098Bc73Db9179DcBc6F161FCd9fd4c01</a></td></tr><tr><td>Points Operator</td><td></td><td><a href="https://blastscan.io/address/0x63774EF8DC88134Ff1Ca955355078AB1afBe91c6">0x63774EF8DC88134Ff1Ca955355078AB1afBe91c6</a></td></tr></tbody></table>

### Sepolia

<table><thead><tr><th width="192">Contract</th><th width="205">Token Symbol</th><th>Address</th></tr></thead><tbody><tr><td>SimpleOFTAdapter</td><td><code>MST721_SEP-WETH:5</code></td><td><a href="https://sepolia.etherscan.io/address/0x6e296C220b36Ac858AAD1f61b053444A2bED6331">0x6e296C220b36Ac858AAD1f61b053444A2bED6331</a></td></tr></tbody></table>

### Blast Testnet

<table><thead><tr><th width="190">Contract</th><th width="208">Token Symbol</th><th>Address</th></tr></thead><tbody><tr><td>BlastOFT</td><td><code>MST721_SEP-WETH:5</code></td><td><a href="https://testnet.blastscan.io/address/0xE0a62d649B41b43f796637AD5B2D6BEC281B475e">0xE0a62d649B41b43f796637AD5B2D6BEC281B475e</a></td></tr><tr><td>Points Operator</td><td></td><td><a href="https://testnet.blastscan.io/address/0x0796c7127C9D20b421d2708f0965C615beC47427">0x0796c7127C9D20b421d2708f0965C615beC47427</a></td></tr></tbody></table>


# Audits

## Cantina

{% file src="/files/IZ4hq5NKyHywQLg9A7Yw" %}

{% file src="/files/yaiyu4aNzVZUhs5q22vn" %}

{% file src="/files/pS9TFtPwsnZoV7dTDd8n" %}

{% file src="/files/EuFV0HZuOphRWun9dQj6" %}


# Gas Report

Gas costs from Pool v2.6 (commit hash 1d6c1f9).

<table><thead><tr><th width="446">Operation</th><th>Gas Cost</th></tr></thead><tbody><tr><td>deposit (new tick)</td><td>243107</td></tr><tr><td>deposit (existing tick)</td><td>106280</td></tr><tr><td>deposit (existing deposit)</td><td>89180</td></tr><tr><td>multicall deposit + tokenize (new tick)</td><td>462321</td></tr><tr><td>deposit (existing tick, tokenized)</td><td>117764</td></tr><tr><td>deposit (existing deposit, tokenized)</td><td>100664</td></tr><tr><td>redeem (partial)</td><td>126839</td></tr><tr><td>redeem (entire)</td><td>123205</td></tr><tr><td>withdraw</td><td>58749</td></tr><tr><td>multicall redeem + rebalance (new tick)</td><td>251537</td></tr><tr><td>multicall redeem + rebalance (existing tick)</td><td>176410</td></tr><tr><td>borrow (single, 10 ticks)</td><td>340443</td></tr><tr><td>borrow (single, existing, 10 ticks)</td><td>323343</td></tr><tr><td>borrow with v1 delegation (single, existing, 10 ticks)</td><td>583236</td></tr><tr><td>borrow with v2 delegation (single, existing, 10 ticks)</td><td>510591</td></tr><tr><td>borrow (single, 16 ticks)</td><td>464132</td></tr><tr><td>borrow (single, existing, 16 ticks)</td><td>447032</td></tr><tr><td>borrow with v1 delegation (single, existing, 16 ticks)</td><td>706925</td></tr><tr><td>borrow with v2 delegation (single, existing, 16 ticks)</td><td>634281</td></tr><tr><td>borrow (bundle of 10, 10 ticks)</td><td>364168</td></tr><tr><td>borrow (bundle of 10, existing, 10 ticks)</td><td>347068</td></tr><tr><td>borrow (bundle of 10, 16 ticks)</td><td>487911</td></tr><tr><td>borrow (bundle of 10, existing, 16 ticks)</td><td>470811</td></tr><tr><td>repay (single, 10 ticks)</td><td>329844</td></tr><tr><td>repay with v1 delegation (single, 10 ticks)</td><td>342721</td></tr><tr><td>repay with v2 delegation (single, 10 ticks)</td><td>339531</td></tr><tr><td>repay (single, 16 ticks)</td><td>471956</td></tr><tr><td>repay with v1 delegation (single, 16 ticks)</td><td>484833</td></tr><tr><td>repay with v2 delegation (single, 16 ticks)</td><td>481643</td></tr><tr><td>repay (bundle of 10, 10 ticks)</td><td>351845</td></tr><tr><td>repay (bundle of 10, 16 ticks)</td><td>493972</td></tr><tr><td>refinance (single, 10 ticks)</td><td>454513</td></tr><tr><td>refinance (single, 16 ticks)</td><td>661978</td></tr><tr><td>refinance (bundle of 10, 10 ticks)</td><td>483750</td></tr><tr><td>refinance (bundle of 10, 16 ticks)</td><td>691298</td></tr><tr><td>liquidate (single, external, 16 ticks)</td><td>191508</td></tr><tr><td>liquidate (bundle of 10, external, 16 ticks)</td><td>197661</td></tr><tr><td>liquidate (single, english auction, 16 ticks)</td><td>292633</td></tr><tr><td>liquidate (bundle of 10, english auction, 16 ticks)</td><td>709185</td></tr><tr><td>bid (first, english auction)</td><td>134011</td></tr><tr><td>bid (second, english auction)</td><td>89047</td></tr><tr><td>claim (single, english auction)</td><td>495455</td></tr><tr><td>claim (first of bundle, english auction)</td><td>127219</td></tr><tr><td>claim (middle of bundle, english auction)</td><td>93019</td></tr><tr><td>claim (last of bundle, english auction)</td><td>486034</td></tr><tr><td>mint (bundle of 10)</td><td>240877</td></tr><tr><td>unwrap (bundle of 10)</td><td>163357</td></tr><tr><td>merkle borrow (single, 10 ticks, 10 token ids)</td><td>348552</td></tr><tr><td>merkle borrow (single, 16 ticks, 10 token ids)</td><td>470718</td></tr><tr><td>merkle borrow (single, 10 ticks, 100 token ids)</td><td>352145</td></tr><tr><td>merkle borrow (single, 16 ticks, 100 token ids)</td><td>474313</td></tr><tr><td>merkle borrow (single, 10 ticks, 1000 token ids)</td><td>356818</td></tr><tr><td>merkle borrow (single, 16 ticks, 1000 token ids)</td><td>478987</td></tr><tr><td>erc1155 borrow (total token IDs 16, 10 tick)</td><td>435089</td></tr><tr><td>erc1155 borrow (total token IDs 16, 16 tick)</td><td>557465</td></tr><tr><td>erc1155 borrow (total token IDs 32, 10 tick)</td><td>519441</td></tr><tr><td>erc1155 borrow (total token IDs 32, 16 tick)</td><td>642004</td></tr></tbody></table>


# API

{% embed url="<https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/interfaces/IPoolFactory.sol>" %}
`IPoolFactory`
{% endembed %}

{% embed url="<https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/interfaces/IPool.sol>" %}
`IPool`
{% endembed %}


# SDK

{% embed url="<https://github.com/metastreet-labs/metastreet-sdk-v2>" %}

Coming soon...


# Dashboard

MetaStreet v2 Pool Dashboard

{% embed url="<https://pool-dashboard.metastreet.xyz/>" %}


# Terms of Service

*Last Modified: July 19, 2024*

Welcome to MetaStreet! These Terms of Service (these “**Terms**”) of MetaStreet Foundation. (“**MetaStreet**,” “**we**,” or “**us**”) are an agreement that describes your rights and responsibilities as a MetaStreet user. This page explains the terms by which you may access and use our online services, website (the “**Site**”), software, and documentation provided on or in connection with our Service (collectively, the “**Service**”).

By accessing or using the Service, or by clicking a button or checking a box marked “I Agree” (or something similar), you signify that you have read, understood, and agree to be bound by these Terms and to the collection and use of your information, whether or not you are a registered user of our Service. MetaStreet reserves the right to modify these terms and will provide notice of these changes as described below. These Terms apply to all visitors, users, and others who access the Service (“**Users**”).

PLEASE READ THESE TERMS CAREFULLY TO ENSURE THAT YOU UNDERSTAND EACH PROVISION. THESE TERMS CONTAIN A MANDATORY INDIVIDUAL ARBITRATION PROVISION IN SECTION 8.2 (THE “**ARBITRATION AGREEMENT**”) AND CLASS ACTION/JURY TRIAL WAIVER PROVISION IN SECTION 8.3 (THE “**CLASS ACTION/JURY TRIAL WAIVER**”) THAT REQUIRE, UNLESS YOU OPT OUT PURSUANT TO THE INSTRUCTIONS IN SECTION 8.2, THE EXCLUSIVE USE OF FINAL AND BINDING ARBITRATION ON AN INDIVIDUAL BASIS TO RESOLVE DISPUTES BETWEEN YOU AND US, INCLUDING ANY CLAIMS THAT AROSE OR WERE ASSERTED BEFORE YOU AGREED TO THESE TERMS.  TO THE FULLEST EXTENT PERMITTED BY LAW, YOU EXPRESSLY WAIVE YOUR RIGHT TO SEEK RELIEF IN A COURT OF LAW AND TO HAVE A JURY TRIAL ON YOUR CLAIMS, AS WELL AS YOUR RIGHT TO PARTICIPATE AS A PLAINTIFF OR CLASS MEMBER IN ANY CLASS, COLLECTIVE, PRIVATE ATTORNEY GENERAL OR REPRESENTATIVE ACTION OR PROCEEDING.

## **1.** Our Service

### **1.1** Eligibility

This is a contract between you and MetaStreet. You must read and agree to these terms before using the MetaStreet Service. If you do not agree, you may not use the Service. You may use the Service only if you can form a binding contract with MetaStreet, and only in compliance with these Terms and all applicable local, state, national, and international laws, rules and regulations. Any use or access to the Service by anyone under 18 is strictly prohibited and in violation of these Terms. The Service is not available to any Users previously removed from the Service by MetaStreet.

### **1.2** Limited License

Subject to the terms and conditions of these Terms, you are hereby granted a non-exclusive, limited, non-transferable, freely revocable license to use the Service as permitted by the features of the Service. MetaStreet reserves all rights not expressly granted herein in the Service and the MetaStreet Content (as defined below). MetaStreet may terminate this license at any time for any reason or no reason.

### **1.3** Use of the Service

The Service primarily consists of a web-hosted user interface on the Site, which allows promissory note originators to sell their notes, allows capital depositors to earn yield passively, allows Users to connect their Digital Currency wallet capable of storing and transferring certain supported Digital Currency. “**Digital Currency**” means only those particular digital currencies listed as available to trade or custody on the Service.

### **1.4** User Representations and Warranties

By entering this Site or accessing the Service you represent that: (i) you are not prohibited from entering this Site or transact using smart contracts under any law, regulatory prohibition or judicial pronouncement; (ii) you understand the risks associated with the Service and the transaction using smart contracts, (iii) and you understand that you will be dealing with third parties and MetaStreet has not verified and will not be in a position to verify any transaction you make using smart contracts.

### **1.5** Service Rules

You agree not to engage in any of the following prohibited activities: (i) copying, distributing, or disclosing any part of the Service in any medium, including without limitation by any automated or non-automated “scraping”; (ii) using any automated system, including without limitation “robots,” “spiders,” “offline readers,” etc., to access the Service in a manner that sends more request messages to the MetaStreet servers than a human can reasonably produce in the same period of time by using a conventional on-line web browser (except that MetaStreet grants the operators of public search engines revocable permission to use spiders to copy publicly available materials from the Service for the sole purpose of and solely to the extent necessary for creating publicly available searchable indices of the materials, but not caches or archives of such materials); (iii) transmitting spam, chain letters, or other unsolicited email; (iv) attempting to interfere with, compromise the system integrity or security or decipher any transmissions to or from the servers running the Service; (v) taking any action that imposes, or may impose at our sole discretion an unreasonable or disproportionately large load on our infrastructure; (vi) uploading invalid data, viruses, worms, or other software agents through the Service; (vii) collecting or harvesting any personally identifiable information, including account names, from the Service; (viii) using the Service for any commercial solicitation purposes; (ix) impersonating another person or otherwise misrepresenting your affiliation with a person or entity, conducting fraud, hiding or attempting to hide your identity; (x) interfering with the proper working of the Service; (xi) accessing any content on the Service through any technology or means other than those provided or authorized by the Service; or (xii) bypassing the measures we may use to prevent or restrict access to the Service, including without limitation features that prevent or restrict use or copying of any content or enforce limitations on use of the Service or the content therein.

### **1.6** Changes to the Service

We may, without prior notice, change the Service; stop providing the Service or features of the Service, to you or to Users generally; or create usage limits for the Service. We may permanently or temporarily terminate or suspend your access to the Service without notice and liability for any reason, including if in our sole determination you violate any provision of these Terms, or for no reason. Upon termination for any reason or no reason, you continue to be bound by these Terms.

### **1.7** Disputes with Other Users

You are solely responsible for your interactions with other Users. We reserve the right, but have no obligation, to monitor disputes between you and other Users. MetaStreet shall have no liability for your interactions with other Users, or for any User’s action or inaction.

## **2.** Our Proprietary Rights

The Service and all materials therein or transferred thereby, including, without limitation, software, images, text, graphics, illustrations, logos, patents, trademarks, service marks, copyrights, photographs, audio, videos, and music (the “**MetaStreet Content**”), and all intellectual property rights related thereto, are the exclusive property of MetaStreet and its licensors. Except as explicitly provided herein, nothing in these Terms shall be deemed to create a license in or under any such intellectual property rights, and you agree not to sell, license, rent, modify, distribute, copy, reproduce, transmit, publicly display, publicly perform, publish, adapt, edit or create derivative works from any MetaStreet Content. Use of the MetaStreet Content for any purpose not expressly permitted by these Terms is strictly prohibited.

You may choose to or we may invite you to submit comments or ideas about the Service, including without limitation about how to improve the Service or our products (“**Ideas**”). By submitting any Idea, you agree that your disclosure is gratuitous, unsolicited and without restriction and will not place MetaStreet under any fiduciary or other obligation, and that we are free to use the Idea without any additional compensation to you, and/or to disclose the Idea on a non-confidential basis or otherwise to anyone. You further acknowledge that, by acceptance of your submission, MetaStreet does not waive any rights to use similar or related ideas previously known to MetaStreet, or developed by its employees, or obtained from sources other than you.

## **3.** Security

MetaStreet cares about the integrity and security of your personal information. However, we cannot guarantee that unauthorized third parties will never be able to defeat our security measures or use your personal information for improper purposes. You acknowledge that you provide your personal information at your own risk.

## **4.** Third-Party Links and Information

The Service may contain links to third-party materials that are not owned or controlled by MetaStreet. MetaStreet does not endorse or assume any responsibility for any such third-party sites, information, materials, products, or services. If you access a third-party website or service from the Service or share your personal information on or through any third-party website or service, you do so at your own risk, and you understand that these Terms do not apply to your use of such sites. You expressly relieve MetaStreet from any and all liability arising from your use of any third-party website, service, or content. Additionally, your dealings with or participation in promotions of advertisers found on the Service, including payment and delivery of goods, and any other terms (such as warranties) are solely between you and such advertisers. You agree that MetaStreet shall not be responsible for any loss or damage of any sort relating to your dealings with such advertisers.

## **5.** Indemnity

You agree to defend, indemnify and hold harmless MetaStreet and its subsidiaries, agents, licensors, managers, and other affiliated companies, and their employees, contractors, agents, officers and directors, from and against any and all claims, damages, obligations, losses, liabilities, costs or debt, and expenses (including but not limited to attorney’s fees) arising from: (i) your use of and access to the Service, including any data or content transmitted or received by you; (ii) your violation of any term of these Terms, including without limitation your breach of any of the representations and warranties above; (iii) your violation of any third-party right, including without limitation any right of privacy or intellectual property rights; (iv) your violation of any applicable law, rule or regulation; (v) any content that is submitted via your User Account including without limitation misleading, false, or inaccurate information; (vi) your willful misconduct; or (vii) any other party’s access and use of the Service with your unique username, password or other appropriate security code.

## **6.** No Warranty and Disclaimers; Assumption of the Risk

### **6.1** No Warranty and Disclaimers

The Service is provided on an “as is” and “as available” basis. Use of the Service is at your own risk. To the maximum extent permitted by applicable law, the Service is provided without warranties of any kind, whether express or implied, including, but not limited to, implied warranties of merchantability, fitness for a particular purpose, or non-infringement. No advice or information, whether oral or written, obtained by you from MetaStreet or through the Service will create any warranty not expressly stated herein. Without limiting the foregoing, MetaStreet, its subsidiaries, its affiliates, and its licensors do not warrant that the content is accurate, reliable or correct; that the Service will meet your requirements; that the Service will be available at any particular time or location, uninterrupted or secure; that any defects or errors will be corrected; or that the Service is free of viruses or other harmful components. Any content downloaded or otherwise obtained through the use of the Service is downloaded at your own risk and you will be solely responsible for any damage to your computer system or mobile device or loss of data that results from such download or your use of the Service.

Further, MetaStreet does not warrant, endorse, guarantee, or assume responsibility for any product or service advertised or offered by a third party through the Service or any hyperlinked website or service, and MetaStreet will not be a party to or in any way monitor any transaction between you and third-party providers of products or services.

Federal law, some states, provinces and other jurisdictions do not allow the exclusion and limitations of certain implied warranties, so the above exclusions may not apply to you. These Terms give you specific legal rights, and you may also have other rights which vary from state to state. The disclaimers and exclusions under these Terms will not apply to the extent prohibited by applicable law.

To the fullest extent permitted by law and notwithstanding any other provision of these Terms or any other agreement contemplated herein or applicable provisions of law or equity or otherwise, the parties hereto agree to eliminate any and all fiduciary duties MetaStreet or any related entities and agents may have to you, or your agents and affiliates, or the users of the Service, provided that such exclusion or limitation of liability shall not extend to misappropriation of your assets or funds or content provided by MetaStreet or any related entities and agents or other acts or omissions that constitute a bad faith violation of the implied contractual covenant of good faith and fair dealing.

### **6.2** Assumption of the Risk

By utilizing the Service or interacting with the MetaStreet Content in any way, you represent that you understand the inherent risks associated with cryptographic systems; and warrant that you have an understanding of the usage, intricacies, and difficulties of using native cryptographic tokens, such as Ether (ETH), Bitcoin (BTC), smart contract based-tokens such as those that follow the Ethereum Token Standard (<https://github.com/ethereum/EIPs/issues/20>), and blockchain-based software systems. In general, the underlying software for blockchain networks is open source such that anyone can use, copy, modify, and distribute it. By using the Service, you acknowledge and agree that (i) MetaStreet or any related entities are not responsible for operation of the underlying software and networks that there exists no guarantee of functionality, security, or availability of such software and networks; (ii) the underlying protocols are subject to sudden changes in operating rules (known as “**Forks**”), and that such Forks may materially affect the Service; and (iii) you hereby irrevocably waive, release and discharge all claims, whether known or unknown to you, against us, our affiliates and their respective shareholders, members, directors, officers, employees, agents and representatives related to any of the risks set forth in these Terms. MetaStreet may decide, in its sole discretion, not to support (or cease supporting) the Forked network entirely. You acknowledge and agree that MetaStreet assumes absolutely no responsibility whatsoever in respect of any underlying software protocols, whether Forked or not.

The Service could be impacted by one or more regulatory inquiries or regulatory action, which could impede or limit the ability of MetaStreet to continue to develop, or which could impede or limit your ability to access or use the Service, including access to your funds.

You acknowledge and understand that cryptography is a progressing field. Advances in code cracking or technical advances such as the development of quantum computers may present risks to cryptocurrencies and the Service or MetaStreet Content, which could result in the theft or loss of your cryptographic tokens or property. To the extent possible, it is intended to update the protocol underlying the Service to account for any advances in cryptography and to incorporate additional security measures, but does not guarantee or otherwise represent full security of the system. By using the Service or accessing MetaStreet Content, you acknowledge these inherent risks.

You understand that blockchain technologies and associated currencies or tokens are highly volatile due to many factors including but not limited to adoption, speculation, technology and security risks. You also acknowledge that the cost of transacting on such technologies is variable and may increase at any time causing impact to any activities taking place on the relevant blockchain. You acknowledge these risks and represent that MetaStreet or any related entity or person cannot be held liable for such fluctuations or increased costs.

Although the Service is intended to provide accurate and timely information on the Service and other tools making up the Service, the Service (including, without limitation, the MetaStreet Content) or relevant tools may not always be entirely accurate, complete or current and may also include technical inaccuracies or typographical errors. In an effort to continue to provide you with as complete and accurate information as possible, information may be changed or updated from time to time without notice, including without limitation information regarding our policies. Accordingly, you should verify all information before relying on it, and all decisions based on information contained on the Site or relevant tools are your sole responsibility and MetaStreet shall have no liability for such decisions. Links to third-party materials (including without limitation websites) may be provided as a convenience but are not controlled by any entity. You acknowledge and agree that we are not responsible for any aspect of the information, content, or services contained in any third-party materials or on any third-party sites accessible or linked to the Service or available via other relevant tools.

## **7.** Limitation of Liability

To the maximum extent permitted by applicable law, in no event shall MetaStreet, its affiliates, agents, directors, employees, suppliers or licensors be liable for any indirect, punitive, incidental, special, consequential or exemplary damages, including without limitation damages for loss of profits, goodwill, use, data or other intangible losses, arising out of or relating to the use of, or inability to use, the Service. Under no circumstances will MetaStreet be responsible for any damage, loss or injury resulting from hacking, tampering or other unauthorized access or use of the Service or your account or the information contained therein.

To the maximum extent permitted by applicable law, MetaStreet assumes no liability or responsibility for any (i) errors, mistakes, or inaccuracies of content; (ii) personal injury or property damage, of any nature whatsoever, resulting from your access to or use of our service; (iii) any unauthorized access to or use of our secure servers and/or any and all personal information stored therein; (iv) any interruption or cessation of transmission to or from the Service; (v) any bugs, viruses, trojan horses, or the like that may be transmitted to or through our service by any third party; (vi) any errors or omissions in any content or for any loss or damage incurred as a result of the use of any content posted, emailed, transmitted, or otherwise made available through the Service; and/or (vii) the defamatory, offensive, or illegal conduct of any third party. In no event shall MetaStreet, its affiliates, agents, directors, employees, suppliers, or licensors be liable to you for any claims, proceedings, liabilities, obligations, damages, losses or costs in an amount exceeding the amount you paid to MetaStreet hereunder or $50.00, whichever is greater.

This limitation of liability section applies whether the alleged liability is based on contract, tort, negligence, strict liability, or any other basis, even if MetaStreet has been advised of the possibility of such damage.

Some states do not allow the exclusion or limitation of incidental or consequential damages, so the above limitations or exclusions may not apply to you. These Terms give you specific legal rights, and you may also have other rights which vary from state to state. The disclaimers, exclusions, and limitations of liability under these Terms will not apply to the extent prohibited by applicable law.

## **8.** Governing Law, Arbitration, and Class Action/Jury Trial Waiver

### **8.1** Governing Law&#x20;

You agree that: (i) the Service shall be deemed solely based in Delaware; and (ii) the Service shall be deemed a passive one that does not give rise to personal jurisdiction over us, either specific or general, in jurisdictions other than Delaware. These Terms shall be governed by the internal substantive laws of the State of Delaware, without respect to its conflict of laws principles. The parties acknowledge that these Terms evidence a transaction involving interstate commerce. Notwithstanding the preceding sentences with respect to the substantive law, the Federal Arbitration Act (9 U.S.C. §§ 1-16) (“FAA”) governs the interpretation and enforcement of the Arbitration Agreement in Section 8.2 and preempts all state laws to the fullest extent permitted by law. If the FAA is found to not apply to any issue that arises from or relates to the Arbitration Agreement, then that issue shall be resolved under and governed by the law of your state of residence. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. You agree to submit to the exclusive personal jurisdiction of the federal and state courts located in Delaware for any actions for which we retain the right to seek injunctive or other equitable relief in a court of competent jurisdiction to prevent the actual or threatened infringement, misappropriation or violation of a our copyrights, trademarks, trade secrets, patents, or other intellectual property or proprietary rights, as set forth in the Arbitration provision below, including any provisional relief required to prevent irreparable harm. You agree that Delaware is the proper and exclusive forum for any appeals of an arbitration award or for trial court proceedings in the event that the arbitration provision below is found to be unenforceable.

### **8.2** Arbitration

Read this section carefully because it requires the parties to arbitrate their disputes and limits the manner in which you can seek relief from MetaStreet. This Section 8.2 (the “Arbitration Agreement”) applies to and governs any dispute, controversy, or claim between you and MetaStreet that arises out of or relates to, directly or indirectly: (i) these Terms, including the formation, existence, breach, termination, enforcement, interpretation, validity, or enforceability thereof; (ii) access to or use of the Service, including receipt of any advertising or marketing communications; (iii) any transactions through, by, or using the Service; or (iv) any other aspect of your relationship or transactions with MetaStreet, directly or indirectly, as a consumer (“Claim” or collectively, “Claims”). The Arbitration Agreement shall apply, without limitation, to all Claims that arose or were asserted before or after your agreement to these Terms.

If you are a new MetaStreet user, you can reject and opt-out of this Arbitration Agreement within 30 days of accepting these Terms by emailing MetaStreet at <hello@metastreet.xyz> with your first and last name and stating your intent to opt-out of the Arbitration Agreement. Note that opting out of this Arbitration Agreement does not affect any other part of these Terms, including the provisions regarding controlling law or in which courts any disputes must be brought.

**For any Claim, you agree to first contact us at <hello@metastreet.xyz> and attempt to resolve the dispute with us informally. In the unlikely event that MetaStreet has not been able to resolve a Claim after sixty (60) days, we each agree to resolve any Claim exclusively through binding arbitration by AAA before a single arbitrator (the “**&#x41;rbitrator”), under the Expedited Procedures then in effect for AAA (the “Rules”), except as provided herein.  In the event of any conflict between the Rules and this Arbitration Agreement, this Arbitration Agreement shall control.  AAA may be contacted at [www.adr.org](http://www.adr.org), where the Rules are also available. The arbitration will be conducted in the U.S. county where you live or Delaware, unless you and MetaStreet agree otherwise. If you are using the Service for commercial purposes, each party will be responsible for paying any AAA filing, administrative and arbitrator fees in accordance with AAA rules, and the award rendered by the arbitrator shall include costs of arbitration, reasonable attorneys’ fees and reasonable costs for expert and other witnesses. If you are an individual using the Service for non-commercial purposes: (a) AAA may require you to pay a fee for the initiation of your case, unless you apply for and successfully obtain a fee waiver from AAA; (b) the award rendered by the arbitrator may include your costs of arbitration, your reasonable attorney’s fees, and your reasonable costs for expert and other witnesses; and (c) you may sue in a small claims court of competent jurisdiction without first engaging in arbitration, but this does not absolve you of your commitment to engage in the informal dispute resolution process. Any judgment on the award rendered by the arbitrator may be entered in any court of competent jurisdiction. You and MetaStreet agree that the Arbitrator, and not any federal, state, or local court or agency, shall have exclusive authority to resolve any disputes relating to the interpretation, applicability, enforceability or formation of this Arbitration Agreement, including any claim that all or any part of this Arbitration Agreement is void or voidable. The Arbitrator shall also be responsible for determining all threshold arbitrability issues, including issues relating to whether these Terms, any provision of these Terms, is unconscionable or illusory and any defense to arbitration, including waiver, delay, laches, unconscionability, or estoppel.

**Nothing in this Section shall be deemed as: preventing MetaStreet from seeking injunctive or other equitable relief from the courts as necessary to prevent the actual or threatened infringement, misappropriation, or violation of our data security, intellectual property rights or other proprietary rights; or preventing you from asserting claims in small claims court, if your claims qualify and so long as the matter remains in such court and advances on only an individual (non-class, non-representative) basis.**&#x20;

If this Arbitration Agreement is found to be void, unenforceable, or unlawful, in whole or in part, the void, unenforceable, or unlawful provision, in whole or in part, shall be severed. Severance of the void, unenforceable, or unlawful provision, in whole or in part, shall have no impact on the remaining provisions of the Arbitration Agreement, which shall remain in force, or the parties’ ability to compel arbitration of any remaining claims on an individual basis pursuant to the Arbitration Agreement. Notwithstanding the foregoing, if the Class Action/Jury Trial Waiver is found to be void, unenforceable, or unlawful, in whole or in part, because it would prevent you from seeking public injunctive relief, then any dispute regarding the entitlement to such relief (and only that relief) must be severed from arbitration and may be litigated in a civil court of competent jurisdiction.  All other claims for relief subject to arbitration under this Arbitration Agreement shall be arbitrated under its terms, and the parties agree that litigation of any dispute regarding the entitlement to public injunctive relief shall be stayed pending the outcome of any individual claims in arbitration.

### **8.3** Class Action/Jury Trial Waiver&#x20;

With respect to all persons and entities, regardless of whether they have obtained or used the Service for personal, commercial or other purposes, all Claims must be brought in the parties’ individual capacity, and not as a plaintiff or class member in any purported class action, collective action, private attorney general action or other representative proceeding. This waiver applies to class arbitration, and, unless we agree otherwise, the arbitrator may not consolidate more than one person’s Claims. you and MetaStreet agree that the arbitrator may award relief only to an individual claimant and only to the extent necessary to provide relief on your individual claim(s). Any relief awarded may not affect other MetaStreet users. You and MetaStreet further agree that, by entering into these Terms, you and MetaStreet are each waiving the right to a trial by jury or to bring, join, or participate in a class action, collective action, private attorney general action, or other representative proceeding of any kind as a plaintiff or class member.

## **9.** General

### **9.1** Assignment&#x20;

These Terms, and any rights and licenses granted hereunder, may not be transferred or assigned by you, but may be assigned by MetaStreet without restriction. Any attempted transfer or assignment in violation hereof shall be null and void.

### **9.2** Notification Procedures and Changes to these Terms&#x20;

MetaStreet may provide notifications, whether such notifications are required by law or are for marketing or other business related purposes, to you via email notice, written or hard copy notice, or through posting of such notice on our Site, as determined by MetaStreet in our sole discretion. MetaStreet reserves the right to determine the form and means of providing notifications to our Users, provided that you may opt out of certain means of notification as described in these Terms. MetaStreet is not responsible for any automatic filtering you or your network provider may apply to email notifications we send to the email address you provide us. MetaStreet may, in its sole discretion, modify or update these Terms from time to time, and so you should review this page periodically. When we change these Terms in a material manner, we will update the ‘last modified’ date at the top of this page and notify you that material changes have been made to these Terms. Your continued use of the Service after any such change constitutes your acceptance of the new Terms of Service. If you do not agree to any of these terms or any future Terms of Service, do not use or access (or continue to access) the Service.

### **9.3** Entire Agreement/Severability&#x20;

These Terms, together with any amendments and any additional agreements you may enter into with MetaStreet in connection with the Service, shall constitute the entire agreement between you and MetaStreet concerning the Service. Except as otherwise stated in Section 8.2, if any provision of these Terms is deemed invalid by a court of competent jurisdiction, the invalidity of such provision shall not affect the validity of the remaining provisions of these Terms, which shall remain in full force and effect.

### **9.4** No Waiver&#x20;

No waiver of any term of these Terms shall be deemed a further or continuing waiver of such term or any other term, and MetaStreet’s failure to assert any right or provision under these Terms shall not constitute a waiver of such right or provision.


