# Welcome to Tealswap

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

## “**All in one place, no need to go elsewhere”**

Starting from DEX services, Tealswap constructs and expands the scope of user activities within Oasys, making the user experience seamless and accessible.

Everything you need from Oasys, all in one place, Tealswap.

***

### Vision

#### Mark the beginning of the token economy on the Oasys Network.

All tokens existing within or arriving to Oasys are exchanged through Tealswap, enabling users to extend their experience from Oasys Hub to Verse. This marks the beginning of the entire Oasys tokenomics, amplifying the ecosystem's scope.

### Mission

#### Tealswap should offers a service that users willingly utilize for its utility, simplicity, and stability aspects.

* Utility
  * We create a service that allows users to pursue an increase in the value of their assets within a decentralized mechanism.
* Simplicity
  * We create a service where users can easily understand and utilize Tealswap's offerings.
* Stability
  * We create a service that provides users with a sense of stability in service development and operation.

***

### Core value

#### Pioneering

* We constantly innovate and strive for service growth

#### Straightforward

* We create services that are easy and intuitive.

#### Safe and Secure

* We develop and operate a service that offers both stability and security in service development and operation.


# Brand Kit

### Brand Identity file

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


# How Tealswap works?

Tealswap is a decentralized exchange with automated market maker on Oasys hub-layer.

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

## Participant

There are two types of participants in Tealswap, **Traders** and **Liquidity Providers**.

#### Trader

A trader is a user who swaps two listed ERC20 tokens(sells a ERC20 token and buys another ERC20 token). Amount of input and output of tokens is determined by constant product formula(see Constant Product Formula). A trader pays swap fees.

#### Liquidity Provider

A liquidity provider is a user who deposits an equivalent value of two ERC20 tokens into the liquidity pool. Liquidity providers take a risk of impermanent loss(see Impermanent Loss) and are compensated with swap fees.

### Glossary

| Term  | Description                                                                                                                   |
| ----- | ----------------------------------------------------------------------------------------------------------------------------- |
| ERC20 | **ERC20** tokens are fungibile tokens. Currently in Tealswap, stablecoins, USDC and USDT, and OAS(Oasys token) are supported. |
| Pool  | A pair of two tokens makes a **pool**. When liquidity is added or removed, tokens in a pool are increased or decreased.       |

## Automated Market Maker (AMM)

AMM is a trading mechanism that improved shortcomings of order book method. Instead of order books of buyers and sellers, market is automated with the provided liquidity. It overcomes an economic problem known as the coincidence of wants and enables an exchange to occur immediately. Ratio of swapped tokens is determined in AMM with constant product formula, a.k.a x\*y = k. See below for the detailed explanations.

### Constant Product Formula

Constant Product Formula is a method to determine the price of tokens when swap is executed. It refers to the equation below: \
$$x*y=k$$, where $$x$$ and $$y$$ are reserve balance of two tokens in the pool and $$k$$ is a constant (whose value does not change with exchange of tokens).\
When swap occurs the reserve balance changes: $$(x-\delta\_x)*(y+\delta\_y)= k$$,\
where $$\delta\_x$$is amount of outflowing token (token purchased) and $$\delta\_y$$ is amount of inflowing token (token sold).

For example, let’s take a look at a case of ETH to USD swap. Let’s assume 1 ETH = 10 USD in market and there are 1,000 ETH and accordingly 10,000 USD token in liquidity pool. \
Selling 5 ETH, a trader inputs 5 ETH to the liquidity reserve. \
Then, to satisfy the constant product formula $$(10,000-\delta\_x)*(1,000+5)=10,000*1,000$$, \
the reserve outputs $$\delta\_x\approx49.751$$ of USD token.

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

### Price Impact

In the example above, we can see that the trader’s expected price of ETH to USD is 9.95 USD where the initial market price was 10 USD before the swap. This difference between current market price and the expected price is called **price impact**. In Tealswap, price impact is affected by relative size of an order to the liquidity pool. The larger the order to the pool, the further above the market price will the trade price be.

For example, let’s take a look again at a case of ETH to USD swap. Now there are 100,000 ETH and accordingly 1,000,000 USD token in liquidity pool. Selling 5 ETH, to satisfy the constant product formula $$(1,000,000-\delta\_x)*(100,000+5)=1,000,000*100,000$$, the reserve outputs $$\delta\_x\approx49.997$$of USD token. This time, expected price of ETH to USD is 9.999 USD.

### Providing Liquidity and Swap Fees

When liquidity is provided to a pool, constant value $$k$$ increases accordingly (and vice versa). If $$\alpha=\triangle  x/x=\triangle y/y$$(ratio of provided/previous liquidity) is provided, the equation is as below:\
$$x'\*y'=k'$$, where  $$x'=(1+\alpha)x, y'=(1+\alpha)y$$ and accordingly $$k'=(1+\alpha)^2k$$

Similarly after swap is executed with swap fees, swap fee is reserved to the pool which increases the value of $$k$$. Redeeming LP token (removing liquidity), they are given ERC20 tokens amount in the same way. Liquidity providers expect swap fees accumulated during their provision period in return for their liquidity.

### Impermanent Loss

While lquidity providers expect pool’s growth as a reward, they take a risk of impermanent loss. Impermanent loss is unrealized loss that is calculated as a difference between value of LP tokens (if redeemed) and value of otherwise, not depositing into a pool and holding.

Graph below shows how much of impermanent loss liquidity providers are exposed to as price of two tokens change.

<figure><img src="/files/5iZyCGZDUvowO3kbAzaE" alt=""><figcaption></figcaption></figure>

When ETH value decreases (ETH reserve increased and USD reserve decreased), constant product formula changes as below:

Assuming ETH price decreased to 5 USD, the formula becomes $$(10,000-\delta\_x)*(1,000+\delta\_y)=10,000*1,000$$ and market price becomes $$\frac{10,000-\delta\_x} {1,000+\delta\_y} = 5$$. This gives us  $$\delta\_x \approx 2930, \delta\_y \approx 415$$ which means there are 7,070 USD and 1,415 ETH in pool reserve. We can calculate impermanent loss here by comparing scenario of holding and providing liquidity.

<table><thead><tr><th width="176"></th><th>ETH</th><th width="153">USD</th><th>SUM</th><th data-hidden></th></tr></thead><tbody><tr><td>Holding(Initial)</td><td>1,000</td><td>10,000</td><td>15,000</td><td></td></tr><tr><td>LP token</td><td>1,415</td><td>7,070</td><td>14,145</td><td></td></tr></tbody></table>


# Fee Information

### Swap fee

A swap fee is a fee that a trader pays for each of exchanges.\
The swap fee(0.5%) per each liquidity pool broken down by : 0.4% for liquidity providers; 0.1% for protocol fee.

### Campaign registration fee

The fee for opening a Multifarming campaign is **5% of the total reward amount** set for the entire campaign.


# How to use Tealswap?


# Approve

If the amount you entered for the tokens are not approved, some approval processes for the each of unapproved tokens are required in advance.\
Please note that OAS, being Oasys’ native token, does not require separate approval.

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


# Swap

### **Step 1. Select Tokens to swap** <a href="#id-99e6" id="id-99e6"></a>

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

**Component description**

1. **From token select section**\
   The place where users can select the token they want to swap
2. **To token select section**\
   This is where users can select the token they want to obtain through the swap

<figure><img src="/files/bWWEt23HTqTlzlKiijsg" alt=""><figcaption><p>Selecting from token and to token (example)</p></figcaption></figure>

Select the from token and to token at “Swap” menu.

### Step2. Input Values to swap <a href="#id-2624" id="id-2624"></a>

**Step2–1 Input token amount**

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

Users should input the amount of tokens they want to swap.\
However, for the “from” token, they cannot input an amount greater than what they currently possess; otherwise, the swap cannot be executed.

**Step 2–2 set slippage tolerance ratio**

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

*DEX slippage* refers to the difference between the expected price of a trade and the actual executed price on a decentralized exchange (DEX).\
It occurs due to the changing supply and demand of assets in a liquidity pool by other users’ transaction.\
The default value for this is set at 0.1%, and users can adjust it up to a maximum of 50%.

**Step 2–3 Estimated swap result**

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

Before executing a Swap, shall we check the following details?

**Component description**

1. **You will receive**\
   The amount of tokens you will receive after the swap.
2. **Price Impact**\
   The effect of a trade on the price of a token on a decentralized exchange due to changes in supply and demand. If the pool has very low liquidity, it is recommended to make small and frequent trades.
3. **Minimum received after slippage**\
   Based on the current set slippage ratio, the minimum token amount that a user can receive.
4. **Swap Fee**\
   The swap fee imposed when executing the swap.
5. **Optimized Swap Route**\
   The most optimized swap route for the user to swap the current token.

### Step 3. Approve token <a href="#id-0cf4" id="id-0cf4"></a>

If the amount you entered for the “from” token is not approved, an approval process for the “from” token is required before the swap can be executed.

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

Please approve the amount you entered, which should be equal to or greater than the Minimum Approve Amount, in your Wallet app. If you enter a smaller amount, the approval process will be repeated until the appropriate value is entered.

### Step 4. Proceed swap <a href="#id-975f" id="id-975f"></a>

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

To proceed with the swap process, click on the “Execute Swap” button.

### Step 5. Completion page <a href="#id-9b7f" id="id-9b7f"></a>

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

The swap has been completed successfully. You can check the user’s swap transaction history by clicking on the “Transaction Details” button.

### Step 6. My history section <a href="#id-5be2" id="id-5be2"></a>

In addition, you can also view your Swap history in the “My History” section!

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

<br>


# Create Liquidity Pool

## How to Create Liquidity Pools on Tealswap <a href="#id-8f75" id="id-8f75"></a>

### Step.1 Pool List <a href="#ebd0" id="ebd0"></a>

First, please navigate to the All Pools section.

<figure><img src="/files/oStsE6V9ubw3uF2toBwQ" alt=""><figcaption><p>Create a New Liquidity Pool</p></figcaption></figure>

At the very bottom, click on the “Create a New Liquidity Pool” button.\
At this point, your Wallet must be connected to Tealswap.

### Step.2 Enter the values for liquidity pool creation <a href="#id-1322" id="id-1322"></a>

The explanations for each item are as follows.

<figure><img src="/files/ThQQmhhSAO0yzixdIJqH" alt=""><figcaption><p>Input fields</p></figcaption></figure>

**Component description**

1. **First Token Address**\
   *The address of the first token that makes up the liquidity pool.*\
   Please input a valid token address.
2. **First Token Amount**\
   *The Token amount you want to provide as initial liquidity.*\
   Please input a value that does not exceed your current balance.\
   You can enter a very small value if you prefer.\
   Users who provide liquidity in first and second token amount will receive LP Tokens, and you can check them in your Portfolio after providing liquidity to the pool.
3. **Second Token Address**\
   *The address of the second token that makes up the liquidity pool.*\
   The order of the tokens doesn’t matter, but it must be a valid token address and different from the first token.
4. **Second Token Amount**\
   *The Token amount you want to provide as initial liquidity.*\
   Please make sure to input a value that does not exceed your current balance.\
   You can enter a very small value if you prefer, it’s totally fine.
5. **Initial Liquidity Ratio**\
   Once you input the amounts for the First token and Second token, the initial ratio of the liquidity pool will be automatically calculated.\
   You can set this ratio to any value you prefer, it doesn’t matter.\
   Even if you choose an initial liquidity ratio significantly different from the market ratio, as swaps occur, the prices will converge closer to the market prices.
6. **Create Liquidity Pool**\
   If you have entered all the valid values, the execution button will be activated. Please click it, to move on to the next step.

### Step3. Token approval process <a href="#bae0" id="bae0"></a>

To create a liquidity pool at Tealswap website, an *token approval process* is required to supply the specified token amount and create the pool.

If you have already approved liquidity provision or any other actions, you will be automatically directed to create a liquidity pool step.

Shall we go through this process step by step together?

**1. Start Approve process**

<figure><img src="/files/NlUans04PC7H7Z2S7iIP" alt=""><figcaption><p>Approve window (example)</p></figcaption></figure>

If you haven’t approved the specified Token Amount for both tokens required to create the liquidity pool, you will see separate approval screens for the First token and Second token.

Please press the “Approve” button on each screen sequentially to proceed a Metamask process.

**2. Execute Metamask approve**

<figure><img src="/files/34kK33VUt1H9ma1fiubW" alt=""><figcaption><p>Metamask input window after clicking the “Approve” button (example)</p></figcaption></figure>

When you approve tokens at the metamask, please refer to **Minimum Approve Amount** vaule on the Tealswap window.

If you try to approve an amount lower than the requested value, the transaction won’t meet the required conditions for execution,\
and you’ll be asked to repeat the Approve process.

**3. Complete Token Approval**

<figure><img src="/files/9DzZq8ZcXgLfpIm7i87q" alt=""><figcaption><p>Execute “Create Liquidity Pool” action</p></figcaption></figure>

Now that the Approval process is completed, you can proceed with creating the Liquidity Pool!\
Please click the “Create Liquidity Pool” button on the screen below to proceed.

### Step4. Liquidity Pool Creation Result <a href="#b31b" id="b31b"></a>

After submitting the Liquidity Pool creation request, you will see the completion screen shortly.

<figure><img src="/files/4k80nzWphLac01bn0Ri4" alt=""><figcaption><p>Completion window of Liquidity Pool Creation (example)</p></figcaption></figure>

Once you go back to the All Pools section, you will see that the Liquidity Pool has been successfully created.

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


# Add/Remove Liquidity

## How to Add Liquidity <a href="#id-9527" id="id-9527"></a>

### Step1. Select Token to provide liquidity to the pool <a href="#id-9527" id="id-9527"></a>

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

When you select a token, the other paired token from the liquidity pool where the selected token exists will be activated.

For instance, if you choose OAS and MCHC, you’ll be supplying liquidity to the OAS-MCHC liquidity pool.

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

### Step2. Input liquidity and check expected result <a href="#id-0d2c" id="id-0d2c"></a>

When you input the liquidity for one token, the amount of the other token will also be determined according to the current pool’s token ratio.\
At this point, both token amounts should not exceed the balance you hold.

Additionally, at the bottom, you can see the estimated value of LP Tokens you will receive as a result of this liquidity provision.

### Step3. Approve <a href="#d055" id="d055"></a>

If the amount you entered for the tokens are not approved, some approval processes for the each of unapproved tokens are required before the “Add liquidity” can be executed.\
Please note that OAS, being Oasys’ native token, does not require separate approval.

<figure><img src="/files/576HuknwwyIUOUt0WwI4" alt=""><figcaption></figcaption></figure>

### Step4. Provide(Add) liquidity <a href="#cf48" id="cf48"></a>

Click the “Add liquidity” button to do liquidity provision.

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

### Step 5. Check result <a href="#e057" id="e057"></a>

You can check the processing status of your requested liquidity provision transaction on the result screen, and you can also verify it on the Oasys explorer by clicking the “Go to Explorer” button.

<figure><img src="/files/0YPpQggmobeORje1EYSh" alt=""><figcaption></figcaption></figure>

By clicking the ‘Check Portfolio’ button, users can navigate to the Portfolio section, where they can see their current liquidity provisioning status as follows:

<figure><img src="/files/3MS3i0GCBcoS7WAWD8lS" alt=""><figcaption></figcaption></figure>

**\[Component Description]**

1. The amount of tokens supplied by the user through liquidity provision (calculated based on the actual two token pair’s ratio within the pool), along with the quantity that includes LP rewards aligned with the token ratio within the pool.
2. The quantity of LP tokens that the user holds.
3. The amount of each token converted to its dollar value.

Please note that this value is calculated based on the total dollar value of the two tokens’ quantities allocated to the LP tokens that you currently hold.\
As a result, it may increase or decrease depending on the dollar value fluctuation on the token market like CoinmarketCap or Coingecko of the target tokens.\
It also may depending on the fluctuation in the quantity ratio of the two tokens within the pool.

## How to Remove liquidity at Tealswap <a href="#id-9681" id="id-9681"></a>

In Tealswap, users have the ability to remove the liquidity they have provided.\
If there have been\
swaps since the liquidity was added, when a user decides to remove liquidity, they will receive the amount of tokens equivalent to the liquidity they provided, plus any LP rewards earned during that period.

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

**\[Component Description]**

1. Selecting the liquidity pool
2. Liquidity removal Information section
3. Estimated Amounts of Two Tokens You Will Receive Upon Liquidity Removal
4. Slippage

### Step 1. Select the liquidity pool <a href="#id-731f" id="id-731f"></a>

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

### Step.2 Enter the amount to remove liquidity <a href="#id-1dd2" id="id-1dd2"></a>

Please enter the amount of LP Tokens you wish to return, which you received as compensation for providing liquidity to the selected liquidity pool. Note that users cannot remove more than the amount of LP Tokens they own.

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

Once you input this value, you can check the estimated values of the two tokens you will receive upon returning the corresponding amount of LP Tokens.\
Similarly, this value may also be updated based on the current liquidity pool’s token ratios.

### Step3. Approve <a href="#id-9c3c" id="id-9c3c"></a>

If the amount you entered for the LP tokens are not approved, an approval processes for the LP Token are required before the “Remove liquidity” can be executed.

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

### Step4. Remove Liquidity <a href="#id-327c" id="id-327c"></a>

Click the “Remove Liquidity” button to remove liquidity.

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

### Step5. Check result <a href="#id-9ba0" id="id-9ba0"></a>

You can check the processing status of your requested liquidity removal transaction on the result screen, and you can also verify it on the Oasys explorer by clicking the “Transaction Details” button.

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

The results of liquidity removal can also be viewed by clicking the “Check Portfolio” button and navigating to the Portfolio section, where users can see the details of their liquidity removal and how it has affected their overall portfolio.


# Multifarming

## **What is Multifarming?** <a href="#id-6226" id="id-6226"></a>

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

&#x20;Multifarming is short for **Mult**iple Rewards **Farming**. It’s a place where you can reinvest your LP Tokens, in other words, where you can farm again!

When you get LP token from adding liquidity on certain pool, you can farm your LP token and get the multiple reward.

The rewards will be determined by multiple Campaign holders and it will not be limited to a specific token.

## **How to Invest on Multifarming?**

### **Step 1. Start on Multifarming** <a href="#id-6226" id="id-6226"></a>

Choose a Farming Pool that interests you, then start your investment (farming)

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

### **Step 2. Input Amount to invest(farm)** <a href="#da30" id="da30"></a>

You can not Farm if you don’t have enough LP Token

<figure><img src="/files/5Tk6qiqwY3Cwq4gTd209" alt=""><figcaption></figcaption></figure>

### **Step 3. Check the result page after Multifarming** <a href="#id-7f8c" id="id-7f8c"></a>

You can see the result page after the transaction has been completed and you can also see your farm status on Portfolio menu

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

### **Step 4. Check Portfolio** <a href="#id-22ac" id="id-22ac"></a>

You can continuously monitor the results of your Multifarming investments in your Portfolio, and any accumulated rewards can be claimed from there.

You can also check the status of your Liquidity Pool investments in your Portfolio, and you can see the proportion of your currently held LP Tokens that have been used for farming.

The LP Tokens used for farming can be withdrawn permanently after you decide to stop farming.

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

Let’s also take a look at how to create a Campaign.

## How to Open Campaign <a href="#id-4827" id="id-4827"></a>

### Step 1. Get authentication to open Campaign <a href="#id-811a" id="id-811a"></a>

For security purposes, you need authentication(Whitelisting) to hold Campaign.

The Authentication(Whitelisting) is done per user wallet(EOA) address.

{% embed url="<https://app.tealswap.com/en/incentiveProgram/host/>" %}
Please include a detailed explanation of who you are and what incentive plan you have in mind.
{% endembed %}

### Step2. Open Campaign <a href="#c070" id="c070"></a>

**Step2-1. Select Pool to open Campaign**

You will choose the pool in which you want to open the Campaign to provide rewards on the related Multifarming pool.

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

**Step2–2. Select Campaign reward token to offer**

You can choose any token available for swapping on Tealswap as a reward.

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

**Step2–3. Input the amount of the token to offer this campaign**

The value you enter cannot exceed the amount of tokens you hold.

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

**Step2–4 Set the period of the Campaign**

You can set the duration for which you can open a campaign.

If you have around $5K in assets, it is recommended to set a minimum duration of about 6 months.

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

**Step2-5. Check Result**

<figure><img src="/files/63iO5LPHTpdYKp2CsdNV" alt=""><figcaption></figcaption></figure>

You can also view these results on the “See All Campaign” screen below.

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


# APR calculation and display method

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

You can check this by clicking on the APR section in the Tealswap Pool List.&#x20;

However, this value may vary depending on the range set by the user.&#x20;

Further explanation follows below.

### Reward Calculation Formula

$$
Farm,APR = \frac{Incentive,Rewards}{Deposited,TVL}\times{Conversion\ Factor}
$$

This is a simple and fair formula.

### Characteristics of V3 Liquidity

In V3, the same amount of capital can provide different levels of liquidity depending on the range within which it is deposited.

Let’s assume you’re providing $100 in liquidity for the OAS-USDC pair:

* Case 1: $100 placed in the $0.9 to $1.1 range
* Case 2: $100 placed in the $0.01 to $100 range

In Case 1, rewards are earned only when swaps occur in this narrower range, but it’s recognized as providing higher liquidity density, so rewards are greater.

In Case 2, you can earn rewards across a wider range of swaps, but with lower liquidity density, resulting in lower rewards per unit of liquidity.

### How V3 DEXes Calculate Farming APR

As explained, APR varies depending on the range within which users deposit their capital.

Each user will set their own range.

* Narrow Range: High APR, but if the price moves out of range, APR quickly drops to 0%.
* Wide Range: Steady rewards with less concern about price fluctuations, but with lower APR.

Since it’s impossible for the protocol to predict the user’s preferred range, most DEXes make an assumption.

For example, they may assume users will deposit only within +/- 5% of the current price, and calculate APR based on that assumption.

This method has major drawbacks:

* DEXes can intentionally inflate APR by basing the calculation on a narrow liquidity range.
* If the price moves out of the range, users can earn no rewards.
* Price ranges shift constantly, making static APR calculations unreliable.
* Such calculations can’t reflect a true average APR for all users.

### Solution

Tealswap strictly follows the industry standard set by Uniswap V3.

Our Multifarming feature is implemented through [Uniswap V3 Staker](https://docs.uniswap.org/contracts/v3/reference/periphery/staker/UniswapV3Staker).

As mentioned earlier, determining reward ranges is a complex task and can lead to protocols arbitrarily adjusting the calculation in their favor.

To avoid this, we’ve adopted an APR calculation that better represents an average APR for users.

Our formula is based on the total TVL of the pool and the total incentives that TVL can earn, providing a realistic and average APR, rather than an inflated one.

#### Abstract

$$
Farm,APR = \frac{Incentive,Rewards}{Deposited,TVL}\times{Conversion\ Factor}
$$

#### Detailed Explanation

$$
Farm,APR =
\frac {
\sum\_{}^{}{{Individual\ Incentive\ Reward}\times{Conversion\ Factor\ for\ 365\ days}}
}{
Deposited,TVL
}
$$

Of course, the actual APR will vary based on the user’s chosen range.

Happy Multifarming!


# Bridge (Hub Layer <-> External Chain)

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

This bridge integrates the Bridge Smart Contract developed by Celer Bridge into Tealswap

### Step1. Select Bridge Route (From/To Chain)

Please select the sending and receiving chains for the token. One of them must be the Oasys Hub Layer.

### Step2. Select Token to Transfer

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

Users can transfer regular tokens (ERC-20).

If the token being sent is not the Native Token on the From chain (for example, if the From chain is Oasys and the token is not OAS), an approval process may be required.

Please check the [approval method](/how-to-use-tealswap/approve)&#x20;

After selecting the token and entering the amount, you will be able to see the associated transaction fee.

Please be aware that there may be a minimum bridge amount configured in the Celer bridge, and the transaction fee may vary depending on the destination chain.

If you have confirmed all the necessary information for the bridge, please press the 'Execute Bridge' button.

### Step 3. Check Result

<figure><img src="/files/17YAUeMyKK5D6GieD9KZ" alt=""><figcaption></figcaption></figure>

After submitting the Bridge transaction on the From chain, you can monitor the progress on the Celer Bridge platform.

Click on 'Check Bridge Status' in the image below to easily navigate to the Celer Bridge site


# Bridge (Hub Layer <-> Verse)

This Bridge is an import of the Bridge Smart Contract developed by Oasy Team into Tealswap.

### Step1. Select Bridge Route( From/To Chain )

Please select the sending and receiving layers for the token. One of them must be the Oasys Hub Layer.

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

### Step2. Select Asset type to Transfer

Users can transfer assets in the form of either tokens (ERC-20) or non-fungible tokens (NFTs, ERC-721).

### Step3-1. Send(Bridge) Token to other Layer

After selecting the type of token, please enter the amount of the token you want to send and press the 'Execute Bridge' button.

If the token you are sending is not OAS, an approval process may be required.

Please check the [approval method ](/how-to-use-tealswap/approve)

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

### Step3-2 Send(Bridge) NFT to other layer

After selecting the type of token, please enter the amount of the token you want to send and press the 'Execute Bridge' button.

For each unique NFT asset on a single layer, the approval process may be required initially.

Please check the approval method \[here]\(Approve docs link).

Note that currently, the Oasys Hub - Verse Bridge only supports bridging NFTs of the OASYX type

### Step4. Check Result

After submitting the Bridge request and upon the confirmation of the Bridge transaction on the From Layer, you may see a screen like the one below.

However, please note that it may take some time for the Bridge transaction to be confirmed on the To Layer, where you will actually receive your assets.

If you want to check the transaction record on the From chain, please press the 'Go to Explorer' button on the screen

<figure><img src="/files/1WRPmWF05rqgcW5vQwEz" alt=""><figcaption></figcaption></figure>


# Core Contract

<table><thead><tr><th width="181">Contract</th><th>Address</th></tr></thead><tbody><tr><td>TealswapFactory</td><td>0x5200000000000000000000000000000000000018</td></tr><tr><td>TealswapRouter</td><td>0x5200000000000000000000000000000000000019</td></tr></tbody></table>


# Smart Contract

## Overall Feedback

The source code of the Tealswap contract developed by Tealswap team is easy to read and very well organized. We have to remark that contracts are well architected and all the additional features are implemented.

As a result of the code review, there was no issue found. We recommend that you stabilize your contract and analyze potential vulnerabilities through a steady code audit.

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


