# 💡About

Welcome to the MonoX Docs. Here we aim to provide a robust explanation and understanding for how our protocol works. Get to know us and join us on our journey to make DeFi more capital efficient.

{% hint style="info" %}
This documentation is a work in progress. Please be aware that some elements will be subject to change. If you have any questions please reach out to us.&#x20;
{% endhint %}

### What is MonoX?

MonoX is a new DeFi protocol using a single token design for liquidity pools (instead of using pool pairs). This is made possible by grouping deposited tokens into a virtual pair with the vUNIT stablecoin.&#x20;

Our first use case for single token liquidity pools will be an Automated Market Maker - Monoswap, launched in October 2021.&#x20;

In the future, we will be launching lending/borrowing and derivatives products.&#x20;

### Why use MonoX?

Single token liquidity pools are more capital-efficient, resulting in a more optimized experience for all participants.&#x20;

1. Protocol owned liquidity via bonding program
2. As a project or developer, you can launch your token with zero extra capital.
3. As a liquidity provider you only have to deposit one token to the liquidity pool.&#x20;
4. As a trader, swapping tokens is made much cheaper.
5. We use one pool so LPs will receive fees for both swaps and borrowing.
6. Most capital efficient solution to trade tokens already backed by value (Synthetics, NFT shards, Gaming Tokens, Insurance Tokens)

### Who do we expect to be the primary users of MonoX?

* **DeFi Degens:** A new way to Ape. No more explanation needed.&#x20;
* **Alpha seekers**: Traders who are looking for a cheaper alternative to invest into crypto compared to using other GAS and fee heavy AMMs/DEXs.&#x20;
* **DeFi Enthusiasts:** DeFi natives, protocol connoisseurs, and yield farmers who love to use/experiment with new and exciting DeFi products.&#x20;
* **Projects & Developers**: Legitimate projects looking to launch their token, but lacking in sufficient capital.&#x20;
* **Anyone who was rug pulled:** We have a two-tiered pool system for Official Pools and trustless listing pools (where the vUNIT balance cannot go below 0). Such a system makes it harder for rug pulls and scam token listings to operate.&#x20;

### Ha**ve some questions?**

We love to hear feedback and engage with our community. Come find us on [Telegram](https://t.me/MonoXOfficial), [Discord](https://discord.gg/gJfRwg774J), or DM us on [Twitter!](https://twitter.com/MonoXFinance)<br>


# ⚙️ Integrate with MonoX

The MonoX smart contracts *will* exist on the Ethereum blockchain. Until that time, there are a bunch of test networks are available for you to integrate and complete your tests. These networks are:

* Ethereum Mainnet,
* Polygon Mainnet,
* Kovan Testnet,
* Mumbai Test (Polygon)

## Contracts

In order to complete an integration with the below contracts, you will need to have ABI ([Application Binary Interface](https://en.wikipedia.org/wiki/Application_binary_interface#:~:text=In%20computer%20software%2C%20an%20application,between%20two%20binary%20program%20modules.\&text=A%20common%20aspect%20of%20an,are%20the%20x86%20calling%20conventions.)).&#x20;

#### How to get ABI of a contract?

![Visit a link below, navigate into the Contract tab,  then scroll until you see Contract ABI.](/files/-MkMDJblAeRLZtgf0914)

### Contracts on Ethereum Mainnet

VCASH address: [0x532D7ebE4556216490c9d03460214b58e4933454](https://etherscan.io/address/0x532D7ebE4556216490c9d03460214b58e4933454)&#x20;

MonoXPool address: [0x59653E37F8c491C3Be36e5DD4D503Ca32B5ab2f4](https://etherscan.io/address/0x59653E37F8c491C3Be36e5DD4D503Ca32B5ab2f4)&#x20;

Monoswap address: [0xC36a7887786389405EA8DA0B87602Ae3902B88A1](https://etherscan.io/address/0xC36a7887786389405EA8DA0B87602Ae3902B88A1)&#x20;

MONO address: [0x2920f7d6134f4669343e70122cA9b8f19Ef8fa5D](https://etherscan.io/token/0x2920f7d6134f4669343e70122cA9b8f19Ef8fa5D)

### Contracts on Polygon Mainnet

VCASH address: [0x7621eE0CE0F686b88dD70551B05F90dd3C04d6e9](https://polygonscan.com/address/0x7621eE0CE0F686b88dD70551B05F90dd3C04d6e9)&#x20;

MonoXPool address: [0x3826367A5563eCE9C164eFf9701146d96cC70AD9](https://polygonscan.com/address/0x3826367A5563eCE9C164eFf9701146d96cC70AD9)&#x20;

Monoswap address: [0xBD5ca837C759B429398dc55b643f1Dd8d0D72CbD](https://polygonscan.com/address/0xBD5ca837C759B429398dc55b643f1Dd8d0D72CbD)

### Contract on Kovan Test Network

VCASH address: [`0x35363a7aceFc54e85FB21B0B4a89e336eB7C065A`](https://kovan.etherscan.io/address/0x35363a7aceFc54e85FB21B0B4a89e336eB7C065A)

MonoXPool address: [`0xA22710AA406f9302e68bF5d1d0859dA6d7A6A93c`](https://kovan.etherscan.io/address/0xA22710AA406f9302e68bF5d1d0859dA6d7A6A93c)

Monoswap address: [`0xE8141055b060BA9f7C75c6D5c904D4A7Fc97A66b`](https://kovan.etherscan.io/address/0xE8141055b060BA9f7C75c6D5c904D4A7Fc97A66b)

MonoToken address: [`0xC963bf29405884e3C0c52C16793Ead51Ccb88761`](https://kovan.etherscan.io/address/0xC963bf29405884e3C0c52C16793Ead51Ccb88761)

MonoswapStaking address: [`0x6549f8aE5dfee52B5da9127B8Dda7504798ec347`](https://kovan.etherscan.io/address/0x6549f8aE5dfee52B5da9127B8Dda7504798ec347)

### Contract on Mumbai Test Network

VCASH address: [`0xeB3333178D85F4792fE3201C9247B0c3eA44Ae10`](https://mumbai.polygonscan.com/address/0xeB3333178D85F4792fE3201C9247B0c3eA44Ae10)

MonoXPool address: [`0x94B0eAf72E4CC307Bf2B0Dd8834694F295305f89`](https://mumbai.polygonscan.com/address/0x94B0eAf72E4CC307Bf2B0Dd8834694F295305f89)

Monoswap address: [`0xf0086a7bF26E4be27D6bF2d9f9f108F321cc72E7`](https://mumbai.polygonscan.com/address/0xf0086a7bF26E4be27D6bF2d9f9f108F321cc72E7)

MonoToken address: [`0x63EE03B10E92849A1f61f2f462c66CdB09a3982C`](https://mumbai.polygonscan.com/address/0x63EE03B10E92849A1f61f2f462c66CdB09a3982C)

MonoswapStaking address: [`0xF269e315f8c72B8a1Beb2223632bbC046c6635D4`](https://mumbai.polygonscan.com/address/0xF269e315f8c72B8a1Beb2223632bbC046c6635D4)

## Integration&#x20;

Our Monoswap contract ([`kovan`](https://kovan.etherscan.io/address/0xE8141055b060BA9f7C75c6D5c904D4A7Fc97A66b)  or [`mumbai`](https://mumbai.polygonscan.com/address/0xf0086a7bF26E4be27D6bF2d9f9f108F321cc72E7)) has some core features available for the developers who are interested in using them externally.

#### What type of functions is available for a contract?

![Visit a contract link above, click into the Contract tab,  then select Write as Proxy to see all functions.](/files/-MkMKFhiSKL6pMeK11Xp)

### MonoX Core Functionalities

Some of the key functionalities we offer are:&#x20;

* `listNewToken`,&#x20;
* `addLiquidity`,&#x20;
* `addLiquidityETH`,&#x20;
* `removeLiquidity`,
* `swapExactTokenForToken` and `swapTokenForExactToken,`
* `swapExactETHForToken`, `swapExactTokenForETH`, `swapETHForExactToken` and `swapTokenForExactETH`

{% hint style="warning" %}
`listNewToken`, `addLiquidity`, `swapExactTokenForToken` and `swapTokenForExactToken` requires that the token has been approved in advance.
{% endhint %}

#### `listNewToken`

This function list tokens and adds liquidity with `vcashAmount` and `tokenAmount` then sends LP tokens to `to` address. So, the user can list a new token.&#x20;

```javascript
function listNewToken (
        address _token,        // Token address to list
        uint _price,           // Token price
        uint256 vcashAmount,   // VCASH amount to add initially
        uint256 tokenAmount,   // Token amount to add initially
        address to             // Address that gets liquidity
        )           
```

#### `addLiquidity`

This function adds liquidity to an ERC-20⇄ERC-20 pool. So, users can contribute into the pool.

```javascript
function addLiquidity (
        address _token,        // Token address
        uint256 _amount,       // Token amount to add
        address to             // Address to send LP token 
        )
```

#### `addLiquidityETH`

This function adds liquidity to an ERC-20⇄WETH pool with ETH. So, users can add liquidity to the ETH pool.

```javascript
function addLiquidityETH (
        address to             // Address to send LP token  
        )
```

#### `removeLiquidity`

This function removes liquidity to an ERC-20⇄ERC-20 pool.&#x20;

```javascript
function removeLiquidity (
        address _token,        // Token address
        uint256 liquidity,     // Liquidity
        address to,            // Token amount to add
        uint256 minVcashOut,   // The minimum amount of VCash that must be received
        uint256 minTokenOut    // The minimum amount of Token that must be received
        )
```

For removing ETH liquidity, use `removeLiquidityETH` function. It removes liquidity to an ERC-20⇄WETH pool with ETH.

#### `swapExactTokenForToken`

Users can swap tokens using `swapExactTokenForToken`. So, user's input token is known and the output token is calculated `swapTokenForExactToken`.

```javascript
function swapExactTokenForToken(
        address tokenIn,       // Input token address
        address tokenOut,      // Output token address
        uint amountIn,         // The amount of input tokens to send
        uint amountOutMin,     // The minimum amount of output tokens that must be received for the transaction not to revert
        address to,            // Recipient of the output tokens
        uint deadline          // Unix timestamp after which the transaction will revert
        )
```

#### `swapTokenForExactToken`

Users can swap tokens using `swapTokenForExactToken`. So, user's output token is known and the input token is calculated.

```javascript
 function swapTokenForExactToken(
        address tokenIn,       // Input token address
        address tokenOut,      // Output token address
        uint amountInMax,      // The maximum amount of input tokens that can be required before the transaction reverts
        uint amountOut,        // The amount of output tokens to receive
        address to,            // Recipient of the output tokens
        uint deadline          // Unix timestamp after which the transaction will revert
        )
```

For swapping ETH, please use one of below functions:

{% tabs %}
{% tab title="swapExactETHForToken" %}

```javascript
function swapExactETHForToken(
        address tokenOut,      // Output token address
        uint amountOutMin,     // The minimum amount of output tokens that must be received for the transaction not to revert
        address to,            // Recipient of the output tokens
        uint deadline          // Unix timestamp after which the transaction will revert
        )
```

{% endtab %}

{% tab title="swapExactTokenForETH" %}

```javascript
function swapExactTokenForETH(
        address tokenIn,       // Input token address
        uint amountIn,         // The amount of input tokens to send
        uint amountOutMin,     // The minimum amount of output tokens that must be received for the transaction not to revert
        address to,            // Recipient of the output tokens
        uint deadline          // Unix timestamp after which the transaction will revert
        )
```

{% endtab %}

{% tab title="swapETHForExactToken" %}

```javascript
function swapETHForExactToken(
        address tokenOut,      // Output token address
        uint amountInMax,      // The maximum amount of input tokens that can be required before the transaction reverts
        uint amountOut,        // The amount of output tokens to receive
        address to,            // Recipient of the output tokens
        uint deadline          // Unix timestamp after which the transaction will revert
        )
```

{% endtab %}

{% tab title="swapTokenForExactETH" %}

```javascript
function swapTokenForExactETH(
        address tokenIn,       // Input token address
        uint amountInMax,      // The maximum amount of input tokens that can be required before the transaction reverts  
        uint amountOut,        // The amount of output tokens to receive
        address to,            // Recipient of the output tokens
        uint deadline          // Unix timestamp after which the transaction will revert      
        )
```

{% endtab %}
{% endtabs %}


# Overview

At its core, MonoX is a next generation Decentralized Finance (DeFi) protocol redefining how users can participate in the peer-to-peer financial systems enabled by decentralized technologies built on blockchain networks.&#x20;

Specifically, MonoX seeks to optimize and fix the capital inefficiencies posed by the Liquidity Pool Pair design. The protocol works by grouping deposited tokens into a virtual pair with vUNIT.

Single token liquidity pools are much more capital efficient which means they can become the infrastructure for superior DeFi products and services. Single token design results in lower trading fees, less capital needed to be a liquidity provider and less capital is siloed in multiple pool pairs, resulting in more capital being unlocked and free to use within the greater DeFi ecosystem.

First, we will be launching an Automated Market Maker (AMM). However single token liquidity pools can also be used to build optimized lending/borrowing products, as well as derivatives like futures and options trading.<br>


# Project Mission

At MonoX, we believe that 2020 showed the world what the baseline for value creation is regarding DeFi protocols (hint: with over 2000% growth in TVL, it's a lot). However, DeFi 2.0 will see projects like MonoX finding ways to improve and optimize the inefficiencies of current protocol models. In this way, the space will keep growing and the standard for DeFi’s value creation baseline will be set higher and higher.&#x20;

Above all, we want to help build and shape the new ownership economy while having a positive impact on the community. Our aim is to release new innovative DeFi products and services that participants of the DeFi ecosystem will value and love. We hope you will join us on this journey together!<br>


# Launch Features

Our first product is an Automated Market Maker using the single token liquidity pool design. &#x20;

**Bonding**&#x20;

* Purchase discounted vUNIT in exchange for stabelcoins, and LP tokens

**Stakeing**<br>

* Stake your vUNIT for yield&#x20;

#### Swapping&#x20;

* Trade between any ERC20 token listed on our platform.&#x20;
* Exchanging Token A with Token B always works by swapping Token A to vUNIT and then from vUNIT to Token B. &#x20;

#### Providing Liquidity&#x20;

* Deposit tokens to a liquidity pool, receive your share of the pools reserve in the form of LP tokens. You only need to deposit one kind of token.&#x20;
* Start earning trading fee rewards for pool activity.&#x20;

#### Removing Liquidity&#x20;

* Redeem your pro-rata fee rewards by withdrawing/burning your LP tokens.&#x20;

#### Official Pools&#x20;

* Official pools have been approved by the DAO.&#x20;
* Tokens are deposited into a virtual pair with vUNIT.

#### Trustless Listing Pools&#x20;

* Permissionless listing of new tokens&#x20;
* vUNIT balance cannot go below 0. (User protection feature).

**Futures**

* Lock up project tokens in a smart contract until maturity date
* Receive Futures tokens that function as a 1:1 synthetic token representing project token
* Once maturity date is reached, burn futures tokens for project tokens

#### MonoX Future Features/Products:

Borrowing and Lending - TBD

Derivatives - TBD<br>


# Protocol Owned Liqudity

The majority of DEXs are running on outdated mechanisms and incentive structures. Liquidity mining is used to incentivize users to deposit liquidity to the protocol. However, it fosters an environment where the protocol’s native token is subject to long-term selling pressure from farmers in exchange for short-term incentives.

This LM model has been proven to be unsustainable and the introduction of bonding programs to create a treasury with assets owned by the protocol itself, not the users (Liquidity Providers) has its advantages when applied to an AMM or DEX.

We will offer bonding for users to sell their LP tokens back to us (MonoX Protocol), in exchange for our reserve currency vUNIT. vUNIT is vested to users over 5 days with a rebase occurring every 8 hours.

The primary benefit for users considering the exploit means that the risk of depositing assets to our contract is carried to us, the protocol, and not incurred by the user.

The primary benefit for us, is that the LP tokens are then owned by us the protocol and we can use it as permanent liquidity on our platform and help us to function as a perpetual market maker for our own DEX.

We believe that moving forward with this model will be a vast improvement for all participants of our ecosystem.

### Bonding

MonoX 2.0 will allow users to sell their LP tokens or certain assets (eth) back to the protocol in exchange for vUNIT, the protocol's reserve currency. \
\
This process will occur using a bonding curve that sells vUNIT to the user at below market price. Users who sell assets to the protocol using the bonding curve will receive vUNIT through a 5-day vesting schedule. \
\
vUNIT is backed by protocol owned liquidity (our Treasury), which is fed by the bonding mechanism. <br>

### **Staking**

\
&#x20;vUNIT can be staked natively on MonoX to generate yield. The bonding mechanism combined with vUNIT staking creates an opportunity for users to offload LP risk while gaining access to liquidity and earn yield on their vUNIT. \
\
After you have cliamed your vUNIT,  you can opt to stake.&#x20;


# vUNIT Reserve Currency

### **What is vUNIT?**

vUNIT is our upgrade from the old vCASH stabelcoin which we used to power the protocol during our first iteration of MonoX. It now serves additional utility to the platform not just being the primitive that creates a virtual pair, offering our users single-sided liquidity.

The three functions of currency are:&#x20;

**1. Unit of account** (All the assets on our DEX express their value in terms of vUNIT)

**2. Store of value** (As a reserve currency backed by asset&#x73;**)**

**3. Medium of exchange** (Every swap on our protocol routes through vUNIT. Token A -> vUNIT -> Token B)

From the above, vUNIT is a more robust currency that fits into the three core functions of currency by definition.

vUNIT is the glue that underpins the entire protocol. It is not a stablecoin, but instead a reserve currency. The role of vUNIT in the MonoX ecosystem provides utility in two ways:

#### **Utility: Reserve Currency**&#x20;

* On one side we have the bonding mechanism that acquires assets and protocol-owned liquidity to our treasury. vUNIT then provides a free-floating value based on the treasury reserves and gives intrinsic value to the reserve currency. Ideally, vUNIT will always be worth more than 1 USDC and that is the floor price.

#### **Utility: Using vUNIT for Virtual Pairs**

* vUNIT, is still the key to offering single-sided liquidity for our users. It’s what powers the protocol and uses the same mechanics as before in our AMM. We use vUNIT to create a virtual pair when depositing tokens into a liquidity pool on our platform.

### **How is vUNIT Backed?**

vUNIT is backed by our treasury accumulated from assets via our bonding program. It is not pegged 1:1, rather because our treasury backs the currency which the protocol can buy back should it ever fall below 0. However, vUNIT is also backed by the liquidity in our pools. The sell function mints vUNIT as the physical token. In essence, vUNIT is backed further by the liquidity itself in our pools, not just the assets in our treasury. vUNIT is this instance is only backed when there is a positive vUNIT balance in the pool. Trustless listing pools cannot go below 0 for vUNIT balance.

One can also trade vUNIT outside of MonoX. This is something we didn’t have before with our previous vCASH token.

### **How To Get vUNIT**

**Purchase from Market**

* Users can swap any ERC token directly to vUNIT.

When users withdraw liquidity, they will receive vUINT (as well as their liquidity) if there is a positive vUNIT balance in the pool.

**Bonding**

* Users can participate in our bonding program to purchase discounted vUNIT.

###


# ↔️  Automated Market Maker

## Monoswap AMM

At its core, Monoswap works by creating single token liquidity pools, which can then be used as the infrastructure for different DeFi products and services. This is achieved by grouping deposited tokens into a virtual pair with the vUNIT stablecoin.&#x20;

For our first product, the AMM users deposit Token A into the liquidity pool where it is grouped into a virtual pair with the vUNIT stablecoin.&#x20;

The trading process works just like Uniswap’s AMM constant algorithm by adhering to a price curve: when a token is bought, its price goes up; when it’s sold, its price goes down. The price is initially set by the first liquidity provider/pool creator.&#x20;

vUNIT is represented as a balance within the pool. The balance starts at 0, however it can increase or decrease based upon Token A’s trading activity (being bought or sold).&#x20;

Token A is bought - vUNIT balance increases

Token A is sold - vUNIT balance decreases

However, for trustless listing pools, the vUNIT balance cannot go below 0. This acts as a safeguard to protect users from rug pulls and scam token listings (you can find out more in the trustless listing pool section). &#x20;

![How it works](/files/ju3zE5lrTXhB20c5CzHR)

## Swapping

The swapping process works exactly the same as a paired liquidity pool.

In each pool, Token A is paired with vUNIT. Exchanging Token A with Token B works by swapping Token A to vUNIT and then from vUNIT to Token B.&#x20;

This means that every trade is always the same 0.3% fee, and there are never more than two swaps taking place like in paired liquidity pool AMMs.&#x20;

The changes in the vUNIT balance (+ or -)  from the starting price initially set when adding liquidity form the pricing curve we are all familiar with. <br>

![How swapping works](/files/ejaIItFBxrH9NT5pbuXj)

### Swapping between two non-vUNIT tokens

![How swapping between two non-vUNIT tokens works](/files/GcEDpOWtd8yDj1poVpLQ)

### How To Trade?

Trading works exactly the same as all major DEXs/AMMs.&#x20;

As a trader, all you need to do is connect your web3 wallet to the Dapp and then select the ERC20 token that you wish to buy/sell.&#x20;

After choosing the token, you need to enter an amount, then sign the transaction.

We will be releasing tutorials for newbies soon!\ <br>


# vUNIT

### **What is** vUNI&#x54;**?**

vUNIT is our new kind of index coin introduced by MonoX, it is the glue that holds the protocol together. vUNIT is an index token of all the assets listed on our protocol. Our protocol solves the capital inefficiencies of liquidity pool pairs by grouping deposited tokens into a virtual pair with the vUNIT. This allows us to offer single token pools whereby the user only needs to deposit one token to the pool instead of two. vUNIT is backed by all the assets in MonoX pools that have a positive vUNIT balance.

When a user first deposits liquidity to create a new pool, they set a starting price for the asset. This means that every asset in MonoX pools expresses their value in vUNIT. Therefore trading works by forming a similar pricing curve to Uniswap except while they use the ratio between two tokens, we have a starting price and a would be price.&#x20;

### Pricing Mechanism

If a user sells from the starting price the asset depreciates in value, if someone buys from the starting price the asset appreciates in value. As such, we use starting price and would be price instead of the ratio between Token A and Token B in the xy=k constant product formula. Our pricing algorithm is based on Uniswap’s model found [here](https://github.com/runtimeverification/verified-smart-contracts/blob/uniswap/uniswap/x-y-k.pdf). However in this calculation vUNIT supply is equal to infinity and is the second token in the formula. <br>

![](/files/FUh7XzA99UwBFlR4oJny)

### vUNIT and Monoswap Equations

The equations for vUNIT and Monoswap are as follows:<br>

![](/files/-MRg9QDhNQPgVTIsLC8O)

![Monoswap Equations](/files/-MRf7Z32avnz9MfVx6bG)

### **How To Get** vUNIT

Users can swap any ERC token directly to vUNIT.

When users withdraw liquidity, they will receive vUNIT (as well as their liqudiity) if there is a positive vUNIT balance in the pool.

### **How is** vUNIT **Backed?**

The pair is virtual. vUNIT is a real token that is an index of all the other assets in our pool. vUNIT is technically backed by all the assets in the pool. However, it’s more accurate to say that it is backed by the sell function because when a user sells into vUNIT it mints the physical token. In essence, vUNIT is backed by the liquidity itself, not the assets. vUNIT is only backed when there is a positive vUNIT balance in the pool. Trustless listing pools cannot go below 0 for vUNIT balance.

### **Can I use** vUNI&#x54;**?**

Yes, you can mint vUNIT by trading directly into it.

###


# 🧑‍🌾  Single Token Pools

Our protocol optimizes the capital inefficiencies created by liquidity pool pairs, giving users a more cost-effective end product.

MonoX is creating an ecosystem that will be the home to the next generation of builders, liquidity providers and traders. With the Monoswap protocol, we have taken a different route in designing our liquidity pools. Instead of using regular liquidity pool pairs, we utilize Single Token Liquidity pools.&#x20;

Our protocol optimizes the capital inefficiencies created by liquidity pool pairs, giving users a more cost-effective end product. At the same, by deploying a two tiered liquidity pool system, we can protect users from scams and rug pulls, while supporting and promoting genuine innovators in DeFi.

## **How Single Token Liquidity Pools Work**

### vUNIT Virtual Pair

Single Token Liquidity pools function by grouping the deposited token into a virtual pair with our virtual USD stablecoin (vUNIT), instead of having the liquidity provider deposit multiple pool pairs, they only have to deposit one. In essence, liquidity providers only need to deposit “Token A” to the pool reserve and each token is paired with the vUNIT stablecoin. There is no pool weighting, only an amount of Token A reserve in the pool based upon how much liquidity has been provided to the pool.

### Constant Product Algorithm (x \* y = k) and Pricing Curve&#x20;

AMMs like Uniswap use the constant product algorithm xy=k. Where x is Token A, y is Token B and k is the invariant.&#x20;

Monoswap uses a similar ratio as Uniswap which forms a price curve. However, ours is based on a starting price and a would be price. When users first add liquidity to the pool they set a starting price, the assets are backed by vUNIT only when someone initially buys at the starting price. This is because the vUNIT balance needs to be positive for trustless listing pools. &#x20;

If a user sells from the starting price the asset depreciates in value, if someone buys from the starting price the asset appreciates in value. As such, we use starting price and would be price instead of the ratio between Token A and Token B in the xy=k constant product formula. Our pricing algorithm is based on Uniswap’s model found[ here](https://github.com/runtimeverification/verified-smart-contracts/blob/uniswap/uniswap/x-y-k.pdf).&#x20;

### Benefits of Single Token Liquidity Pools

* Users only need to supply one token (Token A) to be an LP<br>
* Projects can launch their token with zero capital (no ETH needed to create the pair)<br>
* **More capital efficient**:\
  1\. As a Liquidity Provider there is no need to deposit multiple tokens. This increases decentralization because being an LP is much less capital intensive<br>
* **Lower trading fees**:\
  1\. All the pools/pairs are in the same ERC1155 contract.  It is much cheaper to interact with the same contract internally, than involving multiple other contracts.\
  2\. Lengthy transaction paths are avoided because thanks to our vUNIT stablecoin, Token A will not go through a ‘path’ of pairs to swap into Token B.\
  3\. Every trade is one swap and a flat 0.3% fee. <br>
* **Less capital siloed in multiple pool pairs**:\
  1\. As there is no need for multiple pool pairs, more capital is unlocked and free to use.<br>
* **Allows for borrowing and lending from same pool**:\
  1\. The borrowing and lending process is more optimized as users do not have to withdraw/reserve two tokens to keep the ratio (price) the same.

## Adding Liquidity

Adding Liquidity on Monoswap works exactly the same as in paired liquidity pools:&#x20;

When an LP adds liquidity to the pool for token A, the price stays the same. The amount of Token A increases in the pool, and therefore the liquidity pool reserve increases. In exchange for providing liquidity, the LP receives their share of the liquidity reserve and the ERC1155 LP token. Liquidity providers receive a share of the fees proportional to their share of the liquidity reserve.&#x20;

![Providing Liquidity on Monoswap](/files/fwxe4kxmTDgXOWBsfcvn)

## Removing Liquidity

Removing Liquidity works exactly the same as a paired pool:

When one removes liquidity from the pool for Token A, the price of the token stays the same. The pool burns the liquidity provider’s ERC 1155 LP token. In exchange, the pool transfers to the user their share of Token A’s virtual pair’s net value. When the vUNIT balance is positive, the user will get their share of vUNIT plus their share of Token A. When the vUNIT balance is negative, the user will receive their share of Token A, minus their share of vUNIT debt valued in Token A.<br>

![Removing Liquidity on Monoswap](/files/zCif9geK4f7KrYzlg8Ct)

## Impermanent Loss Protection

With typical token pairs, the volatility of price changes can severely diminish the returns for liquidity providers. This causes a significant inconvenience for users providing liquidity to a traditional AMM. A superior benefit of our single token liquidity pools is the reduction of impermanent loss.&#x20;

Our AMM reduces the risk of impermanent loss by using a price that’s closer to the updated price to execute each transaction. With this mechanism, users may worry less about the potential loss of returns due to price volatility.&#x20;

Compared to Uniswap V2, if a token appreciated 100x impermanent loss would be roughly 80%, however with our platform it would be 20%.

## Value Backed Tokens (VBTs)

MonoX serves as the leading protocol for capital efficiency of Value Backed Tokens.

VBTs are tokens that are already backed by some value, meaning they are already collateralized. The market for these more innovative tokens is exponentially growing and MonoX provides the perfect solution to capture this value encapsulated by new ‘Value Backed Tokens’.

**Examples:**

* Fractional NFTs (value backed by the NFT itself)
* Synthetics (value backed by assets used to mint them)
* Gaming Tokens (value backed by the in-game assets)
* Insurance Tokens (value backed by the assets used as collateral)&#x20;

It is unnecessary and inefficient for projects to deposit VBTs backed by assets a second time when providing liquidity in token pairs. For example, if a project wants to provide $100,000 worth of liquidity for Token A, they will also need $100,000 worth of another token to deposit into a traditional AMM. This creates a severe inconvenience, especially because these tokens are already backed by some value.

Our single token liquidity pools allow projects to launch their VBTs with 100% capital savings - no inefficient token pairs needed.<br>

## Trustless Listing Pools & Official Pools

We have some additional protocol security measures for LPs.

1. Largest LP holder of Trustless Listing pools can’t remove their LP within 3 months of pool creation
2. Largest LP holder of Trustless Listing pools can’t send out LP tokens to other users, within 3 month period&#x20;
3. Users cannot remove liquidity if they have just added liquidity

   A. For Trustless listing pools, it’s 24 hours.

   B. For Official Pools its 4 hours.&#x20;


# Pool Types

We will launch two kinds of liquidity pools. Trustless Listing Pools and Official Pools

## Official Pools and Trustless Listing Pools

We will launch two kinds of liquidity pools. There will be trustless listing pools, whereby any user is able to launch a token and create a liquidity pool. Additionally, we will have ‘Official Pools’ which have passed a community DAO vote to become an official MonoX pool.&#x20;

Such a system is beneficial to our ecosystem for 3 primary reasons:&#x20;

1. **Increased Decentralization** - Single token design means that as a developer or project, you do not need a huge amount of capital (equivalent amount of ETH) to launch your token. Projects can save capital for what matters most, development, testing and auditing. <br>
2. **User Security** — We are aware that users are weary of sketchy projects in the DeFi space. To combat that, Trustless Listing Pools on Monoswap will have vUNIT balances that cannot go below zero. However, it is still up to the community to always check the contract address and use their discretion when investing in a new project.<br>
3. **Quality Control and Regulation** — One of our primary concerns is security and with Trustless Pools as well as Official Pools, we can easily separate the scam projects while supporting and promoting genuine projects. We all know DeFi is saturated with scammers and “pump and dump” projects. As we scale up to offer fair launch services we make it easier for the true and dedicated developers and projects to be recognized.&#x20;

### Trustless Listing

Trustless listing means that anyone (project or developer) can write a smart contract, create a pool for their token, and add liquidity so it can be launched and traded. However, a built-in feature to safeguard against malicious token listings is that for trustless listings, the vUNIT balance is not allowed to go past 0.

By not allowing the vUNIT balance to go below 0, we can prevent malicious actors listing a token and selling it back to themselves. If the vUNIT balance goes to 0 then people cannot sell the token anymore. However, it is still possible to buy the token. As a result, a user cannot list a token, set the price and add liquidity, then sell all the tokens back themselves into vUNIT.

### How do Trustless Listing Pools Become Official Pools?&#x20;

A proposal will be made for the pool and the community will vote on the pool to be accepted as an Official Pool.&#x20;

However, upon launching, we will create Official Pools for some of the projects that are recognized as genuine. The community will be able to provide liquidity on these pools immediately when we launch. Additionally, we will reach out to partner projects with the aim of setting up an official pool for their token and seeding the pool with liquidity should they wish to.

![How Trustless Listing Pools become Official Pools](/files/-MRfUJiMfGk8ef5HoHun)

### Pool Auto-Rebalancing

We have a built in feature for pool auto-rebalancing pools when the vUNIT amount goes below 0.&#x20;

**Official Pools:** We always rebalance the pool when the vUNIT balance goes below 0. This means that we automatically pay off the debt should the vUNIT balance go below 0.&#x20;

**Trustless Listing Pools:** Projects can have their pool insured, in which case when the vUNIT pool goes below 0, we can trigger a rebalance to pay off the vUNIT debt using the other token's liquidity.&#x20;


# Glossary


# General FAQs

### What are Liquidity Pools?

Liquidity Pools are simply pools of tokens locked in a smart contract. The smart contract logic will determine how the tokens function, and how this capital is utilized by the liquidity pool. Users deposit tokens into the pool and therefore provide liquidity.  <br>

### What are AMMs?

AMMs are liquidity pool smart contracts that use an Automated Market Maker algorithm in order to use the liquidity in the pool for trading/exchanging.&#x20;

&#x20;Until now, at a minimum, liquidity pools have always consisted of two tokens; Token A and Token B. These two tokens create a new market for the two tokens to be traded.  For example, a liquidity pool with an ETH/USDT pair means you can buy ETH in exchange for USDT and vice versa. <br>

Pricing is calculated using the constant formula popularized by Uniswap:

$$
x  y = k
$$

Where x is Token A, y is Token B and k is the invariant. The constant product market maker algorithm makes sure that the product of the two tokens in the liquidity pool always remains the same.  As a result, the ratio of the tokens in the pool dictates the price and the amount of liquidity in the pool affects slippage.&#x20;

### What are Stablecoins?

Stablecoins are a type of cryptocurrency which are designed to minimize volatility. They are often pegged to a stable asset or basket of assets. For MonoX, the vUNIT stablecoin is pegged at 1:1 with USD.

### &#x20;How do Single Token Liquidity Pools work?

Single Token Liquidity pools function by grouping the deposited token into a virtual pair with our virtual unit stablecoin (vUNIT), instead of having the liquidity provider deposit multiple pool pairs, they only have to deposit one. In essence, liquidity providers only need to deposit “Token A” to the pool reserve and each token is paired with the vUNIT stablecoin. There is no pool weighting, only an amount of Token A reserve in the pool based upon how much liquidity has been provided to the pool.

Monoswap uses a similar ratio as Uniswap which forms a price curve. However, ours is based on a starting price and a would be price. When users first add liquidity to the pool they set a starting price, the assets are backed by vUNIT only when someone initially buys at the starting price. This is because the vUNIT balance needs to be positive for trustless listing pools. &#x20;

If a user sells from the starting price the asset depreciates in value, if someone buys from the starting price the asset appreciates in value. As such, we use starting price and would be price instead of the ratio between Token A and Token B in the xy=k constant product formula. Our pricing algorithm is based on Uniswap’s model found[ here](https://github.com/runtimeverification/verified-smart-contracts/blob/uniswap/uniswap/x-y-k.pdf).&#x20;


# Getting Started

Head over to [monox.finance](https://monox.finance/) and connect your wallet.&#x20;

Click on the Pool tab to be directed to our pool page and add liquidity - only one token is needed.&#x20;

For depositing tokens, we will have two types of liquidity pools.

### Official Pools - (Only Official Pools Count for Airdrop)

Official pools will be initially created by the internal team, then eventually by the DAO. These pools will be available immediately at the time of launch. Our official pools will begin with:

* **Ethereum:** ETH, WBTC, USDC, USDT
* **Polygon:** MATIC, WBTC, USDC, USDT, WETH

### Depositing Liquidity&#x20;

Please note we have some additional security measures for Liquidity Providers to safeguard the Protocol and protect our loyal apes from being rug-pulled:

1. Largest LP holder of Trustless Listing pools can’t remove their LP within 3 months of pool creation
2. Largest LP holder for Trustless Lising Pools can’t send out LP tokens to other users, within 3 month period

3\. Users cannot remove liquidity if they have just added liquidity&#x20;

&#x20;  A. For Trustless listing pools, it’s 24 hours.&#x20;

&#x20;  B. For Official Pools it's 4 hours.

### **Trustless Pools**

Trustless pools will allow anyone to launch their token. Any person or project will be able to launch their token in a permissionless manner. All you have to do is set an initial price and deposit liquidity for the token. When people start to purchase the token, the pool’s vUNIT balance will increase. We are completely open and permissionless.&#x20;

As a built-in safety mechanism, the vUNIT balance for trustless pools will not be able to go below 0. This is to prevent malicious actors from listing a token and selling it back to themselves. Trustless pools may become official pools through a proposal and community vote.

A great use case for Trustless Pools are Value Backed Tokens (VBTs) you can read more from our recent blog post [here](https://medium.com/monoswap/monox-introducing-the-amm-for-value-backed-tokens-vbts-b39ed8bbde04).


# Adding Liquidity

Adding liquidity is the same user flow as the familiar DEXs exept you only need to supply one token to the pool.&#x20;

![](/files/fitsJLlWA6lXj6X2Nh5R)

### Step by step walkthrough

#### **Step 1**

Connect your wallet

![](/files/GCkTGXKMd6ayIGoWva7c)

#### Step 2

Go to the 'Pool' tab and select Add Liquidity&#x20;

![](/files/gGytGITtHXbiPuv7uI8l)

#### Step 3&#x20;

Choose the token you wish to provide liquidity for&#x20;

![](/files/3e8Z1aAgVglyGdW3Cyu6)![](/files/CcWMj011HhXl9wIHF9oM)

#### Step 4&#x20;

Enter the amount of liquidity that you wish to deposit, and click 'supply'. Make sure to look out for the Metamask pop up and sign the transaction.&#x20;

![](/files/1QTyUxyUrHtTujrArTCM)

#### Manage your positions

From the pool tab you can see your active positions&#x20;

![](/files/5Xqlr3IjCnb9c2RjM0NS)


# How to change RPC setting

In case of transaction delays or slow loading of data, it may be because of high network congestion on the Polygon network. Since some RPC endpoints may be busier than others at a particular time, changing the RPC endpoint URL might help.&#x20;

In this guide, we will show you how to change RPC endpoint in Metamask's Matic network configuration.

### Polygon RPC Endpoints:

***Public RPC endpoints***

* <https://polygon-rpc.com/>
* <https://rpc-mainnet.matic.network/>
* <https://rpc-mainnet.matic.quiknode.pro/>
* <https://matic-mainnet.chainstacklabs.com/>
* <https://matic-mainnet-full-rpc.bwarelabs.com/>
* <https://matic-mainnet-archive-rpc.bwarelabs.com/>

## Change RPC endpoints:

![](/files/ipqID6d6matOj5Cbxxvn)

#### Step 1:

Open your MetaMask wallet and click on My Accounts (circular button on the top right) as shown in the screenshot below.

![](/files/XSa5kyhTwGzxROcfQrs6)

### Step 2:

Click on Settings.

![](/files/3FYWGpCCvt1dbGVSLjid)

### Step 3:

Go to Networks and select Matic Mainnet (or Polygon, the name can differ).

![](/files/uLqiwC63H6aD7Y0dIMWx)

![](/files/CysN3J3bhu0uGuR7vpnh)

### Step 4:

Replace the old RPC endpoint with a new RPC endpoint provided at top of this guide and click save.

![](/files/jLBZnq38cPnG7NIYPUEy)

Congratulations, you have successfully changed your RPC endpoint.

\*It's not guaranteed that changing RPC endpoint will result is less delays.


# Changing Network

How to change network on MonoX Protocol

![Check which network you are on above ⬆️⬆ ](/files/jl1kNsW8s3c6sLoSHert)

![Click on the network that you want to use](/files/spbAvk12P4qafJGBRCiA)

**How to add Polygon to your Metamask:**

Open your Metamask. You need to switch the connected blockchain by clicking on the tab saying Main Ethereum Network, from your Metamask we need to add the Matic network.

**Enter in the Matic Mainnet configurations as follows:**

* **Network Name:** Polygon
* **New RPC URL:** [![](/files/2W2fGpsvfCkkNUSdI855)](https://polygon-rpc.com/) or

<https://rpc.ankr.com/polygon> or&#x20;

[https://rpc-mainnet.matic.network](https://rpc-mainnet.matic.network/) or

[https://rpc-mainnet.maticvigil.com](https://rpc-mainnet.maticvigil.com/) or

[https://rpc-mainnet.matic.quiknode.pro](https://rpc-mainnet.matic.quiknode.pro/)&#x20;

* **ChainID:** 137
* **Symbol:** MATIC
* **Block Explorer URL:** <https://polygonscan.com/>

<br>

![](/files/DUhJjbbOqTvuSBVKFCVR)

With the new Metamask update watch out for a Metamask popup that will help you automatically change network. You must have the RPC already installed for the helper to pop up

![](/files/YRjeIjsyADIFaXYF7A7B)


# Launch + Airdrop

There will be two parts to the airdrop. Part One is based on liquidity and referred liquidity, and Part Two is based on surprise factors, in which the community can vote on what should be considered.

**Update Jan 2022. We will be distributing the Airdrop soon once we relaunch.** <br>

Targeting 50-200% APY\*

### Part One&#x20;

Each user will be ranked with a score based on the amount of liquidity they have provided directly or indirectly to our Official Pools. User scores will be comprised of:&#x20;

* Liquidity Deposited
* Referred Liquidity Deposited
* Length of time liquidity is deposited

### Methodology

&#x20;We will use the below methodology for calculating how the Airdrop will be distributed:&#x20;

`(Amount of Liquidity * time: how long liquidity stays in the pool) + (Amount of referred Liquidity * (time: how long liquidity stays in the pool) = Your Score`&#x20;

Final ranking: `Your Score / Total Scores`&#x20;

If you do not have a huge amount of liquidity to deploy, the referral system gives you a chance of increasing your score by successfully referring someone (or multiple) who then deposits liquidity to the pools. Refers counted are for direct referrals only.&#x20;

For example: Person A referred Person B. Person B then deposits 10k. In this case, the referred 10k counts for Person A for Referred Liquidity Reward Pool. And the 10k counts for Person B in the  Liquidity Reward Pool.&#x20;

Referred Liqudity is weighted less than depositing your own liquidity.&#x20;

We wanted to thank our community for their early support and a 10% bonus will be applied for all addresses that used our beta product. Make sure to use the same address you used for our beta to have the 10% bonus automatically applied. The bonus is contingent on supplying liquidity, and based on your original score. For example, if your original score is 100, with the bonus, your score would be 110; if the original score is 0, even with the bonus, the score would be 0.&#x20;

**The Airdrop will be distributed two weeks after TGE (Date still TBD)**&#x20;

### How to get your Referral Link

![](/files/9CIgLTyIdef61TBxwKo3)

Step 1: click on your wallet address to open up 'Account'

Step 2: Click on copy referral code and it will give you a personal referral link that you can share based on your connected wallet.&#x20;

![](/files/nQC22UBhxBtJaN78ZHAs)

### Part Two&#x20;

The second part of the airdrop will be distributed another two weeks after Part One. Participants can use their $MONO tokens to vote and choose one of four surprise factors to be considered. The team will propose two and the community will propose two. Then there will be a DAO vote for which factor we will use to determine Airdrop distributions. We will release more details closer to the date of Part Two.&#x20;

For example, factors that could be included for Part Two:

* &#x20;Swaps (trade volume)
* Total number of addresses referred
* New pools created with a positive vUNIT balance
* Liquidity for trustless pools&#x20;
* Liquidity for trustless pools&#x20;

**The Airdrop will be distributed two weeks after Part One (Date still TBD)**&#x20;

**BOTH Airdrops will be distributed on Polygon**&#x20;

**US and Chinese Citizens cannot participate in the airdrop.**

\*The interest rates and APYs may change. The APYs were accurate as of 10/20/2021.


# About

(Please note tokenomics are not final and subject to change before launch. Updates will be relayed.)

## **What is $MONO?**

$MONO is the governance token for MonoX. $MONO holders will be able to participate in DAO votes and own the treasury. A portion of protocol fees will go to the treasury.

Our tokenomics ensure:

* Utility through Governance
* Network participation
* Incentivization mechanisms for liquidity providers.
* Retroactive token distribution via airdrop to reward early beta users.
* Long term value accrual:\
  i. Network effect provides impetus for token value appreciation as MonoX protocol grows.


# 🗳️ Governance

$MONO holders will be able to vote on protocol tx fees, treasury revenue, and prospective new features. Our service provider is snapshot.org

Community voting will be based on a standard governance framework:

1. Each $MONO token will allow 1 vote for each proposal.
2. There is no minimum amount of $MONO required to participate in a vote.
3. The proposal will need to have equal to, or more than 51% of the votes cast in order to pass
4. Quorum for proposal voting will be set at 30% of circulating $MONO delegated to voting or else the proposal will not pass.
5. Each voting period will be 48 hours
6. Proposals that pass will be executed 48 hours after the vote


# ⛓️ Tokenomics

## **$MONO Tokenomics**

### **Supply**

1. Max Supply: 100,000,000 MONO token (ERC20)
2. Growth: 42,000 initially, issue per 6,000 blocks, decay at 0.999

### Minting vs Burning

1. LPs providing liquidity in selected/promo pools will get non-transferrable $MONO shares
2. Stake promo assets to get $MONO tokens:\
   a. Protocol fees are allocated for purchasing and burning $MONO tokens. The initial reward will be 42,000 MONO issued per 6,000 blocks decay at 0.999&#x20;
3. Removing liquidity burns non-transferrable $MONO shares accordingly.
4. Revenue is also allocated to our DAO Treasury owned by $MONO token holders

### **Future MONO Token** **(ERC20)**

* Future MONO is an ERC20 token that is tradable just like any other ERC20 token.
* At TGE Future MONO is distributed to Seed and Strategic holders.&#x20;
* Future MONO releases the underlying MONO tokens based on the maturation schedule.
* It allows us to release MONO slower while at the same time giving investors liquidity and control over when they wish to sell their tokens.

### **Initial Distribution**

1. % of $MONO tokens will be sold in Seed and Private round
2. We will list MONO on our own AMM for the community. Listing Date TBD.&#x20;

![](/files/-Mh-sDQtyUPYmA0dKm-N)


# Lightpaper

\*Please note Light Paper was written in November 2020. Some parts are outdated now. Rest of our Documentation is up to date and is continually modified and updated.

### Abstract

**The objective of MonoX Protocol is to create a new design for capital inefficiencies caused by liquidity pairs, by using a single token pool model. MonoX achieves this goal by grouping deposited tokens into a virtual pair with the vUNIT stablecoin, instead of using liquidity pairs.** \
\
**MonoX introduces the premier bootstrap decentralized exchange, Monoswap. Project owners can list their tokens without the burden of capital requirements and focus on using funds for building the project instead of providing liquidity.** \
\
**This new protocol design results in lower trading fees, less capital to deposit for Liquidity Providers, less siloed capital and projects can launch their token with zero capital.** \
\
**It also creates opportunities for additional Decentralized Finance (DeFi) products/services such as lending and derivatives markets, while simultaneously providing a robust stablecoin that is backed by multiple assets in MonoX.**

## Intro

In 2020 Decentralized Finance (DeFi) has taken center stage as one of the most important vectors for value creation within the growing blockchain industry. We saw Total Value Locked (TVL) increase from $700m to over $20bn over the past 14 months, and DeFi emerged as the driving force behind building the new open financial system and ownership economy.

Within the DeFi, Decentralized Exchanges (DEXs) have become an essential pillar of the DeFi ecosystem and account for $1.5bn of daily volume as of December 2020. According to Dune Analytics, there are currently over 995,000 total unique trading addresses using DEXs within the Ethereum ecosystem.

However, despite the success of 2020, the market is still in its infancy, and many of these DeFi products can be vastly improved. In 2020 DeFi showed the industry what the baseline for value creation looks like now. Nevertheless, DeFi 2.0 will see new projects optimizing and pushing the boundaries of this value creation baseline to new heights.

Apart from the obvious UX/UI improvements, changes can be made at the protocol level, which would greatly benefit end-users and optimize DeFi products. Above all, lower costs, greater capital efficiency and further incentivization for network participants are ways in which DeFi products can be improved. Yet, there is an additional need to try and make trading more safe for DeFi users; rug pulls and scam token listings are an unfortunate stain, tainting the beauty of decentralization.

In this way, there are still opportunities to rethink and optimize how users exchange and transact value using liquidity pools. Through optimizing and solving the inefficiencies, and safeguarding participants, we can continue the progression of DeFi into a more mature market, as well as making it more accessible to the wider market of unbanked and retail customers beyond wealthy programmers.

MonoX Protocol aims to fix many of the inefficiencies created by using a liquidity pool pair design by proposing single token liquidity pools using a virtual stablecoin pair. This new design creates a more capital-efficient and cost effective product for end-users and a stablecoin backed by multiple assets. Our AMM two-tiered liquidity pool design also provides safeguarding against malicious token listings and rug pulls.

## State of AMMs, Liquidity Pools and Stablecoins

### Automated Market Makers (AMMs)

In 2020 we saw the rise of AMMs, a kind of DEX that uses smart contract logic and algorithms to allow exchange between digital assets. AMMs have challenged the dominance of centralized exchanges, and the market leader Uniswap even processed more daily transaction volume than Coinbase during summer. As of December 2020, Uniswap is exchanging more than $450m of value per day and more than 54% of total DEX volume. In less than a year, Uniswap grew from $12m TVL to over $3Bn at its peak in November. The top AMMs account for more than $4bn of liquidity locked in the DeFi ecosystem. Users have flocked to these decentralized exchanges because they can provide a permissionless liquidity pool to exchange digital assets with pricing dictated by algorithms instead of a centralized exchange with listing processes and order books.

### Liquidity Pool Pairs

Liquidity pools are smart contracts to which Liquidity Providers (LPs) deposit funds. Once the funds have been deposited to the pool, the AMM's algorithm creates the market for the digital assets to be traded, instead of using an order book.

For example, the constant product formula used for Uniswap is:

x \* y = k

Where x is the amount of Token A in the pool, y is the amount of Token B in the pool, and k is a constant. This means that the users making swaps must not change the product of Token A and Token B (the pairs reserve balance), and it is represented as the invariant k.

Each smart contract or pair manages a liquidity pool composed of the reserves of the deposited ERC-20 tokens. The pool weight is allocated by the deposited reserve amounts of the reserve ERC-20 tokens. Pool weights vary depending on the protocol, for example, Uniswap uses a 50/50 split for pool weight of two tokens e.g. ETH/USDC. However, protocols like Balancer allow customizable pool weights and up to 8 tokens per pool.

Liquidity Providers can deposit an equal value of each underlying token and in exchange, receive LP tokens. The LP tokens represent shares of the total deposited reserves for both tokens in the pool. As a Liquidity Provider, you are rewarded with the trading fees accrued from swaps/transactions made through the pool. The fee rewards are relative to how much your LP tokens represent as a total of the deposited reserve. The protocol determines fees; for example, each trade in Uniswap charges a 0.3% fee. Liquidity Providers can realize their fee rewards at any time when they burn their LP tokens to withdraw their pool reserves share.

The model using liquidity pairs has been a huge success and one of the innovations that has allowed for such incredible growth to take place in DeFi. But the model is by no means perfect and there are range of problems negatively affecting participants, be it liquidity providers or traders.

### Problems with Liquidity Pairs

Even though the rise of DeFi and AMM volume has grown exponentially in the past year, the industry standard using the liquidity pool pairs design is not capital efficient. The current design is not optimal in the way that capital is allocated and used by the protocol. Such great inefficiencies are well known within the industry. Even Hayden Adams, the founder of Uniswap, recognizes the limitations of current DeFi protocols:

![](/files/-MRf7Z2zaTc6oRRcPLos)

Below are the primary reasons why liquidity pool pairs are suboptimal:

* Capital intensive: Liquidity Providers have to deposit multiple tokens to the liquidity pool.
* Capital expensive: often trades will swap between multiple pools, and each swap has an associated fee.
* Design results in siloed capital: there is no need for multiple pairs which lock capital in the pool pairs.

Each of these problems negatively affects every participant of such DeFi protocols. It impacts projects wanting to launch new tokens but do not have enough capital to create the market on Uniswap (i.e. not enough ETH), the Liquidity Providers and finally the traders.

### **Problems With Stablecoins**

In 2020, along with the rise of DeFi, we also saw the increased need for stable digital assets. Stablecoins are an integral pillar of the ecosystem. Not only do they offer users a safe haven from price volatility, but using stablecoins as collateral for borrowing/lending and yield farming increases utility drastically. Total stablecoin supply increased from $5Bn at the start of 2020 to over [$43Bn as of April 2021](https://duneanalytics.com/hagaetc/stablecoins).

The difficulty, however, is that the correct formula for keeping stablecoins pegged 1:1 to USD, while still retaining solvency, has not yet been perfected. Indeed, the three kinds of stablecoin, reserve backed, crypto collateralized and algorithmic pose their own risks and drawbacks.

#### **Reserve Backed:** Lack of Transparency

Stablecoins are typically issued by a central provider and backed 1:1 with fiat using a tokenization and redemption process. Stablecoin supply is increased when users send collateral to this central provider who then mints new tokens. The provider holds the underlying collateral under custody and burns token supply as stablecoin are redeemed.

The peg is maintained by the arbitrage cycles. However, counterparty risk is an issue because the centralized provider’s assets can be frozen at any time (e.g. Gemini).

Transparency is a risk because without regular attestation reports and audits it is unclear if the reserve is actually backed at 1:1 (e.g. Tether).

#### **Crypto Collateralized:** Market Volatility Risks

A crypto collateralized stablecoin is typified by the utilization of cryptocurrency as its underlying collateral. The protocol relies on pricing the collateralized asset as its way of keeping the stablecoin pegged to one dollar.

However, in March 2020 the most successful crypto collateralized coin, DAI, moved from its peg when ETH price crashed. Many users who had locked funds in collateralized debt positions were liquidated, losing their funds.

MakerDAO has since implemented improvements to the system; however, the frailties of their prior mechanics only became evident when ETH crashed and, at the expense of users losing their funds.

#### **Algorithmic**

Algorithmic coins use mathematical equations and game theory to trigger supply deflation and inflation in order to reach its target peg. In this way, they use an elastic supply scheme and are not backed by any collateral.

However, speculators can participate using secondary and tertiary assets designed to keep the system stable. Principles are based on seigniorage, meaning profiting from the creation of currency, i.e. the cost to produce the currency and the value of the currency itself.

While many speculators have profited from coins such as AMPL, ESD and DSD no algorithmic stablecoin has successfully managed to keep its peg.

## Solution: Monoswap Protocol

MonoX is creating an ecosystem that will be the home to the next generation of builders, liquidity providers and traders. With the Monoswap protocol, we have taken a different route in designing our liquidity pools. Instead of using regular liquidity pool pairs, we utilize Single Token Liquidity pools.&#x20;

Our protocol optimizes the capital inefficiencies created by liquidity pool pairs, giving users a more cost-effective end product. At the same, by deploying a two tired liquidity pool system, we can protect users from scams and rug pulls, while supporting and promoting genuine innovators in DeFi.

### **How Single Token Liquidity Pools Work**

#### vUNIT Virtual Pair

Single Token Liquidity pools function by grouping the deposited token into a virtual pair with our virtual unit stablecoin (vUNIT), instead of having the liquidity provider deposit multiple pool pairs, they only have to deposit one. In essence, liquidity providers only need to deposit “Token A” to the pool reserve and each token is paired with the vUNIT stablecoin. There is no pool weighting, only an amount of Token A reserve in the pool based upon how much liquidity has been provided to the pool.

#### Constant Product Algorithm (x \* y = k) and Pricing Curve&#x20;

AMMs like Uniswap use the constant product algorithm xy=k. Where x is Token A, y is Token B and k is the invariant.&#x20;

Monoswap uses a similar ratio as Uniswap which forms a price curve. However, ours is based on a starting price and a would be price. When users first add liquidity to the pool they set a starting price, the assets are backed by vUNIT only when someone initially buys at the starting price. This is because the vUNIT balance needs to be positive for trustless listing pools. &#x20;

If a user sells from the starting price the asset depreciates in value, if someone buys from the starting price the asset appreciates in value. As such, we use starting price and would be price instead of the ratio between Token A and Token B in the xy=k constant product formula. Our pricing algorithm is based on Uniswap’s model found[ here](https://github.com/runtimeverification/verified-smart-contracts/blob/uniswap/uniswap/x-y-k.pdf).&#x20;

### Benefits of Single Token Liquidity Pools

* Users only need to supply one token (Token A) to be an LP<br>
* Projects can launch their token with zero capital (no ETH needed to create the pair)<br>
* **More capital efficient**:\
  1\. As a Liquidity Provider there is no need to deposit multiple tokens. This increases decentralization because being an LP is much less capital intensive<br>
* **Lower trading fees**:\
  1\. All the pools/pairs are in the same ERC1155 contract.  It is much cheaper to interact with the same contract internally, than involving multiple other contracts.\
  2\. Lengthy transaction paths are avoided because thanks to our vUNIT stablecoin, Token A will not go through a ‘path’ of pairs to swap into Token B.\
  3\. Every trade is one swap and a flat 0.3% fee. <br>
* **Less capital siloed in multiple pool pairs**:\
  1\. As there is no need for multiple pool pairs, more capital is unlocked and free to use.<br>
* **Allows for borrowing and lending from same pool**:\
  1\. The borrowing and lending process is more optimized as users do not have to withdraw/reserve two tokens to keep the ratio (price) the same.

![](/files/-MRf7Z3-RFulq7VXL2by)

***GAS used for initial testing of smart contracts January 4th 2021 was on average cheaper than Uniswap V2. (Please note contracts were not optimized when testing, and rewards had not been added).***

## Virtual Pair

MonoX liquidity pools consist of Token A and a Virtual Pair. The Virtual Pair is the liquidity pool for a regular ERC20 token and the virtual stable token (vUNIT).

vUNIT does not actually exist in the pool, which is why it can be thought of as virtual. Instead, vUNIT is expressed as a balance in the pool. For each liquidity pool, the balance is initially zero. However, when Token A is sold, the result is that the Token A balance decreases, and the vUNIT balance increases. The opposite is also true, and when Token A is bought, the inverse is reflected in the vUNIT balance.

As such, the virtual vUNIT balance can be represented as both positive and negative, depending on buying and selling pressure. When Token A is bought more than it is sold the vUNIT balance is positive; however, when Token A is sold more than it is bought, the vUNIT balance will become negative.

When listing a new token, the liquidity pool requires the vUNIT balance always to be non-negative. This is a security feature to create trustless listings of new tokens, while at the same time mitigating against the bad actors listing a token at a certain price and then selling more of the same token. This feature requires someone to purchase Token A first and then the pool will start having a positive vUNIT balance. Once the pool has a positive vUNIT balance, then it is possible to sell more of Token A. However, it is impossible to sell more tokens than have been bought.

![](/files/6iEnLHvKOHZDAWpWLN3g)

## vUNIT *Stablecoin*

#### *New types of stablecoins are needed in order to create a more stable and secure DeFi ecosystem. That’s where* vUNIT *comes in.*

### **What is** vUNI&#x54;**?**

vUNIT is our new kind of stablecoin introduced by MonoX, it is the glue that holds the protocol together. Our protocol solves the capital inefficiencies of liquidity pool pairs by grouping deposited tokens into a virtual pair with the vUNIT stablecoin. This allows us to offer single token pools whereby the user only needs to deposit one token to the pool instead of two. vUNIT is backed by all the assets in MonoX pools that have a positive vUNIT balance.

When a user first deposits liquidity to create a new pool, they set a starting price for the asset. This means that every asset in MonoX pools expresses their value in vUNIT. Therefore trading works by forming a similar pricing curve to Uniswap except while they use the ratio between two tokens, we have a starting price and a would be price.

If a user sells from the starting price the asset depreciates in value, if someone buys from the starting price the asset appreciates in value. As such, we use starting price and would be price instead of the ratio between Token A and Token B in the xy=k constant product formula. Our pricing algorithm is based on Uniswap’s model found [here](https://github.com/runtimeverification/verified-smart-contracts/blob/uniswap/uniswap/x-y-k.pdf). However in this calculation vUNIT supply is equal to infinity which programs it to have no slippage and always peg to USD 1:1.<br>

![Example trade and vUNIT balance in the Pool](/files/2KdThOwFa84xk1kxvxLD)

### **How To Get** vUNIT

Users can swap any ERC token directly to vUNIT.

When users withdraw liquidity, they will receive vUNIT if the stablecoin virtual balance is positive in an official pool.

### **How is** vUNIT **Backed?**

The pair is virtual. vUNIT is a real stablecoin. vUNIT is technically backed by all the assets in the pool. However, it’s more accurate to say that it is backed by the sell function because when a user sells into vUNIT it mints the physical stablecoin. In essence, vUNIT is backed by the liquidity itself, not the assets. vUNIT is only backed when there is a positive vUNIT balance in the pool. Trustless listing pools cannot go below 0 for vUNIT balance.

### **How does** vUNIT **hold its peg?**

All the assets in the pools express their value in terms of vUNIT. The supply of vUNIT is fixed at infinity which pegs 1:1 with USD.

### **How would** vUNIT **lose its peg?**

If several different assets were artificially held at a price different to the market price, it would cause the vUNIT to lose its peg. However, vUNIT would retain its peg as arbitrageurs would step in to trade the differences if the assets are not priced similarly to what’s on the market.

### **Can I use** vUNI&#x54;**?**

Yes, you can mint vUNIT by trading directly into it.

## Monoswap Equations

![](/files/-MRg9QDhNQPgVTIsLC8O)

![](/files/-MRf7Z32avnz9MfVx6bG)

## Swapping

The swapping process works exactly the same as a paired liquidity pool.

In each pool, Token A is paired with vUNIT. Exchanging Token A with Token B works by swapping Token A to vUNIT and then from vUNIT to Token B.&#x20;

This means that every trade is always the same 0.3% fee, and there are never more than two swaps taking place like in paired liquidity pool AMMs.&#x20;

The changes in the vUNIT balance (+ or -)  from the starting price initially set when adding liquidity form the pricing curve we are all familiar with. <br>

![](/files/y7x8zx1uJYPqSx3YLxK2)

![Example trade and vUNIT balance](/files/MVtVM2vCwatPeJuRkmBh)

![How swappping between two non-vUNIT tokens works](/files/mpCIAAjOwjLJ9MkO7wNT)

###

### Adding Liquidity

Adding Liquidity on Monoswap works exactly the same as in paired liquidity pools:&#x20;

When an LP adds liquidity to the pool for token A, the price stays the same. The amount of Token A increases in the pool, and therefore the liquidity pool reserve increases. In exchange for providing liquidity, the LP receives their share of the liquidity reserve and the ERC1155 LP token. Liquidity providers receive a share of the fees proportional to their share of the liquidity reserve.&#x20;

![Providing Liquidity on Monoswap](/files/NlHAjOJx4dbmHBTfcEGu)

### Removing Liquidity

Removing Liquidity works exactly the same as a paired pool:

When one removes liquidity from the pool for Token A, the price of the token stays the same. The pool burns the liquidity provider’s ERC 1155 LP token. In exchange, the pool transfers to the user their share of Token A’s virtual pair’s net value. When the vUNIT balance is positive, the user will get their share of vUNIT plus their share of Token A. When the vUNIT balance is negative, the user will receive their share of Token A, minus their share of vUNIT debt valued in Token A.<br>

![Removing Liquidity on Monoswap](/files/VOvGc6ZCgWuonISdFuC8)

## Official Pools and Trustless Listing Pools

We will launch two kinds of liquidity pools. There will be trustless listing pools, whereby any user is able to launch a token and create a liquidity pool. Additionally, we will have ‘Official Pools’ which have passed a community DAO vote to become an official MonoX pool.&#x20;

Such a system is beneficial to our ecosystem for 3 primary reasons:&#x20;

1. **Increased Decentralization** - Single token design means that as a developer or project, you do not need a huge amount of capital (equivalent amount of ETH) to launch your token. Projects can save capital for what matters most, development, testing and auditing. <br>
2. **User Security** — We are aware that users are weary of sketchy projects in the DeFi space. To combat that, Trustless Listing Pools on Monoswap will have vUNIT balances that cannot go below zero. However, it is still up to the community to always check the contract address and use their discretion when investing in a new project.<br>
3. **Quality Control and Regulation** — One of our primary concerns is security and with Trustless Pools as well as Official Pools, we can easily separate the scam projects while supporting and promoting genuine projects. We all know DeFi is saturated with scammers and “pump and dump” projects. As we scale up to offer fair launch services we make it easier for the true and dedicated developers and projects to be recognized.&#x20;

### Trustless Listing

Trustless listing means that anyone (project or developer) can write a smart contract, create a pool for their token, and add liquidity so it can be launched and traded. However, a built-in feature to safeguard against malicious token listings is that for trustless listings, the vUNIT balance is not allowed to go past 0.

By not allowing the vUNIT balance to go below 0, we can prevent malicious actors listing a token and selling it back to themselves. If the vUNIT balance goes to 0 then people cannot sell the token anymore. However, it is still possible to buy the token. As a result, a user cannot list a token, set the price and add liquidity, then sell all the tokens back themselves into vUNIT.

### How do Trustless Listing Pools Become Official Pools?&#x20;

A proposal will be made for the pool and the community will vote on the pool to be accepted as an Official Pool.&#x20;

However, upon launching, we will create Official Pools for some of the projects that are recognized as genuine. The community will be able to provide liquidity on these pools immediately when we launch. Additionally, we will reach out to partner projects with the aim of setting up an official pool for their token and seeding the pool with liquidity should they wish to.

![How trustless listing pools become Official Pools](/files/-MRfUJiMfGk8ef5HoHun)

## $MONO Token

*(Please note tokenomics are not final and subject to change before launch. Updates will be relayed.)*

Tokenomics are not final and are subject to change prior to initial launch

$MONO is the governance token for MonoX. $MONO holders will be able to participate in DAO votes and own the treasury. A portion of protocol fees will go to the treasury.

Our tokenomics ensure:

* Utility through Governance
* Network participation
* Incentivization mechanisms for liquidity providers.
* Retroactive token distribution via airdrop to reward early beta users.
* Long term value accrual:\
  i. Network effect provides impetus for token value appreciation as MonoX protocol grows.

### **Supply**

1. Max Supply: 100,000,000 MONO token (ERC20)
2. Growth: 42,000 initially, issue per 6,000 blocks, decay at 0.999

### Minting vs Burning

1. LPs providing liquidity in selected/promo pools will get non-transferrable $MONO shares
2. Stake promo assets to get $MONO tokens:\
   a. Protocol fees are allocated for purchasing and burning $MONO tokens. The initial reward will be 42,000 MONO issued per 6,000 blocks decay at 0.999&#x20;
3. Removing liquidity burns non-transferrable $MONO shares accordingly.
4. Revenue is also allocated to our DAO Treasury owned by $MONO token holders

### **Future MONO Token** **(ERC20)**

* Future MONO is an ERC20 token that is tradable just like any other ERC20 token.
* At TGE Future MONO is distributed to Seed and Strategic holders.&#x20;
* Future MONO releases the underlying MONO tokens based on the maturation schedule.
* It allows us to release MONO slower while at the same time giving investors liquidity and control over when they wish to sell their tokens.

### **Initial Distribution**

1. % of $MONO tokens will be sold in Seed and Private round
2. We will list MONO on our own AMM for the community. Listing Date TBD.&#x20;

## Governance

$MONO holders will be able to vote on protocol tx fees, treasury revenue, and prospective new features. Our service provider is snapshot.org

Community voting will be based on a standard governance framework:

1. Each $MONO token will allow 1 vote for each proposal.
2. There is no minimum amount of $MONO required to participate in a vote.
3. The proposal will need to have equal to, or more than 51% of the votes cast in order to pass
4. Quorum for proposal voting will be set at 30% of circulating $MONO delegated to voting or else the proposal will not pass.
5. Each voting period will be 48 hours
6. Proposals that pass will be executed 48 hours after the vote


# Roadmap

**Q4 2021** Mainnet Launch - Monoswap and vCASH launch on Ethereum mainnet + Polygon with full swap and liquidity features.&#x20;

**Q1 2022** Relaunch, soft launch. Protocol Owned Liquidity&#x20;

**Q2 2022** Derivatives, more ecosystems supported and cross-chain swap&#x20;

**Q3 2022** Release IDO and launchpad product&#x20;

**Q4 2022** Orderbook trading


# Audits

| Audit Time               | Audit Report                                                                                                                                                                                                                                                                         | Auditor                                     |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------- |
| May 3rd-15th, 2021       | [Halborn Audit Report](https://github.com/HalbornSecurity/PublicReports/blob/master/Solidity%20Smart%20Contract%20Audits/MonoX_Smart_Contract_Security_Audit_Report_Halborn_v1_1.pdf?hss_channel=lcp-28871137)                                                                       | [**Halborn**](https://halborn.com/)         |
| Sep 6th-19th, 2021       | [Halborn Audit Report](https://drive.google.com/file/d/1nFS62QDifV4B8Mjo9Pj_rJ4fUujeVfq_/view?usp=sharing)                                                                                                                                                                           | [**Halborn**](https://halborn.com/)         |
| May 17th- June 8th, 2021 | <p><a href="https://drive.google.com/file/d/1WtlRAAfBF4HyQcUHKSJtT6MD7-mPN5Vz/view?usp=sharing">PeckShield Audit Report For Swap</a></p><p><a href="https://drive.google.com/file/d/1V2GRFZYIXPY3omYndR0N_NgnDM9LM_3B/view?usp=sharing">PeckShield Audit Report For Staking </a></p> | [**PeckShield**](https://peckshield.com/en) |


