# Introduction

![](/files/AcMEoN0tMRml4KOXpnY8)

Meshswap is a unique autonomous finance protocol that provides various revenue generation opportunities such as **Swap, Lend, Leverage farm, and Stake** on a Polygon network that is not possible in traditional finance. Meshswap has a structure that combines the AMM (Automated Market Maker) DEX business model prevalent in the DeFi ecosystem with the uniqueness of **Multichain Economy** and **autonomous MESH inflation distribution by MESH stakers.** This structure enables a virtuous cycle in which the MESH community’s active engagement is the growth of MESH value, the growth of the entire protocol, and higher yields for ecosystem participants.

### **Meshswap protocol participants**

* **Trader:** By paying a fee to the Meshswap pool, Traders can instantly swap tokens. 50% of the swap transaction fee is used for MESH Buyback & Burn, and the remaining 50% is distributed to Liquidity providers and Pool voters as a reward. Token prices fluctuate during a trade according to the quantity (exchange ratio) of paired assets deposited in the farming pool.<br>
* **Lender:** Lenders can easily and safely earn interest and $MESH rewards by depositing their assets into lending pools in Meshswap. Through smart contracts, the deposited assets are automatically lent to leverage farmers in leverage farming pools and its lending interest is given to Lenders as a reward. Lenders are free to deposit or withdraw their assets anytime.<br>
* **Liquidity provider:** It refers to users who deposit a pair of two coins in a farming pool in exchange for yields and borrowers who borrow assets from the lending pool to take leverage in leverage farms to **earn transaction fees and higher yields**. As the deposited assets are used for transactions generated by users with diverse needs, liquidity pools with active trading volume will generate more rewards. Under this structure, liquidity providers continue to earn high returns.<br>
* **Staker:** Users who lock up MESH for a certain period in exchange for **MESH rewards and Liquidity pool voting rights (vMESH)**. Stakers can vote on specific liquidity pools to allocate more $MESH rewards and receive more distributed transaction fees incurred in the voted pool. As Stakers are one of the most active contributors to the Meshswap ecosystem, they earn additional token airdrop rewards such as Drops and Ecopot, which are carried out by various token projects seeking interaction with the $MESH ecosystem.

### Multichain token economy of Meshswap

Meshswap - The Autonomous Finance Protocol started with KLAYswap, the largest AMM DEX on the Klaytn chain. KLAYswap is a proven global protocol that has already distributed over **$662 million (840 billion won)** in rewards to the Klaytn chain ecosystem through successful operation (as of 2021). Meshswap is a new autonomous finance protocol in Polygon, which gives a pathway to build the multi-chain economy structure with Klaytn and the future chains.

Multichain token economy is not simply replicating the same protocol to multiple chains; it is a strategy to leverage abundant users and liquidity from KLAYswap, which has already entered a mature stage, in order to increase the chain dominance of new protocols (Meshswap) quickly. Each protocol connected by the Multichain token economy creates various reward opportunities through a token economic convergence based on a wide range of user pools and liquidity that transcends chains. In addition, through these rewards, the entire ecosystem is expanded by continuously distributing the rewards to crucial protocol users (Stakers and vMESH holders in the case of Meshswap).

### New users acquisition and liquidity expansion

Meshswap quickly secures new users and liquidity by mutually influencing the liquidity of the Polygon network itself as well as native users and liquidity of various chains where the autonomous financial protocol is deployed.

### Securing demand for new transactions and creating trading volumes

Various transaction demands arise in liquidity circulation between combined ecosystems and in various compensation acquisition opportunities provided by each ecosystem. Through this process, connected ecosystems have increased liquidity in terms of diversity and scale based on assets introduced from different chains, resulting in sufficient trading volume within the protocol by meeting the various transaction needs of users mentioned earlier.

### Expanding the reward power of MESH tokens

The occurrence of high transaction volumes not only provides more pool transaction fee rewards to vMESH holders but also leads to the expansion of user communities that support MESH tokens by Buyback & Burn. This means the number of projects in Meshswap ecosystem that want to proliferate by taking additional rewards to vMESH holders through Drops or Ecopot will inevitably increase. Accordingly, MESH holders not only receive rewards from Meshswap but also acquire various existing Polygon Dapp tokens as rewards.

### **Expanding the use of MESH tokens**

MESH, the governance token, and other chains are also used as a liquidity supply resource to obtain additional rewards by entering the ecosystem. This strategy positively affects the increase in token value by increasing the demand for governance tokens of protocol connected with Mesh together.

### Interaction with multi-chain Dap**p**

The Defi ecosystem forms a money Lego system that creates new financial services on top of existing Defi products through free combinations of various open source-based protocols. This means that it is impossible for any Defi protocol to continue its operation alone, and the combination with other Dapps in the chain can strengthen its own growth as well as the financial infrastructure of the entire chain where the protocol operates. Through collaboration with Polygon's existing and new Yield Aggregators, Stable coins, and Lending protocols, Meshswap will be able to create new financial opportunities.

In addition, the integration with Orbit Bridge, a main cross-chain bridge with more than $700M in total value locked, enables the support of safe asset movement between heterogeneous chains and creates a stable trading environment where various types of assets such as XRP, can be utilized on DeFi protocols in Polygon ecosystem.

Meshswap is based on a multi-chain token economy that mutually takes leverage out token economy of other autonomous finance protocols (AMM DEX) deployed in heterogeneous chains. Through users' engagement in various reward acquisition opportunities, the trading demand arises over the liquidity circulation in Polygon mainnet, associated foundations (such as Klaytn, etc), and Dapps.

**Meshswap awaits your participation.**

In Meshswap, a complete on-chain instant swap protocol that offers an immediate token trading environment, users with a governance token MESH have the right to determine significant parameters of Meshswap's policies and directions for service improvement. And users receive amply rewards for their contribution to protocol growth such as transaction fees, MESH incentives, and token airdrops.


# What is MESH?

​

![](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FM1gzBNB1aJtiOiiZpgC5%2Fuploads%2FTrjpi3DxG3Ioey81Cru6%2FToken%20Image.png?alt=media\&token=7bab7461-656c-4c0e-ae76-f546ec2be2db)

​What makes Meshswap different from every other farm? It’s **MESH.**

#### No private sales, No presale, Community-driven: of the MESH Community, by the MESH Community, for the MESH Community. <a href="#no-private-sales-no-presale-community-driven-of-the-usdmesh-community-by-the-usdmesh-community-for-t" id="no-private-sales-no-presale-community-driven-of-the-usdmesh-community-by-the-usdmesh-community-for-t"></a>

* **Ticker: MESH**
* **Contract address:** [0x82362Ec182Db3Cf7829014Bc61E9BE8a2E82868a](https://polygonscan.com/token/0x82362ec182db3cf7829014bc61e9be8a2e82868a)​
* **Chain: Polygon**

### **Use cases** <a href="#use-cases" id="use-cases"></a>

MESH can be distributed as a reward by participating in Lending, Liquidity Supply, and Staking, or obtained through trading. The obtained MESH can be used as follows.‌

* Users can receive inflation compensation by using MESH for Yield farm.
* Users can participate in MESH staking and receive MESH inflation compensation.
* Users can participate in the vote to determine the MESH distribution rate of the MESH rewarding pool.
* vMESH holders can receive free airdrop tokens in farming and Ecopot projects.
* MESH can be used for governance voting related to the protocol's agenda. (Scheduled to be updated)
* MESH can be used to pay for creating a new farming pool (The cost of generating pool are said to be burnt).

MESH is not just the incentive booster of the Meshswap ecosystem but also the governance token which has a core authority to determine MESH reward distribution. The total supply of MESH is 126,144,000 and it will undergo halving events every year. MESH will be distributed in the form of a fair launch in which all market participants can only acquire through the liquidity supply in the Meshswap protocol, without private sale or presale.​

### **​Details** <a href="#details" id="details"></a>

{% content-ref url="/pages/UntNW6RyINjQpe9l74sA" %}
[MESH Allocation](/what-is-mesh/mesh-allocation)
{% endcontent-ref %}

{% content-ref url="/pages/dFzx3RtdXoGBATXNzTBQ" %}
[MESH Tokenomics](/what-is-mesh/mesh-tokenomics)
{% endcontent-ref %}


# MESH Allocation

* **Total supply**(\*): 126,144,000 MESH
* **Initial supply**(\*\*): 1,500,000 MESH
* **Halving**: A halving occurs every year, and the daily inflation rate is halved every 15,768 thousand blocks after yielding starts (Based on Polygon block time of 2 seconds).
* **1 Day Inflation**: 172,800 MESH (4MESH/block) inflation occurs in the first year, followed by the annual halving inflation. The following chart informs the first 6 years of allocation.

<table><thead><tr><th>Year</th><th width="150">Daily Volume</th><th>Yearly Volume</th><th>Total Volume</th><th>Notes</th></tr></thead><tbody><tr><td>1</td><td>172,800 MESH</td><td>63,072,000 MESH</td><td>63,072,000 MESH</td><td></td></tr><tr><td>2</td><td>86,400 MESH</td><td>31,536,000 MESH</td><td>94,608,000 MESH</td><td>halving</td></tr><tr><td>3</td><td>43,200 MESH</td><td>15,768,000 MESH</td><td>110,376,000 MESH</td><td>halving</td></tr><tr><td>4</td><td>21,600 MESH</td><td>7,884,000 MESH</td><td>118,260,000 MESH</td><td>halving</td></tr><tr><td>5</td><td>10,800 MESH</td><td>3,942,000 MESH</td><td>122,202,000 MESH</td><td>halving</td></tr><tr><td>6</td><td>5,400 MESH</td><td>1,971,000 MESH</td><td>124,173,000 MESH</td><td>halving</td></tr></tbody></table>

(\*) MESH inflation starts at zero and is distributed to liquidity providers only through liquidity mining. MESH fair launch grants early participants to take equal opportunity and make the right decisions through the governance voting system.

(\*\*) Initial supply will be fully utilized for MESH airdrops. Refer to the MESH distribution below. &#x20;

### **MESH distribution**

#### **Initial supply**

![](/files/1S9wlXB4ydYQOr21tkcv)

To build the initial Meshswap ecosystem, 1,500,000 MESH will be fully utilized for MESH airdrops to potential Polygon and Klaytn users, marketing, and LP incentives in the key liquidity farming pools before the full-scale yield farming begins. Through these events, it will create a stable trading environment for yield farming by securing potential users to generate a rapid inflow and liquidity expansion in the Meshswap ecosystem.

* **Polygon on-chain user airdrop** (26.67%) : It is for the existing Polygon DeFi ecosystem users.
* **MATIC on-chain holder airdrop** (16.67%): It is for Polygon on-chain MATIC holders
* **vKSP holder airdrop** (26.67%): It is for Klayswap KSP stakers to leverage their liquidity from the predecessor of Meshswap, Klayswap.\
  \* Check out more details of Klaytn AMM-based DEX, Klayswap[ here](https://klayswap.com/).&#x20;
* **Marketing** (13.33%) : It is for the initial user acquisition and the usage will be transparently disclosed before the protocol launch. If the details are not fully finalized by then, however, it will be burned.
* **LP incentive** (13.33%): Incentives for the fast liquidity inflow of key farming pools in the ecosystem.
* **Initial farming pool liquidity** (3.33%): It is for creating an initial $MESH paired farming pool.

#### **Final token distribution**

![](/files/BTwy8B5QYiMvG7E9kQ5l)

Once Meshswap officially launches, full-scale yield farming will begin. Daily MESH Inflation will be distributed to the entire ecosystem daily at the same rate accordingly:

* **Farm** (80%): It is for lenders, general/Leverage farmers, and stakers in Meshswap protocol.
* **vKSP Holder** (5%): It is for core Klayswap users to encourage the circulation of blockchain ecosystems in the long term.
* **Development** (5%): It is for the continuous technology development and maintenance Treasury
* **Treasury** (5%): It is the business fund for emergencies and the future Meshswap ecosystem development.
* **Strategic Partner** (5%): It is the incentive fund for potential Polygon Dapp partners


# MESH Tokenomics

### Emission

MESH is a strong incentive reward given to ecosystem participants to provide more liquidity to Meshswap. According to the previously determined inflation rate, yield is distributed among Lenders, Liquidity providers (Lending / Leveraged farming pool), and MESH Stakers.

* **Lender** deposits assets in the lending pool to lend their supply to leverage farmers in the leveraged farming pool. Lenders are rewarded with distributed MESH in return for their contributions.
* **Liquidity provider** deposits their assets in the farming pool for traders' trading. Liquidity providers are rewarded with distributed MESH in return for their contributions.
* **Staker** is rewarded with distributed MESH in return for contributing to the stabilization of MESH circulation by staking MESH for a certain period.

The reward distribution ratio for each ecosystem participant can be adjusted through governance voting. For example, the table below shows MESH inflation distributed to each participant based on the initial distribution ratio (\*\*) and the first year.

| Distribution target | Distribution ratio by block (%) | Distribution per block (4 MESH) | Daily distribution   (43,200 blocks) |
| ------------------- | ------------------------------- | ------------------------------- | ------------------------------------ |
| Lender              | 10% \*\*                        | 0.32 MESH                       | 13,824 MESH                          |
| Liquidity provider  | 50% \*\*                        | 1.60 MESH                       | 69,120 MESH                          |
| MESH Staker         | 40% \*\*                        | 1.28 MESH                       | 55,296 MESH                          |
| **Farm Total**      | **100%**                        | **3.20 MESH**                   | **138,240 MESH**                     |

### **Deflation mechanism**

The Meshswap protocol has a flexible token economy structure that can control circulation and maximize the value of MESH through the MESH Buyback & Burn mechanism, utilizing the entire transaction fee, based on the AMM basic business model.

* **50% of the transaction fees generated from all liquidity pools** in Meshswap will be **used to burn MESH.**
* Meshswap enables an organic virtuous cycle among Lenders, Liquidity providers, and Traders within one ecosystem.
* Leverage farmer borrows more assets from a lending pool for efficient capital utilization and explosive rewards.
* Accordingly, **more deposit interest is distributed to Lenders (increasing Deposit APR)**, enabling lending pool liquidity inflow.
* Abundant supply in lending pools facilitates **lower lending rates (lower Borrow APR), and leverage farm activation** that builds a rich liquidity environment within the protocol.
* The protocol's abundant liquidity meets **the greater transaction demand**, so the protocol incurs **more transaction fees**.
* **As the transaction fee increases, more MESH is burned to form a structure in which the value of MESH continues to rise.**
* In addition to **Buyback & Burn** using pool transaction fees, MESH gets burned under the following mechanisms:\
  ＊**Burned by liquidity pool creation**: Used to create a new farming pool. The cost will be burned.\
  ＊**Burned by Governance Voting Registration**: The cost of registering a Governance Proposal is 500 MESH, which will be burned.

### MESH inflation redistribution

Since Meshswap's reward distribution is directly related to MESH value rise and the overall growth of the protocol, it is important to be well distributed among ecosystem participants, especially liquidity providers. **Only greater MESH reward allocation to healthy liquidity farming pools with high transactions** can raise MESH in value due to its scarcity under the MESH Buy Back & Burn (deflection) system. And as the valuable MESH is distributed to liquidity providers in individual liquidity pools, it brings a synergy effect to increase liquidity size, volume, and further expansion of TVL across Meshswap.

This unique token economics solves the limitations of other existing AMM Exchange Protocols’ Yield Farming; the centralized structure of incentive distribution and the decline in profitability due to protocol participants' expansion.

(1) Through the liquidity pool voting system, **MESH Staker can directly decide which farming pools to generate more yields**. Voting rights (vMESH) are obtained through MESH staking.

(2) MESH reward distribution ratio is determined by the objective measure of each liquidity pool’s contribution to the rise of MESH value and the total index of burned MESH used as a transaction fee in the liquidity pool. And this MESH inflation redistribution structure increases the value of MESH which is directly linked to the profits of the MESH Staker DAO. Through this structure, it promotes protocol growth by more efficiently utilizing limited MESH resources.


# MESH Redistribution Policy

Meshswap distributes MESH to each farming pool based on the following criteria:

### **(1) Adjustment of MESH inflation through governance voting**

80% of MESH inflation is distributed to Lenders, Liquidity providers, and MESH Stakers who are the key contributors to the Meshswap ecosystem. The reward distribution ratio of each farming pool can be adjusted through the DAO governance vote.‌ The table below is an example of MESH inflation distributed to each participant in the first year based on the initial distribution ratio (\*\*).

| Distribution target | Distribution ratio by block (%) | Distribution per block (4 MESH) | Daily distribution (43,200 blocks) |
| ------------------- | ------------------------------- | ------------------------------- | ---------------------------------- |
| Lender              | 10%\*\*                         | 0.32 MESH                       | 13,824 MESH                        |
| Liquidity provider  | 50%\*\*                         | 1.60 MESH                       | 69,120 MESH                        |
| MESH staker         | 40%\*\*                         | 1.28 MESH                       | 55,296 MESH                        |
| **Total**           | **100%**                        | **3.20 MESH**                   | **138,240 MESH**                   |

### **(2) Governance voting process for Grade C assets**

Meshswap governance classifies token levels with Meshswap ecosystem into the following three categories. Through governance agenda voting, **the DAO decides which type of token is qualified to receive an additional MESH incentive**.

Even for Grade B assets that have passed governance once, they are reviewed by the DAO governance through voting to maintain their qualifications every 3 month (The governance voting process is described in detail in the Governance section).

**A. MESH**

* As a governance token that plays a key role in Meshswap, active farming pools paired with MESH can increase the MESH value by reducing (temporary freezing) the MESH distribution volume.
* Farming pools paired with MESH provide MESH rewards to increase MESH demand, leading to a MESH price stabilization.

**B. Grade A assets**

* It refers to the major token with a market cap at a certain level and being listed in main exchanges with high accessibility, big holder community, and a large volume of liquidity backed by the public
* Securing these major assets to Meshswap’s ecosystem brings along with the public's huge transaction, new liquidity inflow and drives higher MESH value through MESH Buyback & Burn.
* Through this process, Meshswap and MESH can be exposed to the major asset community, creating a strong public-based market dominance.

**C. Goverment-Passed Assets (Grade B assets)**

* The evaluation of Grade C tokens is a bit of a grey area where it is difficult to access the current value of teams, technologies, and communities.  Hence, decisions are made on whether to participate in the ecosystem by the judgment (governance vote) of DAO, a strong supporter of Meshswap and MESH.

### **(3)** Reflecting the weight of each pair in the farming pool

Each farming pool is classified according to the type of paired asset as follows, and **the DAO adjusts the weight of each pair through voting**. Pairwise weights are applied to the user pool votes and MESH buyback metrics aggregated by pair. () parentheses are the initial weight of each item, which can be changed through governance voting.

**A. MESH Core pair (8)**: A pair of MESH + a major asset

**B. Core pair (4)**: A pair of major assets

**C. MESH Community pair (2):** A pair of MESH + an asset passing through governance

**D. Community pair (1)**: A pair of a major + an asset passing through governance

### **(4) MESH distribution ratio automation**

Meshswap governance evaluates each farming pools’ contribution and growth potential under **the automated MESH distribution rate system** that comprehensively reflects **MESH buyback quantities and user pool voting**. DAO adjusts the detailed reflection ratio of the two items through voting. () parentheses are the initial reflection ratio of each item and can be changed through governance voting.

**A. MESH buyback quantity (50%)**

* The clearest indicator that measures the degree of contribution to Meshswap and MESH is **the volume of transactions** and the MESH buyback quantity functions as an objective indicator that measures the volume in a continuous manner.
* Smart contracts automatically buyback MESH every hour with the transaction fees generated from each farming pool, and the daily MESH buyback volume accumulated per farming pool gets burned once a day, and counted as a daily indicator.
* To reflect both short-term and long-term indicators, we reflect all MESH buyback quantities; 7th day (15%), 14th day (15%), 30th day (20%).

**B. User pool vote (50%)**

* Evaluation of grey areas mentioned earlier where automated aggregation cannot perfectly cover, such as trustworthiness and contents of tokens, and future growth potential of products, are supplemented through user pool voting.

### (5) Voting policy on passing governance

* Grade C assets (Grade C token) can be upgraded to governance passed assets (Grade B assets) through governance agenda voting (MESH distribution qualifications acquired).
* At this time, governance assets automatically vote to maintain their qualifications every three months.
* Through a smart contract, a maintenance vote will be automatically generated 7 days before the end of the MESH distribution qualification for the token, and DAO's vote will be in progress.
* According to the existing governance voting approval policy criteria, the token grade will be maintained for another three months after the asset is approved (passed). If it gets rejected (canceled), related pairs in farming pools will be excluded from MESH distribution from the time the code is reflected.
* Apart from the maintenance vote, if a MESH distribution withdrawal is put to a vote and approved, related pairs in farming pools will be excluded from the MESH distribution.

### (6) MESH distribution ratio reflection&#x20;

**Aggregation of user pool votes**&#x20;

* The number of votes polled is calculated based on snapshots at 9 a.m. (UTC+9) every day.
* After voting for a particular farming pool is completed, it can be withdrawn after the next snapshot point.
* If MESH reward pool has been changed to the Transaction fee reward pool, withdrawals can be made before the next snapshot point.
* If the level of paired assets in the farming pool has been downgraded through MESH distribution withdrawal vote, withdrawals can be made before the next snapshot point.

**Aggregation of Buyback MESH quantity**

* Smart contracts automatically buy back MESH every hour by using transaction fees generated from each farming pool.
* MESH buyback quantity accumulated for 24 hours (9 a.m. every day (UTC+9) to 9 a.m. the day after (UTC+9)) for each pair gets confirmed as MESH buyback quantity per day, and burned once a day.
* MESH buyback quantities are aggregated by summing the quantities of 7th day (15%), 14th day (15%), and 30th day (20%).
* For recently created farming pools, MESH buyback quantity aggregate criteria would not be met on the 14th and 30th due to the short period of the pool existing period. In this case, MESH buyback quantity aggregated from the creation of the pair to the present would be the norm.
* When the MESH buyback quantity by date of the pair, which has been 3 days after its formation, is as follows, the aggregate of MESH buyback quantity indexes on the 7th, 14th, and 30th are as follows.\
  ＊ **The buybacks quantities by date**\
  &#x20;    1st: 10 MESH /2nd: 10 MESH / 3rd: 20 MESH\
  ＊ **MESH buyback quantity indexes of pair for 7th / 14th / 30th day**\
  &#x20;    7th day: 10 MESH / 14th day: 40 MESH (10+10+20) / 30th day: 40 MESH (10+10+20)


# Create a Wallet

## Wallet

To use Meshswap, you must first create your crypto wallet. In the DeFi protocol, a personal crypto wallet is your account. You can make transactions using cryptocurrency such as deposits, withdrawals, and swaps by connecting your wallet to Meshswap.<br>

### :feet: Step 1) What wallets work on Meshswap?

Meshswap currently supports the following crypto wallets. (based on May 3rd, 2022)

| Wallet                | Desktop | Mobile |
| --------------------- | :-----: | :----: |
| Metamask              |   :o:   |   :o:  |
| D'CENT                |   :x:   |   :o:  |
| Wallet Connect        |   :o:   |   :o:  |
| Coinbase Wallet       |   :o:   |   :o:  |
| Portis                |   :o:   |   :o:  |
| Fortmatic             |   :o:   |   :o:  |
| Huobi Wallet          |   :x:   |   :o:  |
| O3 Cross-chain Wallet |   :x:   |   :o:  |

### :feet: Step 2) Select a wallet

Refer to the guide below to select and create a crypto wallet you want to use.

{% tabs %}
{% tab title="Metamask" %}
MetaMask equips you with a key vault, secure login, token wallet, and token exchange—everything you need to manage your digital assets. Over 21 million users worldwide trust and use Metamask.

:black\_large\_square: Features:

:black\_small\_square: Create and manage accounts with seed phrase

:black\_small\_square: Supports for most types of networks and tokens

:black\_large\_square: Official Link: <https://metamask.io/>
{% endtab %}

{% tab title="D'CENT" %}
Descent helps you keep your assets in physical attack-resistant hardware storage used by the financial sector. Users can use various functions such as cryptocurrency purchase, bridge, cross-chain swap, and stacking in the Descent app.

:black\_large\_square: Features:

:black\_small\_square: Create and manage accounts with email and password

:black\_small\_square: Biometric wallet, card wallet and software wallet can be managed in one D’CENT mobile app.

:black\_small\_square: Supports 40 types of blockchains

:black\_large\_square: Official Link: <https://dcentwallet.com/>
{% endtab %}

{% tab title="Wallet Connect" %}
Wallet Connect is an open source protocol for connecting decentralized applications to mobile wallets with QR code scanning or deep linking. Wallet Connect is also multi-chain. You can connect to multiple wallets and send transactions to multiple chains at the same time without having to switch chains.

:black\_large\_square: Features:

:black\_small\_square: Not a wallet app, a protocol that supports connections between wallets and Dapps&#x20;

:black\_small\_square: Supports convenient connection with QR code on mobile

:black\_small\_square: Supports over 100 types of wallets

:black\_large\_square: Supported wallets: [https://walletconnect.com/registry?type=wallet](<https://walletconnect.com/registry?type=wallet&#xD;&#xA;>)

:black\_large\_square: Official Link: <https://walletconnect.com/>
{% endtab %}

{% tab title="Coinbase Wallet" %}
Coinbase Wallet is a cryptocurrency wallet that allows you to store both cryptocurrencies and NFTs in one place. It supports all ERC-20 tokens, Bitcoin, XRP and many other types of coins.

:black\_large\_square: Features:

:black\_small\_square: Create and manage accounts with just a user ID and simple authentication\
&#x20;    (PIN number, fingerprint)

:black\_small\_square: Store all of your crypto and NFTs in one place

:black\_small\_square: Support for hundreds of thousands of tokens and a whole world of Dapps

:black\_small\_square: Protect your digital assets with industry-leading security

:black\_large\_square: Official Link: <https://www.coinbase.com/wallet>
{% endtab %}

{% tab title="Portis" %}
Portis provides simple and familiar ways to onboard and use applications. This wallet is beginner-friendly, so you can set up an account without getting familiar with private keys, seed phrases, and other technical details. In addition, since Fortis supports multi-chain, it supports other blockchain networks such as Bitcoin, Ethereum, and Polygon.

:black\_large\_square: Features:

:black\_small\_square: Create and manage accounts with email and password

:black\_small\_square: Does not require seed phrase

:black\_small\_square: Does not require any installations such as an app or third-party extensions

:black\_small\_square: Supports multiple blockchains with a single account

:black\_small\_square: Automatically detects which network the current Dapp supports and changes RPC networks

:black\_large\_square: Official Link: <https://www.portis.io/>
{% endtab %}

{% tab title="Fortmatic" %}
Fortmatic can access their Ethereum app from anywhere. No more browser extenstions and seed phrases. And since Fortmatic does not require any specific app or browser extension, it is more accessible and user-friendly compared to other cryptocurrency wallets, especially for non-technical users.

:black\_large\_square: Features:

:black\_small\_square: Create and manage accounts with email and password

:black\_small\_square: Does not require seed phrase

:black\_small\_square: Does not require any installations such as an app or third-party extensions

:black\_small\_square: Supports Multi-factor authentication: OTP code, device 2FA, recovery email, etc. Supports customizable widget UI

:black\_large\_square: Official Link: <https://fortmatic.com/>
{% endtab %}

{% tab title="Huobi Wallet" %}
Huobi Wallet offers the most advanced technologies to safeguard users assets. Users can easily manage assets on multiple chains and also easily explore the DeFi world.

:black\_large\_square: Features:

:black\_small\_square: Create and manage accounts simple and straightforward

:black\_small\_square: Multi-Chain support: +20 types including BTC, ETH, HECO, XRP, MATIC and more

:black\_small\_square: Supports Cross-chain swaps among 6 public chains with iSwap integration

:black\_small\_square: DeFi’s gateway: Full coverage of various DeFi protocols and Dapps

:black\_large\_square: Official Link: <https://www.huobiwallet.com/en/>
{% endtab %}

{% tab title="O3 Cross-chain Wallet" %}
A 100% non-custodial and multi-chain wallet with a friendly interface and high security. Aim to build a leading crypto wallet to make exchange, stake, storage & buy simple and safe. As the earliest light wallet in Neo ecology. We currently support Bitcoin, Ethereum, Neo, Ontology, Polkadot, Binance Smart Chain, and Huobi ECO Chain.\
\
​:black\_large\_square: Features:​​

:black\_small\_square: Safe and reliable digital asset management service

:black\_small\_square: Handheld cross-chain DEX aggregator

:black\_small\_square: 3-in-1 Auto-shift cross-chain entry

​​​:black\_large\_square: Official Link: <https://o3.network/#/wallet>&#x20;
{% endtab %}
{% endtabs %}

:warning: Please be extremely careful with how you handle your private keys. Giving your private keys to someone will give them full access to your coins! Only use your private key with applications you trust and can verify are legitimate!

:warning: NEVER, in any situation, should you ever give someone your private key or recovery phrase ("seed phrase"). This will give someone complete access to your crypto! The genuine Meshswap site and staff will never ask you to input your seed phrase.


# Add Polygon Network & Tokens

### Guide for Adding Polygon Network

Since Meshswap is a decentralized application running on the Polygon network, you need to set the network of your personal wallet to Polygon (or Matic Network).

The network is automatically added when you first connect your wallet to Meshswap. If the network addition does not work properly, however, you can manually add the network.

| Network Name:                 | Matic Mainnet                                                                               |
| ----------------------------- | ------------------------------------------------------------------------------------------- |
| RPC URL:                      | [https://rpc-mainnet.maticvigil.com/&#xD;](<https://rpc-mainnet.maticvigil.com/&#xD;&#xA;>) |
| Chain ID:                     | 137                                                                                         |
| Currency Symbol(optional):    | MATIC                                                                                       |
| Block Explorer URL(optional): | <https://explorer.matic.network/>                                                           |

### :heavy\_plus\_sign:Adding Polygon network in your crypto wallet

To learn more about how to add Polygon network information to your wallet, please check the guide for each wallet.

| Wallet                                                                                      | Guide Link for Adding Networks                                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Metamask                                                                                    | <https://metamask.zendesk.com/hc/en-us/articles/360043227612-How-to-add-a-custom-network-RPC>                                                                                                                            |
| D'CENT                                                                                      | <p>(Switch only)</p><p>\<a href="<https://userguide.dcentwallet.com/native-service/dapp-browser/switch-blockchain-network>                                                                                               |
| "><https://userguide.dcentwallet.com/native-service/dapp-browser/switch-blockchain-network> |                                                                                                                                                                                                                          |
| </a></p>                                                                                    |                                                                                                                                                                                                                          |
| Coinbase Wallet                                                                             | <p><a href="https://www.coinbase.com/wallet/getting-started-mobile"><https://www.coinbase.com/wallet/getting-started-mobile></a></p><p>(Please read the 'Using Layer 2 networks' section at the bottom of the page.)</p> |
| Portis                                                                                      | automatically shows the relevant networks to users                                                                                                                                                                       |
| Fortmatic                                                                                   | <https://fortmatic.zendesk.com/hc/en-us/articles/4409653988109-Accessing-Funds-on-Polygon-MATIC-Network>                                                                                                                 |
| Huobi Wallet                                                                                | <https://support.huobiwallet.io/hc/en-us/articles/4403651240729-How-to-Create-Import-Polygon-Matic-Address-on-Huobi-Wallet->                                                                                             |

### :heavy\_plus\_sign:Adding new tokens in your crypto wallet &#x20;

In case that new token trading info is not visible in your wallet, you must manually add the token information to your wallet.

To add new token information to your wallet, see the following guidelines.

| Wallet          | Guide Link for Adding Tokens                                                          |
| --------------- | ------------------------------------------------------------------------------------- |
| Metamask        | <https://metamask.zendesk.com/hc/en-us/articles/360015489031-How-to-View-Your-Tokens> |
| D'CENT          | (Mobile App) <https://userguide.dcentwallet.com/mobile-app/create-account>            |
| Coinbase Wallet | automatically shows the relevant tokens to users                                      |
| Portis          | automatically shows the relevant tokens to users                                      |
| Fortmatic       | automatically shows the relevant tokens to users                                      |
| Huobi Wallet    | <https://support.huobiwallet.io/hc/en-us/articles/360000135262-How-to-add-tokens->    |


# How to move your assets to wallet

Major assets can be utilized in Meshswap, such as MATIC, XRP, ETH, WBTC, USDC, USDT, and DAI, and can be freely used for services (Swap Lend, Farm).

To deposit assets in Meshswap, you must first transfer the assets you have on the exchange to your personal wallet on the Polygon network.

### How to move your asset to wallet

{% content-ref url="/pages/KENiP7gzW1kExB86aXUE" %}
[Transferring MATIC](/get-started/how-to-move-your-assets-to-wallet/transferring-matic)
{% endcontent-ref %}

{% content-ref url="/pages/w6WxURZRGw8V8QWGf6po" %}
[How to get WETH, MATIC, USDC, USDT, DAI](/get-started/how-to-move-your-assets-to-wallet/how-to-get-weth-matic-usdc-usdt-dai)
{% endcontent-ref %}

{% content-ref url="/pages/gEtUCgBg7NL6AnOcWHeG" %}
[How to get oETH, oMATIC, oUSDC, oUSDT, oDAI](/get-started/how-to-move-your-assets-to-wallet/how-to-get-oeth-omatic-ousdc-ousdt-odai)
{% endcontent-ref %}

{% content-ref url="/pages/rSDf2J5DdVxcJTsrHQkc" %}
[XRP: The Quickest and easiest way to transfer your asset](/get-started/how-to-move-your-assets-to-wallet/xrp-the-quickest-and-easiest-way-to-transfer-your-asset)
{% endcontent-ref %}


# Transferring MATIC

**What’s MATIC?**&#x20;

MATIC is the native asset used as a transaction fee in the Polygon network. In order to make trading transactions on Meshswap, you must have a certain amount of MATIC in your Polygon blockchain wallet. This is because a fee (MATIC) for executing a transaction on Polygon is generated and is deducted from the MATIC Balance of the user's wallet.&#x20;

Did you purchase and hold MATIC on a centralized exchange? In order to transfer the MATIC held by the centralized exchange to your personal wallet, you must first check the network supported by the exchange. In general, major exchanges support two networks, Polygon and Ethereum (ERC-20), for MATIC deposits and withdrawals. However, the networks supported by each exchange are different, so you should check the supported networks before depositing and withdrawing.

#### Types of MATIC deposits and withdrawals network supported by exchange

<table><thead><tr><th width="439.7548307037759">Supported Network</th><th>List</th></tr></thead><tbody><tr><td> both Polygon and ETH (ERC-20) networks</td><td>Binance, Kucoin, Gate.io</td></tr><tr><td>Only ETH (ERC-20) network</td><td>Coinbase, OKX, Upbit, Bithumb, Coinone</td></tr></tbody></table>

:warning: When sending MATIC to a personal wallet, please make sure that the exchange supports withdrawals to the network. When depositing and withdrawing assets that are not supported by the network, it is treated as an incorrect deposit and withdrawal and cannot be recovered.

:warning: This information may be updated from time to time so please double-check centralized exchanges’ supporting network before making MATIC transaction.

{% content-ref url="/pages/nbZnOTMWwtJC2FInWDuk" %}
[\[Binance, Kucoin, Gate.io\] How to move MATIC from CEX to Wallet 1](/get-started/how-to-move-your-assets-to-wallet/transferring-matic/binance-kucoin-gate.io-how-to-move-matic-from-cex-to-wallet-1)
{% endcontent-ref %}

{% content-ref url="/pages/O1BRh1W5Za69rIiEXBRE" %}
[\[Coinbase, OKX, Upbit, Bithumb, Coinone\] How to move MATIC to Wallet 2](/get-started/how-to-move-your-assets-to-wallet/transferring-matic/coinbase-okx-upbit-bithumb-coinone-how-to-move-matic-to-wallet-2)
{% endcontent-ref %}

{% content-ref url="/pages/rzFcJLvkYJLJjQr8zf8g" %}
[\[Polygon Bridge\] How to move MATIC to Wallet 3](/get-started/how-to-move-your-assets-to-wallet/transferring-matic/polygon-bridge-how-to-move-matic-to-wallet-3)
{% endcontent-ref %}


# \[Binance, Kucoin, Gate.io] How to move MATIC from CEX to Wallet 1

### Types of MATIC deposits and withdrawals network supported by exchange

<table><thead><tr><th width="330.54639175257734">Supports both Polygon and ETH (ERC-20) networks</th><th>Supports Only ETH (ERC-20) network</th></tr></thead><tbody><tr><td>Binance, Kucoin, Gate.io</td><td>Coinbase, OKX, Upbit, Bithumb, Coinone</td></tr></tbody></table>

:warning: When sending MATIC to a personal wallet, please make sure that the exchange supports withdrawals to the network. When depositing and withdrawing assets that are not supported by the network, it is treated as an incorrect deposit and withdrawal and cannot be recovered.

:warning: This information may be updated from time to time so please double-check centralized exchanges’ supporting network before making MATIC transaction.

### How to move MATIC from Centralized Exchange (CEX)

![](https://lh6.googleusercontent.com/3WTexM8TIW4MNMzHD1Ds6n0EUw5PlqcD1jpWj5n9PHB1dUsjuUZGx44UGgkHidCgVdgeghdfi-b4T4OydqQsy4mntAWkRaMBnNfuAldjehqOuNz9WV7j-RP9kK2jq2kSssx5NIPTGO17i9RCUw)

If you have MATIC on an exchange such as **Binance, gate io, Huobi**, or **Kucoin**, you can immediately transfer it to your personal wallet that supports the Polygon network. One thing to note here is that withdrawals must be made to a wallet address that supports the Polygon network, such as a Metamask, and the **withdrawal network must be set to ‘Polygon.’**\
&#x20;The following withdrawal guideline is based on Binance.

● **Eligible assets:** MATIC (Polygon)

● **Supported Exchanges:** Binance, Kucoin, Gate.io

● **Deposit procedure:**

&#x20;   1\) To withdraw MATIC from CEX, select “Polygon network”

&#x20;   2\) Send MATIC (Polygon) to wallet

&#x20;   3\) Transfer complete

&#x20;   4\) Ready to deposit on the MATIC paired farming pool

### Withdrawal Procedure

① Transfer MATIC (Polygon network) token from Binance to My Private Crypto Wallet

**1. Purchase of MATIC on Centralized Exchange**

Purchase MATIC on a centralized exchange that offers Polygon network such as Binance, Kucoin, and Gate.io.

![](https://lh5.googleusercontent.com/AK3XjsAawkuAFq-y_w8eOCuJJnWsBToXiIZhpv3HGo0_hmNXHKDqWiX9UzQB_7M-PnVLZkO4ZeHe94c9pKFWPc-Ldbykb00NWPZAlk8Nl8Hk7NoAfc0-5eaYnd74Ea7UI9ePKw4F4RH4PRl-aw)

**2. Click “MATIC”** in the Binance 'Spot' menu

Search MATIC and click on the icon in the Binance 'Spot' menu.

![](https://lh6.googleusercontent.com/PgMIuE1Dpg6GSDTM695TsL5Afj8VAvXp71C687MWwlYaf6ghKAekMW_xRpNG5vTsLuiNGdcSb8qbZcM0WmJ_tGSrdSfL_f1_DVQHjYOyNjDw8JR1XPYL6wBJvFdRVFDStS39e_nrT5tmusSZGQ)![](https://lh5.googleusercontent.com/xwLn8_vLFgfkTuu-oI28eolEilD6ydCr8dTWFrutjT3qDKevm9hiFiPAWhtcb1dJ7TJ3cqTZjgRIDH37_yHMKToM8YHJHxUX_-i9ApV_1IbH2yxTx8gtZtSz2R6LndJXk5ZI9zG8GAkV-TVdFg)

**3. Click the withdraw button**

Click the \[Withdraw] button in the MATIC info window.

![](https://lh6.googleusercontent.com/JX9fejRE5rutNnBG05FbcfFAEnmWU29O_3SUwysdd0Z_o5gxrVxslNMZYtaiNNZuO7gOBoNYaeqvqv88NmWOYWT3Jk-Ywu4rqAiLprr5ILSVc9NhjsXFCjLrKSMbo2ybE9IR3mzq5846fCfnwQ)

**4. Select a transaction method**

Select \[Send via Crypto Network] in the pop-up window

![](https://lh5.googleusercontent.com/UvIfJdAPVDZQkpMFjf1WofTbkTBtTIs_G9FHc_mfelR3aehfr-vBnTg1PL7vVrD51ANQe9__ahHe7pQa5vzDgYGJ7Geo6043QjEkjISk0bWH8VV4snZzooo2xQbUY6kC04pUR4cCK_e54gUMEQ)

**5. Fill in MATIC transaction related informatio**

Enter your crypto wallet address and the amount you want, then click the \[Withdraw] button.

![](https://lh3.googleusercontent.com/qZSCBQENPrAG9TpToiF7UI06DBBteFS7t1-UGDqS3UZuNnngZBgT0MdQGMb14SdFM-665ztY34hBRYkQt-afdxhpSlrrIPCZywcDYH0ZruXcWnPVKK6O4YfGbPaYASEPi2TJouig1d5RVKBc4g)

**6. Check transfer information**

Check the transfer-related information (address, network, coin type, coin quantity, fee, etc.) and click the \[Confirm] button.

![](https://lh6.googleusercontent.com/rN17cy0L7Ec9yJgJs0a4U0xLCDWQjfCSxZ3H_05T2p2xW1-eqc2yYdJgdTsAXvCB9j8NNanmi9pxa9BjyHXskbVTRErNAR7l4bURcW_AsnMV4gLylTLZEx9Ypw5Y0LN8yr9iAXcYBxvzTYcrsg)

**7. Verification**

Insert a 6-digit verification code and click the \[Submit] button.![](https://lh4.googleusercontent.com/D-LMNWogHPSA2eHi_0NCe-v_9wGI8YvBIunDP1uHZZkKaQG4KbHfHo2xw3WOHWuwm5yVdrKplJCZBpQ5xSNXIgmMTTC-3_tgaF7mt4bON5gHJNeMNFn3u2wHB0_MAROFF6qtwPyw7OP2C-fu6w)

**8. Confirm deposited TOKEN in my crypto wallet**

The balance will be shown in your crypto wallet. To check deposited MATIC, make sure your crypto wallet network is set to the 'Polygon Mainnet'.

![](https://lh6.googleusercontent.com/hff7n8YzMzDcmLI4l5fVVYLU2QTbsTrOapBTm8Py4VoAtJDmUA4h-B2ehgEwphvZc7WAsludcvoHZ_uqTnOfa31NUD6r9tsAnIeatqsoCyak5Xyw8D_M36T81TxBFYUHnSMt56uIEjxwW6O_JQ)


# \[Coinbase, OKX, Upbit, Bithumb, Coinone] How to move MATIC to Wallet 2

###

### How to move MATIC from Centralized Exchange(CEX)

![](https://lh4.googleusercontent.com/sROEdPZPXjN5fnbvHav7AO5uBnhNCWFBE95lsLmDni79Tiq-DNvMaGwVhRqVzi6qxhSF9Zgp7DkGcdlXtX6tQJ8Eq2M9ozM41JE5gg-YAz2p6r2SKpm-2sLspboVzBFoKCmLdA9XyfYfWusXPQ)

The following guideline is based on centralized exchanges that only support the ERC-20 network (Coinbase, OKX, Upbit, Coinone, Bithumb). In this case, it requires an additional step to go through other centralized exchanges supporting the Polygon network and withdraw into your private crypto wallet. For Korean users who are subject to travel rules, it would be easier by following the procedure below.

### Withdrawal Procedure

① Withdraw MATIC (ERC20) to Binance from Upbit

② Withdraw MATIC (Polygon) to My Crypto Wallet from Binance

**1. Select 'Polygon' on the Deposit and Deposit Tab of Central Exchange that only supports ERC20 Network**

![](https://lh5.googleusercontent.com/mi-LOqN-XMDHk0_nSYCojbJUs_qKSHAa9jigFu_nBnCmjZ2hEhWvZrBDcqEn2fuPbCA03br9IVAtllx6ZgwiHG0XTVxLItJiXwOQqUaACswfYezpIW6kvcBCFJYQSItfauFJjDBmifsaA__eyw)

**2. Click the \[Withdraw] button on the MATIC (ERC-20) withdrawal page**

![](https://lh5.googleusercontent.com/9QXOSygtN1_B_dl5S5BlJdAeRc8AV0kAO79nGS9SzM4T-8lVFeXcUX7JaABZY6mHkvdydb92EexVu6Ezd1zh1ygY62qZJaAJbE7lfndZCOdFRyCIo6fWQmBJPGNtknRfNQkJ1i-YzWnEirGOzQ)

**3. Enter withdrawal quantitiy**

Enter the desired withdrawal amount of MATIC(ERC-20) and click the \[OK] button.

![](https://lh6.googleusercontent.com/QCywKIWiZqdws51veFhusS2DlRl_9xiBEMXmu3BLvobgVnT9ErvRRh2zztBi_SbVG-G5-0BTdvfzN_QP0YyZs1BjSmOfSLRH49jSUb-84Rc_MjgVzTIkJDs-jn869ngESt02WRQmPD0PpluUQw)

**4. Go to an exchange that supports Polygon (such as Binance, Kucoin, and Gate.io) and check the MATIC (ERC-20) deposit address.**

To deposit MATIC (ERC-20) token from Upbit exchange to Binance exchange, go to Binance exchange, select the ERC-20 network and verify the generated Binance deposit address

![](https://lh6.googleusercontent.com/kXGldJNPD33NSuH0scdYhnZN7i2YYh15TbuUZGXLdUjYRS8A7NeAwDVZ0OCJX7pn2RDvuaFVG9nIQfl3XqMHCP03O4QR_ZRohesNtG9wy0mjlFC5OGG8S-iooNsGAIgTIBsWPC3CToISjE4oRQ)

**5. Enter the withdrawal address and apply for withdrawal**

Return to the Upbit exchange and enter the Binance deposit address generated in the previous step and click the \[Withdrawal] button.

![](https://lh3.googleusercontent.com/7hjwk3FBjIRhe2fFy5QuLzzwbXW-xVwfgmhBSDj6DLUY6ycSYXeLd3NVrgROd4YoguPcu_DqulY1xyfpni2GjUxedxu909-UnKlE_CQKvewoTEhAgrj8QUZr5HakBv9jBNJqyK4_Wc9bvSDNlA)

**6. Click on MATIC in the 'Spot' menu on Binance**

Once the MATIC (ERC-20) withdrawal from Upbit is completed, you will see the MATIC balance in your Binance account. To withdraw MATIC from your Binance account to your crypto wallet, search MATIC and click on the icon in the Binance 'Spot' menu.

![](https://lh6.googleusercontent.com/j3dZZdgKDb3zz3KCBTIMFQH9Kq3kYJJqylSEYNpAQO0cXnYFwNiErCTAJ0SNo1_NBO2dAgmJtS9dJyqjcJpucYDeIXfHSSdQjAieUDwE9wIJ8sk_ZotG_Y7DhStQzlRLHIWAeV8eN7TX6fx72g)

**7. Click the withdraw button**

Click the \[Withdraw] button in the MATIC info window.

![](https://lh4.googleusercontent.com/YSuZRVwGcpjUsiApXCxzUNkTtcqDDB8rgsMlLak-EEytsEhjZ8gWYSNygImNiM0gvh5Mqtysj_9H2XGoY1N-qulKC3JVxHQCdU1dYkmgnmuU9SHuM5GYAUDAZmEzBQX8t0pKqeBKrIVbj_PQQg)

**8. Select a transaction method**

Select \[Send via Crypto Network] in the pop-up window

![](https://lh3.googleusercontent.com/tystOFhxCnlBUEHuWcVAmpT5slan5J6JI1-pA4GrteNw0nM2dzQrUMg13x74wr-eWwZtUeT973TIXCVtZv2y1zcw4_Z2K078jzvuhlZpFW3GfbAdsjOv9By7yfVHXh8D-F5GrXwvQ8MxzwZwoA)

**9. Fill in MATIC transaction related information**

Enter your crypto wallet address and the amount you want, then click the \[Withdraw] button.

![](https://lh5.googleusercontent.com/BULCO96xMZgRwe2Uzc29omVlhREiUTTb7MVElsPpvsM0ntUqjU-jip3X9FivovxX3Yt8hrw0vbxrOtc9F0x1x_MAqUN4mc-rlQGgLGlbYgedPqg0keaKOllwjsFfKmH2KnUTc4Y_8CMwFLgnEQ)

**10. Check transfer information**

Check the transfer-related information (address, network, coin type, coin quantity, fee, etc.) and click the \[Confirm] button.

![](https://lh4.googleusercontent.com/qqWy3DD_sJ3jARjlG48Wuwpu4bvaRhr31IdzGMd-8JaLajdQHllOr-kOxu30sfb17crUMdw7eKJr6ZVvi2Y5FPfT92le5_4YcbhlY5DVLb_Y5I4cSroD85I8pzJWkuql1VvJhJbmARmK8Qaelw)

**11. Verification**

Insert a 6-digit verification code and click the \[Submit] button.

![](https://lh3.googleusercontent.com/FuR5NTwkbYDXYQM9dp8LuPihn4O54Ac42cd9u6tt-ksRhhGg-Ew0EqZ8hnROqy1poQpJFxxtxj-y_ODGsoeaBXlitleo3S7WwZ6kMPdBNqxCMz9MpCOjfXmKkBihuOOlQS_YJ76PEBJu1CLK6w)

**12. Confirm deposited TOKEN in my crypto wallet**

The balance will be shown in your crypto wallet. To check deposited MATIC, make sure your crypto wallet network is set to the 'Polygon Mainnet'

![](https://lh6.googleusercontent.com/ZQQMU8fu2PKuBhmol7hszn5POJCHmrguo4A5FC_KpY64GgUt0lxcWNFSepgEjxh9KHSt_YrZaUlVjE33Y1h1Y2kK9ZLCPGzL6LrLK8NkB9vdj911amZQrhKkQ2LTOJT4b0E_zC9p8d4FTMHT8g)


# \[Polygon Bridge] How to move MATIC to Wallet 3

### Types of MATIC deposits and withdrawals network supported by exchange

<table><thead><tr><th width="285">Supports both Polygon and ETH (ERC-20) networks</th><th>Supports Only ETH (ERC-20) network</th></tr></thead><tbody><tr><td>Binance, Kucoin, Gate.io</td><td>Coinbase, OKX, Upbit, Bithumb, Coinone</td></tr></tbody></table>

:warning: When sending MATIC to a personal wallet, please make sure that the exchange supports withdrawals to the network. When depositing and withdrawing assets that are not supported by the network, it is treated as an incorrect deposit and withdrawal and cannot be recovered.

:warning: This information may be updated from time to time so please double-check centralized exchanges’ supporting network before making MATIC transaction.

### How to convert MATIC (ERC-20) to MATIC (Polygon) by Polygon Bridge

![](https://lh3.googleusercontent.com/9xS9Z18wzIRk6gqZwMCgd-4iQGs0xGZELCqqiqXOfmzZQ-B5md5HJScRqlziYCUSGhcdoLK8QM1UAanW1VxcKxYeZkQDCy_ExnG-6NFjY5knEyhBJF0JqqSzkYPTB8dDVdCZg8W7usRZl1Rs_Q)

For users who already have MATIC (ERC-20) in their private wallets, you can convert MATIC (ERC-20) into MATIC (Polygon) through Polygon Bridge.

#### Withdrawal Procedure

① Transfer MATIC (ERC-20) from an exchange to my crypto wallet&#x20;

② Convert MATIC (ERC-20) network to MATIC (Polygon) via Polygon Bridge

**1. Go to an exchange(CEX) that only supports the ERC-20 network and click the “Polygon” button on the deposit tab.**

![](https://lh6.googleusercontent.com/HmRlTYXrYVrGuX4PTZAqZDDtf0ERz4Q6tAOYJGRDIk0F093kuGW_NKxjPmKr3obDiHVCXc0sXXoDRDAWeQ3ajOwoDNttF4VgzoRwPJqC1uelkgBpu2GuWxZWaXNgKUMoDC8bgzBcyH6DuXxY7g)

**2. Click the \[Withdraw] button on the MATIC (ERC-20) withdrawal page**

![](https://lh3.googleusercontent.com/A4Ec__RkZ2IMKZ3bLKyvd72j1e_6l4oU89D3gIrwpYGeQxt3Du5PY9GJRDv0590ptPWJVF3-N9DikbDSu90TygI5eS23JZemHsiI77ZhYbx1VGwtyWGsB5SG2UnxN5SqAgBzZbfhT7THi6rPCQ)

**3. Enter the amount you want to withdraw**

Enter the desired withdrawal amount of MATIC(ERC-20) and click the \[OK] button

![](https://lh4.googleusercontent.com/IbB0XK0bjWFBCe2g8tdU-pBn9nnfahaCkC-6guVa3uymnPAjG34EYUWDqSjJhbfXTcd8q8GU6FxEw6d-5Y1ys7UERuvg0nJrwrJ-uVQ6-rEgWZVGDfAmLFgsX26xcuIm8_yp46ftKk10YGKdPw)

**4. Confirm my crypto wallet address**

Go to my crypto wallet and check my wallet address

![](https://lh4.googleusercontent.com/qcg27NxiycyGQDUg02xLaM5wAfcr0DmMRDTxlkaiutYWbZ3mR7J5W9i5nbJ5yRA6kNajgE1wfOwm2WR9Ajrk5QBmVpj7C2uH0WVYDyyXb71XcvDIXWjWXKPRryFzqdP8hjLtlz_6LDc6Ztyyug)

**5. Enter your crypto wallet address to withdraw**

Go back to an exchange and enter your crypto wallet address. Check the withdrawal precautions, and click the \[Apply for withdrawal] button to make the transaction.

![](https://lh5.googleusercontent.com/Ah1A_g_gMBBji8D79uERUzm1Lv6IPDlQ_bOHh5JwNRxUVjoYNtSUGTHVQ5iurENshmohcxQjI-vUhGL5zIOQ7e87-PlGzHp76swZm3uhxB47WtJXuutK6BteZzwFAw0Rx5gmEXV8cc6AKP9WDw)

**6. Confirm deposited TOKEN in my crypto wallet**

The balance will be shown in your crypto wallet. To check deposited MATIC, make sure your crypto wallet network is set to the 'Polygon Mainnet'

![](https://lh5.googleusercontent.com/yx2ltazI373OULNQJLTAixoYfDCL3pvhMxeQ5PpyOfl3QTB8OmFFESiG6hdaRJaUgEq--0qhO3-TJqFIFwGjpzIPQdhubebUN42VDXjhk8HkbwqGK20Djs7jcfUqoG-H_h9cNqmTVi1WLLOWsQ)

**7. Access the Polygon Web Wallet and click the \[Polygon Bridge] button**

Go to Polygon Web Wallet website (<https://wallet.polygon.technology/>) and click the \[Polygon Bridge] button.

![](https://lh4.googleusercontent.com/DSG3FVzL_f4I_Zz36422DrfzsX-zajurb_XFgDo4nl6BIrJSqmRS6ZKbcYhJBfCagOW1MfC6-3xFpRUc-nnDgUpVdlJEZ6kG2Rm58QKTD1xRnBQUjzsWytrI9XV6q_i0U-zVn1tBRO6zuNaGrA)

**8. Connect Polygon Bridge to your crypto wallet**

Select your crypto wallet with MATIC (ERC-20).

![](https://lh5.googleusercontent.com/SWBTEYUST7jEEowbTkrEZdwHDrgqZv7mpljdCc-Yl5kU_KkE2-UzKwfK3zHUOhAs_nQUcobzSfVfz_aXJFWJO-RMIns37qdViVPPudJF9VzVaq9ddeQmkspojMkJA2cvHi_cd6tiPIyTiCsFeA)

**9. Complete signature request**

The signature request pop-up window will appear on your crypto wallet. Click the \[Sign] button

![](https://lh3.googleusercontent.com/SxgEocLJwk8eZyQCokfAwR1GRFT6Jt5nkLRhHBme3qHwTqN_JwDYM2eLUqZWRGwsafd0t4PDbey1tqEUZk0sXAvDW_a-ar5vZgcPiGqYrdQ5PHNRu10v1vchCB0p-cTYKvJAc3FLa3ZcJJQm2w)

**10. Select a token to switch its network via Polygon Bridge**

Go back to the Polygon Bridge page. On the Deposit tab, select an ERC-20 default token you want to convert into the Polygon network.

![](https://lh5.googleusercontent.com/2im2mCK4gnTjvxIuRkKQiMtERxmUE0e-9yCEg7wAci1wME5Ps8DQgzWuleHgtSg6RgIqpaMu_b9DlZzQUisYq531A2pme4WrWnFOff2SJGSkOMFIoRbgv_9finvKmTdFtDIK8av8KQUReEDxtQ)

**11.** I**nsert the amount you want to convert and click the \[Transfer] button**

Enter the amount and click the \[Transfer] button

![](https://lh3.googleusercontent.com/0WxBPP-jejEYKwh7fHqT8J6MnwZxR2pV2bN4rx1-kRppJo8FHUgnmoMlClItAUE4IBoD4tbzPzbuTC6ZxLA1I9tYdtyxl7oGAcHN_d4KVbVZM6c9mRLMX7s0ixumWMc1vhXtQ4onxMhXbOR9yg)

**12. Check important points**

‘Important info’pop-up window will appear. Click the \[Continue] button.

![](https://lh5.googleusercontent.com/y5z7Df-0Db_cGJrqr8t5qBe6qXH8y6IgWK3CLMeEWcsTfrv-aOdKS5_WRUHDAPLPiLryp-y7SKca3rxXq1vhef7afpYtmbn73qgVZ9CYM4rpc_D1SBmTgL16f9DI6coS293h0-9-Un0sAnd7fQ)

**13. Check transaction gas fee**

Confirm the transaction gas fee in the 'Transfer Overview' pop-up window and click the \[Continue] button.

![](https://lh3.googleusercontent.com/ctyqaohIja-vJabNXQruto7nguUqvxwnZVaMiL7_wNjpuGGNfqZWgvXaoJ__2FBduR2Qki-poBMB3Qd479C_ZtwbQ3RIad_zD_eGLMjgpEjOtcOWP2nXHTEw1JAvlucCW545YWY7UOok846xdA)

**14. Confirm the full transaction details**

In the 'Confirm Transfer' pop-up window, check the network you want to switch to, the token quantity, transfer mode, gas fee, etc., and click the \[Continue] button.

![](https://lh3.googleusercontent.com/IvokDXI_VFEPyz_9Aj_GzE-dmEmlNgQqJ0iDqelqO6szsWUMVYE9rlOQkHxJVEdmdeGiBqTT9k42wJ-z6GL5XcDjHOz49mZwCBvJEbCe0xAgpCCxbm-PuI6r09b1aLlbKXtehN2R0FO67jhSzA)

**15. Wallet signature**

Go back to your crypto wallet. In the previous 'Confirm Transfer' pop-up window, click the \[OK] button in your crypto wallet

![](https://lh4.googleusercontent.com/oSWBS6qdLSBtsyXezyFrXbRKA-TUEjMF---hxhOCKOtIAxOatwX2LyZBtAXkz3g40iFfSahYzzjbph2FloM3oEJ5Ltm1BofYbXgAbve2ANqTPGLOlZVesfdGxpFI06JaoPWsGALK8dB3lSQlNQ)

**16. Confirm deposit**

After signing the wallet, check the deposit in the ‘Transfer in Progress’ window and click the \[Continue] button.  Another pop-up window will appear on your crypto wallet as well. Click the \[Confirm] button once again.

![](https://lh4.googleusercontent.com/SsqTugDcVaMmuM53pZe5qTV9PneBiV3CGi8p51oIqe6hBS_vKY83vDT967KlkmL9QqUYxV0Y2cXuO3QqLnOJ_QZWZGecg-RoqAkljX0cBtL4yHu2FLfb00xAPWfSeKn3PdMtMZLV9Hmlc8C_4g)

**17. Check token conversion time**

Once you have completed all the processes, the 'Transfer in Progress' pop-up window will appear on Polygon Bridge. You can check its transferring time in the 'Transfer route' pop-up window. For detailed information, click on \[View on Etherscan].

![](https://lh4.googleusercontent.com/V3Lm46wbvjwJusuzyC9KOWgZVDuwJmEZrbex3RDyP1XuQk9lzNRsonlmHFKVt1b_hKBnYDTSjwHq5AYe1sj6LvCsBx_zosnQq6kr7Ba6-yZFbrVJolpElRaj2FcHEK_9iPnmmdQn5aAbSmw9bA)

**18. Confirm deposited TOKEN in my crypto wallet**

The converted MATIC (Polygon) will be shown in your crypto wallet. To check deposited MATIC, make sure your crypto wallet network is set to the 'Polygon Mainnet'.

![](https://lh5.googleusercontent.com/-vO-kG5DEYNYqhGPosgvyw4wzVObSaZ211jtJ3QbArNfgdHd5n7ZP1IbZP5wuX6_8PE3oGXJCMEC-useAtHNV2AxWbr_EYZjEb1Tqm0NUjoUVUD7LVr3_PiSlE4gfu6hCs8u6DuEB4Cec1N9lQ)


# How to get WETH, MATIC, USDC, USDT, DAI

ETH, USDC, USDT, and DAI assets that typically do not support Polygon network withdrawals can be transferred to your personal wallet, using Polygon bridge. Polygon Bridge (<https://wallet.polygon.technology/>) is a trustless cross-chain transaction channel between Polygon and Ethereum, ERC-20 tokens such as ETH, WBTC, USDC, USDT, and DAI. WETH, MATIC(ERC), USDC, UST, DAI, acquired through the Polygon Bridge, can move freely between networks at an equivalent token value to the Ethereum main network.

![](https://lh3.googleusercontent.com/XmcoIUDM3r6RGGQe5kjtoI3Y4MjIYU7FsAJ813k26ONj2I7tP3sIqcaF42kiLubBocOCq_mHAkhZuPWBp4CbByPPLvDuqezz1B3-_EjigOTUck7V1Pj3Pfi4dgqCJBX-RLcyAImr6hYUltuRqw)

**● From assets:** ETH, MATIC, USDC, USDT, DAI (Ethereum network)

● **Assets deposited into the wallet through the Polygon bridge:** WETH, MATIC, USDC, USDT, DAI (Polygon network)

● **Deposit procedure:**

![](https://lh5.googleusercontent.com/ObSJbMnggXqK0RyuZFkImGAp3-hV81-Ka_gbwpRRvrnPi8F1NajzmrH87RIhO7nllup5iHaim-F3mcAgyMJRVxXQRXwpcOIeKRYch7f_Kh6c7balMemDg19FPVVilf66AqrS4bZofH5Ao7M3aQ)

&#x20;  1\) Connect your wallet to “[Polygon Bridge](https://wallet.polygon.technology/)”

&#x20;  2\) Choose the token to bridge: Token (ERC20) ▶ Token (Polygon)

&#x20;  3\) Transfer complete via Polygon Bridge

&#x20;  4\) Ready to deposit in farming pools paired with WETH, USDC, USDT, and DAI

**● Detail:**&#x20;

{% embed url="<https://medium.com/meshswap/how-to-move-matic-to-wallet-polygon-bridge-ab1d4fda8798>" %}

● **Please note:**&#x20;

:warning: When sending assets to a personal wallet, please make sure that the exchange supports withdrawals to the network. When depositing and withdrawing assets that are not supported by the network, it is treated as an incorrect deposit and withdrawal and cannot be recovered.

:warning:​ This information may be updated from time to time so please double-check centralized exchanges’ supporting network before making a transaction.


# How to get oETH, oMATIC, oUSDC, oUSDT, oDAI

oMATIC, oETH, oUSDC, oUSDT, and oDAI are the assets that are minted by bridging Ethereum main network assets such as MATIC, ETH, USDC, USDT, and DAI through Orbit Bridge into the  Polygon network. Orbit Bridge(<https://bridge.orbitchain.io>) is an interchain communication protocol that allows communication between heterogeneous blockchains, Ethereum-based assets and assets from various blockchains such as XRP, KLAY, and KSP, can be transferred to Polygon. The oETH, oMATIC, oUSDC, oUSDT, oDAI bridged  via Orbit bridge can move freely between networks at an equivalent token value..

To utilize the ERC-20 token held in the exchange/private wallet in Meshswap , it will be an option to use Orbit Bridge for transferring the assets from Ethereum or centralized exchanges to Polygon.

● **From Assets:** ETH, MATIC, USDC, USDT, DAI (Ethereum network)

● **Assets deposited into wallets via Orbit bridge:** oETH, oMATIC, oUSDC, oUSDT, oDAI (Polygon network)

● **Deposit procedure:**

![](https://lh3.googleusercontent.com/A0_-c_ZdywBHQ_-wzPbX1YjOaR4kFYF99_lcg4RAcga3UQ7HRiCu5vmDniq6NUCqsdDx-gl_p2y2NGHYVYbhtTHXHRfiSJAc1xGNwONTLKI6BpmE__JveZJbtV4gtDX0sjg_eD_KGwZGsLZgwg)

&#x20;   1\) Connect your wallet to “[Orbit Bridge](https://bridge.orbitchain.io/)”

&#x20;   2\) Choose a token to bridge: Token (ERC20) ▶ Token (Polygon)

&#x20;   3\) Transfer complete via Orbit Bridge

&#x20;   4\) Ready to deposit in farming pools paired with oETH, oUSDC, oUSDT, oDAI

● **Please note:**&#x20;

:warning: When sending assets to a personal wallet, please make sure that the exchange supports withdrawals to the network. When depositing and withdrawing assets that are not supported by the network, it is treated as an incorrect deposit and withdrawal and cannot be recovered.

:warning:​ This information may be updated from time to time so please double-check centralized exchanges’ supporting network before making a transaction.


# XRP: The Quickest and easiest way to transfer your asset

### 4. XRP deposit guide

Meshswap provides an XRP-only personal deposit address that allows users to easily and quickly transfer XRP directly to their personal wallets without bridges.

Even if you own assets such as MATIC, ETH, USDT, and DAI in the central exchange, you can easily move assets to your personal wallet using the XRP deposit address.

![](https://lh3.googleusercontent.com/IrJnWYuNyJtODHnvswKqlxcXdKsN_eWh-WqB3Iig9smWgJ5w6yXolU5gJ_CIylulRS-Bs2FV1ttMZNvdhF8HnUnvCdd56uyVlDQyjRp1v5npyZ1Hu_S-p_uUOAl1JH1kCrVKW4gje7zbwTo6fw)

● **Deposit procedure:**

![](https://lh3.googleusercontent.com/7YiAUr0D9MIDDHz-5j8FngtST4SahBsHVvFdw7BitGeNQ31kP2UAQtiJNzib8uxvMR6AuIwuZutynSJERemANpnRdzFl7PeTeMNUhPJ0gBzqnNj6tHmuyNkMp9PG04uM5DuLDqvW)

&#x20;   1\) Search for oXRP on the 'Wallet' page and click the \[Deposit] button

&#x20;   2\) Check your personal deposit address, which is dedicated to XRP

&#x20;   3\) Withdraw XRP held in the centralized exchange to the XRP dedicated deposit address confirmed in step 2) (You must select Ripple Mainnet as the withdrawal network.)

&#x20;   4\) XRP is automatically bridged to oXRP and deposited into your personal wallet.

&#x20;   5\) Ready to deposit in farming pools paired with oXRP! Meshswap also allows you to swap oXRP for other tokens to participate in various farming pools.

● **Please note:**&#x20;

:warning: When sending assets to a personal wallet, please make sure that the exchange supports withdrawals to the network. When depositing and withdrawing assets that are not supported by the network, it is treated as an incorrect deposit and withdrawal and cannot be recovered.

:warning:​ This information may be updated from time to time so please double-check centralized exchanges’ supporting network before making a transaction.

{% content-ref url="/pages/iOzfBwl3F1cLZWGYtgsE" %}
[How to get oXRP in your KuCoin wallet and deposit in Meshswap](/get-started/how-to-move-your-assets-to-wallet/how-to-get-oxrp-in-your-kucoin-wallet-and-deposit-in-meshswap)
{% endcontent-ref %}


# How to get oXRP in your KuCoin wallet and deposit in Meshswap

## **How to get oXRP in your KuCoin wallet**

1\. Download KuCoin Wallet App.

![](https://miro.medium.com/max/1050/0*zd3x3dxBR8yXSjEM)

2\. Log in ‘KuCoin Wallet’ App and click on the middle icon below. Click \[Discover More] section.

![](https://miro.medium.com/max/1050/0*FIAkRtj34U71e7AJ)

3\. Find ‘Meshswap’ under the DEX category. Click the Meshswap icon to continue.

![](https://miro.medium.com/max/1050/0*RFy-sqsampX4DVvF)

4\. Enter Meshswap and click the \[Connect Wallet] button.

![](https://miro.medium.com/max/1050/0*xik3DLktg93KdQ3-)

&#x20;

5\. ‘Connect Wallet’ Pop up will show up. Connect \[Kucoin Wallet].

![](https://miro.medium.com/max/1050/0*4IRkh_EIIt0nSJvA)

6\. You just connect your wallet to Meshswap! Now, go to the \[Wallet] tab on the left.

![](https://miro.medium.com/max/1050/0*B9gcRINxFKuwSLAZ)

7\. Search ’‘XRP’ and click the \[Deposit] button

![](https://miro.medium.com/max/1050/0*Q3ITI1Wvj3k1nVDd)

8\. ‘Deposit Precatuions’ pop-up window will appear. Click \[Check Deposit Address] to continue.

![](https://miro.medium.com/max/1050/0*uArfIj3EJEgpVWMP)

9\. Deposit pop-up window will show up. Check and copy ‘Deposit address’ and ‘Destination Tag’

![](https://miro.medium.com/max/708/0*QV7LWNo3aqG3cagQ)

10\. Open KuCoin CEX app and click on the \[Asset] tab below

![](https://miro.medium.com/max/1050/0*yI7fFImSZ9lS3_Ts)

11\. Search XRP and select \[XRP]

![](https://miro.medium.com/max/1050/0*vTAXj3E8b64h5c4u)

12\. Click \[Withdraw] button on the Main Account page to withdraw XPR.

![](https://miro.medium.com/max/1050/0*BusxZUnwQFbMQwXJ)

13\. Insert the XRP ‘Deposit address’ and ‘Tag’ from Meshswap \[My asset] page to complete the withdrawal!

![](https://miro.medium.com/max/1050/0*JLGsHLsexcn0fLKl)

14\. Go back to Meshswap App. At \[Wallet] menu, you can check your Kucoin wallet XRP balance on Meshswap

![](https://miro.medium.com/max/1050/0*iKaQLp7YYGeeA4qq)

## **How to deposit oXRP + USDT asset on Meshswap**

15\. On Meshswap, go to ‘Deposit’ Menu and select \[Yield Farm] feature

![](https://miro.medium.com/max/554/0*N3mr83Z30K7DBTBa)

16\. Click \[XRP] button to filter the list and find ‘oXRP + USDT’ pair liquidity pool. Click the \[Deposit] button.

![](https://miro.medium.com/max/1050/0*5Sx6_8Q9evVlMh5f)

17\. Deposit page will appear. Click \[oXRP] button and insert the deposit amount. Some of oXRP balance will automatically be swapped into USDT and deposited into oXRP — USDT pair pool.

![](https://miro.medium.com/max/560/0*7XCONtpFAl2EEtH6)

18\. Confirm ‘Deposit Details’ from the pop-up window and click \[Next] to continue

![](https://miro.medium.com/max/557/0*pk0gqCRV8-n9fgS4)

19\. ‘Confirm Transaction’ pop-up window will appear. Review and click \[Approve] to continue

![](https://miro.medium.com/max/555/0*1KypVDJPhb0_Y_BA)

20\. Once the transaction is approved, click the \[Deposit] button

![](https://miro.medium.com/max/555/0*eUUPEyzMkLViHMdN)

21\. Once the deposit is completed, the words ‘Success’ will appear and you can check Transaction History

![](https://miro.medium.com/max/557/0*VYK0A97SfVrUU4e0)

22\. You can also check your ‘oXRP + USDT’ balance at the ‘My deposit’ menu

![](https://miro.medium.com/max/555/0*Qtsl_NIyXGg4Ag7m)


# How to transfer BUSD from Binance to the Polygon network

<figure><img src="https://miro.medium.com/max/1050/1*ND-2S-Qo4C0krdvkbbALPw.png" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
**Binance USD**(Binance-Peg BUSD) ([0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39](https://polygonscan.com/token/0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39))\
is now available for lending in the Meshswap. The native Binance-Peg BUSD can currently be transferred directly from Binance into the Polygon PoS chain.
{% endhint %}

\* **Binance USD**(Binance-Peg BUSD) ([0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39](https://polygonscan.com/token/0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39))\
is now available for lending in the Meshswap. The native Binance-Peg BUSD can currently be transferred directly from Binance into the Polygon PoS chain.

1\. Log in to Binance and click the *Wallet*\_*Fiat and Spot (Deposit & Withdraw) option on the top right.*

<figure><img src="https://miro.medium.com/max/1050/0*M8C2nFadI13NORVS" alt=""><figcaption></figcaption></figure>

2\. Click on the BUSD *"withdraw"* button on the asset list.

<figure><img src="https://miro.medium.com/max/1050/0*AAcRs0_a7kAHvaiI" alt=""><figcaption></figcaption></figure>

3\. Copy the receipt "***wallet address"*** and paste it to “send to address” on the Binance page.

<figure><img src="https://miro.medium.com/max/1050/0*j4pnJxpysl_IXPZ6" alt=""><figcaption></figcaption></figure>

4\. Select ***"MATIC (Polygon) Network"*** as the network for the wallet to receive BUSD.

<figure><img src="https://miro.medium.com/max/1050/0*0Xu2lobHC17c-Zbw" alt=""><figcaption></figcaption></figure>

5\. Enter the withdrawal amount and check the network fee (withdrawal fee). Click on *Withdraw* to move forward.

{% hint style="info" %}
**10 BUSD is the min withdrawal amount.**
{% endhint %}

<figure><img src="https://miro.medium.com/max/1050/0*4npcm1tWU6svXKDb" alt=""><figcaption></figcaption></figure>

6\. Double-check the *Withdrawal* information *on* popup window and click the *Continue.*

<figure><img src="https://miro.medium.com/max/1050/0*HpI7TUDt7W_Pz9oS" alt=""><figcaption></figcaption></figure>

7\. Enter verification codes on the *Security verification* popup window.

<figure><img src="https://miro.medium.com/max/1050/0*XwmABhuAEarr5Ko9" alt=""><figcaption></figcaption></figure>

8\. Once withdrawal on Binance is completed, check the BUSD balance on your wallet.

<figure><img src="https://miro.medium.com/max/1050/0*NA3KlUBMDAZ863S6" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}

* Make sure your wallet Network is ***MATIC(Polygon) Mainnet*** to check the balance of Polygon Network BUSD.
* If you do not see BUSD in your wallet, click ***“Add Token”*** next to BUSD on meshswap wallet page.
  {% endhint %}

<figure><img src="https://lh6.googleusercontent.com/H_maRGps9VgEANbswKYh4UkZWK7qpjFXmzIBHtdd-CFatnNfPhCNjIRjdyxgYjAXeVfERJN9qK7e7kVLB1LLpQ2A0IATyKZuDt4M4LIoW65VqB7RvVIwJ7x7ShxIC2uqwEjKUvv_cHI3ZQLLNM1e7ba2ssD7ZBtzNGhPyRbXgTxLiCo4U2sl4EQUTLMfMA" alt=""><figcaption></figcaption></figure>

9\. BUSD can be used to deposit for Lend, Yield Farm, Leverage Yield Farm, and Long/Short Margin trading.

<figure><img src="https://lh6.googleusercontent.com/HxTXj2V48ffxVOSDqdnO2oYrrcT5uVe84-7srzUSQhGmNjXZnrLzsmy_RKiWnR0SAhjOBh-72O0vDxcjaAgTKLC4VXQzsW31vGdvFKOgJB-au1SgMlGEiBT9bBRX3J5GHQab0VpCeoNwof3PO517h7ahxJvuc6Cg3OHHdCQA5DFuMqb1Ouw041vCq1L3OQ" alt=""><figcaption></figcaption></figure>


# Transferring TON

## What's TON and oTON?&#x20;

TON, an asset native to the TON Network, must be converted to oTon in order to be used on the Polygon Network.

oTON is an asset that is minted by bridging TON network asset through Orbit Bridge (<https://bridge.orbitchain.io/>) to Polygon network.

{% hint style="success" %}
**TON and oTON are the same value and can be converted through the Orbit Bridge at any time.**
{% endhint %}

Users can acquire oTON on the Polygon Network by transferring TON from the exchange/wallet.

## **Here are the guides for transferring TON in this section:**

{% content-ref url="/pages/oXmmV4OJpQ7CSGCmWFg2" %}
[Create Wallets supporting TON network](/get-started/how-to-move-your-assets-to-wallet/transferring-ton/create-wallets-supporting-ton-network)
{% endcontent-ref %}

{% content-ref url="/pages/55hswP8TMLCLOD7eqLvg" %}
[How to transfer TON from wallet to Meshswap](/get-started/how-to-move-your-assets-to-wallet/transferring-ton/how-to-transfer-ton-from-wallet-to-meshswap)
{% endcontent-ref %}

{% content-ref url="/pages/XtiiSo29KmuAl85NvaAD" %}
[How to transfer TON from Huobi to the Polygon network](/get-started/how-to-move-your-assets-to-wallet/transferring-ton/how-to-transfer-ton-from-huobi-to-the-polygon-network)
{% endcontent-ref %}

<br>


# Create Wallets supporting TON network

Wallets that support the TON Network are TON Wallet, Tonhub, and Tonkeeper (TBD).

Please refer to the user guide for more details.

{% file src="/files/9TfSrpyFIBRCv7LD8kj9" %}

original source:

{% embed url="<https://orbit-1.gitbook.io/english/guides/create-a-wallet>" %}


# How to transfer TON from wallet to Meshswap

<figure><img src="https://miro.medium.com/max/1050/1*GqllyYaVAgjBZuwgLMG17A.png" alt=""><figcaption></figcaption></figure>

#### **What's oTON?**&#x20;

TON, an asset native to the TON Network, must be converted to oTon in order to be used on the Polygon Network.

oTON is an asset that is minted by bridging TON network asset through Orbit Bridge (<https://bridge.orbitchain.io/>) to Polygon network.&#x20;

{% hint style="success" %}
**TON and oTON are the same value and can be converted through the Orbit Bridge at any time.**
{% endhint %}

Users can acquire oTON by transferring TON from the exchange/wallet to the individual TON deposit address.

:ballot\_box\_with\_check:  **If you wish to use TON in Huobi exchange, please refer to the following guide.**

{% content-ref url="/pages/XtiiSo29KmuAl85NvaAD" %}
[How to transfer TON from Huobi to the Polygon network](/get-started/how-to-move-your-assets-to-wallet/transferring-ton/how-to-transfer-ton-from-huobi-to-the-polygon-network)
{% endcontent-ref %}

<br>

1\. Click on “*Wallet*” and insert “*Toncoin(TON)*” on the token search bar. And click on “*deposit TON*”

<figure><img src="/files/2jYykey2DiBljHdWF1sD" alt=""><figcaption></figcaption></figure>

2\. Check the notifications of deposit and click on the ‘*Check deposit address*’ button.

<figure><img src="https://miro.medium.com/max/1050/0*-XwZcAb_Xi-jl2BF" alt=""><figcaption></figcaption></figure>

3\. Copy my **deposit address** and **message (Comment, Payload)** from the deposit popup.

<figure><img src="https://lh4.googleusercontent.com/k1Ddru3MD2sJ4ulhLe0o041v_Rg2STLZL3Zs4h2NvQIRm6JIiQM0SHnuYmy1A1lH37cZVA1k8bg30CSYDCruklxGqfsJcKSqA_0qkohc3OzgicwCF_mn8EtdWQqiKyQUPxdy633RFTfdcxXhleIEXJW2e7tSUY8eG2OhJxnpNy-SrzIuB8jw9WuWB45DQg" alt=""><figcaption></figcaption></figure>

4\. **Paste my deposit address and message (Comment, Payload) that you copied during step 4** on the (Withdraw/Transfer) window from my wallet.&#x20;

{% hint style="warning" %}
**If your wallet supports a QR code scan, the receipt address will be automatically inserted into the withdrawal address. However, manually inserting the message (Comment, Payload) is still required.**
{% endhint %}

<figure><img src="https://lh6.googleusercontent.com/9CKhZnxwADmCzUo2g5SrwYXJKxmav9qVfk8DVm8wrezt2beEDY4E2YFh0lvmOm8mfWk-N6SBSxmTj4zKR_9mM-8sDuiKeAjBolFfPkhaPoydxQcQjs7ch3OBHf2KFYBxLB5j8hfmoT3GwEOmfKHSOPbFkITP0xLQa7zBNBC4APCG6-5PXZBjoIKuvTgLCQ" alt=""><figcaption></figcaption></figure>

5\. Insert TON amount to transfer.

6\. Check the information and click the *"Send TON"* button.

<figure><img src="https://miro.medium.com/max/1050/0*9w0ABlNZHOEjupwH" alt=""><figcaption></figcaption></figure>

7\. Check if oTON has been deposited into the wallet connected to Meshswap.

<figure><img src="https://miro.medium.com/max/1050/0*joTiA8gLafvLjgBU" alt=""><figcaption></figcaption></figure>

8\. oTON can be used to deposit for Lend, Yield Farm, Leverage Yield Farm, and Long/Short Margin trading.

<figure><img src="https://lh3.googleusercontent.com/etuXkMPfWsnOPNNlkUQ1BoMzYcYz9_0DNyqhU57WAZfVRSChLK3Rezwj-R_pXWDqzYZXwn0kZ2MI8nYd3oVUSr4IUStDYZL5Eo--6tFSicLfxLx1wyKP9NffWEUgdrQFf5PZAy7xF-6ZvpWVP1YpfkMx6we3wsp7gvQBMUJwgTtDxp56VQ4Iou3TxHr0_A" alt=""><figcaption></figcaption></figure>

<br>


# How to transfer TON from Huobi to the Polygon network

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

#### **What's oTON?**&#x20;

TON, an asset native to the TON Network, must be converted to oTon in order to be used on the Polygon Network.

oTON is an asset that is minted by bridging TON network asset through Orbit Bridge (<https://bridge.orbitchain.io/>) to Polygon network.&#x20;

{% hint style="success" %}
**TON and oTON are the same value and can be converted through the Orbit Bridge at any time.**
{% endhint %}

Users can acquire oTON by transferring TON from the exchange/wallet to the individual TON deposit address.<br>

:ballot\_box\_with\_check:  **If you wish to use TON already in your wallet (TON Network) in Meshswap, please refer to the following guide.**

{% content-ref url="/pages/55hswP8TMLCLOD7eqLvg" %}
[How to transfer TON from wallet to Meshswap](/get-started/how-to-move-your-assets-to-wallet/transferring-ton/how-to-transfer-ton-from-wallet-to-meshswap)
{% endcontent-ref %}

1\. Log in to Huobi and click the *"Assets\_Spot"* option on the top right.&#x20;

<figure><img src="https://lh4.googleusercontent.com/u636c2fTSUBOCOpVEdIsUub_NJ8RlP9vdGK_V9mvl6gEegy4AGgBoFlGJjQgv2yh4N6Fyuregyoeh9qCN2HMUQCMob_NeiIjTyK9MHoGDAiWtxZAtGI6mJRHI-n3X6HLimA90m-GLcOgQQjO1MKs1deWQEXR-DdqlwFXn-MBkRnpy6bR0gHnM_-XgLt0XA" alt=""><figcaption></figcaption></figure>

\
2\. Click on the TON *"Withdraw"* button on the Cryptocurrency list.

<figure><img src="https://lh5.googleusercontent.com/-F88FXPvgM9tcasIbLOZZYOm7VFhOFHgLrYULfr-zBZ8XPGynecmLNIoFigY6YAsa0KQx5CFiUMNIAYIPLlQI-ORIPy9fUJSYhAbvGp4iDw4gu4u51WnuXy4uT5KKYFoosCeMdWjufOxJP34YzV4JGOqwbqmxPQQT7LAlgn0F3AHCxOXWJNOQrTY6rKCuA" alt=""><figcaption></figcaption></figure>

\
3\. After connecting your wallet to Meshswap, click *“Wallet”* on top. From the token list, click Orbit Ton Coin (oTON)’s *"Deposit"* and click *"Check Deposit Address"*.&#x20;

<figure><img src="https://lh3.googleusercontent.com/eJCTzncVfblxkscYJ7vGKKgposbAUbq_Gzjug1QNXIhkdSmuL19nH0gFKg8HZ1KpVIGrvMdgdCMeIpcADIGV-N71CCb6n6yiIPWflg7tBdILnHoaRxyKrSYvhtR-ItrKmqvpqZroiYsCcfeqOoDUcH6MuKEa1i6ecJ4r3TL_pYFLbS08Zd9JHZApTLvbxg" alt=""><figcaption></figcaption></figure>

4\. **Copy Deposit address, Message (Comment, Payload)** from the Deposit popup and return to the Huobi exchange site.&#x20;

![](https://lh3.googleusercontent.com/OKZ7-Cq64eFstIuaFfBpJA5sZXOd_2Q9gEN4ngGasc2Vmne1LW3FCRlPRKx7k17Ut1S7zwQm-Jx7gx-szmk2e6HEISANOrKKsuf0e11suhKNKdxMXiwsi8LSbiJkjbcjaTIMrAJfalkoLpQDPluwgI87-unSishIUJmLZLO90IRKNahTma1JosNOTvnKpQ)

<br>

5\. Choose *“Others”* for Destination exchange. **Copy and paste the Deposit address that you copied during step 4** in the address section. Also **paste the Message (comment, payload) copied during step 4** in the Tag section. Click the *"Withdraw"* button after entering the Withdrawal Amount.

{% hint style="info" %}
**Minimum withdrawal amount for Huobi is 1.01 TON.** &#x20;
{% endhint %}

<figure><img src="https://lh4.googleusercontent.com/PKMPXmYmKg1vELhOkaD0uj2R1FJWOI3ctwSl_jPcPYArD-7xAOWlAakv9mOsOUKJ-LGdjaOcAbgnnrioZaidy-1wYmrynj8kCTgAeD43du2vPMhvjqMi6pe4nofNpWu7GNutIfTUUBxRjbB6KHKUbNzwVoAS0dc1UKn9qfF7yju4130TF_50i8Ftns3jwQ" alt=""><figcaption></figcaption></figure>

6\. Verify the information on the *“Request Withdrawl”* popup, checkmark the agreement, and press the *"Confirm"* button.

![](https://lh4.googleusercontent.com/7UNRcsxOsqlOS8j0tWUeZRHt9XUjPpviCDroGSqP3tLsJyRE4auucUaxHMZBgmX2ufND550e4gpl_A-A3cxEetn9rt_higkokcyyhGLCDSK6r11_lrRC7VFK_UB2Vp0EjGKQZukEgK6SwDrYbUvoKrA9hKgIEDxuACREanFMC81HUItcCvfHhrI5zNTg4Q)

<br>

7\. In the *"security authentication"* popup, enter each verification code sent to your email and mobile device.

![](https://lh4.googleusercontent.com/-LhYD3IxpWZn3c91yLF5nvXllgShS2lZQdJzUAEOs4PAgyDBLXKbNDIE9Ke3-7BTR12JhiCM08P5johfi-N6mETVeCvS5PCSMux7alnN8CmISlA6Uku0JZxaVyyRH0II5kUGnVPr4H43ZSS-MVC7cYO3WcP5-aywlGhnltutn491EdRxXbDn8e6pssX_yQ)\ <br>

8\. Select the reason for the deposit and click OK.

<figure><img src="https://lh5.googleusercontent.com/ZPmpKNfZ1VAETwkXArpd9bSQU5_fF-6N7r9HdFW7t-GtIiKS-4Ws11QK-k4CZsq5fI9nRZPvdkRaJdNfJ5JqEKNUjrS4E1j967ksI0MM2V18bu41p-OUQuPMcsPbtLN-ueO-PDNMzeG2xJ55tRGIgvwYFw3UniPXT_RYoev-CkVKOfoNZeRe29MYn7cJwA" alt=""><figcaption></figcaption></figure>

9\. Once you have withdrawn from Houbi, make sure the oTON has been transferred to the wallet.&#x20;

{% hint style="warning" %}

* Make sure that you have selected ***MATIC (Polygon) Mainnet*** as the wallet network; if you have selected another chain, you won't be able to check the transferred oTON.
* If oTON does not appear in your wallet, go to meshswap wallet page and click ***“Add Token”*** which is placed next to Orbit Ton coin.&#x20;
  {% endhint %}

<figure><img src="https://lh4.googleusercontent.com/2i124gPetFxRpfPdjjDARxl_5KEIS1caHaZAqMjE8xyKqKSGbY6lpoQLgyCsvsyEdw3fOd6elfDmv92P3oW_dK1NQ9x725HAiIGTzW1cy36Z19GHbUDlNwmGbJGSh3Ka-Ud2wBErfoZ85tTlNSkrr4esU3UBF1ZSJFjmqhB5dmela1JK_fwSUsFgCo8icQ" alt=""><figcaption></figcaption></figure>

\
10\. oTON can be used to deposit for Lend, Yield Farm, Leverage Yield Farm, and Long/Short Margin trading.

<figure><img src="https://lh3.googleusercontent.com/xQUXtjPka7wRn8CErmoIH2Z_E04bVL_3HADVzWaXeiGI1gJ4rYpgETNAPJXqo3GbziIFsaxt6sKSZJP1j8_aV-1sG8cD4c7rketWlQP9TcYxEVlbOMxe4Uq3Y23dGFSsJTLzCgSCjqK3x49o2PueMJinMIyuO-OSgJFfrzHJs28KDYLSyQgkQM_WxZXhKw" alt=""><figcaption></figcaption></figure>

\ <br>


# Risk & Security

Please aware that the use of Meshswap has the following risk factors.

●  Meshswap is a <mark style="color:purple;">**blockchain decentralized protocol without a central entity**</mark>. Users participate in transactions through liquidity pools on the blockchain created by other users at their own responsibility and judgment. This may lead to users being unable to receive recovery support from someone or Meshswap for the results of an user's mistake, so it is always recommended to test with a small amount first to manage the risk caused by mistakes(mistransfers, etc.).

●  All assets and asset liquidity pools identified on the Meshswap  website are tokens on the Polygon (Matic) chain that <mark style="color:purple;">**are self-registered by users**</mark> without going through individual screening, and <mark style="color:purple;">**their safety is not guaranteed by the Meshswap team**</mark>.

●  Due to the nature of the AMM (Automated Market Maker) method, when a user exchanges an asset on the Meshswap , <mark style="color:purple;">**the asset price applied to the user at that point may fluctuate significantly**</mark> depending on the swap size, the amount(ratio) of assets currently waiting in the pool, and real-time deposits and withdrawals of the pool.

●  Asset price fluctuations may cause assets to be deposited or withdrawn from the pool at prices or ratios that users did not expect. Also, if there is a price change from the price at the time of depositing in the pool, you may incur a loss when withdrawing, compared to the case that you simply hold the asset.

●  All <mark style="color:purple;">**Figures displayed on the website are estimated information provided to help users make decisions**</mark>, and do not guarantee the timeliness, suitability or accuracy of the data.

●  A normal KLAYswap website <mark style="color:purple;">**never asks for the user's personal wallet private key, mnemonic key, and seed phrase to be entered**</mark>.

●  For other risk factors, precautions, and conditions of use, please check below.

##

## 1. Abstract

Meshwap is <mark style="color:purple;">**a decentralized application (DApp)**</mark> based on Polygon (Matic) Chain which is developed by a third party. Meshwap is designed to provide users with an easy-to-use interface such as Meshswap website(<https://meshswap.fi/)(Hereinafter> Meshswap and Meshswap website are collectively referred to as the “Meshswap”) to the decentralized protocol that integrates directly with Polygon (Matic) blockchain wallet of a user, to swap various digital assets and to provide liquidity.

<mark style="color:purple;">**NOTICE: This guideline contains the terms and conditions by which you may access and use the Meshswap. Please read this guideline carefully. By accessing or using the Meshswap after you check this guideline, you signify that you have read, understand, and agree to be bound by the terms and conditions in its entirety.**</mark>

## **2. Revision terms of this document**

The contents of this document can be revised at any time for the purposesreasons such as change, addition, deletion, supplementation, user protection, and error correction of Meshswap. If the content of this document is revised, the revision will take effect from the time the changed contents is posted. However, if the content to be changed is unfavorable to the user or is a significant change, it will be posted 30 days before the effective date. If the user checks the revised document after the effective date and continues to use Meshswap, it is deemed that such user has read, understood and agreed to the revision.

## 3. **Eligibility**&#x20;

**•** To use Meshswap, an user must be at least the age of majority in civil terms in his/her country (ex: 21 years of age in Singapore). Also, a user must be able to make a statement that you have full rights and authority to enter into and comply with civil agreements on behalf of yourself or any legal entity that you represent.

**•** An user must be able to make a statement that a user is (i) not subject to any economic or trade sanctions by any governmental authority (including, but not limited to, the Office of Foreign Assets Control of the U.S. Department of the Treasury, etc.); (ii) is not citizens or residents of any jurisdiction subject to comprehensive economic sanctions by the United state, and will not use Meshswap for the purpose of illegal activity conduction, promotion, or designing.

&#x20;

## **4. Precautions when using Meshswap**

## **4.1. General Precautions**

For reliable network/service while using Meshswap, please read the following guideline carefully.

**•** It is recommended that you access the service with only one instance/tab.

**•** The service may be limited if you use multiple instances/tabs for prolonged period of time, using a public/shared IP access point and/or there is an excessive amount of connection requests.

**•** If you are having difficulty with connectivity for whatever reason, please close all instances/tabs and access the service after at least 1 hour before re-connecting.\[O1]

&#x20;

## **4.2. Precautions regarding Asset deposit/withdrawal**

### **4.2.1. Asset deposit/withdrawal**

Users should be aware of the following in depositing and withdrawing assets.

**• To request a transaction, the user must have a Polygon (Matic) wallet to hold Polygon(Matic)-based assets, along with a minimum amount of POLYGON (MATIC) to use for transaction fees.**

**• As such, an asset that is not a Polygon(Matic)-compatible Token (MRC-20) and based on other blockchains,&#x20;**<mark style="color:purple;">**including but not limited to Ethereum, Ripple, BSC, must be converted into a Polygon(Matic)-compatible format (o-asset) through bridging protocol(e.g., Orbit Bridge) prior to being deposited into Meshswap**</mark>**.**

[\[Guide\] Deposit guide for each token (Link)](https://docs.meshswap.fi/get-started/how-to-move-your-assets-to-wallet)

&#x20;

### **4.2.2. Asset mistransfer**

Users must accurately check the asset type and address when depositing and withdrawing assets from or to Meshswap. If a user <mark style="color:purple;">**deposits a type of asset that is not supported by Polygon (Matic) Chain**</mark>, or if the <mark style="color:purple;">**required deposit address is not entered or entered incorrectly**</mark>, such deposit may not be properly processed and <mark style="color:purple;">**assets may be irreversibly lost**</mark>**.**

Please refer to the link below for more information regarding mistransfer of assets.

&#x20;

**•** Even for some assets (e.g., Ripple, XRP) that are heterogeneous chain’s assets from Polaygon (Matic) chain, which can be deposited and withdrawn from the wallet directly through the Meshswap interface without going through the bridge site, <mark style="color:purple;">**the user must accurately enter the deposit address and destination tag assigned to each wallet. If the deposit address or destination tag is not entered or entered incorrectly, such deposit may not be properly processed and assets may be irreversibly lost**</mark>**.**

**•&#x20;**<mark style="color:purple;">**Meshswap is a decentralized application in which the private key of user assets is not managed by a central entity. Meshswap has such structure in which asset recovery or/and technical support from a central entity are impossible for the consequences from users' mistake or negligence including but not limited to wrong deposits described above.**</mark> This structure is designed so that if a user deposits an asset incorrectly, no one, including Meshswap, can access the asset. Due to the decentralized nature like this, capabilities and responsibilities of Meshswap team for the incorrect deposit or mistransfer may not be similar to the support of many centralized exchanges(e.g., Upbit, Bithumb, Coinone, ect.) for technical and structural reasons

**•** To prevent losing assets, we recommend that <mark style="color:purple;">**users test with a small amount of assets prior to sending a larger amount.**</mark>

**•** For deposit and withdrawal problems occurring as a result of using Orbit Bridge, please refer to the respective site’s policies.\
[Orbit Bridge (Link)](https://bridge.orbitchain.io/)

&#x20;

## **4.3. Providing Liquidity (Deposit), Removing Liquidity (Withdraw), Swap**

You can act as a Liquidity Provider by providing liquidity to a Liquidity Pool(e.g., Lending, Yield Farm, and Leveraged Yield Farm) in Meshswap; however, you must carefully evaluate and consider the risk before proceeding with the transaction, and take responsibility for your own actions and judgments.

&#x20;

### **4.3.1. Price**

Meshswap works based on the AMM (Automated Market Maker) method. Price of each token within Meshswap is determined by the liquidity pool ratio of tokens within the relevant Smart Contract.  As automated Smart Contract makes adjustment to price as per the formula (x\*y=k), <mark style="color:purple;">**the price shown on Meshswap interface may not be the same as prices shown at other exchanges, and cannot be guaranteed for accurate or appropriate market prices**</mark><mark style="color:purple;">.</mark>

[\[Article\] How AMM predicts prices](https://academy.binance.com/en/articles/what-is-an-automated-market-maker-amm)

&#x20;

Please refer to the link below for more information regarding price

**•** Each token price at the time a user deposits, withdraws, or swaps assets is determined by the above price measurement method (exchange ratio of token pairs), <mark style="color:purple;">**and the price is not directly proportional to the exchange quantity.**</mark>

**•** In addition, <mark style="color:purple;">**as the exchange rate of token pairs momentarily changes**</mark> due to the real-time participation of various participants, <mark style="color:purple;">**the price displayed on the Meshswap website right before the transaction may change at the time of the transaction, and the price applied at the time of the actual transaction may vary.**</mark> (e.g., Transactions occur in token pairs, asset deposits and withdrawals in token pairs, etc.)

**•** The Meshswap Protocol has a stabilization measure so that the request can be executed only within a certain range of the exchange rate to be applied by the user in order to minimize the loss that may occur due to the large change in the current exchange rate, <mark style="color:purple;">**but you should precisely check and confirm the exchange rate applied to the time of transactions when proceeding liquidity deposits, withdrawals and swaps.**</mark>

&#x20;

**4.3.2. Estimation of expected yield and Borrowing cost**

<mark style="color:purple;">**All rates of returns displayed on the Meshswap interface**</mark>**,** including returns from deposit, MESH distribution, airdrop, transaction fee, and staking, and the "Borrowing cost" paid by a Leveraged Yield Farmer in return for Borrowing a Lending pool asset <mark style="color:purple;">**are based on annual estimates of distributed rewards and do NOT guarantee fixed rates.**</mark>

For more details regarding rates of returns displayed, Please refer to below link.

In particular, at 9 a.m. (KST) every day, the MESH distribution yield of each liquidity pool gets updated reflecting the MESH Mining rate aggregated from the user pool vote and the MESH buyback quantity per pool. At this time, the figure that indicates MESH distribution yield includes the quantity allocated to the vMESH Holder(5%), Development team (5%), Treasury(5%), Partner(5%)  and the rewards that users actually receive is the amount that the quantity allocated for the team is excluded.

Meshswap strives to provide accurate information in real time as much as possible, but the expected rate of return displayed in the screen may vary from the actual rate of return due to price fluctuations of distributed tokens, changes in liquidity pool size, and delays in transaction processes.

&#x20;

&#x20;

## **4.4. Provision of each deposit pool**

### **4.4.1. provision of Lending pool liquidity**

&#x20;

Users can deposit their assets in a Lending pool through the Meshswap to earn MESH distribution and returns for deposit. <mark style="color:purple;">**Assets deposited by a Lending pool depositor are borrowed by a Leveraged Yield Farmer who are willing to borrow more assets than they already possess, and the cost (interest) paid by the Leveraged Yield Farmer in return for borrowing a Lending pool asset is distributed to Lending pool depositors.**</mark> (80% of the expenses paid by the Leveraged Yield Farmers are distributed to Lending pool depositors)

Withdrawal of assets deposited in a Lending pool may be temporarily delayed. For more details, please refer to the link below.

If the borrowing of a Lending pool asset is excessively active in this process, withdrawal of assets deposited in a Lending pool may be temporarily delayed. However, automated smart contracts adjust deposit returns and borrow costs according to the interaction between the demand for Lending pool asset borrowings and the supply of a Lending pool asset. This naturally results in the supply of additional assets and return of borrowed assets from a Lending pool, and the withdrawal of deposited assets gets properly processed.

&#x20;

### **4.4.2. Provision of Yield Farm**&#x20;

Users can earn returns from MESH distribution, transaction fee distribution, and token airdrop by depositing their assets in Yield Farm through the Meshswap .

&#x20;When depositing assets in Yield Far&#x6D;**,** ‘Impermanent Loss’ can occur. You can find out more details in the link below.

<mark style="color:purple;">**Should the price of assets change drastically due to market fluctuations, the expected value of the user assets in the pool may be different from or lower than in the case that you simply held such assets, even to a point of a loss.**</mark>**&#x20;** However, these losses are finalized upon withdrawal from the pool, and for this reason these losses are called “Impermanent Loss’ - of which you can find out more details in the link below.  If the price difference between the two assets become closer to what they were at the time of depositing into the pool before you finalize such loss with withdrawal of such assets from the pool, the actual loss would minimize.  Also, total profit must be considered with MESH mining rate and transaction fee reward as well.&#x20;

[\[Article\] What is Impermanent Loss? (Link)](https://academy.binance.com/en/articles/impermanent-loss-explained)

&#x20;

### **4.4.3. Provision of liquidity for Leveraged Yield Farming Pool**

Users can earn returns from MESH distribution, transaction fee distribution, and token airdrop by depositing their assets in the Leveraged Yield Farming pool through the Meshswap. When depositing assets in a Leveraged Yield Farming pool, the Leveraged Yield Farmers are able to deposit additional asset(hereinafter, referred to as the “additional asset” in this section) borrowed from a lending pool in addition to the asset already in their possession(hereinafter, referred to as the ”basic asset” in this section) to the pool, and given the distribution reward according to that.

<mark style="color:purple;">**However, if there is a significant disparity between the price at the time of deposit and the current market price, the expected yield may be lower than in the case that you simply held such assets, and estimated loss can occur at that point of valuation(This is the same logic as in the Yield Farm applies to Leveraged Yield Farm).**</mark>

<mark style="color:purple;">**If the price of assets deposited in the Leveraged Yield Farming pool changes dramatically and asset debt ratio (ratio of additional asset to total assets deposited) exceeds the predetermined percentage(85%), the total assets deposited by the user may be automatically returned (with liquidation fee).  Leveraged Yield Farm has its own merit and high-risk, so please read the Leveraged Yield Farm Guide below carefully before using Leveraged Yield Farm.**</mark>

[\[Guide\] Leveraged Yield Farm (Link)](https://docs.meshswap.fi/products/leveraged-yield-farm)

&#x20;

When depositing assets in a Leveraged Yield Farm, Leveraged Yield Farmers are able to deposit additional asset(hereinafter, referred to as the ”additional assets” in this section) borrowed from a Lending pool in addition to the asset already in their possession(hereinafter, referred to as the ”basic asset” in this section) to the pair, and given the distribution reward according to that. The amount of additional assets when depositing is calculated based on the United States dollar(USD) value of the underlying asset (basic asset) of Leveraged Yield Farmers. (Price Oracle price standards)

&#x20;

Leveraged Yield Farmers borrow the corresponding amount of additional asset calculated as above from a Lending pool, and the cost(interest) accumulates according to the real time borrowing cost. At the point of closure in Leveraged Yield Farm, Leveraged Yield Farmers should return all of the additional asset borrowed and pay for the borrowing cost (interest) mentioned above.

&#x20;

A certain percentage of assets is automatically swapped (exchanged) according to the users’ basic asset, additional asset (form of pair), and borrowed asset, and deposited in pairs, resulting in transaction fees per pool based on the terms and conditions of swap, and these fees are excluded in the pair when depositing. In the process, <mark style="color:purple;">**the larger the scale of transaction, the difference between the current exchange ratio (price) of pools and the price applied when swapping may occur, resulting in a disparity in the scale of priorly estimated additional asset.**</mark> Therefore, you must carefully evaluate and consider the risk before proceeding with the transaction, and take responsibility for your own actions and judgments.

&#x20;

In case of Leveraged Yield Farm withdrawal, the withdrawn assets are firstly used to return for additional asset being borrowed. If you have returned all the additional asset you are borrowing, you can withdraw the remaining assets and receive them in your wallet. Upon the process of return, swap(exchange) may occur automatically, and the return will proceed after transaction fees according to the terms and conditions of swap are excluded. In the process, <mark style="color:purple;">**the larger the scale of transaction, the difference between the current exchange ratio (price) of pools and the price applied when swapping may occur (Price impact), resulting in the disparity in actual amount of return.**</mark> Therefore, you must carefully evaluate and consider the risk before proceeding with the transaction, and take responsibility for your own actions and judgments.

&#x20;

<mark style="color:purple;">**In case of Leveraged Yield Farm deposit**</mark><mark style="color:purple;">,</mark> liquidations may proceed for the safe return of additional assets borrowed by Leveraged Yield Farmer to a Lending pool. <mark style="color:purple;">**If the asset debt rate (ratio of additional asset borrowed to total asset deposited) exceeds the predetermined percentage(85%), the protocol automatically returns the additional asset being borrowed in a prior manner, and users can directly receive the rest of assets in their wallets after paying for liquidation fee (20%).**</mark>  <mark style="color:purple;">**In the event of a volatile change in token prices, all of your asset deposited may be used to return for the additional asset borrowed.**</mark> To prevent liquidation, <mark style="color:purple;">**you are recommended to deposit additional asset with a low leverage multiplier,**</mark> <mark style="color:purple;"></mark><mark style="color:purple;">or</mark> <mark style="color:purple;"></mark><mark style="color:purple;">**withdraw the amount of assets equivalent to the leveraged assets on the withdrawal tap**</mark><mark style="color:purple;">.</mark>

&#x20;

&#x20;

## **4.4 Detailed precautions by type of deposit**

### **4.4.4 Margin Trading**

The user can earn MESH distribution revenue, deposit revenue, and profit from price gains by Margin Trading in Meshswap.

For Margin Trading, a user can temporarily borrow other users' assets deposited in a Lending pool (hereinafter referred to as "Borrowed Assets" in this section) at a certain cost (hereinafter referred to as "Borrowing Cost" in this section), within the maximum range determined by the value of the US dollar equivalent of the assets deposited fundamentally by the user(hereinafter referred to as "Basic Assets" in this section). The formula for calculating the maximum range of the Borrowed Assets is subject to change and please refer to the link in the Margin Trading guide below.

The user may purchase or sell particular tokens (hereinafter referred to as the "Target Assets" in this section) to take a position in which the user seeks profit according to the conditions of the appreciation of the value of the Target Assets(so-called “long-position”) or to take a position in which the user seeks profit according to the depreciation of the value of the Target Assets(so-called “short-position”).

&#x20;

The Basic Assets of the user and the assets purchased or sold while the user takes a position (In the case of a purchase, the Target Assets is held, and in the case of a sale, certain Stable Asset is held. These held assets are hereinafter referred to as "Acquired Assets" in this section) are deposited in a Lending pool under the terms and conditions of the Lending pool deposit (refer to the section of Lending pools).

&#x20;

In principle, the user may close the position at any time desired by the user, <mark style="color:purple;">**except in special cases (including but not limited to the case of liquidation) notified in this section and/or other terms and conditions of Margin Trading.**</mark>

At the time of the close of the Margin Trading, the Acquired Assets is used to return the entire Borrowed Assets (including the Borrowing Cost of the Borrowed Assets), and the remaining assets after the return of the Borrowed Assets can be withdrawn and received by the user in the wallet.

&#x20;

<mark style="color:purple;">**For Margin Trading, the user should be aware of the risk of the decline in expected returns or losing assets, which is including but not limited to:**</mark>

<mark style="color:purple;">**(1) In the case of the market price of the Target Assets significantly is rising or falling from the price at the time of open position, the expected return may be lower than the case in which the user simply held the Target Assets, even may lead to valuation loss or firm loss.**</mark>

<mark style="color:purple;">**(2)  If the ratio of "The value of Borrowed Assets (including Borrowing Cost)" to "The value of total deposit assets \[which is the sum of the Basic Assets and Acquired Assets(plus Lending pool deposit revenue)]"(This ratio is hereinafter referred to as the “The Debt Ratio” in this section) exceeds the threshold due to some reasons such as changes in value during Margin Trading, such total deposit assets of the user may be automatically released from the deposit and used for the return of the Borrowed Assets with certain liquidation fee in accordance with the predetermined terms and conditions of Margin Trading. When such liquidation happens, the evaluated profit or the loss of the user at the time is fixed and realized regardless of the user’s will, and it may result in a great or total loss. Please refer to the Margin Trading guide link below for the liquidation reference formula and reference value.**</mark>

<mark style="color:purple;">**(3) Swap (trading) occurs in the pool in the process of open position, close position, and liquidation. At this time, transaction fees are incurred in accordance with the transaction fee rate by each pool according to the conditions at the time of swap (transaction), and the user bears these transaction fees. In this process, the larger the trading size, the greater the price impact between the current pool exchange rate (price) and the actual price applied when swapping.**</mark>

<mark style="color:purple;">**(4) When a user borrews other user's assets deposited in Lending pool, the user's Borrowing Cost accumulate in real time, depending on the terms and conditions for the Borrowing Cost of the pool, and these accumulated Borrowing Cost must be returned with the Borrowed Assets at the end of the position.**</mark>

<mark style="color:purple;">**(5) Users should consider all the risk of decline in expected returns or loss of assets based on the characteristics of the blockchains, virtual assets, and Meshswap disclosed herein, etc**</mark>

&#x20;

<mark style="color:purple;">**Margin Trading is not recommended for users with less experience in investing in virtual assets or fund users who are unable to afford the possibility of losses, as it is a function of high structural complexity and high risk of asset loss.**</mark>

&#x20;

<mark style="color:purple;">**Prior to using Margin Trading, users should understand all the risks and information for the Margin Trading above and read the Margin Trading Guide below carefully.**</mark>

[\[Guide\] Margin Trading (Link)](https://docs.meshswap.fi/products/long-short-margin-trading)

&#x20;

For Margin Trading, a user can temporarily borrow other users' assets deposited in a Lending pool(hereinafter referred to as "Borrowed Assets") at a certain cost (hereinafter referred to as "Borrowing Cost"), within the maximum range determined by the value of the US dollar equivalent of the assets deposited by the user(hereinafter referred to as "Basic Assets").

&#x20;

The user may purchase or sell particular tokens (hereinafter referred to as the "Target Assets") to take a position in which the user seeks profit according to the conditions of the appreciation of the value of the Target Assets(so-called “long-position”) or to take a position in which the user seeks profit according to the depreciation of the value of the Target Assets(so-called “short-position”).

&#x20;

The Basic Assets of the user and the assets purchased or sold while the user takes a position (In the case of a purchase, the Target Assets is held, and in the case of a sale, certain stable asset is held. These held assets are hereinafter referred to as "Acquired Assets") are deposited in a Lending pool under the terms and conditions of the Lending pool deposit.

&#x20;

Long-positioning users buy and acquire the Target Assets by using the Borrowed Assets in a Lending pool of Stable Assets, and short-positioning users acquire the Stable Assets by selling Target Assets by using the Borrowed Assets in a Lending pool of the Target Assets. Long-position takers acquire the Target Assets as the Acquired Assets, whereas short-position takers acquire Stable Assets as the Acquired Assets taken by selling the Target Assets.

&#x20;

The price merge can be achieved by closing the position at the time when the user wants. In principle, the user may close the position at any time desired by the user, <mark style="color:purple;">**except in several cases (including but not limited to the case of liquidation) notified in the User's Guide and other terms and conditions of Marging Trading.**</mark>

At the time of the close of the position, the Acquired Assets is used to return the entire Borrowed Assets (including the Borrowing Cost of the Borrowed Assets), and the remaining assets after the return of the Borrowed Assets can be withdrawn and received by the user in the wallet.

&#x20;

#### **\[Risk of loss or falling of expected earnings]**

For Margin Trading, the user should be aware of the risk of the decline in expected returns or losing assets, which is including but not limited to:

<mark style="color:purple;">**(1) In the case of the market price of the Target Assets significantly is rising or falling from the price at the time of open position, the expected return may be lower than the case in which the user simply held the Target Assets, even may lead to valuation loss or firm loss.**</mark>

<mark style="color:purple;">**(2)  If the ratio of "The value of Borrowed Assets (including Borrowing Cost)" to "The value of total deposit assets \[which is the sum of the Basic Assets and Acquired Assets(plus Lending pool deposit revenue)]"(This ratio is hereinafter referred to as the “The Ratio” in this section) exceeds the threshold due to some reasons such as changes in value during Margin Trading, such total deposit assets of the user may be automatically released from the deposit and used for the return of the Borrowed Assets with certain liquidation fee in accordance with the predetermined terms and conditions of Margin Trading. When such liquidation happens, the evaluated profit or the loss of the user at the time is fixed and realized regardless of the user’s will, and it may result in a great or total loss. Please refer to the Margin Trading guide link below for the liquidation reference formula and reference value.**</mark>

<mark style="color:purple;">**(3) Swap (trading) occurs in the pool in the process of open position, close position, and liquidation. At this time, transaction fees are incurred in accordance with the transaction fee rate by each pool according to the conditions at the time of swap (transaction), and the user bears these transaction fees. In this process, the larger the trading size, the greater the price impact between the current pool exchange rate (price) and the actual price applied when swapping.**</mark>

<mark style="color:purple;">**(4) When a user borrows other user's assets deposited in a Lending pool, the user's Borrowing Cost accumulate in real time, depending on the terms and conditions for the Borrowing Cost of the pool, and these accumulated Borrowing Cost must be returned with the Borrowed Assets at the end of the position.**</mark>

<mark style="color:purple;">**(5) Users should consider all the risk of decline in expected returns or loss of assets based on the characteristics of the blockchains, virtual assets, and Meshswap disclosed herein, etc**</mark>

&#x20;

#### **\[Detailed description of liquidation]**

To avoid the risk of users failing to return temporarily Borrowed Assets due to the reasons such as fluctuations in the market price of assets during Margin Trading, liquidations may proceed immediately without user’s consent, confirmation or notification to users.

In this case, not only the portion that corresponds to the Borrowed Assets is returned, but the user's total deposited assets may be released and used for the return.

&#x20;

In other words, the condition for the liquidation is satisfied if <mark style="color:purple;">**"The value of Borrowed Assets (including Borrowing Cost)" to "The value of total deposit assets \[which is the sum of the Basic Assets and Acquired Assets(plus Lending pool deposit revenue)]"(This ratio is hereinafter referred to as the “The Debt Ratio”) in real time during margin trading exceeds the threshold value(90%).**</mark>

&#x20;

If the condition for liquidation is met, the Borrowed Assets (including Borrowing Cost) is automatically returned first from the total deposited assets, and then the assets after the liquidation fee (20%) are excluded from the remaining assets can be received directly to the user's wallet.

However, due to some reasons such as rapid changes in the market price of assets, it is possible that all (100%) of the assets deposited by the user is returned (or lost) in the course of the liquidation, leaving no assets available to the user.

&#x20;

To avoid liquidation, you should either deposit additional Basic Assets in advance so that the Debt Ratio does not exceed the threshold (90%), or lower the size of the Borrowed Assets by closing a certain portion of the position on the Close tab.

&#x20;

#### **\[Trading fee and price impact in margin trading]**

Throughout the process from open position to close position, user’s Borrowed Assets will be automatically swapped (traded) from a pool with transaction fees according to the terms for the fees of such pool and this transaction fee will be paid by the user’s assets.  &#x20;

&#x20;

In this process, the larger the trading size, the greater the price impact between the current pool exchange rate (price) and the actual price applied when swapping.

&#x20;

#### **\[Formula for margin trading]**&#x20;

**Largest amount of Borrowed Assets**

\[    ]

&#x20;

**Liquidation Standard Calculation**

The Debt Ratio of the user = The value of Borrowed Assets (including Borrowing Cost) / "The value of total deposit assets \[which is the sum of the Basic Assets and Acquired Assets(plus Lending pool deposit revenue)

The Debt Ratio of the user > 0.90&#x20;

**•** Basic Assets: Assets deposited fundamentally by the user for Margin Trading

**•** Borrowed Assets:  Assets which is temporarily borrowed in other users' assets in a Lending pool at a certain cost

**•** Acquired Assets: Assets held by users by taking a position to buy or sell specific tokens(i.e. Target Assets). ( In the case of a buy, the Target Assets is held, and in the case of a sale, certain Stable Asset is held.)&#x20;

&#x20;

**The Liquidation Fee**

20% of remaining assets after returning the Borrowed Assets

&#x20;

**Borrowing Cost for the Borrowed Assets**

changes in real time (vary by pools)&#x20;

<mark style="color:purple;">**Margin Trading has high structural complexity and is at high risk of asset loss. It is not recommended for beginners with less experience in investing in cryptocurrency or users who cannot afford the possibility of loss.**</mark>

&#x20;

<mark style="color:purple;">**Users should carefully review the contents of this Margin Trading guide, carefully evaluate and consider the risks of Margin Trading, and proceed with the transaction with taking responsibility for the users’ own actions and judgment.**</mark>

&#x20;

#### **Price Oracle**

Price Oracle is the external price reference used by Meshswap. Pricing standards related to the execution of Leveraged Yield Farm, Margin Trading, withdrawals and liquidations are measured through Price Oracle. Price Oracle prices may differ from the pool exchange rate (price) on the Meshswap.

&#x20;

**•** Stable coins(e.g., USDT, USDC, DAI, etc.) are calculated as fixed values (USD1.0). Provided, appropriate measures may be taken if there is a material issue with the stability of the stable coin or if there is an equivalent reason.

**•** Value for other coins, considering scale of liquidity of each asset, is reasonably determined based on pool exchange ratio (price) in Meshswap, the median value of TWAP, and the price of certain centralized exchanges such as Binance, Upbit, Bithumb, Coinone, Huobi, and gate io.&#x20;

&#x20;

## **4.5. MESH Staking**

**•&#x20;**<mark style="color:purple;">**MESH staking is neither an act of custody nor entrusting MESH to another entity. It is to lock up users' MESH asset by signing of users so that the MESH is not remitted or traded according to the consented terms agreed by the user themselves (e.g., staking period, etc.). Therefore, it is impossible to cancel, withdraw, or change the withdrawal wallet that violates these terms.**</mark>

**• In the case of staking with 8x efficiency, the staking continues without a fixed unstacking period. In the case of 4x or less staking efficiency, the unstaking information will be guided by pop-up for 30 days before the end of the staking contract.&#x20;**<mark style="color:purple;">**During these 30 days, you can either extend the staking period or withdraw the staked assets.**</mark>

**•&#x20;**<mark style="color:purple;">**If unstaking is not conducted within the 30 day waiting period, the new staking contract will automatically proceed based on the longest period of the previous contract (4/8/12 months) and the automatically re-contracted staking cannot be canceled.**</mark>

**•&#x20;**<mark style="color:purple;">**Once a staking contract is executed, it is not possible to cancel, withdraw, or change the withdrawal wallet, before the end of the contractual staking period. Therefore, please carefully review the staking policy below and the guide on termination of the contract before making a staking decision.**</mark>

[Meshswap staking policy and the guide on termination of the contract](https://docs.meshswap.fi/products/stake/staking-policy)

&#x20;

&#x20;

## **4.6. Provision Meshswap pool voting**

Those who hold voting rights (vMESH) by staking MESH tokens can participate in the Meshswap pool voting according to the Meshswap pool voting policy.

&#x20;Please refer to the link below for the Meshswap pool voting policy.

[Meshswap Pool Voting Policy (Link)](https://docs.meshswap.fi/products/pool-voting)

&#x20;

## **4.7. Provision of  Meshswap Governance Voting**

Those who hold voting rights (vMESH) by staking MESH tokens can participate in the Meshswap governance voting according to the Meshswap governance voting policy.

&#x20;Please refer to the link below for the Meshswap governance voting policy.

[Meshswap Governance Voting Policy (Link)](https://docs.meshswap.fi/products/governance/governance-voting-policy)

&#x20;

## &#x20;**5. Prohibited Acts**

Users must comply with this guide's precautions and not engage in the following actions.

**•** Activities that harm or disrupt the sound trading order of Meshswap

**•** Activities that disrupt or negatively affect the operation of Meshswap (including but not limited to Meshswap interfaces, Meshswap protocols, etc.) through automated or other fraudulent methods such as Agents, scripts, spiders, spyware, toolbars, etc.

**•** Activities that defame the Meshswap team or interfere with their work

**•** Providing inaccurate, incorrect, or misleading information while using Meshswap

**•** Activities of taking the assets of Meshswap users or engaging in taking the authority of the user's wallet without justifiable cause

**•** Activities that use proceeds directly or indirectly related to all forms of criminal activity (e.g., terrorism activity, tax evasion, etc.) when using Meshswap

**•** Impersonating someone other than yourself during the communication with Meshswap support team

**•** Other illegal acts in violation of any applicable laws and regulations

&#x20;

## **6. NO WARRANTIES AND LIMITATION OF LIABILITY**

&#x20;

**•** Meshswap is a web-app interface that allows users to use their Polygon(Matic) blockchain wallet to communicate with a decentralized protocol to swap assets and to provide liquidity. This means Meshswap wields no control over individual Liquidity Pools, or the trust of a swap. <mark style="color:purple;">**It is the user’s responsibility to carefully consider the benefits and risks related, by taking into consideration token price ratio at the moment of swap, and all the necessary informations to evaluate such risks.**</mark>

**•** Expected return rate, token price and all other information provided by Meshswap interface serve to help users make informed decisions for providing liquidity, removing liquidity, swapping, and should not be used to make financial decisions. <mark style="color:purple;">**Meshswap makes reasonable effort to provide accurate information, but does not guarantee the timeliness or accuracy of the information.**</mark>&#x20;

**•** Meshswap is not responsible for user loss of assets, and for generating profit that is less than projected profit, resulting from the use of Meshswap.

**•&#x20;**<mark style="color:purple;">**Meshswap does not guarantee the continuity of Meshswap service, and of the functions within**</mark><mark style="color:purple;">.</mark> Any service or functions provided within Meshswap can be added or deleted permanently, and Meshswap itself may be stopped or changed.  (In the case of a permanent stoppage of Meshswap service, users that may be affected will be given a reasonable period (30days or more)  and notifications/guide.)

**•&#x20;**<mark style="color:purple;">**Meshswap does not guarantee**</mark> the reliability of Polygon (Matic) blockchain platform used by Meshswap Protocol, as well as <mark style="color:purple;">**any other third party services.**</mark>

**•** Developers, operators and governance participants of Meshswap <mark style="color:purple;">**do not endorse, guarantee, or assume responsibility in any way for any and all part of Meshswap**</mark> to the fullest extent permitted by law.

**•** Due to the complexity of software code and the nature of technology, the perfect integrity of the code cannot be guaranteed. Smart Contract codes used in Meshswap may be susceptible to vulnerabilities which cannot be prevented by due diligence in the industry, and risks of asset loss exist(e.g., hackings or flash loan exploits utilizing those vulnerabilities).

**•** There is a continuous effort to maintain the block sync between Meshswap and Polygon (Matic) network; however, <mark style="color:purple;">**Meshswap interface may be stopped without prior notice**</mark> due to problems in the network resulting from transaction congestion, computer system errors and software attacks and other factors, such as natural events. <mark style="color:purple;">**Meshswap is not guaranteed to work at all times.**</mark>

**•** In aforementioned situations and more, <mark style="color:purple;">**there may be errors in the values/information displayed on the interface, as well as stoppage of service connection.**</mark> User requests for swap, deposit, withdrawal and other transactions may be delayed or fail.&#x20;

**•&#x20;**<mark style="color:purple;">**MESHSWAP, OUR DEVELOPERS, EMPLOYEES, OFFICERS, OPERATORS, AFFILIATES, AND GOVERNANCE PARTICIPANTS(HEREINAFTER, REFERRED TO AS THE “WE” OR “US” IN THIS AND NEXT SUBSECTIONS), MAKE NO WARRANTIES, EXPRESS OR IMPLIED, GUARANTEES OR CONDITIONS WITH RESPECT TO YOUR USE OF MESHSWAP. YOU UNDERSTAND THAT USE OF MESHSWAP IS AT YOUR OWN RISK AND THAT WE PROVIDE MESHSWAP ON AN "AS IS" BASIS AND "AS AVAILABLE." YOU BEAR THE ENTIRE RISK OF USING MESHSWAP. YOU ACKNOWLEDGE THAT COMPUTER, SOFTWARE, TELECOMMUNICATIONS SYSTEMS, AND BLOCKCHAIN SYSTEM ARE NOT FAULT-FREE.**</mark>

**•&#x20;**<mark style="color:purple;">**YOU UNDERSTAND AND AGREE THAT WE SHALL NOT BE LIABLE TO YOU FOR: ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL CONSEQUENTIAL OR EXEMPLARY DAMAGES WHICH MAY BE INCURRED BY YOU, HOWEVER CAUSED AND UNDER ANY THEORY OF LIABILITY.. THIS SHALL INCLUDE, BUT NOT BE LIMITED TO, ANY LOSS OF PROFIT (WHETHER INCURRED DIRECTLY OR INDIRECTLY), ANY LOSS OF GOODWILL OR BUSINESS REPUTATION, ANY LOSS OF DATA SUFFERED, COST OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR OTHER INTANGIBLE LOSS. UNDER NO CIRCUMSTANCES SHALL WE BE LIABLE TO YOU FOR ANY CLAIMS, PROCEEDINGS, LIABILITIES, OBLIGATIONS, DAMAGES, LOSSES, OR COSTS IN THE AMOUNT EXCEEDING THE ABOUNT YOU PAID US IN EXCHANGE FOR ACCESS TO AND USE MESHSWAP, OR USD$100.00, WHICHEVER IS GREATER. THIS LIMITATION OF LIABILITY SHALL APPLY TO THE FULLEST EXTENT PERMITTED BY LAW.**</mark>

&#x20;

## **7. Protection of rights and cooperation with law enforcement agencies**

In the following cases, the measures to user's access information (e.g., wallet address, access information, etc.) to the Meshswap website may be taken as reasonably necessary, such as being provided to a regulatory authority or judicial authority.

**•** When there are reasonable grounds to believe that the relevant asset is involved in hacking, money laundering, or other criminal activity

**•** When requested by a regulatory or judicial authority based on the applicable laws and regulations

&#x20;

## **8. Dispute**

Any dispute arising out of or in connection with these terms including any question regarding its existence, validity or termination and any dispute arising out of or in connection with users’ access or use of Meshswap, shall be referred to and finally resolved by arbitration administered by the Singapore International Arbitration Centre (“SIAC”) in accordance with the Arbitration Rules of the Singapore International Arbitration Centre ("SIAC Rules") for the time being in force, which rules are deemed to be incorporated by reference in this clause. The seat of the arbitration shall be Seoul or Singapore. The Tribunal shall consist of one arbitrator. The language of the arbitration shall be English.

&#x20;

## **9. Safety and Security**

Meshswap team has received professional security audits on Meshswap from credible professionals in the industry, and is in its continuous effort to improve security and to minimize vulnerabilities.

[Read the Smart Contract Audit Reports here](https://github.com/KlaySwap/klayswap/blob/master/audit/Smart_Contract_Audit_Report_KlaySwap_ver_2.0.pdf)

&#x20;

&#x20;

**This revision regarding the service will be effective from December 22th, 2022.**

**Service Agreement Change History**

**June 18th, 2021 : Initially declared**

**Dec 27th, 2021 : First revision (Inclusion of contents regarding the provision of liquidity in Lending, Yield Farm , Leveraged Yield Farm)**

**Jan 9th, 2023 : Second revision (Inclusion of contents regarding the provision of margin trading)**

&#x20;


# Privacy Policy

This Privacy Policy explains the way of treatment on the meshswap.fi website (the “Service”) of the user information for the Service.

### ■  Purpose of personal information treatment, collected items, retention and use period, and third-party provision

The Service does NOT collect, use users' personal information or provide it to the third parties.

\* The Services does NOT request, store, or process information that can identify users individually, or information such as private key, mnemonic key, and seed phrase required to access the user's wallet, or information equivalent thereto. Therefore, users must manage the above information safely by themselves, and the service is not responsible for any damage caused by the user's failure to fulfill this duty of care.

### ■  Installation, operation, and rejection of automatic personal information collection devices

1\. The Service may use 'cookies' that store and retrieve use of information from time to time to provide users with individually customized services.

2\. Cookies are very small text files to be sent to the browser of the users by the server(http) used for the operation of the websites of the company and may be stored on hard disks of the users' computer (PC).

&#x20;  1\) Purpose of using cookies: Cookies are used to provide optimized information to users by identifying the types of visits and usage of each service and website visited by the user, popular search terms, and whether or not secure access is available.

&#x20;  2\) Installation, operation, and rejection of cookies: A user can enable or disable cookie storage using the basic function of a web browser. For detailed cookie setting methods for each browser, please refer to the description of each browser.

&#x20;  3\) If a user refuses to provide cookies, a user may experience difficulties in using customized services.

### ■  Collection, use, and rejection of behavioral information

The Service uses the behavioral information analysis service using the following external analysis tools for service quality improvement, statistical purpose, and research. If a user would like to be excluded from this analysis, such user can turn it off by following the instructions in each item.

&#x20;  1\) Google LLC, (<googlekrsupport@google.com>) (USA)

\- Collection method: Transmission through the network at the time of the visitor’s using the  Service within the website

\- Collected items: Cookies, device browser-related data, device information, site activity information

\- How to unset: <https://tools.google.com/dlpage/gaoptout>

### ■  Point of contact

If you have any questions about this Privacy Policy, please contact <privacy@ozys.io>. The user's message is forwarded to the person in charge of the company's privacy policy.

### ■  Revision Terms of Privacy Policy

The Service may revise and post this Privacy Policy from time to time, and the revised policy will take effect from the same time as it is posted. If the privacy policy is changed significantly unfavorable to users, it will be posted at least 30 days before the effective date.&#x20;

### ■  Revision history of Privacy Policy

### 1. (1st enactment) 2023. 01. 11


# Contract & Audit

Meshswap protocol has been audited.

Meshswap protocol is built on open-source software and our smart contracts are publicly visible for transparency.

Please read final audit reports below.

### Contract & Audit report

* [Contract source code ](https://github.com/meshswap-fi/meshswap)
* \[Audit report] [Theori](https://theori.io/) - [Meshswap protocol ](https://github.com/meshswap-fi/meshswap/blob/main/audit/%5BTheori%5D_meshswap_audit_rev1.0.pdf)
* \[Audit report] [Move Labs - Meshswap Protocol](https://github.com/meshswap-fi/meshswap/blob/main/audit/%5BMoveLabs%5D_Security_Analysis_Report_Final.pdf)


# Contact & Team

### General

You can access Meshswap through the[ official Website](https://meshswap.fi/)

:book: Medium: <https://medium.com/@Meshswap>

:telephone\_receiver:Telegram: <https://t.me/MeshswapChannel>

:bird: Twitter: [https://twitter.com/Meshswap\_Fi ](<https://twitter.com/Meshswap_Fi >)

:computer: Discord: <https://discord.gg/meshswap>[](<https://discord.gg/tnFvuEVgHB&#xD;&#xA;>)

:blue\_book:Facebook: <https://www.facebook.com/Meshswap>

:camera: Instagram: <https://www.instagram.com/meshswap>

### Team & Product

**Ozys** is a blockchain company that leads changes in the world and presents innovation.

:thumbsup:Ozys: <https://ozys.io/>

:airplane: KLAYswap: <https://klayswap.com/>

:bridge\_at\_night: Orbit Bridge: <https://bridge.orbitchain.io/>

:moneybag:Belt Finance: <https://belt.fi/landing>


# Events

Following is the events in this section:

{% content-ref url="/pages/zosun9ljAHwI2lToQoSl" %}
[Early-bird MESH Airdrop Events(End)](/more/events/early-bird-mesh-airdrop-events-end)
{% endcontent-ref %}

{% content-ref url="/pages/jmbiHV0F1fCqyXmgKb5E" %}
[Meshswap x Kucoin Partnership Giveaway Event(End)](/more/events/meshswap-x-kucoin-partnership-giveaway-event-end)
{% endcontent-ref %}


# Early-bird MESH Airdrop Events(End)

![](/files/hGrGirymEzKbL470zZ2V)

With Meshswap governance token, MESH, enjoy various benefits including Yield Farming, Swap fee profits, and Airdrop!\
Don't miss the opportunity to become an early $MESH adapter before the official launch!

## \[Ended event 1] Polygon Warm-up Event <a href="#id-3f87" id="id-3f87"></a>

**Let’s join Polygon network, the foundation of Meshswap!**

**1. Winner:** Wallet users who scored over 90 on Polyscore

**2. PolyScore Link:** <https://polyscore.polygon.technology/>&#x20;

**3. Reward: Total 400,000 MESH**

**4. How to claim the reward:**

Must click on the “Claim” button on the Meshswap airdrop page.

\*\*Instead of the previously announced method of receiving MESH rewards being automatically airdropped into the winner’s wallet, **the winner will receive them directly from the Meshswap website.**

## \[Ended event 2] Polygon — Matic Holder Event <a href="#id-8556" id="id-8556"></a>

**Be ready to start Meshswap with your MATIC wallet!**

**1. Winner: Applicants who have 100+ MATIC in their private wallets at the time of the snapshot**

**2. Gleam Link:** [**https://gleam.io/Y6eh2/meshswap-matic-holder-event**](https://gleam.io/Y6eh2/meshswap-matic-holder-event)

\* The detailed guideline will be posted on the following pages.\
&#x20;  \- Telegram: <https://t.me/MeshswapOfficial>\
&#x20;  \- Discord: <https://discord.gg/tnFvuEVgHB>

**3. Reward: Total 250,000 MESH**

**4. How to claim the reward:**

Must click on ***‘Claim MESH’*** button on Meshswap main page and claim your MESH tokens.![](/files/WBD2SZEd8lUoehlJL4D5)

## \[Ended event 3] KLAYswap Drops Event <a href="#id-7b95" id="id-7b95"></a>

**Show the grand power of vKSP holders!**

**1. Winner: vKSP holders who staked KSP on KLAYswap**

**2. Link**

\- KLAYswap link: <https://klayswap.com/>\
\- KSP staking guide: <https://docs.klayswap.com/how-to-guides/how-to-stake-and-vote-on-klayswap>

**3. Reward: Total 400,000 MESH**

* Will be distributed in proportion to the share of vKSPs in the market
* Airdrop Claim: Available after May 3rd (UTC), 2022

**4. How to claim the reward:**

Must click on the ***‘Claim airdrop reward’*** button in Drops menu on KLAYswap to claim the reward!<br>

## \[Additional event: 200,000 MESH]

### **Ended event 4. \[ Korbit x Meshswap ] $MESH Airdrop Event**

* Reward: Total 30,000 MESH
* Event Details(Korean):\
  <https://exchange.korbit.co.kr/notice/?id=192gscR1lQz5QffT759HVo>

### Ended event 5. **\[ Poloniex ] Hold MATIC to grab a share of 10,000 MESH**

* Reward: Total 10,000 MESH
* Event Details(English):\
  <https://support.poloniex.com/hc/en-us/articles/5738273991831>


# Meshswap x Kucoin Partnership Giveaway Event(End)

**Meshswap x Kucoin Partnership Giveaway Event**

**- Total $5,000 worth of MESH**

**- Can participate in up to 3 events**

<figure><img src="https://miro.medium.com/max/1050/0*DLDin-z9Y6KmuAwr" alt=""><figcaption></figcaption></figure>

Meshswap and Kucoin Wallet have formed a close partnership in the Polygon ecosystem and have continued to collaborate. Recently, Meshswap integrate with Kucoin Wallet, and users can also quickly access Meshswap through Kucoin Wallet app.

We have another important piece of news. With the technical support of Meshswap team, users can use Polygon network XRP (oXRP) on Kucoin Wallet! XRP is a coin that is highly accessible and trades very quickly within a second of transmission speed. The oXRP makes transactions between the central exchange and the on-chain easier and more intuitive for Kucoin wallet users.

The Meshswap team holds three events to strengthen the partnership.

Participate in all 3 events and receive gifts! Please continue showing great interest in Meshswap, Kucoin Wallet, and XRP.

## **\[EVENT 1] Join On-chain Community**

**1. Winner & Rewards**

* 500 Random winners ($4 MESH each)
* Total $2,000 worth of MESH

**2. Event Schedule**

* Event period: Oct 11th 3:00 am \~ Oct 18th 3:00 am (UTC)
* Winners Announcement: After Oct 21th (UTC)

**3. How to Participate**

* Finish all community join tasks on [event link.](https://gleam.io/Y0dZx/meshswap-x-kucoin-partnership-giveaway-event)

**4. Remark**

\* If you participate in the event unfairly, your application may be canceled.

\* Winners will be listed on the Meshswap community channels below.

[Discord](https://discord.com/invite/cJwDawd8Ef) | [Telegram](https://t.me/MeshswapChannel)

## **\[EVENT 2] Hold oXRP in your KuCoin wallet**

**1. Winner & Rewards**

* 100 Random winners ($20 MESH each)
* Total $2,000 worth of MESH

**2. Event Schedule**

* Snapshot: Oct 18th 3:00 am (UTC)
* Winners Announcement: After Oct 21th (UTC)

**3. How to Participate**

* Hold at least 20 oXRP in KuCoin Wallet at the snapshot.
* [☞Event Guide: How to move & deposit oXRP on Meshswap](https://link.medium.com/oa249kprVtb)

**4. Remark**

\* Only Kucoin wallet counts for this event.

\* oXRP is ‘Orbit bridge Polygon XRP Token’ and has same value as XRP issued by Ripple foundation.

\* Only Polygon network oXRP counts for this event. Any type of oXRP outside of Polygon network is invalid (e.g. Klaytn network oXRP)

\* Holding oXRP paired LPT(Liquidity Pool Token) doesn’t count for this event.

\* If you participate in the event unfairly, your application may be canceled.

\* Winners will be listed on the Meshswap community channels below.

[Discord](https://discord.com/invite/cJwDawd8Ef) | [Telegram](https://t.me/MeshswapChannel)

## **\[EVENT 3] Farm oXRP, Harvest MESH**

**1. Winner & Rewards**

* Top 40 deposit users will be the winners ($25 MESH each)
* Total $1,000 worth of MESH

**2. Event Schedule**

* Snapshot: Oct 18th 3:00 am (UTC)
* Winners Announcement: After Oct 21th (UTC)

**3. How to Participate**

* Deposit oXRP in oXRP/USDT pools with Kucoin wallet on Meshswap at the snapshot.
* [☞Event Guide: How to move & deposit oXRP on Meshswap](https://link.medium.com/oa249kprVtb)

**4. Remark**

\* Only Kucoin wallet counts for this event.

\* At the time of the snapshot, winners will be determined in the order of the largest oXRP/USDT LP token holdings.

\* If you participate in the event unfairly, your application may be canceled.

\* Winners will be listed on the Meshswap community channels below.

[Discord](https://discord.com/invite/cJwDawd8Ef) | [Telegram](https://t.me/MeshswapChannel)

**\[ Meshswap links ]**

* Official Website: [https://meshswap.fi](https://meshswap.fi/)
* Docs: <https://docs.meshswap.fi/>
* Medium: <https://medium.com/@Meshswap>
* Telegram: <https://t.me/MeshswapChannel>
* Discord: <https://discord.com/invite/cJwDawd8Ef>
* Twitter: <https://twitter.com/Meshswap_Fi>

**\[ Related links ]**

* Orbit Bridge: [https://bridge.orbitchain.io](https://bridge.orbitchain.io/)
* Kucoin Wallet: <https://kuwallet.com/>
* Kucoin Twitter: <https://twitter.com/KuWallet>
* &#x20;Kucoin Discord: <https://discord.gg/958cKHaG2m>
* Kucoin Telegram: <https://t.me/kuwallet>
* Kucoin Youtube: <https://www.youtube.com/channel/UC2mr18AGjCiELBNZ0w5WkwA/channels>
* Kucoin Medium: <https://medium.com/@KuWallet>


# Swaps

### [Swap](https://meshswap.fi/exchange/swap)

![](/files/GJGXax9wpe3rDT5PzyR5)

**Token swaps** is the simplest way to exchange various tokens circulated on the Polygon mainnet according to ratios of token pairs deposited in the pool.

Once users swap (trade) tokens through Meshswap, the transaction fee will be determined by following **the reward policy respectively.**

| Pool types                   | Composition of fee distribution                 |
| ---------------------------- | ----------------------------------------------- |
| MESH rewards pool            | Buyback funds (50%) + Pool voters (50%)         |
| Transaction fee rewards pool | Buyback funds (50%) + Liquidity providers (50%) |

* Half of the fees incurred in all farming pools are used as funds for MESH Buyback & Burn.
* MESH rewarding pool distributes more MESH to the users who voted for the pool.
* Transaction fee reward pool distributes more MESH to users who have deposited their assets in the pool.


# Lend

### [Lend](https://meshswap.fi/single/pool) (lending pool deposit)

![](/files/rfK2Mz4mhUU4iQiSzxS9)

**Lend is a simple and safe deposit method that allows you to deposit only one asset and earn interest income in return**. Once a user deposits MATIC in a lending pool, you can earn interest as a form of MATIC based on real-time returns. In addition, **it distributes additional MESH rewards** based on the liquidity supply contribution of a lending pool depositor as well as deposit revenue, providing higher returns than any single asset depository service or protocol in the digital asset market.

Lender’s deposit income (interest) is generated from the interaction with the leveraged farming pool which is another deposit service in Meshswap. As a leverage farmer’s borrowing interest is distributed back to a lender, the more active assets deposited in a lending pool are used for leverage farm, resulting in a **higher deposit yield** on the lending pool.

On a Lend-Leverage farm interaction structure, lending and borrowing, interest payment, and asset return proceed safely with automated smart contracts. In addition, Meshswap manages a separate Safety Fund related to lending on its own in order to safely manage the assets and profits of a lender. The safety fund is a rainy day fund accumulated from leverage farmers who have exceeded a certain level of safety standard. And in the event of contingencies in which a lending pool asset utilized by leverage farmers cannot be returned, the Safety Fund will be used to cover the shortage instead. As a result, a lender can safely enjoy opportunities to generate profits by minimizing the asset loss risk.


# How to deposit your assets on Lending pools

1\. Go to the **\[Lend]** page from the **\[Deposit]** menu at the top.

![](https://lh6.googleusercontent.com/nG50fr28BHAdx7xK0K_OQXEkO4t0LI8RQqvJAMuBZhBarjw_hFGEhRTtIG18P7u3Yl04fqpLY8PUUNw1wLVj5JWVonpzpp77NteJ5JWplMm7ynS5BlWWA-TugypABsQH7nBEQskVhcmBbBS_Fw)

2\. Select the lending pool you prefer from the list, and click the **\[Deposit]** button.

![](https://lh6.googleusercontent.com/8rISa2HPTB1CqtMGYUopPmTUuB8Q2JKq-PLdpUZ8-t_EHDPqYUzY3BQWaA3EE8ZJTy2CJ7UcX4X9PGupBw6XSIRgj_xHe-72vuYBO9xHw0db4AcpVVEGTsV1Z_CV-Lv90uTeAqLm49J8hFU_xA)

{% hint style="info" %}
Tips

* You can simply search token name or symbol.
  {% endhint %}

3\. Check your balance in the deposit pop-up window and enter the amount for the deposit. Review the Deposit APR and Share of Pool in the “Estimated Returns” section and click the **\[Next]** button.

![](https://lh6.googleusercontent.com/HxJVmkKa0Sd3DunUyEOTR7t7BZTiom3lMWp7d9y0JDJBW4z4-VGfWSImr_PqcUYzYID-IizncDjLzJ5c6XjoNWaFjLHIeKB_uFSKkn_GelKLIg0Kegd-xrwmCmPO9q7M-N4cZw9dKhaGhjVs8A)

{% hint style="info" %}
**Tips**

* Balance “max” button allows you to make the maximum deposit transaction in real-time.
* Depositing MATIC will automatically be converted to depositing WMATIC.
* MESH APR (%): Lenders receive MESH yields in accordance with their deposit share ratio from daily MESH yields distributed to a pool.
* Deposit APR (%): Deposited lending is utilized for leverage farmers, and interest fees paid by leverage farmers are automatically distributed to lenders in return. Lenders can check the accumulated interest (claimable MESH) in real-time.
  {% endhint %}

4 “Confirm Transaction” pop-up window will show up. Check the expected lending pool info and click the **\[Deposit]** button to move forward. Click the **\[Confirm]** button from your crypto wallet as well.

![](https://lh6.googleusercontent.com/6zYMxl0BH2Z0ndMuYu5Tu34FclxhGeIcFIb4ErdfQUFH3CHvqlkJRzhHn6Z-z5n7lEp06vhmEkoSobOuhsJpyJReZEvVobiv1tBuQy345jsin5mOibYLJS9RnZ1lND8O6kqbQkScXo46uGK7ww)

{% hint style="info" %}
**Tips**

* If there is no history of a selected token transaction on Meshswap, Token Approve Transaction will be preceded before Lending Transaction occurs (One time only).

{% endhint %}

![](https://lh4.googleusercontent.com/bYVz7KKSntxpEvOS9eJOLPBOJTBjzOgf4kCAcSEr054RQ_F41XgGdIAsS89yLknWrltr35wPj4KQapGB70srFD2H3yEzlq-xL0v6YJg71vYqvjwXXz0Lf5fKutsnPhDatvINbRXCRR6viMX3YQ)

5\. Once the deposit completes, you can check “Asset deposited” and “Claimable MESH” info from the pop-up window. Interest accrues in accordance with real-time deposit APR. If the “Asset deposit” balance is changed due to additional deposits or withdrawals, the MESH yields will be automatically claimed to the user's crypto wallet.

![](https://lh6.googleusercontent.com/pDbevny3ZQrlgx-uFvtrvldFFIjbzJzrQwZM7YJJ9wr2PtJaVOUCGJn77P7MDjQuUaBjnHdnt8kRf_86rS0_ik3GU8MtOSPlf4_jdoNCrk32RXqqlCuaAY1sHOI06hrhq92ZvkbpiRby8K9-LA)


# The Detailed Policy of Lending Pool Deposit

### **Deposit, withdrawal policy**

* Users can freely deposit and withdraw distributed interest earnings at any point. In addition to interest earnings, MESH reward is additionally distributed in return for users’ contribution to liquidity supply by depositing their assets, and the total rate of return on each lending pool is the summation of deposit and MESH distribution yield.
* The deposit APR (%) and MESH APR (%) of each lending pool are real-time variation values, which depend on the total deposit size of the pool, the deposit/utilization status, and the daily MESH distribution volume.
* Upon initial deposit, you must complete the transaction authorization process for each token. After the process is complete, you will be able to use the deposit service.
* Leverage farmers will pay 80% of the accumulated interest earnings to lenders, 20% will be set aside as reserves, and will later be used as a reserve fund for MESH Buyback & Burn program.
* Interest earnings based on real-time returns are accumulated on the assets deposited (principal), and withdrawals can be made, including interest earnings accumulated so far.
* MESH rewards which are distributed up to the point until the change of balance (additional deposit/withdrawal) will be automatically received in my wallet.
* The borrowing APR (%) of each lending pool depends on the utilization ratio, which indicates the number of leverage farmers borrowing assets of lenders at the moment.
* &#x20;The higher deposit rate of return (the higher utilization ratio) as more assets are utilized in a lending pool. The deposit yield for each pool's utilization is as follows.\
  \
  (1) **Utilization ratio(%)=** (Total Borrowed/Pool Liquidity)\*100\
  (2) **Deposit APR(%) =** Borrow APR∗(1−reserve Factor)\
  \
  &#x20;    \* Leveraged yield farm will pay 80% of the accumulated interest earnings to a Lender, \
  &#x20;       20% will be set aside as reserves, and will later be used as a reserve fund \
  &#x20;       for MESH Buyback & Burn.\
  \
  &#x20;     \* reserve Factor = 0.2
* On the other hand, the more assets are utilized in a lending pool, the steeper the borrowing costs that leverage farmers have to pay. As such, the mechanism of interest rate formation according to the interaction between asset utilization demand (leverage farmer) and a lender induces more deposits by providing higher returns to depositors as a lending pool asset is actively utilized. However, if it is overly active (more than 90%), a high cost is set to naturally induce a return of the assets in use.\
  \
  (1) **Borrow APR(%) =** Borrowing Rate Model\*Utilization\
  \
  \* Please refer to [Borrowing rate Model](/products/interest-rate) of each token.&#x20;

### Terminology

<table><thead><tr><th width="182.4324324324324">Terms</th><th>Definition</th></tr></thead><tbody><tr><td><strong>Pool Liquidity</strong></td><td>The total number of assets deposited in lending pools expressed in dollar value, and an increase of the figure depends on yield for deposit</td></tr><tr><td><strong>Total Borrowed</strong></td><td>The total amount of assets used in a lending pool expressed in dollar value, and the figure increases with Borrow APR (%).</td></tr><tr><td><strong>Total APR(%)</strong></td><td>Expected earning rate from a pool is the sum of return from MESH distribution and return for deposit (MESH APR + Deposit APR)</td></tr><tr><td><strong>Deposit APR (%)</strong></td><td>Assets deposited by lenders are utilized as funds for leverage farmers, and interest fees paid by leverage farmers are distributed to lenders. The earnings distributed to a lender is automatically included in the quantity of my wallet deposited and can be checked in a swift manner.</td></tr><tr><td><strong>MESH APR (%)</strong></td><td>Lenders receive an amount of MESH determined by their respective deposit share ratio from the amount of daily Mesh pool distribution.</td></tr><tr><td><strong>Borrow APR (%)</strong></td><td>Assets deposited in a lending pool are utilized for leverage farm, and the leverage farmer pays the borrowing cost (interest) in return for utilizing the lending pool asset. 80% of the accumulated interest is redistributed to a lender, and 20% is used as a fund for MESH Buyback &#x26; Burn.</td></tr><tr><td><strong>Withdrawable</strong> (amount)</td><td>It indicates a withdrawable amount of asset based on the current contract, which varies minute by minute with the scale of total deposit and total volume utilized.</td></tr><tr><td><strong>Debt ratio(%)</strong></td><td>The ratio of how much assets deposited in a lending pool are currently being utilized is calculated as (Total Borrowed  / Pool Liquidity)*100.</td></tr><tr><td><strong>Reserve for MESH buyback</strong></td><td><p>20% of the interest fees paid by Leverage farmers when using a lending pool asset is raised as a Reserve Fund, which is used for MESH Buyback &#x26; Burn.</p><p> ＊Afterwards, the MESH Buyback quantity generated from each lending pool is automatically aggregated to determine the daily MESH distribution quantity of the pool depending on its contribution.</p></td></tr></tbody></table>


# Yield Farm

### Providing Liquidity and LP Token

Users who deposit their assets in any type of pools they favor are called **Liquidity Providers (LP).** Providing liquidity to the pool will result in the receipt of a **Liquidity Pool (LP) Token** as evidence, and the number of received LP Token corresponds to their share(%) in the entire pool.

If you withdraw all your assets from the pool, the LP Token will be automatically returned, and the user can receive the following rewards from the pool through the proof of LP Token during the asset deposit period.

#### **MESH distribution rewards**

If the user supplies liquidity to a MESH reward farming pool, users can receive MESH mining rewards according to their LP stake (%) in the pool (The daily distribution quantity per Mesh rewards pool is determined by pool vote).<br>

#### **Transaction fee rewards**

If the user supplies liquidity to the transaction fee reward pool, users can receive the transaction fee according to their LP stake (%) in the pool. The transaction fee is accrued to the Pool, and the total amount of the withdrawal includes the transaction fee reward and is processed according to the exchange rate at the time of withdrawal (50% of the transaction fee incurred).<br>

#### **Token Airdrop rewards**

If the user supplies liquidity to an airdrop reward farming pool, the Airdrop token will be distributed according to their LP share (%) in the pool.<br>


# How to deposit your assets on Yield Farming pools

1\. Click the **\[Deposit]** menu tap at the top and go to the **\[Yield Farm]** page.

![](https://lh6.googleusercontent.com/vuZymAtp09Ja6puWIBm3-Ntj-NVii2WNmvA_qfW5kbag5qO6A_96RBRprNuXJc6h7GbZk8mQyedKFI8Eg0SdMdeMb52sAa-zgKlFJtSsmHkBsBFUTt3pUaviepcO2ufD7EQxv3pZjmi4FtfCeA)

2\. Select a yield farming pool from the list and click the **\[Deposit]** button to go to the pool detail page.

![](https://lh3.googleusercontent.com/qDfY8OyMk3Ko8opo0bIra_zYzIe3hD1Fnzfxac4hxKrPN3ZCo-lYeQ2SApMHvtr7zZPY8gMind_5Qlho_Efm95i3inqKbq3MC2c71ixbjlt37MOS39OSRyJ0jOd3h53YYcPzA08x9SEfLP54EA)

3\. Enter the deposit amount.

![](https://lh5.googleusercontent.com/Zleqg0Rf-i7kixXr58PS_qGnGAdN37fV8oKZoeNP1nPZ983nyC_hcaA3pGtsnMH_A9D0aVUwvllwbt7G9B_96rLYTcER6IyC_aLoOyHrJvE6SZDHgo4rNszfCo1OaCam9sGEUtNDZzxUQUxUOg)

{% hint style="info" %}
**Tips**

* **Making a pair of 2 tokens (A+B) deposit:**\
  When you enter the quantity for one asset (A), the quantity for the other pair (B) is automatically calculated and entered.
* **Making one asset (A or B) deposit:**\
  The smart contract automatically swaps and deposits assets at the optimal rate corresponding to the current pool exchange rate. In order for users to acquire more of their stake in farming pool as possible, a certain amount of Token A is swapped for Token B and deposited as A + B Token pair.
  {% endhint %}

4\. Check the expected yield farming info in “Estimated Returns” section and click the **\[Deposit]** button to move forward.

**All information shown is a real-time estimate and may differ from the actual deposit process.** Therefore, please be aware that a difference may occur during the deposit process.

![](https://lh6.googleusercontent.com/m1EpGv16Gp4VOAmiixsECmlFeq-xORgSxoG7fOYOcP1gUKFDpbYR5_NSaBQSR0iqDBxKCeztc686A7EuUQnvwHOCjaDyo2PYeVPqV8yKWFapDEEeiI4cGk1Us1RNYtQe0loFVMl6CPzRPlbTJQ)

{% hint style="info" %}
**Tips**

* **Exchange Rate:** You can check the exchange rate (price) applied when a user swaps a certain portion of the assets requested for a deposit for the remaining pair of assets.\
  **＊Difference from Current Rate:** It refers to the difference (slippage) between the Exchange Rate based on the current pool status and the Exchange Rate that will applied.
* **Share of pool:** It shows my estimate stake in the pool based on the current pool size.
* **Daily Reward:** It shows the estimate daily MESH yield of my deposit based on the current pool's MESH APR.
* **Exchange Rate Range:** Deposits are only made within ±1% of the current exchange rate. Token exchange rate may fluctuate significantly when large-scale deposits and withdrawals occur in the pool. And the exchange rate range serves as a safeguard to prevent making deposit in these unexpected token prices. Please be aware of the fluctuation range before deposit.
  {% endhint %}

5\. Check yield farming info from “Deposit details” pop up window and click the **\[Next]** button.

![](https://lh4.googleusercontent.com/eTVjOz-zXZMuGbJ4xEa-Q2uVnZRmWTvJH1oY4OjWyuMBPGsjxAvQqCPQRdAiA4JsQ61-n1ANqCC3ZCMRCW1aVBfaQL7hVS1nkefNkNWUREeNRL7DvTvN7UkzGPKgbKcVSUqLCJbivXmEOBtRQQ)

6\. In the “Transaction Confirmation” pop-up window, check the expected yield information and click the **\[Deposit]** button. Once you verify the info, click the **\[Confirm]** button in your crypto wallet.

![](https://lh6.googleusercontent.com/z8rrfO3UVrrWGUEA8nAMkA8fDCRtDPTwDCeawRmhpseTkozEsYH724oXfC1wdnFi2iGgsEbIxNuZwNY1dYO9Zcx3aXKKnN9K2IbJ6u6tX3IQw4FnT94XUFr4IRpA5dm_eVpYt-LTIyRMn07Rmw)

{% hint style="info" %}
**Tips**

If there is no history of a selected token transaction on Meshswap, Token Approve Transaction will be preceded before Farming Transaction occurs (One time only).
{% endhint %}

7\. After completing the transaction and deposit, you can check the current status of yield farming in **"Asset deposited"** at the top. Yields will be distributed in real-time after the deposit is completed.

![](https://lh5.googleusercontent.com/X6vuyLNpYuW56fZ_m1TIeNQ6zuFa4690vpQxju_1beHa-lYX5rr3q0kGOItWuGPEZiaYRHT2zC41_2reFDdZH2P4uthRlco8hzky6UFd6p9vBML0_UEWJnFHSG3aOMjm6HjAHZNUsIQHgjarNg)


# Leveraged Yield Farm

### About Leveraged Yield Farm

![](https://lh6.googleusercontent.com/jL9USwATg76pEQ-fjHJPiTACkOMUKHUUfR72uo1yBcTBQ3nlR6XpoOQ-oEBmtvmPvAkjqr_zqy3EcAt4r7k5tkdI_Y5D2aFcK8ijk9waC_vYzD-9Mu7ziitpqJmMuOrFtAjtdqIUPLLe9lHkIA)

Leveraged yield farming works in a way that helps users **deposit assets in a pair by utilizing additional assets** from a lending pool. Leverage farmers can take leverage 2 - 3 times as much as their assets, allowing them to earn **much more rewards than they would have received from the yield farming pools.**

**How does this profit model work?**

![](https://lh3.googleusercontent.com/3j4CfkbO_YzLy4CQXWvPdGLHzTLcRNv2RGaACPuayZLIh54G8IscM0tdgySE5l3JmjK7d5-HrUhqVjMGeX9ejdxWrhxKbvDR0D55_0YJUJFCEXWcA1G0iY3OzCbbeLApZ1GJpSI_N7BM4JsV1Q)

This profit generation with maximized capital efficiency is feasible due to the active lending pool utilization. Leverage farmers can borrow assets from lending pools on a larger scale in addition to their assets in hand, earning more various types of rewards (MESH, airdrop tokens) generated from pools.

Although leveraged yield farmers are required to pay a borrowing interest to lenders, leveraged yield farmers can earn 2 -3 times more rewards than farming in other pools. Hence, leveraged yield farmers can earn more profit even after paying interest fees.

### **Determination of Leverage farm volume: leverage multiplier setting**

![](https://lh3.googleusercontent.com/FCUZAanBJ0On0uR1UCfrFmsJ9GzT3Kbg8a1OecXWelZbORBjFHo83b1tSprkEeLve7o8nVklbfe0bgSa47WaYEFfCI0gS_j9U4GfwViZsusKS3py8zUrp7Cs1PpB87gAVAkFSzfwIAQIFMbQVA)

Users can choose the borrowing amount through the leverage multiplier settings. In order to deposit at the scale of (the dollar value of depositing assets\*leverage multiplier), a certain percentage of the borrowed asset is automatically swapped and deposited at the optimal rate.

If you choose a 3x leverage multiplier when depositing 200 oUSDT, the user will deposit a total of $600 worth of MESH+oUSDT pair ($200\*3) into a pool.

Leveraged yield farmers are not bound by the current exchange ratio(price) of paired assets when depositing. But Meshswap's leveraged yield farming allows users to deposit any proportion of the two tokens or even only one token. Through the smart contract, the underlying protocol will automatically swap tokens into a 50:50 split in optimal rate based on the current pool exchange rate.

![](https://lh3.googleusercontent.com/BtSZD4wDfpOTDkFPophq3xo5ua5YwXXAonhx9jfHFy1uQdHsFlla22LItEGvyGm6PcobVzSinkrLZVbJGaI9plw325eJo5rUAM4UFdgbA6o2-FmS_yhphGKTo_GX8UVbhB1b3bfLQUchQYHcmA)

You can select a leverage multiplier from the deposit menu, and check the estimate changes history in the estimation section after the deposit.

＊1.0 x leverage means without leverage, such as with standard yield farming.

### Choice of an asset to borrow

![](https://lh5.googleusercontent.com/g2DIzGbOioUIiFucJWhdBC1gPdZwqWO8QqStTELozSaCqxcuQUSI1WE8bZRMp46-USCvbIWvylM2BI719WVKY2ePTt8IUY4j0Xc4g7mPaB8PNDOCbGKoSfb-8gdOLDR_dHNEvLTGs40kFcGKwg)

**Leveraged yield farmers can choose which assets to borrow from a lending pool.**

If you choose to use oUSDT as the example above, the optimal pair deposit will be made using oUSDT equivalent to $400, and the user will proceed with a pair deposit of 150 MESH + 300 oUSDT ($600).

＊If you leverage up to 3x, when depositing 200 oUSDT (1 MATIC = 2 oUSDT, fees not reflected):\
→ My asset : 200 oUSDT = $200\
→ Borrowed asset: 400 oUSDT = $400

You will deposit 600 oUSDT ($600) in MESH + oUSDT pool at the optimal rate.\
→ Total deposit: 150 MESH + 300 oUSDT = $ 600

![](https://lh4.googleusercontent.com/jqEQx6-cY6p4wf_UBT4te20vQTyyjI3qhNVUfusfFo4qBoWggZJ5yxQcE9D3GpxNimPk4CHaN35yVJ6lMCwTYKrxvV7CBGjC0jz4Cx3OrLOHGIbIL9KBdx-1s0DWnQsBj_Db4J6dKJ4fND48iA)

You can choose which tokens to borrow from the deposit menu. After the deposit, the final estimated return will be shown in the ‘Estimated Returns’ section.

Assets borrowed from a lending pool must be returned at the end of the leverage farming period (withdrawal). Including assets with some level of variability (MATIC, ETH, XRP, MESH), stable assets with little price fluctuations (USDT, USDC, DAI) can be utilized in order to pursue more stable returns.

In addition, smart contracts in leveraged yield farming pools can take optimal strategies by directly depositing assets in pairs without swap or by depositing assets in pairs by swapping at a certain ratio.

* The variety of lending pools will be available gradually, and slippage will be fixed at an initial rate of 1.0% (Individual settings will be provided later).

### **Managing Debt ratio**

![](https://lh3.googleusercontent.com/GA-DlNsUiCaS8KWKx9QH_1-EI72Pw8IdocjCtSlg0-aXqL6y8tHXZhN1mK3Pz9ZkLgviRTdin7DymPlmpY3wYAJm9vXAE3NrGvWcKrRWyYrDb-rfbSGWr9OlvsjRikK_G4KrMAhoYmJVftT9ig)

The debt ratio (The debt-to-equity ratio) refers to **the ratio of borrowed assets to total assets deposited.** A higher debt ratio will eventually require more repayment. If the borrowing cost rises or the value of deposit asset declines due to rapid toke price fluctuation, leverage yield farmers may have difficulty repaying the borrowing.

For safe asset management, Meshswap protocol sets a maximum debt ratio standard for each pool and performs liquidation when the maximum Debt ratio exceeds (Min. 85%\~Maximum 92%, Varies by a pool).

Leveraged yield farmers should always be careful **not to exceed 85%\~92% of the debt ratio for safe asset management. To prevent liquidation**, you should either 1) Pay off part or all of your borrowing by withdrawing “leveraged assets” from the withdrawal tab, or 2) lower the debt ratio by depositing additional assets with a low leverage multiplier.

In the case of liquidation, **the assets currently being utilized will be returned first, and the remaining balance, excluding the liquidation fee (20%), goes to the users’ wallets directly.**

The accumulated liquidation fee is used as a safety fund for returning lending pool assets that have not been returned due to sudden price fluctuations. Debt ratio management and liquidation system are intended for protocol stability and smooth lending asset utilization. The liquidity supply in the lending pool can be activated only when lenders can trust the lending and leverage the yield farming system and supply more liquidity as the lending is safely returned to lending pools. In addition, **a greater liquidity supply in a lending pool offers a lower borrowing rate which helps leveraged yield farmers to borrow the lending with a lower cost (%), resulting in greater returns.**

＊Debt ratio is different for each pool. For more details, refer to the link below.

{% embed url="<https://medium.com/meshswap/leveraged-yield-farm-is-now-available-5b1e80d93c8a>" %}

### Simple termination of Leveraged yield farming (Withdrawal)

The procedure of leveraged asset withdrawal is not so much different from other farming pool withdrawals. If you insert the withdrawal amount based on the total number of LP Tokens currently held, the borrowing will be returned first through the leveraged assets (borrowing) withdrawal.

Once the entire borrowing is fully returned (leveraged asset withdrawal), the remaining balance goes to the user's wallet. The quantity of 'Leveraged Asset' in the 'Withdrawal’ tab refers to the repayment amount of LP tokens (borrowing), and the Leverage farm ends once a full borrowing withdrawal proceeds. Withdrawing a portion of borrowing is effective for safe asset management.

The quantity of 'Leveraged Assets' in the 'Withdrawal' tab is the required redemption amount of LP tokens currently in use, and the leverage farm will be terminated when a full withdrawal is requested.

![](https://lh3.googleusercontent.com/mhuV_hhdNxOK1IorAyb4JlTJgapUbr4qWrR3XjVlnQZFG-Ve_bx6I5tl4e8Xu7hsifXQx_MG9N3TlWxl-zrecGhbfupNBuK9klfbIlW5_4MNQPNBMHpR6cFUqdts5A__SNJloPDoXe1ieGazyw)

For instance, the above user currently has a total of 200 LP Token deposited in the MESH+oUSDT leverage farming pool. At this time, **100 LP Token, which is a leveraged asset**, refers to the required repayment of borrowing.

When a user withdraws 150 LP Token, **100 LP Token is the amount required for preferential return** and **the remaining 50 LP Token will go to the user's wallet.** You can check the detailed quantity of LP Token used for return in the returned asset details, and the detailed quantity that can be received in your wallet can be checked in the ‘You get’ history. If a user withdraws 150 LP Tokens, 100 LP Tokens will be used for repayment and the remaining 50 LP Token assets (balance) will go to the user's wallet. LP Token borrowing repayment can be confirmed through the returned asset history, and the detailed amount that will be received in the wallet can be found in the ‘You get’ history.

＊If the leverage asset amount shows 0, it means that the entire borrowing has been returned. From that point on, the entire withdrawal amount will go to the user's wallet.


# How to deposit your assets on Leveraged Yield Farming pools

1\. Go to the **\[Leveraged Yield Farm]** page in the **\[Deposit]** menu at the top.

![](https://lh6.googleusercontent.com/aYPE3vVBzTbtGhj2otJV8efLsVlswNnCr9K-Y2aBYNZrBFPPudycu5ij6l9xawK1FPbajL88d4ZMuRdPC3g-4dCPvohb20tw-072boH_MQme_D58lbsX0qA6RQDOhrsFEl8JtYvf9DNE6-IdWw)

2\. Select a pool you prefer and click the **\[Deposit]** button to move to the pool detail page.

![](https://lh5.googleusercontent.com/iUsYd3-uXcITaIh3z_9kXP44asplozmAy0jRkIfclgQhm9Jwxva6YNKNYDn1E3-8JLwEiJJ47pf-8DpV7ctIxrjKsqNLx7SswBwKAgHwbK26pn9Qk_kSKqQJSMmntRqufmGXv6LTCE-WuoyG-g)

3\. Enter the deposit amount.

![](https://lh5.googleusercontent.com/pJ9vlQWIOnocURzH2ewm94eSNBvxnsywQEgPpTPMiTOQkMiGmb1rqAEMwmz_zJXtXmEex6MVfHt2amSNCeVIKWceE2SQa_yOtkwh3H8kK-JqkoDjxUmVwSWEAIo7h-wcZaSPQq2o7xh4NYtjAg)

{% hint style="info" %}
**Tips**

* Meshswap's leveraged yield farm supports the “Set custom ratio” feature. Users can deposit any proportion of the two tokens or even only one token for Leveraged yield farming. Through the smart contract, it will automatically swap tokens in an optimal ratio according to the current pool exchange rate.
* **When entering deposit amount without applying “Set custom ratio” checkbox:**\
  **You must have both assets** and deposit according to the exchange rate.
* **When "Set Custom Ratio" checkbox is applied:**\
  You can deposit at any rate regardless of the exchange rate, **with only one asset.**
  {% endhint %}

4\. To invest more with additional borrowing, users can adjust the leverage multiplier to choose the size of borrowing in dollar value. Additional assets will be deposited by the size of (value in dollars of deposited assets) \* (selected plus multiplier -1).

![](https://lh5.googleusercontent.com/Jgjy6voUwF9b-9oDoFt4mJlZTcWQZYHd5IKBO5KuCw4YhaiXO8AlDr5OKMzccGTLnpve4iWAoeLvsmvGU2y8HV-o3H-blNazKyjH1owwuRs7HObpQziR-tMFd3_o-zj7_DNpO50Y4AzvJJGDYQ)

{% hint style="info" %}
**Tips**

* Leverage multiplier starts at 1.0x by default and it can be adjusted in increments of 0.5x.
* 1.0x Leverage means depositing without additional borrowing in the same way as Yield Farming.
  {% endhint %}

＊The maximum leverage multiplier that can be set are different for each pool. For more details, refer to the link below.

{% embed url="<https://medium.com/meshswap/leveraged-yield-farm-is-now-available-5b1e80d93c8a>" %}

5\. Choose whether to borrow both assets or only one asset.

![](https://lh5.googleusercontent.com/ZoG2tz70R2lHHcTCohiyZhthDwMl3_V48zA06eRGc8ZqOsNeG-OPyjY4q9btF0s7WRqx778djbISw5OkvzX-1YUmgOSUZF6reC98aluLD9nAVBnO8Sm6lsQ1m4AtoIS35VJcVgAH6Akc_-RtiQ)

![](https://lh4.googleusercontent.com/auZL5XzThQ1iJEmVXmMjvHVSdmy2j_5V5lLWRt2_z3wFlXRWhgh3cfM2vT3opBQ9kibpsCTObU_eDkaWfvvAkNKeBXbJsoloI7qOYXVplnkEgw4kKGa5FRBAh65KG1jLafimxbPC6toh5sGaMQ)

{% hint style="info" %}
**Tips**

* If only one asset can be borrowed from the Lending pool, borrow that asset for 100%
* If you borrow both assets, click on “setting” and drag the gauge bar to customize the borrowing percentage (ratio) of each asset.
  {% endhint %}

![](https://lh5.googleusercontent.com/4g7YuKNfU7804XoHS6aq-yQN0BhecdAkpI1ZdQ1rGVmk-mRRGjCtVpSkPNDXAgBhwTLsROJSxh_5KZPyQJiJy8l-AuAdUKdgXtgatB61JT0UOkXYhMQHJNVvpU-k_QlIg6K7F8PixsF4pHQLGw)

6\.  In “Estimated Returns”, check the expected information for Leveraged yield farming. Liquidation is performed when “Debt ratio” exceeds the maximum % (85% - 92%, varies by farming pool). Therefore, be sure to check the “Debt ratio” first and click the **\[Deposit]** button.

＊Debt ratio is different for each pool. For more details, refer to the link below.

{% embed url="<https://medium.com/meshswap/leveraged-yield-farm-is-now-available-5b1e80d93c8a>" %}

![](https://lh5.googleusercontent.com/aSGhQoPFaKzmMO6nnHuCUto53KINoAl6Ew3tFgSnmYFxfmImE4jRa67EC3Dxjj5-BjLHaSphQpkGx7ga04-Vlurco5qMJh8isbTcpAlyDxi5dzXi8hzV3B75PKXiRAzRKoZQQ4EGqF84Y_Q1gA)

{% hint style="warning" %}
**All information displayed is a real-time estimate, and may differ from the actual deposit.** Therefore, be sure to check the “Debt ratio” before you make the deposit.
{% endhint %}

{% hint style="info" %}
**Tips**

* **Exchange Rate**: It refers to the token exchange ratio (price) when a certain portion of deposit asset is exchanged for the paired token.\
  **＊Difference from Current Rate:** It refers to the difference (slippage) between expected and the actual exchange rate (price) at the time a trade is executed.
* **Share of pool:** Based on the current pool size, you can check your expected stake in the pool at the time of the deposit.
* **Daily Reward:** When depositing assets based on the current pool's MESH APR, you can check the amount of distributed MESH for one day.
* **Exchange Rate Range:** Deposit is carried out only within ±1% of the current exchange rate. If other participants make large deposits and withdrawals from the pool, the token exchange rate may fluctuate significantly. The Exchange Rate Range safeguards against depositing into the pool at these unexpected token prices. Be sure to understand the variable range before depositing.
  {% endhint %}

7\. Confirm “Check deposit details” for information about future leveraged yield farming. Check the **\[I understand the risks associated, and agree to use the service.]** checkbox and click the **\[Next]** button.

![](https://lh5.googleusercontent.com/C96awOwpXuieJLXcj3YF8UOec2NfzUGaMdLjDBUTESYgtZbC4RGF8AkI6CktCWNuDuIh1JxNuVCM47wCw-vs0GblY7KYInOZOgzW2WiK9ivDnJ8El4R3EKg_G3wCeZRaQSl7FquaCSkC6yuUNg)

8\. In the “Confirm Transaction” pop-up window, check the expected information about leveraged farming, and click the **\[Deposit]** button. Once you confirm the information, click the **\[Confirm]** button in your wallet.

![](https://lh3.googleusercontent.com/SBzU2OzVCHBbW2_GIuUGIxEyCp5_RT8IWj7LxXcO4rYGtPAv816OYOl1VFY-Gwmjm8VPXqt2upfDjiQSCe4iupR6I2NOa0S335nTNXBiJpvuazeAlKkxzJhycTnIo4cp9bi-T-cSQTDGoS3ctw)

{% hint style="info" %}
**Tips**

If there is no transaction history of the selected token on Meshswap, Token Approval is required before Farming Transaction proceeds (Limited to the one time).
{% endhint %}

![](https://lh5.googleusercontent.com/bKuzEUaUpWZGnaCNwaAFij8phZ2THywa92LopkjbCxhm4wcadsPqb9gzhTSqRkaVmsyCBcdESXNG-WCsWp7HofPKqZ61_MtoAGjNwXWJp5e9MINVtJ4RueEdx1xyp4T6CmZAZ-qjeKqVfe3H_Q)

9\. After requesting a transaction and completing the deposit, you can check the status of leveraged yield farming in **"Asset deposited"** section at the top. Rewards will be distributed in real-time after the deposit is completed.

![](https://lh4.googleusercontent.com/1Ofq1AnfptTQ2DY1MAltuek2ZJGcv5hVO16BijM19Cq790_G4x6KBtmLS_z8rSJnaqqeIi-rwGCIdVEmcFnoUJZKlEUW3hrCeMyWJYigyLYPuOnhFelz8DzqfzegI-o2JocThIzLw-It9t6ltw)


# Detailed Policy of Leverage Farm

### **Price oracle**

Price criteria related to the calculation of the leverage size available when depositing assets and liquidation based on the asset debt ratio are measured and applied through Price Oracle (Different from the pool exchange ratio).

* Stable coins are calculated as fixed values ($1.0).
* Determination of value for other coins, considering the scale of liquidity of each asset, is based on the median value of the price in central exchanges such as Binance, Upbit, Bithumb, Coinone, Huobi, and gateio, and pool exchange ratio (price) in Meshswap.

### **Yield rate, cost, expected returns**

* Degree of returns (%), and borrowing costs (%) can vary depending on the real-time status of the farming pool and the lending pool.
* The total expected return on the Leverage farm is calculated as (total annual return-total annual cost). The total annual rate of return (APR) includes MESH APR and airdrop APR, and the total annual cost refers to the cost of borrowing assets by Leverage farmers.
* MESH APR (%) and Airdrop APR (%) refer to the annual rate of return (APR) expected to be obtained from MESH and Airdrop tokens distributed from the pool.
* Borrowing cost (%) refers to the interest rate (APR) that takes the annual interest cost to be paid when utilizing assets in a lending pool into account when using Leverage farm.
* All figures are real-time estimates and may differ from the actual rate.

### **Deposit policy**

* Users can directly enter and deposit any amount of asset under the current exchange ratio (price) or free rate of the pool.
* Users can choose how much additional asset they are willing to utilize in dollar value through the leverage multiplier settings. Additional assets will be utilized by the size of **(value in dollars of deposited assets) \* (selected leverage multiplier -1).**
* For additional asset input, the user can choose which asset to utilize. The selected asset is borrowed from a lending pool, and the user must return the amount of the utilized asset, including the interest fee accumulated according to the real-time borrowing cost (%) of the utilized asset. The larger the leverage multiplier, the more assets you get to utilize and pay for interest fees.
* Depending on the amount of user's deposited assets, selected leverage multiplier, and type of utilized assets, a certain percentage of your asset is automatically swapped (traded) to deposit the pair at an optimal ratio. In cases where swap is required, it takes a direct single swap pass between the pair, incurring a corresponding transaction cost. Transaction fees follow the corresponding transaction fee rate by pools. (For example, if you need a swap during the leveraged yield farm process of the MATIC + MESH pair, an exchange between MATIC <> MESH will occur, and the transaction fee rate of the pool will be applied.)
* The larger the transaction, the more influential it affects the exchange ratio between tokens in the pool, which can make a difference between the current price and the price applied when exchanging (Price impact). If you run it with small quantities several times, you can reduce its influence.
* Leverage Farming is carried out after excluding the fee incurred during the swap. Depending on the size of the transaction, there may be a difference in the price applied at the time of the exchange (Price impact), so the leverage farm may not proceed with the leverage multiple selected by the user and the completely correct scale.
* To prevent such cases, deposits(for leverage farm) are carried out only within the transaction range set at the time of swap (slippage is 1%), and if it exceeds, the deposit transaction may not proceed (Revert). Please check all the relevant information in the forecast section at the bottom before depositing.
* By depositing in pairs(in the farm), the asset value continues to fluctuate, and an liquidation occurs when the debt ratio exceeds 85%. The debt ratio refers to the ratio of the value of the utilized assets to the value of the deposited assets. Therefore, be sure to check the debt ratio and return policy.

### **Withdrawal policy**

* If a user requests withdrawal, the asset being utilized gets returned first. If you have returned all the assets you are using, you can withdraw the remaining assets and receive them in your wallet.
* In the withdrawal menu, users can check the total LP Token quantity, which is currently the total asset deposited, and also the amount of the LP Token corresponding to my assets and leverage assets, respectively.
* If the user withdraws the LP Token corresponding to the leveraged asset, the LP Token is used to return the asset being utilized. You can check the detailed quantity of LP Token used for return at the Return asset area, and the precise quantity receivable in your wallet can be checked in the 'You Get' section.
* If the LP Token quantity corresponding to leverage assets is 0, the user can withdraw the assets into the wallet by entering the quantity of LP Token equivalent to my assets.
* Depending on the size of the transaction at the time of withdrawal, there may be cases where all assets used may not be returned even after the total withdrawal of the leveraged asset due to the change of the price applied at the time of exchange (Price impact). To prevent this case, the deposit will only proceed within the transaction range set at the time of swap (slippage 1%), and if it exceeds that range, the deposit transaction may not be processed. (Revert)

### **Policy on** liquidation **regarding** debt ratio (%)

* Leverage farmers have to pay the corresponding cost instead of maximizing MESH reward efficiency by borrowing additional assets. Costs are included in the utilized assets minute by minute, and the user can withdraw the assets after returning all the utilized assets including the costs.
* At this time, the liquidation may proceed if the ratio of the utilized asset (asset utilization ratio) to the user's total asset deposited exceeds 85%.
* Debt ratio is calculated as follows.\
  **Debt ratio (%) = (dollar value of amount of asset utilized/ dollar value of total asset deposited)\*100**
* Since the debt ratio may show volatile fluctuation due to a decrease in the total value of deposited assets or an increase in the value of utilized assets, users must periodically check the debt ratio to prevent liquidation.
* To prevent liquidation, you either lower the debt ratio by depositing assets with a low leverage multiplier or manually return your asset by withdrawing your asset in withdrawal tap.
* Upon liquidation, the assets currently being utilized by my assets are returned first, excluding theliquidation fee (20%) from the remaining assets, and the user can directly receive the assets (including remaining assets, MESH rewards, and Airdrop assets). If swaps occur during the liquidation process, depending on the size of the transaction, all assets utilized may not be returned due to a change in price applied at the time of exchange (Price impact). In this case, all utilized assets must be returned by using my asset deposited, so there may be no assets that the user can receive even after the liquidation.
* Receiving remaining assets can be processed in the \[Liquidation history] tab by clicking the \[Asset Details] button in the ‘Asset deposited’ area at the top.
* The liquidation fee (20%) is used as a safety fund for returning lending pool assets that have not yet been returned due to rapid price fluctuations.

### Terminology

<table><thead><tr><th width="239">Terms</th><th>Definition</th></tr></thead><tbody><tr><td>Asset deposited</td><td>‘Asset deposited’ indicates the current value of total asset deposited, a summation of my asset and leverage asset.</td></tr><tr><td>My asset</td><td>Asset deposited - borrowed asset</td></tr><tr><td>Leveraged asset</td><td>Additionally deposited asset through Leverage farm. In case of withdrawal, asset currently being borrowed would be returned using leverage asset.</td></tr><tr><td> Borrowed asset</td><td>Asset borrowed from a lending pool for Leverage farm, and at the end of Leverage farm, it must be returned including accumulated interest fee according to the asset borrowing cost (%) for each asset.</td></tr><tr><td>Debt ratio (%)</td><td>Ratio of asset borrowed to total asset deposited</td></tr><tr><td>Liquidation</td><td>If the debt ratio exceeds 85%, and from the remaining assets, users can receive the amount of asset except for the liquidation fee (20%) after the return is completed.</td></tr><tr><td>Total APR (expected) (%)</td><td>= MESH APR - borrowing cost + airdrop APR</td></tr><tr><td>MESH APR (%)</td><td>Rate of return for MESH rewards</td></tr><tr><td>Borrowing APR (%)</td><td>Annual interest cost of assets utilized by Leverage farmers, and the actual cost may vary depending on the scale of the user’s deposited assets, leverage multiplier, and the amount of assets utilized.</td></tr><tr><td>Airdrop APR (%)</td><td>Additional reward for liquidity providers of pools, and the rewards depend on the share ratio of individual users.</td></tr></tbody></table>


# Long/Short Margin Trading

### **What is Long/Short Margin Trading?**

Meshswap's margin trading is a service that allows users to open long/short positions on the on-chain using leverage. Based on the assets they deposit, users can open long or short positions no less than three times for a specific token, and can profit by the difference between asset price at position opening and asset price at profit realization. Moreover, depositors can actively respond to market volatility even in an on-chain environment, since **short positions can continuously pursue profits even in declining markets**.

Furthermore, Meshswap's margin trading provides secure account management and high profitability by depositing both **assets deposited** by users and assets **acquired by opening each position into a lending pool**, thus acquiring additional deposit interest and MESH reward, the deposit boasts high profitability and safe account management.

### **Features of Long/Short Margin Trading**

* **Opening Positions Based on Stable Assets**\
  \
  Only stable tokens such as USDC, USDT, BUSD and DAI can be used to open long/short position on Meshswap. Depending on the dollar conversion value of the stable token deposited by the user, the position can be opened up to three times to generate stable profit.

* **User’s Asset Portfolio Diversification**\
  \
  Users can also open long/short positions on the chain based on a lending pool of Meshswap to diversify their digital asset portfolio and gain new profits.

&#x20;

* **Safe Asset Management \&Return Maximization**\
  \
  The assets deposited by users are deposited in a lending pool to receive interest on deposits and receive MESH rewards. This allows users to manage assets safely and maximize returns.

<br>

### **Debt Ratio Management**

An asset debt ratio is defined as the ratio of users’ borrowed assets to their total deposited assets. For safe asset management, users should make sure that the debt ratio does not exceed 90% when using long/short margin trading. In case this ratio is exceeded, returning the assets to be returned (borrowed assets) may be difficult if their prices change sharply. Therefore, when the debt ratio exceeds 90%, users’ deposited assets are automatically returned, and the remaining assets are available for withdrawal after the return is completed, excluding the 20% return fee.

**In order to prevent liquidations**, users have to 1) add deposit assets in '0x' state or 2) return some of the assets they are using, and ensure that the debt ratio does not exceed 90%.

Management of debt ratios and liquidations is necessary for securing protocol stability and ensuring smooth asset usage for long/short margin traders. The stable return on assets in a lending pool helps traders have faith in the system, which would in turn lead to more deposits, which would enable the supply of lending pool assets to increase.


# Open and Close Long/Short Positions

Here are the articles in this section:

{% content-ref url="/pages/xzpWlMrjuVKmZl68GYDZ" %}
[Open Long Positions](/products/long-short-margin-trading/open-and-close-long-short-positions/open-long-positions)
{% endcontent-ref %}

{% content-ref url="/pages/8FbI2VR1urf5FkImslEi" %}
[Open Short Positions](/products/long-short-margin-trading/open-and-close-long-short-positions/open-short-positions)
{% endcontent-ref %}

{% content-ref url="/pages/Bb6cK99cCnabAbCSIjnu" %}
[Close Long Positions](/products/long-short-margin-trading/open-and-close-long-short-positions/close-long-positions)
{% endcontent-ref %}

{% content-ref url="/pages/Rv2SUCd6fzyCKYwHF8At" %}
[Close Short Positions](/products/long-short-margin-trading/open-and-close-long-short-positions/close-short-positions)
{% endcontent-ref %}


# Open Long Positions

## **Detailed procedures for opening long positions**

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

### Step 1

To open a MATIC 3x long position, the user deposits 1,000 USDC of deposited assets into a lending pool of Meshswap USDC.

The user can earn interest on USDC lending pool and MESH rewards.

<br>

### Step 2

The user will use 3,000 USDC based on his or her deposit assets of 1,000 USDC. Borrowing costs are accrued at this time for the 3,000 USDC borrowed.

The borrowed 3,000 USDC will be swapped for 5,982 MATIC in the MATIC/USDC pool.

\* This rate is calculated based on 1 MATIC = 0.5 USDC, and a 0.3% swap fee will incur.

<br>

### Step 3

5,982 MATIC acquired through swap are deposited into a lending pool to open long positions.

Before closing long position, the user may receive MESH rewards and deposit interest on 5,982 MATIC deposited in the MATIC lending pool.

The following rewards and costs apply to users who have completed the long position deposit as described above.

1\) Earn USDC lending pool deposit interest on my asset 1,000 USDC (3.00% per year), Earn MESH reward

2\) Earn MATIC lending pool deposit interest on position asset 5,982 MATIC (2.00% per year), Earn MESH reward.

3\) USDT Borrowing cost for borrowed asset 3,000 USDC incurs (6.00% per year)


# Open Short Positions

## **Detailed procedures for opening short positions**

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

### Step 1

When opening a MATIC 3x short position, the user deposits 1,000 USDC of deposited assets into Meshswap USDC lending pool.

USDC lending pool deposits allow users to earn deposit interest and MESH rewards

<br>

### Step 2

Based on his or her deposit assets of 1,000 USDC, the user will borrow 6,000 MATIC.&#x20;

Borrowing costs are accumulated for the 6,000 MATIC used at this point.

Borrowed 6,000 MATIC will be swapped for 2,991 USDC in MATIC/USDC pool.

\* This rate is calculated based on 1 MATIC = 0.5 USDC, and a 0.3% swap fee will incur.

<br>

### Step 3

2,991 USDC acquired through swap are deposited in a USDC lending pool to open a short position.

Before closing short position, the user may receive MESH rewards and deposit interest on 2,991 USDC deposited in the USDC lending pool.

The following rewards and costs apply to users who have completed the short position deposit as described above.

1\) Earn USDC lending pool deposit interest on my asset 1,000 USDC (3.00% per year), Earn MESH reward

2\) Earn USDC lending pool deposit interest on secured assets 2,991 USDC (3.00% per year), Earn MESH reward.

3\) MATIC Borrowing cost for borrowd asset 6,000 MATIC incurs (7.00% per year)


# Close Long Positions

## **Detailed procedures for closing short positions**

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

The example above assumes that the MATIC 3x long position trader opened positions at 1 MATIC = 0.5 USDC, and after a year closed all positions at 1 MATIC = 0.8 USDC.

User's account status at the time of opening is as follows.

1\) Price of MATIC at opening: 1 MATIC = 0.5 USDC

2\) Earn USDC lending pool deposit interest on my asset 1,000 USDC (3.00% per year), Earn MESH reward

3\) Earn MATIC lending pool deposit interest on position asset 5,982 MATIC (2.00% per year), Earn MESH reward

4\) USDC borrowing cost for borrowed asset 3,000 USDC incurs (6.00% per year)

**At the time of closing the position after 1 year, the account situation is as follows.**

1\) Price of MATIC at closing: **1 MATIC = 0.8 USDC**

2\) **My Asset** = 1,000 USDC \*(1+0.03) = 1,030 USDC = **$ 1,030.00**

3\) **Position Asset** = 5,982 MATIC\*(1+0.02) = 6101.64 MATIC = **$ 4,881.31**

4\) **Borrowed Asset** = 3,000 USDC\*(1+0.06) =3,180 USDC = **$ 3,180.00**

### Step 1

When requesting position close, the borrowed asset, USDC, is first returned using MATIC, a long position token deposited in a lending pool.

To return the borrowed 3,180 USDC, 3986.96088 MATIC has to be swapped for USDC from the MATIC/USDC pool.

\[Reference] Calculation of the quantity of MATIC (x) needed to return 3,180 USDC

1MATIC = 0.8 USDC, 0.3% swap fee will incur during swap.

x = 3,180/((1-0.003)\*0.8) = 3986.96088265 MATIC

### Step 2

Close the position by returning the 3,180 USDC earned.

\* Partially returning the assets lets the user decide how many positions to close.

The following assets will be distributed to the user who has completed depositing long positions as described above.

1\) My Asset 1,030 USDC (Deposit interests + 30 USDC earned)

2\) Position Profit + 1,701.31 USDC (=$4,881.31- $3,180.00)

3\) Additional MESH rewards from USDC and MATIC pool


# Close Short Positions

## **Detailed procedures for closing short positions**

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

The example above assumes that the MATIC 3x short position trader opened positions at 1 MATIC = 0.5 USDC, and after a year closed all positions at 1 MATIC = 0.2 USDC.

Following is the account status at the time a position is opened for the user.

1\) Price of MESH at opening: 1 MATIC= 0.5 USDC

2\) Earn USDC lending pool deposit interest on my asset 1,000 USDC (3.00% per year),\
&#x20;   Earn MESH reward.

3\) Earn USDC lending pool deposit interest on position asset 2,911 USDC (3.00% per year),\
&#x20;   Earn MESH reward.

4\) MATIC borrowing cost for borrowed asset 6,000 MATIC incurs (6.00% per year)

**At the time of closing the position after 1 year, the account situation is as follows.**

1\) Price of MATIC at closing: **1 MATIC = 0.2 USDC**

2\) **My Asset** = 1,000 USDC \*(1+0.03) = 1,030 USDC = **$ 1,030.00**

3\) **Acquired Asset** = 2,991 USDC\*(1+0.03) = 3,080.73 USDC = **$ 3,080.73**

4\) **Borrowed Asset** = 6,000 MATIC\*(1+0.07) \*$0.2=1,284 USDC = **$ 1,284.00**

### Step 1

* When requesting position close, the secured asset USDC deposited in a lending pool is first used to return the borrowed asset MATIC.
* To return the borrowed 6,420 MATIC, 1,287.86359 USDC has to be swapped for MESH from the MATIC/USDC pool.

\[Reference] Calculation of the quantity of USDC (x) needed to return 6,420 MATIC&#x20;

1 MATIC = 0.2 USDC, 0.3% swap fee will incur during swap

x = 6,420/(1-0.003)\*0.2 = 1,287.86359 USDC

### Step 2

* Close the position by returning the 6,420 MATIC earned.
* Partially returning the assets lets the user decide how many positions to close.

The following assets will be distributed to the user who has completed depositing short borrowing positions as described above.

1\) My Asset 1,030 USDC (Deposit Interest + **Earn 30 USDC**)

2\) Position Profit + **1,796.73 USDC** (=$3,080.73- $1,284.00)

3\) Additional MESH rewards from USDC and MATIC pool


# Long/Short Margin Trading Details Policy

## Price Oracle

* Price Oracle measures and applies pricing standards related to asset deposit sizes, liquidations based on asset debt ratios, etc. (Different from the pool exchange rate)
* With stable tokens, a fixed value ($1.0) is used.
* Taking liquidity of assets into consideration, the price of other tokens is determined based on the price of the central exchange, such as Binance, Upbit, Bithumb, Coinone, Huobi, Gateio, etc., and the median of Meshswap's pool exchange ratio (price).

## **Profit, Cost, Expected Details**

* **The return (%) and borrowing cost (%) of each position are adjusted in real-time based on the state of each pool of assets deposited, acquired, and borrowed.**
* The maximum expected return on the margin trading is calculated as follows:\
  (return on assets deposited per year + return on assets secured per year - cost of assets borrowed per year). The annual return rate includes both deposit rates and MESH distribution rates, and the annual cost is the cost of assets borrowed by users.
* The Yield on Deposit (%) is the expected return from tokens distributed to depositors according to the debt rate of a lending pool.
* The MESH Distribution Yield (%) indicates the expected annual return (APR) from the MESH tokens distributed from the pool
* Borrowing Cost (%) represents the calculated annual interest expense (APR) payable on borrowing asset.
* **PNL (Profit and Loss) refers to unrealized returns for open positions. Based on the current price of the token (Price oracle) at the end of the position, PNL is calculated as (My Deposited Asset Value + Reserved Asset Value - Borrowed Asset Value) - Total Principal, actual returns may differ from expected returns depending on liquidity pool conditions and token price.**
* ROE (Return on Equity) is the percentage return on the total principal invested by the user, and the calculation is as follows.\
  \* ROE(%) = (PNL / Total Principal) \* 100
* **The following figures are real-time estimates and may differ from the actual data.**

## **Open Position Policy**

* Positions can be opened by setting the position multiple according to the dollar value of deposited stable assets. Users will open up positions by borrowing assets in a lending pool with the size of **(Value of Deposited Assets in Dollars)\*(Multiple of Selected Positions).** Users’ investment can be up to three times their deposit.
* For long position, assets are borrowed from the same pool of assets as stable assets deposited by users, while for short position, assets are borrowed from a pool of tokens positioned by users. **Upon returning the borrowed asset, users must return borrowed assets including accumulated interest based on the current real-time borrowing cost (%) of the leveraged asset. As the position multiplier increases, more assets will be borrowed and therefore more money will be paid.**
* **When margin trading, the borrowed asset is automatically swapped (traded) to open the position. A swap route performs routing between positioning tokens and deposited stable assets, and transaction fees are incurred. Depending on the pool, transaction fees will vary.** (When a swap occurs in the MATIC>MESH>USDT path during depositing USDT and positioning MATIC, the transaction commission rate for each MATIC/MESH pool and MESH/USDT pool is applied)&#x20;
* **As the transaction size (quantity) increases, the effect on the exchange rate between tokens in the pool increases, resulting in a price difference between the current price and the exchange rate.** Multiple runs in small quantities can reduce the impact.
* **Positions can be opened after excluding the fees incurred during the swap. The size of the transaction may affect the price applied at the time of exchange, so the position opening may not proceed at the user's selected scale with the position multiple.** To prevent such an occurrence, deposits are made only within the transaction range (slippage) assigned during swap, and may not be processed if the deposit exceeds the transaction range. (Revert) Check the Expected Details at the bottom for all relevant information before depositing.&#x20;
* **The value of deposited assets, borrowed assets, and acquired assets fluctuates continuously, and an liquidation occurs at 90% debt ratio. Debt ratio refers to the ratio of borrowed asset value to asset value in my deposit, please review the debt ratio and the return policy.**

## **Close Position Policy**

* **In case the user requests to close the position, the retained assets that have been deposited in a lending pool (For long position, corresponds to long position tokens; for short positions, corresponds to stable tokens obtained by selling borrowed assets) must be withdrawn, and the assets that have been borrowed first must be returned.** If the user has returned all of the assets, the user can withdraw the remaining assets and receive them in his or her wallet.
* In the Close tab menu, the user can view the detailed quantity of borrowed assets, the detailed quantity of assets returned to the protocol from their account, and the detailed quantity of assets received back into the wallet after the return has been completed.
* When closing the long position, the borrowed assets are withdrawn first by withdrawing the long position tokens being deposited into a lending pool. When a swap occurs during the return process, the assets returned from a user's account to the protocol are returned with the swap fee. When price fluctuations make it impossible to return the entire borrowed assets with long position tokens, additional returns may be made from the assets that were deposited by the user (my assets) when the position was opened.
* When closing the short position, the borrowed assets are withdrawn first by withdrawing the stable tokens being deposited into a lending pool. **When a swap occurs during the return process, the assets returned from a user's account to the protocol are returned with the swap fee. When price fluctuations make it impossible to return the entire borrowed assets with stable tokens, additional returns may be made from the assets that were deposited by the user (my assets) when the position was opened.**
* The amount of detailed assets that the user receives in his wallet at the end of the position can be found on the 'You get' page. **Losses may occur depending on the price at opening and closing.**
* **Due to the price impact when exchanging, it may not be possible to return all the assets at the end of the position depending on the size of the transaction. As a precautionary measure, withdrawals are made within the transaction range (slippage) set at the time of swap, and transactions may not proceed if it exceeds the range.**

## **Liquidation Policy for Debt Ratio**

* The user who opens a long/short position will have to pay for the assets they borrow instead of borrowing additional assets to maximize revenue. **In real time, costs are included in the borrowed assets, and users can withdraw the assets once they return all the borrowed assets that include costs.**
* **In order to ensure a safe return of the borrowed assets, if the ratio of the value of the borrowed assets to the total value of the user's deposited assets (debt ratio) exceeds 90%, liquidation may be initiated.**
* Debt ratio is calculated as follows:
  * **For long positions, Debt Rate (%) = (Dollar Value of Borrowed Asset /Dollar Value of My Asset + Dollar Value of Long Position Token)\*100**
  * **For short positions, Debt Rate (%) = (Dollar Value of Short Position Token/ Dollar Value of My Asset + Dollar Value of Secured Token)\*100**
* **Because debt ratios can fluctuate rapidly due to changes in the value of deposited assets or borrowed assets, the user must check the debt ratio regularly to avoid liquidations.**
* To prevent liquidation, the user must deposit additional assets in multiples of 0x, or return assets in the Close tab.
* **With liquidations, users receive their remaining assets after returning assets used as deposited assets and saubtracting the liquidation fee of 20%. If swaps occur during the liquidation process, depending on the size of the transaction, the user may not be able to return all of the borrowed assets due to price impacts. Due to the nature of the liquidation, all borrowed assets will be returned as full deposit assets, so it is possible that the user will not be able to receive any assets after an auto-return.**
* The remaining assets can be received in the \[Return History] section after clicking My Deposited Assets’ \[Asset Details] button.
* &#x20;**Liquidation** fees (20%) are used to return lending pool assets that have not been returned as a result of rapid price fluctuations.<br>

## Terminology

<table><thead><tr><th width="229">Terms</th><th>Definition</th></tr></thead><tbody><tr><td><strong>Asset</strong></td><td>Amount of assets corresponding to positions opened by users.</td></tr><tr><td><strong>My Asset</strong></td><td>Deposited assets used to open positions by users. The asset is deposited in a lending pool, and rewards are given based on deposit ratios.</td></tr><tr><td><strong>Borrowed Asset</strong></td><td>It refers to the amount of assets borrowed by users from a lending pool. Costs are incurred based on debt ratio (%).</td></tr><tr><td><strong>Acquired Asset</strong></td><td><p>It refers to assets acquired by swapping borrowed assets. Acquired Asset is deposited in a lending pool and rewards are given based on deposit ratios.</p><ul><li><strong>Acquired Asset for Long Position</strong> = The same as long position token</li><li><strong>Acquired Asset for Short Position</strong> = The same as the amount of stable tokens, which is the short token sale price</li></ul></td></tr><tr><td><strong>Entry Price</strong></td><td>The price applied to users when opening long/short positions.</td></tr><tr><td><strong>Net Asset</strong></td><td>It refers to the asset users can receive after repaying all borrowed assets.</td></tr><tr><td><strong>PNL (Profit and Loss)</strong></td><td>The unrealized return on the currently open position. It is calculated on the basis of the gross principal, which includes both the interest on a lending pool as well as the cost of borrowed assets.</td></tr><tr><td><strong>ROE (Return on Equity)</strong></td><td>The rate of return (%) compared to a user's total investment.</td></tr><tr><td><strong>Asset Debt Ratio</strong></td><td><p>Refers to the ratio (%) of borrowed assets to total deposited assets.</p><ul><li><strong>Total deposited assets for long position</strong><br> = My Asset Value($) + Long Position Value($)</li><li><strong>Total deposited assets for short position</strong><br> = My Asset Value($) + Acquired Stable Value($)</li></ul></td></tr><tr><td><strong>Liquidation Price</strong></td><td>Liquidation of the entire current position occurs when the asset debt ratio exceeds 90%.</td></tr></tbody></table>


# Interest rate

### **Utilization ratio**

$$
Utilization Ratio=(TotalBorrowed/PoolLiquidity)\*100
$$

​

### Deposit  APR

$$
DepositAPR=BorrowAPR∗(1−reserveFactor)
$$

* Leveraged yield farm will pay 80% of the accumulated interest earnings to a Lender, 20% will be set aside as reserves, and will later be used as a reserve fund for MESH Buyback & Burn.
* reserve Factor = 0.2

###

### Borrow APR

$$
BorrowAPR=BorrowingRateModel\*Utilization
$$

### Borrowing Rate Model  <a href="#borrowingratemodel" id="borrowingratemodel"></a>

\*Please note the MESH interest rate model is different from other tokens.

**WMATIC / WETH / WBTC / USDT / DAI /USDC / oMATIC / oXRP / oKLAY / oKSP / oORC / oTON / BUSD**

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

<table><thead><tr><th>Utilization Ratio</th><th width="210.89753863766458">Borrwoing Rage Range</th><th>Logic</th></tr></thead><tbody><tr><td>0%~60%</td><td>0%~20%</td><td>Borrowing Rate = Utilization / 3 </td></tr><tr><td>60%~90%</td><td>20%</td><td>Borrowing Rate = 0.2 </td></tr><tr><td>90%~100%</td><td>20%~100%</td><td>Borrowing Rate = Utilization * 8 - 7 </td></tr></tbody></table>

**MESH**

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

| Utilization Ratio | Borrowing Rate Range | Logic                                   |
| ----------------- | -------------------- | --------------------------------------- |
| 0%\~60%           | 0%\~20%              | Borrowing Rate = Utilization / 3        |
| 60%\~90%          | 20%                  | Borrowing Rate = 0.2                    |
| 90%\~100%         | 20%\~300%            | Borrowing Rate = Utilization \* 28 - 25 |


# Stake

![](/files/JemRljul3YlFfhGzIwRc)

MESH staking participants will obtain a governance related farming pool voting right (vMESH) as well as staking rewards. Even if you stake the same number of MESH, the number of vMESH (full voting rights) you receive may vary depending on the length of the staking period.

In other words, the longer they participate in governance, the more voting rights they get, and by securing strong decision-making authority, they can exert more influence on the growth of Meshswap.

#### Acquisition of vMESH according to 1 MESH staking period

<table><thead><tr><th width="150"> Type</th><th width="362.33333333333337">Staking period</th><th width="150">voting rights</th></tr></thead><tbody><tr><td><strong>1X</strong></td><td>Locked MESH for 4 months</td><td>1 vMESH</td></tr><tr><td><strong>2X</strong></td><td>Locked MESH for 8 months</td><td>2 vMESH</td></tr><tr><td><strong>4X</strong></td><td>Locked MESH for 12 months</td><td>4 vMESH</td></tr><tr><td><strong>8X</strong></td><td>Locked MESH as long as you want. You are able to unstake after 12 months of lock-up from the time of alteration(8x>4x) </td><td>8 vMESH</td></tr></tbody></table>

* **If you stake MESH for 4, 8, and 12 months**\
  \* Stakers can earn MESH staking rewards, airdrop token rewards, pool transaction fee rewards, and ecopot token rewards with 1, 2, and 4 times the efficiency, respectively.\
  \* It can be changed to 8x staking efficiency at the time you want, and the MESH will continue to be staked from the time of change.<br>
* **If you stake MESH for 12 months+α continuously**\
  &#x20;• Stakers can earn MESH staking rewards, airdrop token rewards, pool transaction fee rewards, and ecopot token rewards with 8x efficiency.\
  &#x20;• **You can change 8x to 4x efficiency whenever you want**, and you are able to unstake (withdraw) **after 12 months of lock-up from the time of alteration.**

####

#### MESH inflation rewards

MESH stakers can earn pool voting rights (vMESH) and MESH rewards distributed through inflation. The initial MESH distribution rate for staking participants is 40%, which can be changed through governance voting.

| Distribution target                                          | Distribution ratio by block (%) | Distribution per block (4 MESH) | Daily distribution block (4 MESH) |
| ------------------------------------------------------------ | ------------------------------- | ------------------------------- | --------------------------------- |
| **Lender**                                                   | 10%                             | 0.32 MESH                       | 13,824 MESH                       |
| **Liquidity providers (General / Leverage pool depositors)** | 50%                             | 1.60 MESH                       | 69,120 MESH                       |
| **MESH Stakers**                                             | 40%                             | 1.28 MESH                       | 55,296 MESH                       |
| **Total**                                                    | 100%                            | 3.20 MESH                       | 138,240 MESH                      |


# How to stake MESH

1\.  Go to the **\[Staking and Pool Voting]** page from the **\[MESH governance]** menu at the top.

![](/files/LGwftWMGRauQwpl6x8GS)

2\. Click the **\[Stake]** button.

![](/files/3DhiAtys9G5TXSZSWobq)

3-1. Insert **the amount** of MESH to be staked and select **the period**.

![](/files/ucNQnZipOFGrstQ47t5p)

3-2. Check the expected information on the upcoming staking - the period, completion date, additional voting rights, and total APR.

**All displayed information is real-time expected information, which may cause differences in the actual staking process.** Therefore, the user should be familiar with and understand the changes that may occur during the staking process.

![](/files/LG7RduOgpQZw1h6u7kwr)

3-3. Read the precautions carefully, agree with the terms, and then click the **\[Confirm]** and **\[Next]** buttons.

![](https://lh4.googleusercontent.com/zAOF-v2fe2nFTrOdiIVHEFKQ0VJfYVFmZ9vqNJlNZxz1oj4b0nvjazUTbo052Y9YTRyIfiXssNH6eVIOBIZGdXrlgbtgDPo5brE5jdJETyAUE3msHcOa67U4Gv3uR9a46p8enGyhZCs-WIaP-g)

4\. Confirm the staking information lastly and click the **\[Stake]** button and the **\[Confirm]** button.

![](/files/xVDNxvCdBbE7OwiXKQLL)

{% hint style="info" %}
**Tips**

If there is no history of trading selected assets on Meshswap, the Token Approve Transaction will be preceded prior to the Lending Transaction (For the first time only).
{% endhint %}

5\. Once the staking is completed,

&#x20; ＊The staking status can be checked in "Staked Amount".

&#x20; ＊The real-time distributed rewards are in "Reward Amount".&#x20;

&#x20; ＊The amount of obtained vMESH, a staking reward, can be confirmed in "My Voting Rights".

![](https://lh5.googleusercontent.com/l7DGco5hzFsxCenBviDIvf8nIl0E4L5_dzshc9yPURB1tRsZW-8OaiQXYMOoa_w-jmB44UO-lTOGHjEwfb2EdbOR6w6rEI3PzaOAjPtO3iLBAkYuYWxMo4KicwLdGrF_i2AZmHx10rVW0IEXOw)


# Staking Policy

#### (1) Staking policy

Staking participants can join in staking according to the policy below.

* MESH staking is **neither an act of entrusting nor entrusting MESH to another person. It is to lock up users' MESH asset by signing so that the MESH is not remitted or traded according to the consented terms agreed by the user themselves** (staking period, etc.). Therefore, it is **impossible to cancel, withdraw, or change the withdrawal wallet** that violates these terms.
* **It is not possible to cancel staking before the end of the contractual staking period.**
* Each staking contract is not separable from one another, rather, the total amount of MESH staked will be tied up based on the date of the last staking contract. It requires completing the approval procedure for your first staking contract (1st time only).
* Voting rights (vMESH) can be obtained at the beginning of every staking cycle depending on the MESH quantity and contracted period (4/8/12/12+a months).
* Voting rights issued after MESH staking are based on the following.
* 4 months, 8 months, 12 months, and 12+α months staking give more votes corresponding to 1x, 2x, 4x, and 8x coefficients respectively. **If the selected period of additional staking is shorter than the previously selected staking period, each case will be applied to a different rate.**<br>

  Ex 1) If you stake 100 MESH for 4 months first and stake an additional 100 MESH for 12 months sequentially, a total of 800 vMESH is obtained by applying 4 times the 200 MESH.<br>

  Ex 2) If you stake 100 MESH for 12 months first and stake an additional 100 MESH for 4 months sequentially, a total of 500 vMESH is obtained by applying different multiple rates. (the first 12 months staking will get 400 vMESH while another 4 months staking will get 100 vMESH each.)<br>
* Staking rewards are distributed proportionally according to the user’s share(%) of vMESH compared to the total vMESH. (i.e., Staking share = your vMESH/ the total number of vMESH).
* If users stake MESH with an efficiency of less than 4x, you could increase the staking efficiency to 8x and obtain more vMESH through the \[maximize efficiency] button. **The 8x efficiency will continue to proceed with vMESH staking without a fixed end date until it is changed to 4x.**
* If you are in the process of 8x staking, **you can lower the staking efficiency to 4x** by clicking the \[lower to 4x] button, and **you can unstake after 12 months from that point.**
* If the staking efficiency is changed from 8x to 4x, due to the change in the amount of votes obtained, the pool votes in which users participated and the withdrawal of voting rights allocated to Ecopot will be prioritized. According to the pool voting policy, however, **the staking efficiency can be changed to 4x when possible to withdraw if there is a limit to the time to withdraw their voting rights at 9 a.m. (UTC+9) every day.**
* **Transaction execution may be impossible due to computational costs** if the user is voting for multiple pools or participating in multiple Ecopots at the time of efficiency change. In this case, the user can directly change efficiency to 4x after withdrawing the voting rights allocated by the pool voting and Ecopot pool.
* **The date and time of staking termination vary depending on the time of additional staking and the selected staking period, and unstaking (withdrawal) is possible after the staking end date.**\
  \
  Case 1) Existing Contract expiration date and time\
  &#x20;           <  Current time + New contract period (4/8/12 months)\
  &#x20;           → Current time + new contract period date and time is the end date.<br>

  Case 2) Existing contract end date and time\
  &#x20;            \> Current time + New contract period (4/8/12 months)\
  &#x20;           → Existing contract expiration date and time is the final expiration date.
* Distributed MESH rewards can be freely claimed and received in wallets.
* If the existing MESH balance changes due to additional MESH staking/unstaking, any accumulated MESH rewards will be automatically claimed and sent to your wallet.

#### **(2) Termination of Staking contract**

* **In the case of staking with 8x efficiency, the staking continues without a fixed unstacking period.**
* &#x20;In the case of 4x or less staking efficiency, you can check the pop-up window for unstaking information 30 days before the end of the staking contract, and you can extend the contract or withdraw the staked funds for 30 days from the end of the staking contract.
* If you unstake MESH while participating in the pool voting, the votes will be automatically withdrawn due to the return of the voting right. The amount of allocated trading fee rewards will be automatically claimed and sent to the user's wallet.
* The records of voting rights and voting history will be maintained after the termination of staking.
* If unstaking is not conducted within the 30-day waiting period, the new staking contract will automatically proceed based on the longest period of the previous contract (4/8/12 months) and the corresponding voting right (vMESH) will be given to the user. If the user lowers the staking efficiency to 4x during 8x staking, the user is able to unstake (withdrawal) after 12 months of lock-up from the day you change the efficiency rate. **However, automatically re-contracted staking cannot be canceled.**
* If additional MESH staking is carried out within the 30 days before the staking termination period, the additional staked quantity + existing staked quantity will be deemed to have been renewed from that date.
* The number of obtained vMESH will not be reduced by the pool voting.


# Pool Voting

Pool voting is a democratic decision-making system that determines which pool to distribute more MESHs - a powerful incentive to operate Meshswap. Only stakers with pool voting rights (vMESH) can participate, and they can receive an additional 50% of the transaction fees incurred in the pool.

### Pool Voting regulation

* Users’ votes are calculated based on daily 09:00 AM (UTC+9) snapshots.
* Once users vote on a specific farming pool, they can withdraw it after the upcoming snapshot period.
* In the case of transaction reward pools where MESH rewards are invalidated as a result of token classification agenda voting, users can withdraw their votes for them before the upcoming snapshot period.
* When the token grade is downgraded due to governance agenda voting, that specific token farming pool will be excluded from the MESH inflation reward from the point when the code is reflected.
* Users can vote on farming pools that provide MESH rewards. And they can vote for up to 10 different pools.
* 50% of the transaction fee generated by the voted farming pools will be distributed to the pool voters during the voting period.
* The amount of the distributed transaction fee that voters will receive depends on the voters’ stake in their pool votes. (My pool voting share = my number of vMESH votes/total number of vMESHs voted for that pool)
* Any farming pools without votes will not distribute the accumulated transactions fee.
* Users can freely receive the distributed transaction fee reward in their wallet by clicking the get reward button.
* If the number of votes held by users changes by execution of additional voting, withdrawals, and unstaking at the end of the contracted period, the distributed transaction fee will be automatically transferred to the users’ wallets at that point.


# How to participate in Pool Voting with vMESH

1\. Click the **\[Staking and Pool Voting]** page on the **\[MESH governance]** menu at the top of the Meshswap.

![](/files/jNjGL5JPmKrLoTapKL3g)

2\. Choose the pool to vote for from the pool list, then click the **\[Deposit]** button. Users can check the total number of votes they have and the number of votes available for pool voting on ‘My Voting Rights’

![](https://lh5.googleusercontent.com/jSeFP3MqkY08SGDflVQe3Z1J8OIjpv5YQQFqM4qzo_0DRQqFHnohpFg56oiU9cHT0eCSRcYAfEfk3041zWX8qqqwqTKbPW8rwFNpjwce5DvQSixD1EfQJOBMsVgSmHhntV5QTHsciGn8LurnEQ)

3\. Insert the number of votes and check the estimated information when proceeding with Pool Voting in “Established Returns”.

Click the **\[Next]** button.

**All displayed information is real-time expected information, which may cause differences in the actual Pool Voting process.** Therefore, the user should be fully aware of and understand the changes that may occur during the Pool Voting process before voting.

![](/files/z5lDKOZ26PR8XkUZISBG)

4\. Check the pool voting information lastly, then click the **\[Vote]** button and the **\[Confirm]** button.

![](/files/HvE8av020TkJ8pD7OqTA)

5\. Once the transaction is completed,

&#x20; ＊“Available for pool vote” shows how much vMesh is available for another pool voting.

&#x20; ＊“Pool voted” is for checking voting status. The distributed pool voting rewards can be confirmed from the moment the voting is completed.

![](https://lh6.googleusercontent.com/Aa0y0RN8E1dmdKvMXbWou2Zw4oW_ZB0A8kym83u7fbdJ7853esfMl0EH5oiICEtpoUQpklAqDJLjfr4brE8X8LVE9U_8L8J8Gk-WBmuNgux1krW0rHycCNGZoujWMeAEk77DatXAiyyezXuLRw)


# Ecopot

Ecopot is an ecosystem partner project that seeks to expand users and liquidity through a connection with the Meshswap ecosystem. Ecopot project partners distribute a portion of the corresponding token inflation to stakers (vMESH holders).

### **How to participate Ecopot**

MESH stakers who acquire vMESH, the voting right, can participate in Ecopot projects. Users who want to participate in Ecopot can participate in various Ecopot pools by using their vMESH, and receive token rewards from each pool. Users who stake MESH in a long period will earn more vMESH and gain more benefits from Ecopot. The allocated rewards can be checked in real time and can be received at any time. If users have participated in multiple Ecopot project pools, they can receive all rewards at once by clicking the \[Receive All Rewards] button.

### **Precautions when participating Ecopot**

* Users can participate in up to 10 projects with the voting rights (vMESH) held on the Ecopot list.
* Users can participate in the Ecopot based on the total amount of voting rights held, and Ecopot and pool voting are separate votes.\
  Ex) Users with 1,000 vMESHs can exercise 1,000 vMESHs in each of the Ecopot and Pool voting, respectively.
* The expected rate of return represents the annual rate of return (APR) after calculating the annual expected amount of rewards based on the number of vMESH participated by the user compared to the total number of total vMESH participating in the Ecopot, and it may differ from the actual rate of return.
* Distributed Ecopot rewards can be received at any time.
* Tokens given as rewards in Ecopot are autonomously issued tokens on the Polygon chain and have not undergone separate screening, ergo stability of the tokens are not guaranteed.
* Projects are voluntarily participating in Ecopot, and Meshswap does not encourage transactions and investments in the specific token. Ecopot rewards distribution can be delayed or discontinued because the rewards are distributed to users directly by projects, not by Meshswap.
* Given rewards can be found on \[Wallet] page, if not displayed, you can search for the contract address of the token.
* Ecopot reward distributions are directly executed by each Ecopot project partner and rewards distribution starts from the start block. You can check the current block number in [Polygonscan ](https://polygonscan.com/)and in the top right corner (PC) or side menu (mobile) of Meshswap website.


# Drops

Drops is a Meshswap platform that enables various Polygon-based projects can most effectively distribute their initial token resources and successfully perform the entire process from distribution planning, implementation, and distribution for their liquidity activation.

Projects can gain high attention and form a potential user pool by conducting airdrops for MESH stakers who are strong supporters of Meshswap and MESH. Projects can use this as a growth engine for future liquidity inflow, and users who participate in MESH staking can obtain staking rewards as well as opportunities and additional rewards for participating in new projects earlier than anyone else.

### **Projects**

* Projects can build an initial token economy and distribute their tokens without any additional cost and resource
* Projects can promote their own project contents in Meshswap community and secure new holders through airdrop
* Projects can create an initial liquidity and secure liquidity suppliers by effectively exposing their contents to existing Meshswap users, and can interlock the liquidity with another project in the future
* With technical support regarding smart contracts, Airdrop can be carried out transparently and safely&#x20;
* Mutual marketing can be conducted through consultation with Meshswap

### **MESH holders**

* MESH stakers can earn additional profits in addition to MESH rewards
* Without searching for multiple platforms where airdrops are held, MESH staking makes it easy to receive token airdrops distributed in Polygon ecosystem
* You can preempt various financial opportunities that new projects will provide

### **Meshswap**

* As more sound projects enter the Meshswap ecosystem through Drops, the Meshswap ecosystem will gradually expand, creating a virtuous cycle in which Meshswap and projects who participate in Drops grow together. Users of Meshswap can enjoy new financial opportunities provided by projects that can combine with the MESH token economy. Drops will contribute to a growth of MESH value and play an important role in the development of the Meshswap ecosystem.

### **How to participate in Drops**

Users participating in MESH staking are automatically eligible for airdrops for new projects supported by Drops. There is no necessary participation procedure other than MESH staking, and airdrop tokens are distributed based on the amount of vMESH held.

Users who participate in MESH staking for a long time earn more vMESHs, so the Airdrop benefit also increases. The number of airdrop rewards distributed to MESH holders can be checked based on the snapshot at 9 a.m. (UTC+9) every day, and compensation can be received at once after the end of the airdrop.

### **Precautions when participating Drops**

* Airdrop will proceed with only one project for a certain period of time.
* Designated airdrop rewards for each user is distributed based on a snapshot of the amount of vMESH that a user held after MESH staking.
* Snapshots take place once a day at 9 a.m. (UTC+9). (However, there may be delays in snapshot processing due to situations such as increased transaction congestion and computer system errors on the Polygon chain, and in this case, vMESH snapshots are performed based on blocks at the time of recovery. Rewards are distributed according to the vMESH spotted based on the snapshot)
* The 'Estimated airdrop rewards' of the ongoing AirDrop is the real-time estimated quantity calculated based on the user's vMESH quantity compared to the total amount of vMESH issued by the protocol at that time, which may not be the same as the quantity that users actually receive. The actual reward quantity is determined based on snapshots that proceed every morning.
* Distributed airdrop rewards for every user can be received at once after the airdrop event is over.
* Tokens provided as airdrop rewards are autonomously issued tokens on the Polygon chain and do not go through separate screening, hence safety is not guaranteed.
* Airdrop is carried out autonomously by project companies, and Meshswap does not encourage the transaction or investment of a specific token.
* Rewards received from airdrop can be checked on the Wallet page, and if not displayed, users can check it by searching for the token contract address
* The “reward receipt date” of the distributed Drops tokens is different for each token and may be changed by the circumstances of the developer.

{% content-ref url="/pages/jUbVeiekjcTv8l4JePQe" %}
[Stake](/products/stake)
{% endcontent-ref %}


# Pool Airdrop

By utilizing Meshswap's airdrop function, various Dapp projects in Polygon Chain can also freely distribute their tokens in farming pools through airdrop. If a liquidity provider supplies liquidity to an airdrop reward farming pool, the liquidity provider will receive an airdrop token set for each block based on my LP Token stake(%). Airdrop supports multiple settings in a specific farming pool, allowing users to get rewards for all multiple tokens.

Meshswap aims to become a decentralized liquidity node that economically connects the Polygon ecosystem by transforming it into an organic system that connects all \[Dapp Project - Meshswap - Participants] rather than simply \[Meshswap - Participants] beyond a limited environment.

### The opportunity that token airdrop provides&#x20;

####

#### **(1) Stable liquidity provision environments**

By providing additional rewards such as new token airdrops as well as existing transaction fees and MESH rewards, users can gain more value when supplying liquidity. This can offset the possible risks of token price changes when participating as an initial liquidity provider, which allows users to supply liquidity to Meshswap in a more stable environment than before.

#### **(2) Driving the early growth of Dapp projects**

The token Airdrop model can not only lead to the expansion of the unique token economy model that Dapp projects already have, but also serve as a strong incentive to maintain the intrinsic value of the project. In particular, Dapp projects that are about to grow in the Polygon ecosystem have been greatly affected by high price volatility due to a lack of initial provision of liquidity; however, in the AMM environment of Meshswap where additional rewards are made, better quality and quantity of liquidity can be provided. Therefore, projects using Meshswap can focus on increasing the original value of the project while defending short-term price volatility.

Meshswap can establish an advanced incentive environment in which organic connections between liquidity providers and participants, including Dapps, can take place with additional value provision.


# Governance

### Governance voting registration procedure

![](/files/IBxFKqNgSIpxnfbnPLQD)

The order of registration and execution of the Meshswap governance vote is as follows.

#### **1) Registering for voting**

Users who want to register for voting in Meshswap Governance must have at least 0.1% of the total issued vMESHs in the protocol as of the time of voting registration. Voting registrants can select and register one of the types of proposals, and the registration fee is 500 MESH. MESH used for registration costs will be used to fund Buyback & Burn program.

#### **2) Voting Period**

The vote will be ongoing for a total of three days. After snapshotting the entire wallet at the start of the vote, the number of vMESHs that can participate in the vote for each wallet is determined. Voting rights obtained by staking additional vMESH cannot be exercised once the voting begins. You can't change the details of the vote once you exercise your right.

#### **3) The first vote of approval**

If the vote satisfies the minimum participation criteria and final approval criteria at the time of completion of the vote, it would be considered that the motion has been carried in the first round, and if the conditions are not met, the vote will be canceled.

(1) Number of exercisable vote

This is the total number of voting rights issued to the protocol based on snapshots at the time the vote began, indicating the sum of the total number of voting rights allowed to participate in the vote.

(2) Minimum participation criteria.

Based on the number of voting rights available, it is recognized as a valid vote only when at least the participation rate is above 30%.

(3) The final approval criteria.

In a case where the total voters are above the minimum participation standard and at least a majority of the total voters agree.

**4) Timelock**

Voting passed in the first round will remain Timelock-ed for a certain period of time. During the Timelock period, a final inspection is conducted to see if there are any problems with the execution of the transaction.

**5) Final stage**

When the Timelock period ends, the transaction is executed. And as the protocol code is changed, and the voting result is finally reflected.

### **Voting rights and detailed procedures**

#### **1) Information on voting registration**

* In order to register for voting, you must fill out a voting proposal.
* Users who wish to register their votes must have at least 0.1% of the total protocol vMESH in their wallets as of the time of registration of votes, and 500 MESH will be used for voting registration (submitted 500 MESH will be used for Buyback & burn fund).

#### **2) Information on voting participation**

To participate in the vote, you must have a vMESH before voting begins. At the point when registered votes are exercised, the number of vMESH is snapshotted in order to identify the exact number of votes. Therefore, the voting rights obtained by staking additional MESHs after the voting began are not reflected. You can check the number of your exercisable voting rights (vMESH) by entering each voting detail page on the Meshswap governance page. As shown in the image, select the “yes” or “no” button on the voting detail page and click the “Vote” button in the transaction pop-up window to complete the voting. You can't change your decision once the vote is completed.


# Governance Voting Policy

* At the time of governance opening, you can vote on the matter of whether to pass or withdraw certain Grade C assets into the governance. After the initial stabilization period, sequentially scheduled updates would allow voters to exercise their voting rights on alternations of all matters.
* Timeline for every governance agenda is all set to the UTC+9 timezone.
* Once the vote has been registered in the governance, it cannot be changed or canceled.
* Proposing multiple votes on passing the incorporation of Grade C assets into the governance with one wallet address is not possible. If you have already suggested a vote, you can suggest another vote only after the proposed vote is over.
* Users who wish to register their votes must hold at least 0.1% of the total protocol vMESH in their wallets as of the time of voting registration.
* The cost (500 MESH) will be incurred when registering for voting, and all of the cost will be used to fund the Buyback & Burn program. Registration costs can be changed through governance voting.
* The body of the vote must be filled in at least 300 characters, including spaces, and can only be written in English.
* The right to vote (vMESH) to participate in each vote will be determined through a snapshot at the start of each vote. “Reserved voting rights”shown on the governance main page indicates real-time vMESH quantities, and it may differ from the number of vMESHs that can exercise voting rights.
* Even if you get more vMESHs through staking or if the number of vMESHs has decreased due to unstaking after the start of the vote, the number of vMESHs you can exercise is pre-determined at the start of the vote.
* The criteria for passing a vote are as follows. If the total number of voters is above the minimum participation standard, and more than a majority of the total voters agree (see the governance vote registration\_1st approval section in case of detailed criteria).

{% content-ref url="/pages/cCkbZi0tx29vZxQuM9dR" %}
[Governance](/products/governance)
{% endcontent-ref %}

* The criteria for rejecting a vote are as follows.

  &#x20;\- In the case of participating less than the minimum number of voting rights until the end of the voting period (3 days)

  &#x20;\- In a case where a majority of all voters do not approve at the end of the voting period.


# Contract

Here are the articles in this section:thumbsup:&#x20;

{% content-ref url="/pages/eWRKGOEEgJmhFVlaIYn7" %}
[MESH](/developers/contract/mesh)
{% endcontent-ref %}

{% content-ref url="/pages/DINrvoJU89E1c87ksIMO" %}
[MESHswapRouter](/developers/contract/meshswaprouter)
{% endcontent-ref %}

{% content-ref url="/pages/nryHlf05bhnMXVxZppfg" %}
[Factory](/developers/contract/factory)
{% endcontent-ref %}

{% content-ref url="/pages/mrqzfwoaeu7foPeNS8aB" %}
[Exchange](/developers/contract/exchange)
{% endcontent-ref %}

{% content-ref url="/pages/f0gdbXs6yqQN8yTAiMeU" %}
[PoolVoting](/developers/contract/poolvoting)
{% endcontent-ref %}

{% content-ref url="/pages/NvpZgW80dHsebfuz4lKL" %}
[VotingMESH](/developers/contract/votingmesh)
{% endcontent-ref %}

{% content-ref url="/pages/0p4iC5AN1BDjzAOFBwkc" %}
[Treasury](/developers/contract/treasury)
{% endcontent-ref %}

{% content-ref url="/pages/u3CfGyZbROswRu7y6WEQ" %}
[Distribution](/developers/contract/distribution)
{% endcontent-ref %}

{% content-ref url="/pages/xOR2foWFxl920l0ww90W" %}
[Governor](/developers/contract/governor)
{% endcontent-ref %}

{% content-ref url="/pages/TVKVaxBRufuoFfQMGX4J" %}
[SinglePool](/developers/contract/singlepool)
{% endcontent-ref %}

{% content-ref url="/pages/gGdyQGFXlG9B94VAaHjR" %}
[SinglePool Factory](/developers/contract/singlepool-factory)
{% endcontent-ref %}

{% content-ref url="/pages/xk3U7O3Y0gbCc5Z8E5IY" %}
[PlusPool Factory](/developers/contract/pluspool-factory)
{% endcontent-ref %}

{% content-ref url="/pages/7SeE54eAFNkW7Oo6PSis" %}
[EcoPotVoting](/developers/contract/ecopotvoting)
{% endcontent-ref %}

{% content-ref url="/pages/wVpLdskciDqimnChxi08" %}
[EcoPot](/developers/contract/ecopot)
{% endcontent-ref %}


# MESH

The MESH smart contract is MESHswap's MESH governance token that complies with the ERC20 standard, and a smart contract that implements all functions related to MESH mining.

## Address

* Polygon Mainnet : [0x82362ec182db3cf7829014bc61e9be8a2e82868a ](https://polygonscan.com/address/0x82362ec182db3cf7829014bc61e9be8a2e82868a)

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

**Transfer**

```solidity
event Transfer(address indexed from, address indexed to, uint amount);
```

* Event for the movement and burning of MESH tokens
* A ERC-20 Standard Event

**Approval**

```solidity
event Approval(address indexed holder, address indexed spender, uint amount);
```

* Event for MESH token approval
* A ERC-20 Standard Event

**RefixMining**

```solidity
event RefixMining(uint blockNumber, uint newBlockAmount, uint newHalfLife);
```

* Event for MESH mining option change
* Events that can occur depending on the block creation time of the polygon network
  {% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

#### name

* Meshswap Protocol

#### symbol

* MESH

#### decimals

* 18

#### totalSupply

* Amount of MESH distributed so far
* Max Supply = 126144000 + 1500000 - Burn MESH

#### balanceOf

* The amount of MESH held in each address

#### allowance

* Status of approval to spender for each address

#### owner

* Governance Contract Address

#### miningAmount

* The total mining amount
* This cannot be changed after a contract is deployed

#### halfLife

* The block unit that proceeds with halving
* This cannot be changed after a contract is deployed

#### minableBlock

* The block number that starts mining

#### teamRatio

* The ratio of the mined amount given to the developement team.

#### teamWallet

* The address to which the development team can claim their reward

#### teamAward

* The team reward amount that has already been claimed

#### mined

```solidity
function mined() public view returns (uint) 
```

* Returns the MESH amount mined so far
* This amount includes the quantity already claimed and the quantity to be claimed
* The teamAward quantity is exempted from this amount

{% endtab %}

{% tab title="State-Changing Functions" %}

#### transfer

```solidity
function transfer(address _to, uint _value) public returns (bool)
```

* ERC-20 Standard
* Method to transfer MESH tokens

#### transferFrom

```solidity
function transferFrom(address _from, address _to, uint _value) public returns (bool)
```

* ERC-20 Standard
* Method to transfer tokens on behalf of the approved wallet

#### approve

```solidity
function approve(address _spender, uint _value) public returns (bool)
```

* ERC-20 Standard
* Method to approve a transfer as much as value to spender

{% endtab %}
{% endtabs %}


# MESHswapRouter

The swap router supports all the basic requirements of a front-end offering trading. The functions supported by default can be checked in the table below.

## Address

* Polygon Mainnet : [0x10f4a785f458bc144e3706575924889954946639](https://polygonscan.com/address/0x10f4a785f458bc144e3706575924889954946639)

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

####

#### ExchangePos

```solidity
event ExchangePos(address token0, uint amount0, address token1, uint amount1);
```

* Positive exchange Event
* parameters
  * `token0` :  User input token0 address
  * `amount0` : User input token0 amount
  * `token1` : User get token1 address
  * `amount1` : User get token1 amount&#x20;

#### ExchangeNeg

```solidity
event ExchangeNeg(address token0, uint amount0, address token1, uint amount1);
```

* Negative exchange Event
* parameters
  * `token0` : User input token0 address
  * `amount0` : User input token0 amount&#x20;
  * `token1` : User get token1 address
  * `amount1` : User get token1 amount

##

{% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

#### factory

* Factory Contract Address

**WETH**

* WETH Contract Address

#### quote

```solidity
function quote(uint amount0, uint reserve0, uint reserve1) internal pure returns (uint amount1);
```

* Given some asset amount and reserves, returns an amount of the other asset representing equivalent value.

#### getAmountIn

```solidity
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn);
```

* Returns the minimum input asset amount required to buy the given output asset amount (accounting for fees) given reserves.

#### getAmountOut

```solidity
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut);
```

* Given an input asset amount, returns the maximum output amount of the other asset (accounting for fees) given reserves.

**getAmountsIn**

```solidity
function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts);
```

* Given an output asset amount and an array of token addresses, calculates all preceding minimum input token amounts by calling getReserves for each pair of token addresses in the path in turn, and using these to call getAmountIn.

#### getAmountsOut

```solidity
function getAmountsOut(uint amountIn, address[] memory path) internal view returns (uint[] memory amounts);
```

* Given an input asset amount and an array of token addresses, calculates all subsequent maximum output token amounts by calling getReserves for each pair of token addresses in the path in turn, and using these to call getAmountOut.
  {% endtab %}

{% tab title="State-Changing Functions" %}

## State-Changing Functions

**addLiquidity**

```solidity
function addLiquidity(
  address token0,
  address token1,
  uint amount0Desired,
  uint amount1Desired,
  uint amount0Min,
  uint amount1Min,
  address to,
  uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
```

* Adds liquidity to an ERC-20 / ERC-20 pool.
* To cover all possible scenarios, `msg.sender` should have already given the router an allowance of at least amount0Desired/amount1Desired on token0/token1.
* Always adds assets at the ideal ratio, according to the price when the transaction is executed.
* If a pool for the passed tokens does not exists, one is created automatically, and exactly amount0Desired/amount1Desired tokens are added.
* Parameters

  * `token0` : A pool token.&#x20;
  * `token1` : A pool token.&#x20;
  * `amount0Desired` : The amount of token0 to add as liquidity if the token1/token0 price is <= amount1Desired/amount0Desired .
  * `amount1Desired`: : The amount of tokenB to add as liquidity if the token0/token1 price is <= amountADesired/amountBDesired .&#x20;
  * `amount0Min` : Bounds the extent to which the B/A price can go up before the transaction reverts. Must be <= amount0Desired.&#x20;
  * `amount1Min` : Bounds the extent to which the A/B price can go up before the transaction reverts. Must be <= amount1Desired.&#x20;
  * `to` : Recipient of the liquidity tokens.&#x20;
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
  * `amount0` : The amount of token0 sent to the pool.&#x20;
  * `amount1`: The amount of token1 sent to the pool.&#x20;
  * `liquidity` : The amount of liquidity tokens minted.

**addLiquidityETH**

```solidity
function addLiquidityETH(
  address token,
  uint amountTokenDesired,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
```

* Adds liquidity to an ERC-20 / WETH pool with ETH.
* To cover all possible scenarios, `msg.sender` should have already given the router an allowance of at least amountTokenDesired on token.
* Always adds assets at the ideal ratio, according to the price when the transaction is executed.
* `msg.value` is treated as a amountETHDesired.
* Leftover ETH, if any, is returned to `msg.sender`.
* If a pool for the passed token and WETH does not exists, one is created automatically, and exactly amountTokenDesired/`msg.value` tokens are added.
* Parameters

  * `token` : A pool token.&#x20;
  * `amountTokenDesired` : The amount of token to add as liquidity if the WETH/token price is <= `msg.value`/amountTokenDesired.
  * `amountETHDesired`: : The amount of ETH to add as liquidity if the token/WETH price is <= amountTokenDesired/`msg.value`.&#x20;
  * `amountTokenMin` : Bounds the extent to which the WETH/token price can go up before the transaction reverts. Must be <= amountTokenDesired.&#x20;
  * `amountETHMin` : Bounds the extent to which the token/WETH price can go up before the transaction reverts. Must be <= `msg.value`.&#x20;
  * `to` : Recipient of the liquidity tokens.&#x20;
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
  * `amountToken` : The amount of token sent to the pool.
  * `amountETH`: The amount of ETH converted to WETH and sent to the pool.
  * `liquidity` : The amount of liquidity tokens minted.

**removeLiquidity**

```solidity
function removeLiquidity(
  address token0,
  address token1,
  uint liquidity,
  uint amount0Min,
  uint amount1Min,
  address to,
  uint deadline
) external returns (uint amount0, uint amount1);
```

* Removes liquidity from an ERC-20 / ERC-20 pool.
* `msg.sender` should have already given the router an allowance of at least liquidity on the pool.
* Parameters

  * `token0` : A pool token.&#x20;
  * `token1` : A pool token.&#x20;
  * `liquidity` : The amount of liquidity tokens to remove.
  * `amount0Min` : The minimum amount of tokenA that must be received for the transaction not to revert..&#x20;
  * `amount1Min` : The minimum amount of tokenB that must be received for the transaction not to revert.
  * `to` : Recipient of the underlying assets.
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
  * `amount0` : The amount of token0 received.&#x20;
  * `amount1`: The amount of token1 received.&#x20;

**removeLiquidityETH**

```solidity
function removeLiquidityETH(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline
) external returns (uint amountToken, uint amountETH);
```

* Removes liquidity from an ERC-20 / WETH pool and receive ETH.
* `msg.sender` should have already given the router an allowance of at least liquidity on the pool.
* Parameters

  * `token` : A pool token.&#x20;
  * `liquidity` : The amount of liquidity tokens to remove.
  * `amountTokenMin` : The minimum amount of token that must be received for the transaction not to revert.
  * `amountETHMin` : The minimum amount of ETH that must be received for the transaction not to revert.
  * `to` : Recipient of the underlying assets.
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
  * `amount0` : The amount of token received.&#x20;
  * `amount1`: The amount of ETH received.&#x20;

**removeLiquidityWithPermit**

```solidity
function removeLiquidityWithPermit(
  address token0,
  address token1,
  uint liquidity,
  uint amountAMin,
  uint amountBMin,
  address to,
  uint deadline,
  bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amount0, uint amount1);
```

* Removes liquidity from an ERC-20 / ERC-20 pool without pre-approval
* Parameters

  * `token0` : A pool token.&#x20;
  * `token1` : A pool token.&#x20;
  * `liquidity` : The amount of liquidity tokens to remove.&#x20;
  * `amount0Min` : The minimum amount of token0 that must be received for the transaction not to revert.&#x20;
  * `amount1Min` : The minimum amount of token1 that must be received for the transaction not to revert.&#x20;
  * `to` : Recipient of the underlying assets.&#x20;
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
  * `approveMax` : Whether or not the approval amount in the signature is for liquidity or uint(-1).&#x20;
  * `v` : The v component of the permit signature.&#x20;
  * `r` : The r component of the permit signature.&#x20;
  * `s` : The s component of the permit signature.&#x20;
  * `amount0` : The amount of token0 received.&#x20;
  * `amount1` : The amount of token1 received.

**removeLiquidityETHWithPermit**

```solidity
function removeLiquidityWithPermit(
  address token0,
  address token1,
  uint liquidity,
  uint amount0Min,
  uint amount1Min,
  address to,
  uint deadline,
  bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amount0, uint amount1);
```

* Removes liquidity from an ERC-20 / WETTH pool and receive ETH without pre-approva
* Parameters
  * `token` : A pool token.&#x20;
  * `liquidity` : The amount of liquidity tokens to remove.&#x20;
  * `amountTokenMin` : The minimum amount of token that must be received for the transaction not to revert.&#x20;
  * `amountETHMin` : The minimum amount of ETH that must be received for the transaction not to revert.&#x20;
  * `to` : Recipient of the underlying assets.&#x20;
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
  * `approveMax` : Whether or not the approval amount in the signature is for liquidity or uint(-1).&#x20;
  * `v` : The v component of the permit signature.&#x20;
  * `r` : The r component of the permit signature.&#x20;
  * `s` : The s component of the permit signature.&#x20;
  * `amountToken` : The amount of token received.&#x20;
  * `amountETH` : The amount of ETH received.

**swapExactTokensForTokens**

```solidity
function swapExactTokensForTokens(
  uint amountIn,
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external returns (uint[] memory amounts);
```

* Swaps an exact amount of input tokens for as many output tokens as possible, along the route determined by the path. The first element of path is the input token, the last is the output token, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
* `msg.sender` should have already given the router an allowance of at least amountIn on the input token.
* Parameters
  * `amountIn` : The amount of input tokens to send.&#x20;
  * `amountOutMin` : The minimum amount of output tokens that must be received for the transaction not to revert.&#x20;
  * `path` : An array of token addresses. path.length must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.&#x20;
  * `to` : Recipient of the output tokens.&#x20;
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
  * `amounts` : The input token amount and all subsequent output token amounts.

&#x20;

**swapTokensForExactTokens**

```solidity
function swapTokensForExactTokens(
  uint amountOut,
  uint amountInMax,
  address[] calldata path,
  address to,
  uint deadline
) external returns (uint[] memory amounts);
```

* Receive an exact amount of output tokens for as few input tokens as possible, along the route determined by the path. The first element of path is the input token, the last is the output token, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
* `msg.sender` should have already given the router an allowance of at least amountInMax on the input token.
* Parameters
  * `amountOut` : The amount of output tokens to send.&#x20;
  * `amountInMax` : The maximum amount of input tokens that can be required before the transaction reverts.
  * `path` : An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.
  * `to` : Recipient of the output tokens.&#x20;
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
  * `amounts` : The input token amount and all subsequent output token amounts.

**swapExactETHForTokens**

```solidity
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
  external
  payable
  returns (uint[] memory amounts);
```

* Swaps an exact amount of ETH for as many output tokens as possible, along the route determined by the path. The first element of path must be WETH, the last is the output token, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
* Parameters

  * `amountIn` : The amount of ETH to send.&#x20;
  * `amountOutMin` : The minimum amount of output tokens that must be received for the transaction not to revert.
  * `path` : An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.
  * `to` : Recipient of the output tokens.&#x20;
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
  * `amounts` : The input token amount and all subsequent output token amounts.

**swapTokensForExactETH**

```solidity
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
  external
  returns (uint[] memory amounts);
```

* Receive an exact amount of ETH for as few input tokens as possible, along the route determined by the path. The first element of path is the input token, the last must be WETH, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
* `msg.sender` should have already given the router an allowance of at least amountInMax on the input token.
* If the to address is a smart contract, it must have the ability to receive ETH.
* Parameters
  * `amountOut` : The amount of output ETH to send.&#x20;
  * `amountInMax` : The maximum amount of input tokens that can be required before the transaction reverts.
  * `path` : An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.
  * `to` : Recipient of the ETH.&#x20;
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
  * `amounts` : The input token amount and all subsequent output token amounts.

**swapExactTokensForETH**

```solidity
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
  external
  returns (uint[] memory amounts);
```

* Swaps an exact amount of tokens for as much ETH as possible, along the route determined by the path. The first element of path is the input token, the last must be WETH, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
* If the to address is a smart contract, it must have the ability to receive ETH.
* Parameters

  * `amountIn` : The amount of tokens to send.&#x20;
  * `amountOutMin` : The minimum amount of output tokens that must be received for the transaction not to revert.
  * `path` : An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.
  * `to` : Recipient of the output ETH.&#x20;
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
  * `amounts` : The input token amount and all subsequent output token amounts.

**swapETHForExactTokens**

```solidity
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
  external
  payable
  returns (uint[] memory amounts);
```

* Receive an exact amount of tokens for as little ETH as possible, along the route determined by the path. The first element of path must be WETH, the last is the output token and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
* Leftover ETH, if any, is returned to `msg.sender`.
* Parameters

  * `amountOut` : The amount of tokens to receive.
  * `amountInMax` : The maximum amount of ETH that can be required before the transaction reverts.
  * `path` : An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity.
  * `to` : Recipient of the output tokens.&#x20;
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
  * `amounts` : The input token amount and all subsequent output token amounts.

**claimReward**

```solidity
function claimReward(address pair, uint deadline) external
```

* Method that a user calls to claim the claimable MESH that has accumulated for the pair
* When called, MESH is claimed from the Factory contract and paid to `msg.sender`
* Parameters
  * `pair` : Pairs that paid liquidity.
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;

**claimReward**

```solidity
function claimReward(address token0, address token1, uint deadline) external
```

* Method that a user calls to claim the claimable MESH that has accumulated for the pair
* When called, MESH is claimed from the Factory contract and paid to `msg.sender`
* Parameters
  * `token0` : token0 address of pairs that paid liquidity.
  * `token1` : token1 address of pairs that paid liquidity.
  * `deadline` : Unix timestamp after which the transaction will revert.&#x20;
    {% endtab %}
    {% endtabs %}


# MESHSwapView

This contract can check asset details and exchange estimates of meshswap service

## Address

* Polygon Mainnet : [0xF61e4ede9128A9FA9a128cB7D161F4e73bd464Da](https://polygonscan.com/address/0xF61e4ede9128A9FA9a128cB7D161F4e73bd464Da)

{% tabs %}
{% tab title="Read-Only Functions" %}

## Read-Only Functions

**getPoolData**

```solidity
function getPoolData(address lp) public view returns (
        uint miningRate,
        uint rateDecimals,
        address token0,
        uint reserveA,
        address token1,
        uint reserveB,
        uint airdropCount,
        address[] memory airdropTokens,
        uint[] memory airdropSettings 
    )
```

* Details of the pool
* Airdrop only between startBlock and endBlock of blocks in the network
* Parameters
  * `miningRate` : MESH distribution ratio numerator value
  * `rateDecimals` : MESH distribution ratio denominator
    * 예) Daily MESH distribution ratio
      * miningRate - 130323276365080043, rateDecimals - 10000000000000000
      * 130323276365080043 / 10000000000000000 = 13.03...%
  * `token0` : LP token0
  * `reserveA` : Amount of token0 held by LP
  * `token1` : LP token1
  * `reserveB` : Amount of token1 held by LP
  * `airdropCount` : Number of airdrop plans in progress at LP
  * `airdropTokens` : Airdrop token address array
  * `airdropSettings` : Airdrop info array
    * \[0]: blockAmount, \[1]: startBlock, \[2]: endBlock
* `airdropSettings` Data format
  * 예) Token0, Token1 Airdrop  &#x20;
    * airdropTokens = \[ Token0 address, Token1 address]
    * airdropSettings = \[ Token0 blockAmount, Token0 startBlock, Token0 endBlock, Token1 blockAmount, Token1 startBlock, Token1 endBlock ]

**getPendingReward**

```solidity
function getPendingReward(address lp, address user) public view returns ( 
    uint meshReward, 
    uint airdropCount, 
    address[] memory airdropTokens, 
    uint[] memory airdropRewards )
```

* User's claimable reward information
* Parameters
  * `meshReward` : Claimable MESH
  * `airdropCount` : Number of airdrop plans the LP has
  * `airdropTokens` : Airdrop token address array
  * `airdropRewards` : Arrangement of Airdrop token amount Information claimable
* `airdrop` data format
  * 예) Token0, Token1 Airdrop&#x20;
    * airdropTokens = \[ Token0 address, Token1 address]
    * airdropSettings = \[ Token0 reward, Token1 reward ]

**estimateSwap**

```solidity
function estimateSwap(
    uint amountIn, 
    address[] memory path
) public view returns (uint amountOut)
```

* MESHswap swap estimate lookup function
* Input Parameters
  * `amountIn` : Token amount to be exchanged
  * `path` : exchange token path
* example
  * WMATIC -> MESH
    * amountIn = 1000000000000000000 ( =1 WMATIC )
    * path = `["0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",  "0x82362Ec182Db3Cf7829014Bc61E9BE8a2E82868a"]`
  * WMATIC -> USDC -> MESH
    * path = `["0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",  "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", "0x82362Ec182Db3Cf7829014Bc61E9BE8a2E82868a"]`
      {% endtab %}
      {% endtabs %}


# Factory

The Factory smart contract oversees the full functionality of token pair registration and transactions in MESHswap.&#x20;

## Address

* Polygon Mainnet :[ ](https://scope.klaytn.com/account/0xc6a2ad8cc6e4a7e08fc37cc5954be07d499e7654?tabId=txList)[0x9f3044f7f9fc8bc9ed615d54845b4577b833282d](https://polygonscan.com/address/0x9f3044f7f9fc8bc9ed615d54845b4577b833282d)

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

#### ChangeCreateFee

```solidity
event ChangeCreateFee(uint _createFee);
```

* &#x20;An event to change the Pool Contract Creation Fee when adding a new liquidity pool pair

#### CreatePool

```solidity
event CreatePool(address token0, uint amount0, address token1, uint amount1, uint fee, address exchange, uint exid);
```

* Event to create new liquidity pool
* parameters
  * `token0` : token0 address in pair
  * `amount0` : token0 amount in pool
  * `token1` : token1 address in pair
  * `amount1` : token1 amount in pool
  * `fee` : pool fee rate
  * `exchange` : exchange contract address of this pool
  * `exid` : exchange id

{% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

#### WETH

* WETH contract address.

#### mesh

* MESH contract address

#### allPairsLength

* Returns the total number of pairs created through the factory so far.

#### getPoolCount

* Returns the total number of pairs created through the factory so far.

#### createFee

* The amount of MESH that must be paired to create a new liquidity pool pair

#### owner

* Factory Contract Address

#### nextOwner

* The next Governance Contract Address set in advance.

#### pools

* List of liquidity pool pairings&#x20;
* Each item saves the smart contract address of the liquidity pool

#### poolExist

* Returns if the contract for the given liquidiy pool pair exists

#### tokenToPool

* The contract address corresponding to the token0, token1 pair
* When the addresses of token0 and token1 are inputted, this returns the contract address of the corresponding pairing
* Returns the  same contract address regardless of the order of the liquidity pool pairing tokens:

  tokenToPool\[token0]\[token1] == tokenToPool\[token1]\[token0]

####

#### allPairs

```
function allPairs(uint) external view returns (address pair);
```

* Returns the address of the `n`th pair (`0`-indexed) created through the factory

#### getPair

```
function getPair(address token0, address token1) external view returns (address pair);
```

* Returns the address of the pair for `token0` and `token1`, if it has been created, else `address(0)` (`0x0000000000000000000000000000000000000000`).

#### getPoolAddress

```
function getPoolAddress(uint idx) public view returns (address)
```

* Returns the address of the `n`th pair (`0`-indexed) created through the factory
  {% endtab %}

{% tab title="State-Changing Functions" %}

## State-Changing Functions

#### createETHPool

```solidity
function createETHPool(address token, uint amount, uint fee) public payable 
```

* A method called to add a liquidity pair with one side as MATIC
* The wallet that calls this must have MESH greater than or equal to createFee
* Token for when the WMATIC / ERC-20 pair to be registered has never been registered before
* Parameters
  * `token` : ERC-20 token address to add liquidity
  * `amount` : the amount of tokens (ERC-20) to be provided for the initial liquidity
  * `fee` : Sets the initial fee value for liquidity pairs
    * A value between 0 and 100
    * Meaning: 0 -> 0%, 100 -> 1%
  * `msg.value` : MATIC quantity to initially supply liquidity&#x20;
    * Delivers the transaction value without specifying otherwise

#### createTokenPool

```solidity
 function createTokenPool(address token0, uint amount0, address token1, uint amount1, uint fee) public
```

* Method called to add liquidity pair in case of ERC-20 token pair
* The wallet calling the MESH above createFee must have it.
* parameter
  * `token0` : The address of the first token
  * `amount0` : The quantity of the first token that supplies the initial liquidity
  * `token1` : The address of the second token
  * `amount1` : The quantity of the second token that supplies the initial liquidity
  * `fee` : Sets the initial fee value for liquidity pairs

{% endtab %}
{% endtabs %}


# Exchange

This is a smart contract to expand ERC-20 that is created with every liquidity pair. The Factory deploys this as new pool creation is requested. Although the Factory actually stores the two tokens of a pair and swapping takes place through it, the Exchange Contract must be called for liquidity to be provided or taken.

## Code

Github Link: (Will be updated after official launch)

## Address

Contract address after production is deployed&#x20;

## Events, Read-Only Functions, and State-Changing Functions&#x20;

{% tabs %}
{% tab title="Events" %}

## Events

#### Transfer

```solidity
event Transfer(address indexed from, address indexed to, uint amount);
```

* ERC-20 Standard
* Event log of Transfer/Mint/Burn

#### Approval

```solidity
event Approval(address indexed holder, address indexed spender, uint amount);
```

* ERC-20 Standard
* Event log of Approvals

#### ChangeMiningRate

```solidity
event ChangeMiningRate(uint _mining);
```

* Event log of mining rate change&#x20;

#### ChangeFee

```solidity
event ChangeFee(uint _fee);
```

* Event log of trading fee rate changes

#### ChangeRateNumerator

```solidity
event ChangeRateNumerator(uint rateNumerator);
```

* Event log of rateNumerator changes

#### UpdateMiningIndex

```solidity
event UpdateMiningIndex(uint lastMined, uint miningIndex);
```

* Event log of pairs’ mining index changes
* `lastMined` : Factory.mined() value at the time index is updated
* `miningIndex` : pairs’ miningIndex value at the time

#### GiveReward

```solidity
event GiveReward(address user, uint amount, uint lastIndex, uint rewardSum);
```

* Event log of when mined MESH is claimed and distributed
* `user` :  address of the user who claimed
* `amount` :  the amount of MESH claimed
* `lastIndex` :  index result of the pair of the wallet after claiming&#x20;
* `rewardSum` :  The amount of MESH that has been accrued so far

#### ExchangePos

```solidity
event ExchangePos(address token0, uint amount0, address token1, uint amount1);
```

* Event log of POS transactions
* `token0` : Token address delivered by the user
* `amount0` :  the amount of tokens delivered by the user
* `token1` : token address received by user&#x20;
* `amount1` : the amount of tokens received by the user

#### ExchangeNeg

```
event ExchangeNeg(address token0, uint amount0, address token1, uint amount1);
```

* Event log of NEG transactions
* `token0` :  token address delivered by the user
* `amount0` : the amount of tokens delivered by the user&#x20;
* `token1` : token address received by the user
* `amount1` : the amount of tokens received by the user

#### AddLiquidity

```
event AddLiquidity(address user, address token0, uint amount0, address token1, uint amount1, uint liquidity);
```

* Event log of liquidity additions
* `liquidity` :  the amount of LP tokens minted due to additional liquidity

#### RemoveLiquidity

```
event RemoveLiquidity(address user, address token0, uint amount0, address token1, uint amount1, uint liquidity);
```

* Event log of liquidity removals
* `liquidity` : the amount of LP tokens burned due to liquidity removal

**Sync**

```
event Sync(uint112 reserveA, uint112 reserveB);
```

* Emitted each time reserves are updated.
* Parameters
  * pool :  Pool contract address of target pool
  * reserveA : Token0 liquidity amount
  * reserveB : Token1 liquidity amount
    {% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

#### name

* Meshswap LP

#### symbol

* MSLP

#### decimals

* 18

#### totalSupply

* mint/burn depending on liquidity addition/removal

#### balanceOf

* Number of LP tokens held by each address

#### allowance

* Status of approval to spender for each address

#### factory

* The factory address where the LP smart contract is deployed

#### token0

* The first token address composed of the pair

#### token1

* The second token address composed of the pair

**reserve0**

* Returns the liquidity quantity of the token0 asset in the current pool

**reserve1**

* Returns the liquidity quantity of the token1 asset in the current pool

#### fee

* Transaction fee for the pair
* It is a value between 0 and 100, in units of 0.01%
* 1 == 0.01%, 100 == 1%

#### mining

* The mining rate of the pair
* It is a value between 0 and 100, in units of 1%
* e.g. If mining is 10, the pair has claim authority for 10% of the quantity mined per block in the factory.

#### lastMined

* Factory.mined() value at the last time the pair updated the index

#### miningIndex

* Index value of the last recorded pair

#### userLastIndex

* mapping(address => uint)&#x20;
* Stores the index value at the time of last reward for each user

#### userRewardSum

* mapping(address => uint )
* Stores the cumulatively claimed MESH quantity value for each user

#### getCurrentPool

```
function getCurrentPool() public view returns (uint, uint)
```

* Returns the liquidity quantity of the two assets in the current pool

#### estimatePos

```
function estimatePos(address token, uint amount) public view returns (uint)
```

* When a request is made to sell the amount of the corresponding token through a POS transaction, the expected receiving amount of the opposite token is returned.

#### estimateNeg

```
function estimateNeg(address token, uint amount) public view returns (uint)
```

* When a request is made to purchase the amount of the corresponding token through a NEG transaction, the expected payment amount of the opposite token is returned.
  {% endtab %}

{% tab title="State-Changing Functions" %}

## State-Changing Functions

#### transfer

```solidity
function transfer(address _to, uint _value) public returns (bool)
```

* ERC-20 Standard

#### transferFrom

```solidity
function transferFrom(address _from, address _to, uint _value) public returns (bool)
```

* ERC-20 Standard
* Method to transfer tokens on behalf of the approved wallet

#### approve

```solidity
function approve(address _spender, uint _value) public returns (bool)
```

* ERC-20 Standard
* Method to approve transfer as much as value to the spender

#### updateMiningIndex

```solidity
function updateMiningIndex() public
```

* Method to update the value of the pair contract based on the current Factory.mined() value
* Anyone can call in real time. Even if no one calls it, it calls itself if necessary.

#### claimReward

```
function claimReward() public
```

* Method that a user calls to claim the claimable MESH that has accumulated for the pair
* When called, MESH is claimed from the Factory and paid to `msg.sender`
* Even if the method is not called directly, it is automatically called when the LP token balance of the user’s wallet changes.
  * When liquidity is added
  * When liquidity is removed
  * When LP tokens are sent
  * When LP tokens are received

#### addETHLiquidityWithLimit

```
function addETHLiquidityWithLimit(uint amount, uint minAmount0, uint minAmount1, address user) public payable returns (uint real0, uint real1, uint amountLP) 
```

* Method used to provide liquidity when token0 is MATIC
* Liquidity of the MATIC `msg.value` and token1 `amount` is provided.
* After liquidity is provided, the LP token corresponding to the pool share is minted in the `msg.sender` wallet.
* If the pair ratio is wrong, as much liquidity as possible is supplied at the current pair ratio, and the remaining tokens are returned to `msg.sender`.
* If there is claimable MESH when called, the claim proceeds to `msg.sender`.

**addTokenLiquidityWithLimit**

```
function addTokenLiquidityWithLimit(uint amount0, uint amount1, uint minAmount0, uint minAmount1, address user) public nonReentrant returns (uint real0, uint real1, uint amountLP)
```

* Method used to provide liquidity when token0 is MATIC
* Liquidity of the MATIC `msg.value` and token1 `amount` is provided.
* Set the minimum amount of token0 and token1 to be used for liquidity supply using minAmount0, minAmount1.
* After liquidity is provided, the LP token corresponding to the pool share is minted in the `msg.sender` wallet.
* If the pair ratio is wrong, as much liquidity as possible is supplied at the current pair ratio, and the remaining tokens are returned to `msg.sender`.
* If there is claimable MESH when called, the claim proceeds to `msg.sender`.

#### removeLiquidityWithLimitETH

```
function removeLiquidityWithLimitETH(uint amount, uint minAmount0, uint minAmount1, address user) public nonReentrant returns (uint, uint)
```

* Returns the amount of LP tokens, and distributes the corresponding token0 and token1 to the msg.sender wallet
* The returned LP token amount is burned
* If there is claimable MESH when called, the claim proceeds to msg.sender.

**removeLiquidityWithLimit**

```
function removeLiquidityWithLimit(uint amount, uint minAmount0, uint minAmount1, address user) public nonReentrant returns (uint, uint)
```

* Returns the amount of LP tokens, and distributes the corresponding token0 and token1 to the msg.sender wallet
* Set the minimum amount for the returned token0 and token1 amounts by using minAmount0, minAmount1.
* The returned LP token amount is burned
* If there is claimable MESH when called, the claim proceeds to `msg.sender`.
  {% endtab %}
  {% endtabs %}


# PoolVoting

&#x20;This contract manages meshswap's liquidity pool voting, pool-wide voting information, and pool voting rankings. As a reward for pool voters, 50% of pool transaction fees are distributed according to their voting stake.

## Code

Github Link: (Will be updated after official launch)

## Address

* Polygon Mainnet : [0x705b40af8cecd59406cf630ab7750055c9b137b9](https://polygonscan.com/address/0x705b40af8cecd59406cf630ab7750055c9b137b9)

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

**AddVoting**

```solidity
event AddVoting(address user, address exchange, uint amount);
```

* Event log of voting vMESH for pool
* The amount can be entered in integer units&#x20;

**RemoveVoting**

```solidity
event RemoveVoting(address user, address exchange, uint amount);
```

* Event log of remove voting vMESH for pool&#x20;
* The amount can be entered in integer units within the voting limit.

**GiveReward**

```solidity
event GiveReward(address user, address exchange, address token, uint amount, uint lastIndex, uint rewardSum);
```

* Event that occurs when a transaction fee reward is paid to voters

**SetValidToken**

```solidity
event SetValidToken(address token, bool valid);
```

* Event that occurs when the token level is set to B through voting

**SetBoostingToken**

```solidity
event SetBoostingToken(address token, bool valid);
```

* Event that occurs when the token level is set to A through voting or through contract owner
  {% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

**isValidPool**

* Returns if the pool is MESH paid reward pool

**MAX\_VOTING\_POOL\_COUNT**

* Maximum number of pools where users can vote&#x20;

**poolAmount**

* Total number of vMESH per LP

**poolCount**

* Total number of LP

**poolRanking**

* LP Ranking

**userVotingPoolCount**

* Total number of pools voted by user

**validPoolCount**

* Number of voting pools

**boostingPowerMESH\_A**

* Voting Weights for MESH and grade A tokens

**boostingPowerMESH\_B**

* Voting Weights for MESH and grade B tokens

**boostingPowerA\_A**

* Voting Weights for grade A and grade A tokens

**boostingPowerA\_B**

* Voting Weights for grade A and grade B tokens

#### getPoolBoosting

```
function getPoolBosting(address pool) public view returns (uint)
```

* Voting Weights for target pool

#### prevPoolAmount

```
function prevPoolAmount(uint256 epoch, address pool) public view returns (uint)
```

* Previous pool voting amount by epoch

#### prevValidPool

```
function prevValidPool(uint256 epoch, address pool) public view returns (bool)
```

* Previous pool valid status by epoch

#### isBoostingToken

```
function isBoostingToken(address token) public view returns (bool)
```

* Returns whether it is a grade A token

#### isValidToken

```
function isValidToken(address token) public view returns (bool)
```

* Returns whether it is a grade A token

#### userVotingPoolAmount

```
function userVotingPoolAmount(address user, uint256 poolIndex) public view returns (uint256)
```

* Number of user votes for each PoolIndex

#### userVotingPoolAddress

```
function userVotingPoolAddress(address user, uint256 poolIndex) public view returns (address)
```

* Address of user votes for each PoolIndex
  {% endtab %}

{% tab title="State-Changing Functions" %}

## **State-Changing Functions**

**addVoting**

```solidity
function addVoting(address exchange, uint amount) public
```

* Method to voting vMESH for pool
* The amount can be entered in integer units &#x20;

**removeVoting**

```solidity
function removeVoting(address exchange, uint amount) public
```

* Method to remove voting vMESH for pool
* The amount can be entered in integer units within the voting limit

**claimReward**

```solidity
function claimReward(address exchange) public 
```

* Method of vote pool’s transaction fee reward&#x20;

**claimRewardAll**

```solidity
function claimRewardAll() public
```

* Method of all vote pool’s transaction fee reward&#x20;

**removeAllVoting**

```solidity
function removeAllVoting() public
```

* Method of remove vote pool’s

**delisting**

```solidity
function delisting(address token) public
```

* Method of converts a grade B token to a grade C token
* Automatically registered as a voting agenda after a set period of governance

**setBoostingToken**

```solidity
function setBoostingToken(address token, bool valid) public
```

* Method of token level set to A grade
* Only governance

**setValidToken**

```solidity
function setValidToken(address token, bool valid) public
```

* Method of token level set to B grade
* Only governance
  {% endtab %}
  {% endtabs %}


# VotingMESH

&#x20;This contract is responsible for the ecosystem behavior related to staking MESH. Voting rights (vMESH) are issued according to the staking quantity and period, and 40% of the daily MESH mining quantity is distributed to staking participants. (MESH distribution for staking participants may be changed through governance voting)

## Code

Github Link: (Will be updated after official launch)<br>

## Address

* Polygon Mainnet : [0x176b29289f66236c65c7ac5db2400abb5955df13](https://polygonscan.com/address/0x176b29289f66236c65c7ac5db2400abb5955df13)

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

**LockMESH**

```solidity
event LockMESH(address user, uint lockPeriod, uint MESHAmount, uint totalLockedMESH, uint unlockTime);
```

* Event log of MESH staking
* Parameters
  * `user` : user address
  * `lockPeriod` :&#x20;
    * 4 months : 10,368,000
    * 8 months : 20,736,000
    * 12 months : 31,104,000
    * x8 : 1,555,200,000
  * `MESHAmount` : Number of MESH locked b
  * `totalLockedMESH` : Total Number of staked MESH
  * `unlockTime` : Available unstaking time (timestamp)

**UnlockMESH**&#x20;

```solidity
event UnlockMESH(address user, uint vMESHAmount, uint MESHAmount);
```

* Event log of MESH unstaking
* Parameters
  * `user` : user address
  * `vMESHAmount` : Number of vMESH&#x20;
  * `MESHAmount` : Number of MESH&#x20;

**UnlockMESHUnlimited**

```solidity
event UnlockMESHUnlimited(address user, uint vMESHBefore, uint vMESHAfter, uint MESHAmount, uint unlockTime);
```

* Event log that occurs when unstaking vMESH x8
* Parameters
  * `user` : user address
  * `vMESHBefore` : The amount of vMESH held
  * `vMESHAfter` : Amount of vMESH held after unstaking
  * `MESHAmount` : Amount of MESH staked
  * `unlockTime` : Available unstaking time (timestamp)

**RefixBoosting**

```solidity
event RefixBoosting(address user, uint lockPeriod, uint boostingAmount);
```

* Event log of staking period is changed
* Parameter
  * `user` : user addres
  * `lockPeriod` : period
  * `boostingAmount` : Number of vMESH after period changed

**ChangeMiningRate**

```solidity
event ChangeMiningRate(uint _mining);
```

* Event log of daily MESH distribution rate changed

**GiveReward**

```solidity
event GiveReward(address user, uint amount, uint lastIndex, uint rewardSum);
```

* Event log of when mined MESH is claimed and distributed

**Compound**

```solidity
event Compound(address user, uint reward, uint compoundAmount, uint transferAmount, uint mintAmount);
```

* Event log of when mined MESH restaking.
* The compound amount can be entered in integer units&#x20;
* The amount minus the compund amount from the mined amount is returned to the wallet.&#x20;
  {% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

**balanceOf**

* Number of vMESH tokens held by each address

**getCurrentBalance**

* Number of vMESH tokens held by each address recent snapshot&#x20;

**getUserUnlockTime**

* Possible time of unstake

**lockedMESH**

* Number of MESH tokens stakes

**mining**

* MESH distribution rate&#x20;
* It is a value between 0 and 10000, in units of 0.0001%

**snapShotBalance**

* Number of vMESH tokens held by each address and snapshot&#x20;

**snapShotCount**

* Number of snapshot index each address&#x20;

**getPriorBalance**

```solidity
function getPriorBalance(address user, uint blockNumber) public view returns (uint) 
```

* Historical user vMESH holdings per block&#x20;
* Parameter
  * `user` : user address
  * `blockNumber` : prior blockNumber

**snapShotBalance**

```solidity
function snapShotBalance(address user, uint index) public view returns (uint) 
```

* Historical vMESH holdings each address
* Parameter
  * `user` : user address
  * `index` : index

{% endtab %}

{% tab title="State-Changing Functions" %}

## **State-Changing Functions**

**lockMESH**

```solidity
function lockMESH(uint amount, uint lockPeriodRequested) public
```

* Method for MESH staking&#x20;
* The amount can be entered in integer units &#x20;

**unlockMESH**

```solidity
function unlockMESH() public
```

* Method for MESH unstaking
* Unstaking is only possible during the unstaking period.

**unlockMESHUnlimited**

```solidity
function unlockMESHUnlimited() public
```

* Method for unstake MESH x8
* Changed to x4 staking from execution

**refixBoosting**

```solidity
function refixBoosting(uint lockPeriodRequested)
```

* Method for MESH staking period change&#x20;

**claimReward**

```solidity
function claimReward() public
```

* Method that a user calls to claim the claimable MESH

**compoundReward**

```solidity
function compoundReward() public
```

* Method for mined MESH staking&#x20;
* Can be called when the reward is 1 MESH or more&#x20;
* It is possible to stake in integer units, and the rest is to the wallet address.
  {% endtab %}
  {% endtabs %}


# Treasury

This contract is a contract that manages airdrop operation. Operators with authority can set up and execute airdrops through Treasury Contract.

## Code

Github Link: (Will be updated after official launch)

## Address

* Polygon Mainnet : [0x51a4b6556b21aec229f4ca372044a505fe16ce19](https://polygonscan.com/address/0x51a4b6556b21aec229f4ca372044a505fe16ce19)

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

**ChangeCreationFee**&#x20;

```solidity
event ChangeCreationFee(uint fee);
```

* Event that occurs when the creation fee (MESH) is changed

**SetOperator**

```solidity
event SetOperator(address operator, bool valid);
```

* Event that occurs when setting operator

**CreateDistribution**

```solidity
event CreateDistribution(address operator, address token, uint totalAmount, uint blockAmount, uint blockNumber, address[] targets, uint[] rates);
```

* Event that occurs when airdrop is set

**RemoveDistribution**

```solidity
event RemoveDistribution(address operator, address token);
```

* Event that occurs when airdrop is removed

**Deposit**

```solidity
event Deposit(address operator, address token, uint amount);
```

* Event that occurs when token deposit

**RefixBlockAmount**

```solidity
event RefixBlockAmount(address operator, address token, uint blockAmount);
```

* Event that occurs when airdrop distribution amount

**RefixDistributionRate**

```solidity
event RefixDistributionRate(address operator, address token, address[] targets, uint[] rates);
```

* Event that occurs when airdrop distribution rate

{% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

distributionCount&#x20;

* Number of airdrop&#x20;

distributionEntries

* mapping(address => mapping(uint => address))
* Number of distribution address each LP

distributionOperator

* mapping (address => address)
* Operator address each distribution address

fee

* Distribution create fee

owner

* owner
  {% endtab %}

{% tab title="State-Changing Functions" %}

## **State-Changing Functions**

**changeCreationFee**

```solidity
function changeCreationFee(uint _fee) public 
```

* Method of creation fee (KSP) change
* only Owner&#x20;

**claim**

```solidity
function claim(address target) public
```

* Method that a user calls to claim the claimable airdrop tokens that has accumulated for the pair
* Parameters
  * `target` : LP address

**createTokenDistribution**

```solidity
function createTokenDistribution(address token, uint amount, uint blockAmount, uint blockNumber, address[] memory targets, uint[] memory rates) public
```

* Method of ERC-20 distribution create
* only Operator

**depositToken**

```solidity
function depositToken(address token, uint amount) public
```

* Method of ERC-20 deposit to airdrop
* only Operator

**refixBlockAmount**

```solidity
function refixBlockAmount(address token, uint blockAmount) public
```

* Method of change the amount paid per block
* only Operator

**refixDistributionRate**

```solidity
function refixDistributionRate(address token, address[] memory targets, uint[] memory rates) public
```

* Method of airdrop distribution rate change
* only Operator

**removeDistribution**

```solidity
function removeDistribution(address operator, address token) public
```

* Method of airdrop distribution remove
* only Operator

{% endtab %}
{% endtabs %}


# Distribution

This contract is Airdrop plan contract applied to the pool. You can target one liquidity pool and one token. The contract is executed by an operator with authority through Treasury.

## Code

Github Link: (Will be updated after official launch)

## Address

* Contract address after production is deployed

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

**Initialized**

```solidity
event Initialized(address token, uint amountPerBlock, uint distributableBlock, address[] targets, uint[] rates);
```

* Event log of airdrop created
* Parameters
  * `token` : ERC-20 token address
  * `amountPerBlock` : Amount of airdrop tokens to be distributed per block
  * `distributableBlock` : Start block Number
  * `targets` : Array of liquidity pool addresses to distribute
  * `rates` : Array of liquidity pool distribution to distribute

**Deposit**

```solidity
event Deposit(uint amount, uint totalAmount);
```

* Event log of airdrop tokens deposit
* Parameters
  * `amount` : Deposit token amount
  * `totalAmount` : Deposit token total amount

**RefixBlockAmount**

```solidity
event RefixBlockAmount(uint amountPerBlock);
```

* Event log of distribution token amount changed

**RefixDistributionRate**

```solidity
event RefixDistributionRate(address[] targets, uint[] rates);
```

* Event log of liquidity pool distribution rate changed

**ChangeDistributionRate**

```solidity
event ChangeDistributionRate(address target, uint rate);
```

* Event log of distribution rate changed

**Distribute**

```solidity
event Distribute(address user, address target, uint amount, uint currentIndex, uint userRewardSum);
```

* Event log of user receives an airdrop tokens
* Parameters
  * `user` : user address
  * `target` : LP address
  * `amount` : token amount
  * `currentIndex` : index
  * `userRewardSum` : total token amount&#x20;

{% endtab %}
{% endtabs %}


# Governor

&#x20;This contract acts as an administrator to manage the voting registration, voting counting, and execution of the meshswap. It also performs important parameters of meshswap, proposal registration, and voting execution.

## Code

Github Link: (Will be updated after official launch)

## Address

* Polygon Mainnet :[ ](https://scope.klaytn.com/account/0x05343b228d61402e84d973ce114f34bc3f9e5987?tabId=txList)[0x06d057bc1129e6be214e53f04e07f1a6dcc8e390](https://polygonscan.com/address/0x06d057bc1129e6be214e53f04e07f1a6dcc8e390)

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

**ProposalCreated**

```solidity
event ProposalCreated(uint id, address proposer, address target, string signature, bytes callData, uint startBlock, uint endBlock, string description);
```

* Events log of proposals are created
* Parameters
  * `id` : proposal ID
  * `proposer` : proposer's address
  * `target` : Address of the contract to be executed
  * `signature` : signature of the function to be executed
  * `callData` : function data to be executed
  * `startBlock` : start block number
  * `endBlock` : end block number
  * `description` : proposal details

**VoteCast**

```solidity
event VoteCast(address voter, uint proposalId, bool support, uint votes, uint againstVotes, uint forVotes, uint quorumVotes, string reason);
```

* Events log of vote
* Parameters
  * `voter` : voter's address
  * `proposalId` : proposal ID
  * `support` : support
  * `votes` : Number of vote vMESH&#x20;
  * `againstVotes` :  Number of total against vote&#x20;
  * `forVotes` : Number of total favor vote&#x20;
  * `quorumVotes` : Number of proposal quorum&#x20;
  * `reason` : reason

**ProposalCanceled**

```solidity
event ProposalCanceled(uint id);
```

* Events log of proposal canceled&#x20;

**ProposalQueued**

```solidity
event ProposalQueued(uint id, uint eta, uint tid);
```

* Events log of proposal queued

**ProposalExecuted**

```solidity
event ProposalExecuted(uint id, bool succeeded);
```

* Events log of proposal executed

**ProposalFeeSet**

```solidity
event ProposalFeeSet(uint oldProposalFee, uint proposalFee);
```

* Events log of proposal fee(MESH) changed

{% endtab %}

{% tab title="State-Changing Functions" %}

## State-Changing Functions

#### propose

```solidity
function propose(address target, string memory signature, bytes memory callData, string memory description) public returns (uint)
```

* Function used to propose a new proposal
* Sender must have delegates above the proposal threshold
* `target` : Target address for proposal calls&#x20;
* `signature` : Function signature for proposal calls&#x20;
* `callData` : Calldata for proposal call&#x20;
* `description` : String description of the proposal

#### castVote

```solidity
function castVote(uint proposalId, bool support) external 
```

* Function used to cast a vote for a proposal&#x20;
* `proposalId` : The id of the proposal to vote on&#x20;
* `support` : The support value for the vote. false=against, true=for
  {% endtab %}
  {% endtabs %}


# SinglePool

This contract is a single pool contract, where liquidity providers deposit/withdraw assets, and Plus Pool users bring or return utilized assets from a single pool.

## Code

Github Link: (Will be updated after official launch)

## Address

Contract address after production is deployed&#x20;

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

**GiveReward**

```solidity
event GiveReward(address user, uint amount, uint lastIndex, uint rewardSum);
```

* Event log of when mined MESH is claimed and distributed

**Deposit**

```solidity
event Deposit(address user, uint depositAmount, uint depositTokens, uint totalAmount, uint totalSupply);
```

* Event log of single pool liquidity additions
* Parameters
  * `user` : user address
  * `depositAmount` : amount of tokens deposited by the user
  * `depositTokens` : amount of single pool tokens deposited&#x20;
  * `totalAmount` : total amount of tokens deposited&#x20;
  * `totalSupply` : total amount of single pool tokens deposited&#x20;

**Withdraw**

```solidity
event Withdraw(address user, uint withdrawAmount, uint withdrawTokens, uint totalAmount, uint totalSupply);
```

* Event log of single pool liquidity removals
* Parameters
  * `user` : User address&#x20;
  * `withdrawAmount` : The amount of tokens removed by the user
  * `withdrawTokens` : The amount of single pool tokens removed by the user
  * `totalAmount` : Total amount of tokens deposited&#x20;
  * `totalSupply` : Total amount of single pool tokens deposited&#x20;

**Borrow**

```solidity
event Borrow(address user, address plusPoolAddress, uint borrowAmount, uint accountBorrows, uint totalBorrows);
```

* Event log of using assets utilized during plus deposit
* Parameters
  * `user` : user address
  * `plusPoolAddress` : Plus Pool address
  * `borrowAmount` : The amount of tokens utilized&#x20;
  * `accountBorrows` : Total amount of assets utilized by users
  * `totalBorrows` : Total amount of single pool utilized&#x20;

**Repay**

```solidity
event Repay(address user, address plusPoolAddress, uint repayAmount, uint accountBorrows, uint totalBorrows);
```

* Event log of used assets are returned
* Parameters
  * `user` : User address&#x20;
  * `plusPoolAddress` : PlusPool address
  * `repayAmount` : The amount of returned asset tokens
  * `accountBorrows` : Total amount of assets utilized by users
  * `totalBorrows` : Total amount of single pool utilized
    {% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

#### name

* "I" + token name

#### symbol

* "i" + token symbol

**decimals**

* 18

**token**

* ERC-20 token address&#x20;

#### totalSupply

* mint/burn depending on liquidity addition/removal

#### balanceOf

* Number of LP tokens held by each address

#### allowance

* Status of approval to spender for each address

#### getCash

* Number of tokens held by contract

#### reserveFactor

* MESH buyback & burn allocation ratio among utilization fees&#x20;
* It is a value between 0 and 10^18, in units of 0.000000000000000001%
* Default - 200000000000000000

#### totalBorrow

* Total Assets Utilized

#### mining

* The ratio of MESHs distributed to a single pool mined by that pool
* It is a value between 0 and 10000, in units of 0.0001%

#### lastMined

* SinglePoolFactory.mined() value at the last time the pair updated the index

#### withdrawActive

```solidity
function withdrawActive() public view returns (bool)
```

* Whether single pool withdrawal is possible

#### depositActive

```solidity
function depositActive() public view returns (bool)
```

* Whether single pool deposit is possible
  {% endtab %}

{% tab title="State-Changing Functions" %}

## State-Changing Functions

#### transfer

```solidity
function transfer(address _to, uint _value) public returns (bool)
```

* ERC-20 Standard
* Method to transfer tokens&#x20;

#### transferFrom

```solidity
function transferFrom(address _from, address _to, uint _value) public returns (bool)
```

* ERC-20 Standard
* Method to transfer tokens on behalf of the approved wallet

#### approve

```solidity
function approve(address _spender, uint _value) public returns (bool)
```

* ERC-20 Standard
* Method to approve a transfer as much as value to spender

#### depositETH

```solidity
function depositETH() public payable
```

* Method used to provide liquidity when token is MATIC
* Liquidity of the MATIC `msg.value`&#x20;

#### depositToken

```solidity
function depositToken(uint depositAmount) public
```

* Method used to provide liquidity when token is ERC-20 standard token
* Liquidity of the number of deposit amount is provided

#### withdrawETH

```solidity
function withdraw(uint withdrawAmount)
```

* Method to withdraw MATIC to `msg.sender` wallet.
* `withdrawAmount` : Number of token amount to withdraw

#### withdrawETHByAmount

```solidity
function withdrawETHByAmount(uint withdrawTokens)
```

* Method to withdraw MATIC to `msg.sender` wallet.&#x20;
* `withdrawTokens` : Number of SinglePool liquidity token amount to withdraw&#x20;

#### withdrawToken

```solidity
function withdrawToken(uint withdrawAmount)
```

* Method to withdraw tokens to `msg.sender` wallet.
* `withdrawAmount` : Number of token amount to withdraw

#### withdrawTokenByAmount

```solidity
function withdrawTokenByAmount(uint withdrawTokens)
```

* Method to withdraw tokens to `msg.sender` wallet.&#x20;
* `withdrawTokens` : Number of SinglePool liquidity token amount to withdraw&#x20;

#### addReserves

```solidity
function addReserves(uint addAmount) external payable
```

* Method to transfer tokens to using buyback MESH
* `addAmount` : Number of token&#x20;

#### claimReward

```solidity
function claimReward() public
```

* Method that a user calls to claim the claimable MESH and airdrop that has accumulated for the pair
* When called, MESH is claimed from the Factory and paid to `msg.sende`
* Even if the method is not called directly, it is automatically called when the SinglePool token balance of the user’s wallet changes.
  * When liquidity is added
  * When liquidity is removed
    {% endtab %}
    {% endtabs %}


# SinglePool Factory

This contract is a single pool creation/management contract, where liquidity providers deposit/withdraw assets, and Plus Pool users bring or return utilized assets from a single pool.

## Address

* Polygon Mainnet :[ ](https://scope.klaytn.com/account/0x05343b228d61402e84d973ce114f34bc3f9e5987?tabId=txList)[0x504722a6eabb3d1573bada9abd585ae177d52e7a](https://polygonscan.com/address/0x504722a6eabb3d1573bada9abd585ae177d52e7a)

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

**CreatePool**

```solidity
event CreatePool(address token, address pool, uint exid);
```

* Event to create new SinglePool&#x20;
* Parameters
  * `token` : A token address in target token
  * `pool` :  SinglePool contract address of this pool
  * `exid` : SinglePool ID&#x20;

**SetDepositActive**

```solidity
event SetDepositActive(address poolAddress, bool b);
```

* Event that occurs when SinglePool deposit availability is changed

**SetWithdrawActive**

```solidity
event SetWithdrawActive(address poolAddress, bool b);
```

* Event that occurs when SinglePool withdrawal availability is changed

**ChangeMiningRate**

```solidity
event ChangeMiningRate(uint _mining);
```

* Event that occurs when SinglePool mining rate is changed

{% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

#### mining&#x20;

* The mining rate of the pool
* It is a value between 0 and 10000, in units of 0.01%
* Default - 500&#x20;

#### getPoolCount

* Number of SinglePools

#### borrowBalanceStored

```solidity
function borrowBalanceStored(address token, address user, address poolAddress) public view returns (uint) 
```

* Utilized asset quantity
* Parameters
  * `token` : Token address
  * `user` : User address
  * `poolAddress` :  SinglePool address
    {% endtab %}
    {% endtabs %}


# PlusPool

&#x20;This contract manages the leveraged assets of Meshswap's plus pool liquidity providers. Liquidity providers can maximize their returns with positive assets (deposited assets + utilized assets) by using positive deposits according to their deposited assets. However, a high asset utilization ratio can result in automatic returns, which can result in losses.&#x20;

## Code

Github Link: (Will be updated after official launch)

## Address

* Contract adress after production is deployed&#x20;

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

**ChangeBorrowFactor**

```solidity
event ChangeBorrowFactor(uint newBorrowFactor);
```

* Event log of borrow factor change

**ChangeLiquidationFactor**

```solidity
event ChangeLiquidationFactor(uint newLiquidationFactor);
```

* Event log of liquidation factor change&#x20;

**ChangeBorrowable**

```solidity
event ChangeBorrowable(address token, bool b);
```

* Event that occurs when availability is changed

**GiveReward**

```solidity
event GiveReward(address user, uint amount, uint lastIndex, uint rewardSum);
```

* Event log of when mined MESH is claimed and distributed
* Parameters
  * `user` :  address of the user who claimed
  * `amount` :  the amount of MESH claimed
  * `lastIndex` :  index result of the pair of the wallet after claiming&#x20;
  * `rewardSum` :  The amount of MESH that has been accrued so far

**GiveAirdropReward**

```solidity
event GiveAirdropReward(address user, address dist, uint amount, uint currentIndex, uint userAirdropSum);
```

* Event log of when airdrop token is claimed and distributed
* Parameters
  * `user` :  address of the user who claimed
  * `dist` : Airdrop contract address
  * `amount` :  the amount of token claimed
  * `lastIndex` :  index result of the pair of the wallet after claiming&#x20;
  * `rewardSum` :  The amount of token that has been accrued so far

**OpenPosition**

```solidity
event OpenPosition(address user, uint amount0, uint amount1, uint borrow0, uint borrow1, uint amountLP, uint userLP);
```

* Events that occur when depositing to PlusPool
* If the token to deposit is MESH, `msg.value` is provided.
* Parameters
  * `user` : address of the user&#x20;
  * `amount0` : The deposit amount of token0
  * `amount1` : The deposit amount of token1
  * `borrow0` : The utilization amount of token0
  * `borrow1`: The utilization amount of token1
  * `amountLP`:  The amount of LP tokens minted due to additional liquidity
  * `userLP` :  the total amount of LP tokens minted due to additional liquidity

**ClosePosition**

```solidity
event ClosePosition(address user, uint amountLP, uint amount0, uint amount1, uint userLP);
```

* Events that occur when withdraw liquidity
* Parameters
  * `user` : address of the user&#x20;
  * `amountLP`:  The amount of LP tokens burned due to liquidity removal
  * `amount0` : The withdraw amount of token0
  * `amount1` : The withdraw amount of token1
  * `userLP` :  the total amount of LP tokens minted due to additional liquidity

**Liquidate**

```solidity
event Liquidate(address user, uint idx, uint debt0, uint debt1, uint lp, uint debtRatio, uint time);
```

* Event that occur when the automatic return system activates&#x20;
* Parameters
  * `user` : address of the user&#x20;
  * `idx` : Number of auto-return count
  * `dept0` : Number of token0 returned automatically
  * `dept1` : Number of token1 returned automatically
  * `lp` : the total amount of LP tokens&#x20;
  * `debtRatio` : Asset utilization ratio in case of automatic return
  * `time` : Automatic return time
    {% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

#### totalLP

* mint/burn depending on liquidity addition/removal

**lpToken**

* target liquidity pool address

#### token0

* The first token address composed of the pair

#### token1

* The second token address composed of the pair

#### borrowable0

* Whether token0 can be borrowable

#### borrowable1

* Whether token1 can be borrowable

#### liquidationFactor

* automatic return factor
* It is a value between 1 and 1e18, in units of 1/1e16%
* Default - 0.85e18

#### borrowFactor

* Utilization cost interest rate of utilized assets
* It is a value between 1 and 1e18, in units of 1/1e16%
* Default - 0.67e18

#### userLP

* Number of PlusPool tokens held by each address

#### liquidationBonusRate

* Ratio of resources to be used for MESH buyback & incineration in case of automatic return

#### liquidationCount

```solidity
function liquidationCount(address user) public view returns (uint)
```

* Returns the user's cumulative automatic return count
  {% endtab %}

{% tab title="State-Changing Functions" %}

## State-Changing Functions

#### claimReward

```solidity
function claimReward() public
```

* Method that a user calls to claim the claimable MESH that has accumulated for the pair
* When called, MESH is claimed from the Factory and paid to msg.sender
* Even if the method is not called directly, it is automatically called when the LP token balance of the user’s wallet changes.
  * When liquidity is added
  * When liquidity is removed

#### openPositionETH

```solidity
function openPositionETH(uint amount1, uint borrow0, uint borrow1, uint minAmountLP) public payable
```

* Method that depositing MATIC to PlusPool
* After liquidity is provided, the LP token corresponding to the pool share is minted in the `msg.sender` wallet.
* If there is claimable MESH when called, the claim proceeds to `msg.sender`.
* Parameter
  * `amount1` : The deposit amount of token1
  * `borrow0` : The utilization amount of WMATIC
  * `borrow1`: The utilization amount of token1
  * `minAmountLP` : Minimum Guaranteed LP amount

#### openPositionToken

```solidity
function openPositionToken(uint amount0, uint amount1, uint borrow0, uint borrow1, uint minAmountLP) public payable
```

* Method that depositing to PlusPool
* After liquidity is provided, the LP token corresponding to the pool share is minted in the `msg.sender` wallet.
* If there is claimable MESH when called, the claim proceeds to `msg.sender`.
* Parameter
  * `amount0` : The deposit amount of token0
  * `amount1` : The deposit amount of token1
  * `borrow0` : The utilization amount of token0
  * `borrow1`: The utilization amount of token1
  * `minAmountLP` : Minimum Guaranteed LP amount

#### closePositionETH

```solidity
function closePositionETH(uint amountLP, uint minAmount0, uint minAmount1) public
```

* Returns the amount of LP tokens, and distributes the corresponding MATIC and token1 to the `msg.sender` wallet
* The returned LP token amount is burned
* If there is claimable MESH and Airdrop when called, the claim proceeds to `msg.sender`.
* Parameters
  * `amountLP`:  The amount of LP tokens burned due to liquidity removal
  * `minAmount0` : The withdraw amount of token0
  * `minAmount1` : The withdraw amount of token1

#### closePositionToken

```solidity
function closePositionToken(uint amountLP, uint minAmount0, uint minAmount1) public
```

* Returns the amount of LP tokens, and distributes the corresponding token0 and token1 to the `msg.sender` wallet
* The returned LP token amount is burned
* If there is claimable MESH and Airdrop when called, the claim proceeds to `msg.sender`.
* Parameters
  * `amountLP`:  The amount of LP tokens burned due to liquidity removal
  * `minAmount0` : The withdraw amount of token0
  * `minAmount1` : The withdraw amount of token1
    {% endtab %}
    {% endtabs %}


# PlusPool Factory

This contract creates PlusPools and manages the state of each PlusPool.

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

**CreatePool**

```solidity
event CreatePool(address token0, address token1, address lpToken, uint borrowFactor, uint liquidationFactor, bool borrowable0, bool borrowable1, address poolAddress, uint exid);
```

* Event to create new PlusPool
* Parameters
  * `token0` : token0 address in LP
  * `token1` : token1 address in LP
  * `lpToken` : address in LP
  * `borrowFactor` : Utilization cost interest rate of utilized assets
  * `liquidationFactor` : automatic return factor
  * `borrowable0` : Whether token0 can be borrowable
  * `borrowable1` : Whether token1 can be borrowable
  * `poolAddress` : PlusPool contract address of this pool
  * `exid` : PlusPool id

**SetDepositActive**

```solidity
event SetDepositActive(address plusPoolAddress, bool b);
```

* Event that occurs when PlusPool deposit availability is changed

**SetWithdrawActive**

```solidity
event SetWithdrawActive(address plusPoolAddress, bool b);
```

* Event that occurs when PlusPool withdrawal availability is changed
  {% endtab %}
  {% endtabs %}


# EcoPotVoting

This contract is creating and managing of the EcoPot project and exercising voting rights for the EcoPot project. MESH staking users vote for the EcoPot project they want and receive tokens according to their stake.

## Address

* Polygon Mainnet :  [0x13c5c5a5d418b5365fb30ca1ec8a9fb2a6f622d1](https://polygonscan.com/address/0x13c5c5a5d418b5365fb30ca1ec8a9fb2a6f622d1)

{% tabs %}
{% tab title="Event" %}
**CreateEcoPot**

```solidity
event CreateEcoPot(address operator, address ecoPot, address token, string name);
```

* Event log of EcoPot created&#x20;
* Parameters
  * `operator` : EcoPotOperator address
  * `ecoPot` : EcoPot address
  * `token` : Token address received by user &#x20;
  * `name` : EcoPot Project name

**RemoveEcoPot**

```solidity
event RemoveEcoPot(address ecoPot);
```

* Event that occurs when EcoPot is removed

**ChangeEcoPotAvailable**

```solidity
event ChangeEcoPotAvailable(address ecoPot, bool b);
```

* Event that occurs when the status is changed

**AddVoting**

```solidity
event AddVoting(address user, address ecopot, uint amount);
```

* Event log of voting vMESH for EcoPot&#x20;
* Parameters
  * `user` : User address
  * `ecopot` : EcoPot address
  * `amount` : Vote vMESH amount

**RemoveVoting**

```solidity
event RemoveVoting(address user, address ecopot, uint amount);
```

* Event log of remove voting vMESH for EcoPot&#x20;
* Parameters
  * `user` : User address
  * `ecopot` : EcoPot address
  * `amount` : Unote vMESH amount

{% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

**ecoPotCount**

* Number of EcoPot

**MAX\_VOTING*****\_*****POT\_COUNT**

* Maximum number of EcoPots where users can vote&#x20;

**ecoPotList**

* mapping(uint => address)
* EcoPot addresses

**ecoPotExist**

* mapping(address => bool)
* Return if the address is EcoPot address

**potTotalVotedAmount**

* Total voted number of EcoPot

**userVotingPotCount**

* mapping(address => uint)
* Number of votes each user voted for EcoPot

**userVotingPotAddress**

```solidity
function userVotingPotAddress(address user, uint256 ecoPotIndex) public view returns (address) 
```

* EcoPot addresses voted by each user

**userVotingPotAmount**

```solidity
function userVotingPotAmount(address user, uint256 ecoPotIndex) public view returns (uint256) 
```

* EcoPot voted amount by each user

{% endtab %}

{% tab title="State-Changing Functions" %}

## **State-Changing Functions**

**addVoting**

```solidity
function addVoting(address ecoPot, uint amount) public
```

* Method to voting vMESH for EcoPot&#x20;
* The amount can be entered in integer units&#x20;

**removeVoting**

```solidity
function removeVoting(address ecoPot, uint amount) public
```

* Method to remove voting vMESH for Ecopot
* The amount can be entered in integer units within the voting limit

**removeAllVoting**

```solidity
function removeAllVoting() public
```

* Method of remove total vote Ecopot

**claimReward**

```solidity
function claimReward(address ecopot) public 
```

* Method of vote Ecopot’s reward &#x20;

**claimRewardAll**

```solidity
function claimRewardAll() public
```

* Method of all vote Ecopot’s reward&#x20;
  {% endtab %}
  {% endtabs %}


# EcoPot

EcoPot plan contract to be paid to staking users. One token can be distributed per Ecopot project, and only authorized operators can plan and proceed.

## Address

Contract address after production is deployed (scope link)&#x20;

## Events, Read-Only Functions, and State-Changing Functions&#x20;

{% tabs %}
{% tab title="Events" %}

## Events

**Initialized**

```solidity
event Initialized(uint totalAmount, uint amountPerBlock, uint distributableBlock, uint estimateEndBlock);
```

* Event log of Ecopot initialized
* Parameters
  * `totalAmount` : Amount of tokens to be distribute &#x20;
  * `amountPerBlock` : Amount of tokens to be distributed per block
  * `distributableBlock` : Start Block number
  * `estimateEndBlock` : Estimate block number of EcoPot be ended

**Deposit**

```solidity
event Deposit(uint amount, uint totalAmount, uint estimateEndBlock);
```

* Event log of tokens deposit
* Parameters
  * `amount` : Deposit token amount
  * `totalAmount` : Deposit token total amount
  * `estimateEndBlock` :  Estimate block number of EcoPot be ended

**Removed**

```solidity
event Removed(address operator, address token, uint estimateEndBlock, uint remainedBalance);
```

* Event log of Ecopot removed
* Parameters
  * `operator` : Operator address
  * `token` : Token address of distributed
  * `estimateEndBlock` : Estimate block number of EcoPot be ended
  * `remainedBalance` : Token amount of remained

**ChangeAvailable**

```solidity
event ChangeAvailable(bool b);
```

* Event log of state changed

**GiveReward**

```solidity
event GiveReward(address user, uint amount, uint currentIndex, uint userRewardSum);
```

* Event log of when reward is claimed
* Parameters
  * `user` : User address
  * `amount` : Amount of token claimed
  * `currentIndex`:  Index result of the Ecopot of the wallet after claiming&#x20;
  * `userRewardSum` :  Amount of MESH that has been accrued so far
    {% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

#### name

* EcoPot Project name

#### decimals

* 18

#### token

* ERC-20 token address

**totalAmount**

* Amount of tokens to be distribute

#### getDistributedCurrent

* Amount of tokens distributed

#### distributableBlock

* Block number to distribute start

#### estimateEndBlock

* Estimate block number of EcoPot be ended

**amountPerBlock**

* Distributed token amount per block

**isAvailable**

* Returns if the EcoPot is availabled

**userRewardSum**

* mapping(address => uint)
* EcoPot reward amount by each user address
  {% endtab %}
  {% endtabs %}


# Airdrop

Airdrop contract is the airdrop contract stored in the Treasury when the giveReward function of the Exchange contract is called. Confirmation will distribute tokens to liquidity providers.

\
**AirdropOperator**

* Contract with the right to establish an Airdrop plan

**Treasury**

* A contract to manage assets to be used for Airdrop


# Set Airdrop Operator

## 1. Contract Deploy

{% tabs %}
{% tab title="Deploy Guide" %}

* **The LP and token to be airdropped are determined at the time of creation and cannot be modified.**
* **Please check whether the Contract is deployed in the public environment.**
* Please pay attention to the security of the Owner account.
* Please refer to Polygon's Smart contract deployment [here](https://docs.polygon.technology/docs/develop/getting-started)
  {% endtab %}

{% tab title="AirdropOperator Smart Contract Code" %}

```
pragma solidity 0.5.6;

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function decimals() external view returns (uint8);
}

interface IDistribution {
    function estimateEndBlock() external view returns (uint);
    function totalAmount() external view returns (uint);
    function blockAmount() external view returns (uint);
    function distributableBlock() external view returns (uint);
    function distribution() external view returns (uint);
    function targetEntries(uint) external view returns (address);
    function targetCount() external view returns (uint);
    function distributionRate(address) external view returns (uint);
}

interface ITreasury {
    function fee() external view returns (uint);
    function validOperator(address) external view returns (bool);
    function distributions(address, address) external view returns (address);
    function createETHDistribution(uint, uint, address[] calldata, uint[] calldata) external payable;
    function createTokenDistribution(address, uint, uint, uint, address[] calldata, uint[] calldata) external;
    function depositETH() external payable;
    function depositToken(address, uint) external;
    function refixBlockAmount(address, uint) external;
    function refixDistributionRate(address, address[] calldata, uint[] calldata) external;
}

interface IFactory {
    function poolExist(address) external view returns (bool);
}

contract AirdropOperator {
    // mumbai : 0x7E6863De2aAf37320d1a755FF50EB182455c8256
    address constant public treasury = 0x51a4b6556b21AEC229F4Ca372044a505FE16Ce19;
    // mumbai : 0x48eB6bdD4ff9FeCECaf64bB2c0435ac654186386
    address constant public factory = 0x9F3044f7F9FC8bC9eD615d54845b4577B833282d;
    // mumbai : 0x6a5d8703e612CFe33388Cf0C92d409934Fad98Cb
    address constant public mesh = 0x82362Ec182Db3Cf7829014Bc61E9BE8a2E82868a;

    address public owner;
    address public nextOwner;
    address public token;
    address public lp;

    constructor(address _token, address _lp) public {
        owner = msg.sender;

        token = _token;
        require(IERC20(token).decimals() != 0);

        lp = _lp;
        require(IFactory(factory).poolExist(lp));
    }

    function version() external pure returns (string memory) {
        return "AirdropOperator20220415";
    }

    // valid fallback
    function () payable external { revert(); }

    // ======================= owner method ===========================

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function changeNextOwner(address _nextOwner) public onlyOwner {
        nextOwner = _nextOwner;
    }

    function changeOwner() public {
        require(msg.sender == nextOwner);

        owner = nextOwner;
        nextOwner = address(0);
    }

    //withdraw tokens remaining in the operator contract
    function withdraw(address tokenAddr) public onlyOwner {
        uint balance = 0;
        if (tokenAddr == address(0)){
            balance = (address(this)).balance;
            if (balance > 0){
                (bool res, ) = owner.call.value(balance)("");
                require(res);
            }
        }
        else {
            balance = IERC20(tokenAddr).balanceOf(address(this));
            if(balance > 0) {
                require(IERC20(tokenAddr).transfer(owner, balance));
            }
        }
    }

    // ====================== Stat ====================================

    function getAirdropStat() public view returns (
        address distributionContract, // airdrop distribution contract address
        uint totalAmount, // Total amount of tokens to be distributed
        uint blockAmount, // Amount of tokens to be distributed per block
        uint distributableBlock, // Block number to airdrop start
        uint endBlock, // Block number to airdrop end
        uint distributed,  // Amount of tokens distributed
        uint remain, // amount remaining in the contract
        uint targetCount, // airdrop target LP count
        address[] memory targets, // airdrop target LP list
        uint[] memory rates // airdrop target lp rate list
    ){
        distributionContract = ITreasury(treasury).distributions(address(this), token);

        IDistribution dis = IDistribution(distributionContract);
        totalAmount = dis.totalAmount();
        blockAmount = dis.blockAmount();
        distributableBlock = dis.distributableBlock();
        endBlock = dis.estimateEndBlock();
        distributed = dis.distribution();
        
        remain = IERC20(token).balanceOf(distributionContract);
        
        targetCount = dis.targetCount();
        targets = new address[](targetCount);
        rates = new uint[](targetCount);

        for(uint i = 0; i < targetCount; i++){
            targets[i] = dis.targetEntries(i);
            rates[i] = dis.distributionRate(targets[i]);
        }
    }

    // ===================== Airdrop method ===========================
    ///@param totalAmount : Total amount of tokens to be distributed
    ///@param blockAmount : Amount of tokens to be distributed per block
    ///@param startBlock  : Block number to airdrop start
    function createDistribution(
        uint totalAmount,
        uint blockAmount,
        uint startBlock
    ) public onlyOwner {
        ITreasury Treasury = ITreasury(treasury);

        require(Treasury.validOperator(address(this)));
        require(Treasury.distributions(address(this), token) == address(0));
        require(startBlock >= block.number);

        address[] memory targets = new address[](1);
        targets[0] = lp;

        uint[] memory rates = new uint[](1);
        rates[0] = 100;

        if (Treasury.fee() > 0) {
            require(IERC20(mesh).balanceOf(address(this)) >= Treasury.fee());
            require(IERC20(mesh).approve(treasury, Treasury.fee()));
        }

        require(IERC20(token).balanceOf(address(this)) >= totalAmount);
        require(IERC20(token).approve(treasury, totalAmount));
        Treasury.createTokenDistribution(token, totalAmount, blockAmount, startBlock, targets, rates);
    }

    // Airdrop token deposit
    ///@param amount : Amount of airdrop token to deposit
    function deposit(uint amount) public onlyOwner {
        ITreasury Treasury = ITreasury(treasury);

        require(Treasury.validOperator(address(this)));
        require(Treasury.distributions(address(this), token) != address(0));
        require(amount != 0);

        require(IERC20(token).balanceOf(address(this)) >= amount);
        require(IERC20(token).approve(treasury, amount));
        Treasury.depositToken(token, amount);
    }

    // Airdrop amount per block modification function
    // The function is applied immediately from the called block
    ///@param blockAmount : airdrop block amount to change
    function refixBlockAmount(uint blockAmount) public onlyOwner {
        ITreasury Treasury = ITreasury(treasury);

        require(Treasury.validOperator(address(this)));
        require(Treasury.distributions(address(this), token) != address(0));
        require(blockAmount != 0);

        Treasury.refixBlockAmount(token, blockAmount);
    }
}


```

{% endtab %}
{% endtabs %}

## 2. Contract Submission

* Contact us (<support@meshswap.fi>)&#x20;

## 3. ValidOperator Request

* Operator registration request (<support@meshswap.fi>)&#x20;
* Set Valid Operator after confirming contract distributed with Public AirdropOperator Code.


# Start Airdop

### Airdrop Fee&#x20;

* Airdrop creation may require a certain amount of MESH.
* If there is a MESH fee, the necessary MESH must be transmitted to the operator before creation.

### Airdrop create

Execute the createDistribution function of AirdropOperator Contract.

* You must proceed after obtaining Valid Operator privileges.
* The amount of tokens required and the fee should be transferred to the contract rather than deposited.
* Request Parameters
  * totalAmount : Total number of tokens to be distributed by airdrop
  * blockAmount : Token quantity to be distributed per block
  * startBlock : Airdrop start block number

```
function createDistribution(
    uint totalAmount,
    uint blockAmount,
    uint startBlock,
) public
```

### Airdrop Token deposit

If there is an issue of token exhaustion or extension during the airdrop process, tokens can be recharged using the AirdropOperator Contract's Deposit function.

* When executing the function, transfer more than the amount of tokens entered into the wallet.
* The token specified when creating the operator is charged.
* When recharging due to exhaustion, it will be applied from the block after recharging.

```
function deposit(uint amount) public
```

### Airdrop refix

* Modify the amount of tokens distributed per block
* It is applied from the block after the transaction is executed.

```
function refixBlockAmount(uint blockAmount) public
```

### **Airdrop token withdraw**

* The remaining tokens can be withdrawn after the Airdrop plan is in progress.
* Withdrawal will be made to the owner's account.

```
function withdraw(address tokenAddr) public
```


# EcoPot

Tokens will be distributed according to EcoPot’s distribution plan and EcoPot’s stake in the EcoPotVoting contract.

**EcoPotOperator**

* EcoPot plan established, contract with authority

**EcoPot**

* EcoPot plan and contract to manage the assets to be used


# Set EcoPot

## 1. Contract Deploy

{% tabs %}
{% tab title="Deploy Guide" %}

* **The token and project name for EcoPot are set at the time of creation and cannot be modified.**
* **Please check whether the contract is deployed in the public environment**
* Please pay attention to the security of the Owner account.
* Please refer to Polygon's Smart contract deployment [here](https://docs.polygon.technology/docs/develop/getting-started)
  {% endtab %}

{% tab title="EcoPot Operator Smart Contract Code" %}

```
pragma solidity 0.5.6;

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function decimals() external view returns (uint8);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}

interface IEcoPot {
    function totalAmount() external view returns (uint);
    function amountPerBlock() external view returns (uint);
    function distributableBlock() external view returns (uint);
    function estimateEndBlock() external view returns (uint);
    function operator() external view returns (address);
    function getDistributedCurrent() external view returns (uint);
    function isInitialized() external view returns (bool);
    function isAvailable() external view returns (bool);

    function initialize(uint, uint, uint) external;
    function depositToken(uint) external;
    function refixAmountPerBlock(uint) external;
}

interface IEcoPotVoting {
    function ecoPotExist(address) external view returns (bool);
}

contract EcoPotOperator {
    // mumbai : 0xeFaFFdd6Cd27C4B4985e60fb270A9733aFeA91Ea
    address constant public ecoPotVoting = 0x13c5C5a5D418B5365Fb30CA1Ec8A9FB2A6f622D1;
    // mumbai : 0x6a5d8703e612CFe33388Cf0C92d409934Fad98Cb
    address constant public mesh = 0x82362Ec182Db3Cf7829014Bc61E9BE8a2E82868a;

    address public owner;
    address public nextOwner;

    address public ecoPot;
    address public token;
    string public name;

    constructor(address _token, string memory _name) public {
        owner = msg.sender;

        token = _token;
        require(IERC20(token).decimals() != 0);
        name = _name;
    }

    function version() external pure returns (string memory) {
        return "EcoPotOperator20220502";
    }

    function () payable external { revert(); }

    // ======================= owner method ===========================

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function changeNextOwner(address _nextOwner) public onlyOwner {
        nextOwner = _nextOwner;
    }

    function changeOwner() public {
        require(msg.sender == nextOwner);

        owner = nextOwner;
        nextOwner = address(0);
    }

    //withdraw tokens remaining in the operator contract
    function withdraw(address tokenAddr) public onlyOwner {
        uint balance = 0;

        balance = IERC20(tokenAddr).balanceOf(address(this));
        if (balance > 0) {
            require(IERC20(tokenAddr).transfer(owner, balance));
        }
    }

    modifier onlyEcoPotVoting {
        require(msg.sender == ecoPotVoting);
        _;
    }

    function setEcoPot(address _ecoPot) public onlyEcoPotVoting {
        require(ecoPot == address(0));
        ecoPot = _ecoPot;
    }

    // ====================== Stat ====================================

    function getEcoPotStat() public view returns (
        address ecoPotContract, // airdrop distribution contract address
        uint totalAmount, // Total amount of tokens to be distributed
        uint blockAmount, // Amount of tokens to be distributed per block
        uint distributableBlock, // Block number to airdrop start
        uint endBlock, // Block number to airdrop end
        uint distributed,  // Amount of tokens distributed
        uint remain // amount remaining in the contract
    ) {
        ecoPotContract = ecoPot;

        IEcoPot pot = IEcoPot(ecoPot);

        totalAmount = pot.totalAmount();
        blockAmount = pot.amountPerBlock();
        distributableBlock = pot.distributableBlock();
        endBlock = pot.estimateEndBlock();
        distributed = pot.getDistributedCurrent();
        remain = IERC20(token).balanceOf(ecoPot);
    }

    // For Drops AirdropPool
    function getAirdropStat() public view returns (
        address ecoPotContract, // airdrop distribution contract address
        uint totalAmount, // Total amount of tokens to be distributed
        uint blockAmount, // Amount of tokens to be distributed per block
        uint distributableBlock, // Block number to airdrop start
        uint endBlock, // Block number to airdrop end
        uint distributed,  // Amount of tokens distributed
        uint remain, // amount remaining in the contract
        uint emptyUint, // return for airdropPool
        address[] memory emptyAddressArr, // return for airdropPool
        uint[] memory emptyUintArr // return for airdropPool
    ) {
        ecoPotContract = ecoPot;

        IEcoPot pot = IEcoPot(ecoPot);

        totalAmount = pot.totalAmount();
        blockAmount = pot.amountPerBlock();
        distributableBlock = pot.distributableBlock();
        endBlock = pot.estimateEndBlock();
        distributed = pot.getDistributedCurrent();
        remain = IERC20(token).balanceOf(ecoPot);

        emptyUint = 0;
        emptyAddressArr = new address[](0);
        emptyUintArr = new uint[](0);
    }

    // ===================== Airdrop method ===========================
    ///@param totalAmount : Total amount of tokens to be distributed
    ///@param blockAmount : Amount of tokens to be distributed per block
    ///@param startBlock  : Block number to airdrop start
    function initialize(uint totalAmount, uint blockAmount, uint startBlock) public onlyOwner {
        require(totalAmount != 0);
        require(blockAmount != 0);
        require(startBlock >= block.number);

        IEcoPot pot = IEcoPot(ecoPot);
        require(pot.operator() == address(this));
        require(!pot.isInitialized());

        require(IERC20(token).transferFrom(owner, address(this), totalAmount));
        require(IERC20(token).approve(ecoPot, totalAmount));
        pot.initialize(totalAmount, blockAmount, startBlock);
}

    // Airdrop token deposit
    ///@param amount : Amount of airdrop token to deposit
    function deposit(uint amount) public onlyOwner {
        IEcoPot pot = IEcoPot(ecoPot);

        require(pot.operator() == address(this));
        require(pot.isAvailable());
        require(amount != 0);

        require(IERC20(token).balanceOf(address(this)) >= amount);
        require(IERC20(token).approve(ecoPot, amount));
        pot.depositToken(amount);
    }

    // Airdrop amount per block modification function
    // The function is applied immediately from the called block
    ///@param blockAmount : airdrop block amount to change
    function refixBlockAmount(uint blockAmount) public onlyOwner {
        IEcoPot pot = IEcoPot(ecoPot);

        require(pot.operator() == address(this));
        require(pot.isAvailable());
        require(blockAmount != 0);

        pot.refixAmountPerBlock(blockAmount);
    }
}


```

{% endtab %}
{% endtabs %}

## 2. Contract Submission

* Contact us (<support@meshswap.fi>)&#x20;

## 3. ValidOperator Request

* Operator registration request (<support@meshswap.fi>)&#x20;
* Set Valid Operator after confirming the contract distributed with Public EcoPotOperator Code


# Start EcoPot

ontracts that have acquired EcoPot Operator rights can create EcoPots using the tokens determined during creation.

{% hint style="warning" %}

1. The unit used when setting Amount is the unit including Decimal.

   Ex) 10 MATIC = 10 \* (10^18) = 10000000000000000000
2. In EcoPot setting, only one token can be set per contract, so when setting other tokens, a new EcoPotOperator Contract must be deployed.&#x20;
   {% endhint %}

### EcoPot initialize

Execute the initialize function of EcoPotOperator Contract.

* The amount of tokens required and fees should be transferred to the contract rather than deposited.
* When setting MATIC tokens, you must enter the quantity to be set in `msg.value`.
* When setting a ERC-20 based token, you must set approve by the amount set in EcoPotOperator in the owner wallet.Request Parameters
* Request Parameters
  * totalAmount : Total amount of tokens to be distributed with EcoPot
  * blockAmount : Token quantity to be distributed per block
  * startBlock : EcoPot start block number

```
function initialize(
    uint totalAmount,
    uint blockAmount,
    uint startBlock,
) public
```

### EcoPot Token deposit

If you run out of tokens due to token exhaustion or extension during EcoPot, you can recharge tokens with the EcoPotOperator Contract’s Deposit function.

* When executing the function, transfer more than the amount of tokens entered in the EcoPotOperator Contract.
* When recharging due to exhaustion, it will be applied from the block after recharging.

```
function deposit(uint amount) public
```

### EcoPot refix

* Modify the amount of tokens distributed per block
* It is applied from the block after the transaction is executed.

```
function refixBlockAmount(uint blockAmount) public
```

### EcoPot check

You can check the current settings of EcoPot.

* Return Parameters
  * ecoPotContract : EcoPot Contract address
  * totalAmount : Total amount of tokens to be distributed with EcoPot
  * blockAmount : Token quantity to be distributed per block
  * distributableBlock : EcoPot start distribute block number
  * endBlock : Expected distribution end block number
  * distributed : Distributed Token
  * remain : RemainToken&#x20;

```
function getEcoPotStat() public view returns (
    address ecoPotContract, 
    uint totalAmount, 
    uint blockAmount, 
    uint distributableBlock, 
    uint endBlock,
    uint distributed, 
    uint remain
)
```

### **EcoPot withdraw**

* The remaining tokens can be withdrawn after the EcoPot plan is in progress.
* Withdrawals are made to the Owner's account.

```
function withdraw(address tokenAddr) public
```


