# Introduction

This documentation's purpose is to introduce the user to the services provided by UNCX Network and to serve as a guide for using those services.

Our developer docs are available under <https://docs.uncx.network/guides/for-developers>

## What is UNCX Network?

Born in June 2020, UNCX Network (formerly UniCrypt) is a one-stop shop DeFi protocol providing 5 main services with several sub-features. Our mission is to make creating and launching a project a breeze, while making it as safe as possible for the potential investors. We have everything you need to launch the project you want, from setting it up in the beggining, to locking the liquidity after a successful launch!

[UNCX related links](https://linktr.ee/uncx.Network)

### &#x20;Services&#x20;

\
[**Liquidity Lockers**](https://docs.unicrypt.network/guides/for-investors/liquidity-lockers)

\
Developers listing their tokens on decentralized exchanges are granted LP tokens for providing liquidity to the pool. If the LP tokens are unlocked, that creates a risk of developers running away with investors' money by draining the liquidity from the pool. This is where Liquidity Lockers come into play. We invented such concept back in 2020, to protect investors from such risks and making it safer to invest. The locked tokens stay in a smart contract for a pre-determined amount of time, making it impossible to withdraw the liquidity from the pool.\
\
Once the LP tokens are locked, they can't be withdrawn/moved until the unlock date passes.

\
[**Token Vesting**](https://docs.unicrypt.network/guides/for-investors/token-vesting)

\
Token Vesting is basically Liquidity Locking, but for regular tokens. It allows locking **n** amount of tokens to be lock for **x** amount of time. It prevents the developers from manipulating the price action of their token by selling them all at once(or at all) and allows a sustainable growth of the project by showing their commitment to the community.\
\
Once the tokens are vested, then can't be withdrawn/moved until the unlock date passes.

\
[**Staking/Staking-as-a-service**](https://docs.unicrypt.network/guides/for-investors/staking)

\
Our staking contract and UI allow developers to create their own staking pool, to allow their communities staking the token of their choice, and to reward them with tokens of their choice via reward pools. \
\
For investors, we offer two types of boosts, time boost and UNCL boost, granting an increased share weight and rewards.

#### [ENMT Token Minter](https://docs.unicrypt.network/guides/for-developers/token-minter)

\
Our Minter is aimed at developers with real product planned, but no token, no solidity skills. This is a good place to start. Tokens created by our minter are already pre-audited, meaning there is no need to audit them yourself. If you launch a token created by our Minter, the information about it will be attached to your presale page, letting potential investors know that the contract of your token is audited and safe.&#x20;

***`DISCLAIMER:`**` ``We are trying our best to protect investors from any form of possible scam, although our platform is purely decentralized, meaning everyone can create and launch a project using our launchpad. You should always DYOR before investing to make sure you know the risks. Nothing in this documentation is a financial advice.`*&#x20;

\ <br>


# Availability and Fees

On this page you can find what blockchains and exchanges our services are available on and the respective fees.

## Availability

{% content-ref url="/spaces/inUXJ41rMT4w6Y9U1Kol/pages/Z8nmSfmaE9gJneYBntQz" %}
[Availability](/availability-and-fees/availability)
{% endcontent-ref %}

## Fees

{% content-ref url="/spaces/inUXJ41rMT4w6Y9U1Kol/pages/oM9ipB1ETw4rn6EHHlYI" %}
[LP Lock V2](/availability-and-fees/fees/lp-lock-v2)
{% endcontent-ref %}

{% content-ref url="/spaces/inUXJ41rMT4w6Y9U1Kol/pages/46Z1Tb4OJWNXwtmf7zUe" %}
[LP Lock V3](/availability-and-fees/fees/lp-lock-v3)
{% endcontent-ref %}

{% content-ref url="/spaces/inUXJ41rMT4w6Y9U1Kol/pages/hJ8TesWf520T3PIBEbFJ" %}
[LP Lock V4](/availability-and-fees/fees/lp-lock-v4)
{% endcontent-ref %}

{% content-ref url="/spaces/inUXJ41rMT4w6Y9U1Kol/pages/e4w2nkZHuUwLiveFsTMO" %}
[Solana Lockers](/availability-and-fees/fees/solana-lockers)
{% endcontent-ref %}

{% content-ref url="/spaces/inUXJ41rMT4w6Y9U1Kol/pages/yYTwvbzjFdfpEFvrxhjK" %}
[Token Vesting](/availability-and-fees/fees/token-vesting)
{% endcontent-ref %}

{% content-ref url="/spaces/inUXJ41rMT4w6Y9U1Kol/pages/0ZR9BHcZiAQQyBNnFdzF" %}
[Token Minter](/availability-and-fees/fees/token-minter)
{% endcontent-ref %}

{% content-ref url="/spaces/inUXJ41rMT4w6Y9U1Kol/pages/SSg6oMxO6D7G5eAqVXHx" %}
[Staking](/availability-and-fees/fees/staking)
{% endcontent-ref %}

{% content-ref url="/spaces/inUXJ41rMT4w6Y9U1Kol/pages/g7jy3KKY5DYXJrDLdovd" %}
[UNCX Info Bot](/availability-and-fees/fees/uncx-info-bot)
{% endcontent-ref %}

{% content-ref url="/spaces/inUXJ41rMT4w6Y9U1Kol/pages/38aHCYobM1vAR5PVYejG" %}
[Stealth Launch](/availability-and-fees/fees/stealth-launch)
{% endcontent-ref %}

{% content-ref url="/spaces/inUXJ41rMT4w6Y9U1Kol/pages/vMF2VsoT4GrAOTnkdM9t" %}
[Disperser](/availability-and-fees/fees/disperser)
{% endcontent-ref %}


# Availability

<table><thead><tr><th width="176.1875">Product</th><th align="center">ETH</th><th align="center">BSC</th><th align="center">BASE</th><th align="center">ARB</th><th align="center">AVAX</th><th align="center">Polygon</th><th align="center">OP</th><th align="center">Unichain</th><th align="center">SOL</th><th align="center">TELOS</th><th align="center">IOTA</th><th align="center">SEI</th><th align="center">Sepolia</th><th width="122.33203125" align="center">HyperEVM</th><th align="center">Robinhood</th></tr></thead><tbody><tr><td><a href="https://docs.uncx.network/guides/for-projects/liquidity-lockers-v2">Liquidity Lockers V2</a></td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">N/A</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">❌</td></tr><tr><td><a href="https://docs.uncx.network/guides/for-projects/liquidity-lockers-v3">Liquidity Lockers V3</a></td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">N/A</td><td align="center">❌</td><td align="center">❌</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td></tr><tr><td><a href="https://docs.uncx.network/guides/for-projects/liquidity-lockers-v4">Liquidity Lockers V4</a></td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">✅</td><td align="center">❌</td><td align="center">✅</td><td align="center">N/A</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td></tr><tr><td><a href="https://docs.uncx.network/guides/for-projects/token-vesting">Token Vesting</a></td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">✅</td><td align="center">❌</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">❌</td></tr><tr><td><a href="https://docs.uncx.network/guides/for-projects/token-minter">Token Minter</a></td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">❌</td></tr><tr><td><a href="https://docs.uncx.network/guides/for-projects/staking-as-a-service">Staking</a></td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">❌</td><td align="center">✅</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td></tr><tr><td><a href="https://docs.uncx.network/guides/for-projects/stealth-launch">Stealth Launch</a></td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">✅</td><td align="center">❌</td><td align="center">❌</td></tr><tr><td><a href="https://docs.uncx.network/uncx-info-bot-manual">UNCX Info Bot</a></td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td></tr><tr><td><a href="https://docs.uncx.network/guides/for-projects/disperser">Disperser</a></td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">✅</td><td align="center">❌</td><td align="center">✅</td><td align="center">❌</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">❌</td></tr></tbody></table>

Note: to check the availability of the LP Lockers for Solana, check [this page](https://docs.uncx.network/guides/for-projects/solana-lockers).


# Fees


# LP Lock V2

| **Blockchain** | **Fee**   |
| -------------- | --------- |
| Ethereum       | 0.1 ETH   |
| Base           | 0.1 ETH   |
| BSC            | 0.25 BNB  |
| Unichain       | 0.1 ETH   |
| Avalanche      | 1 AVAX    |
| Polygon        | 100 MATIC |
| Optimism       | 0.04 ETH  |
| Telos          | 1 TLOS    |
| IOTA           | 1 IOTA    |
| SEI            | 0 SEI     |
| Arbitrum One   | 0.05 ETH  |

**LP Lock, Incremental lock:**

For all blockchains, 1% of the locked LP is paid as a fee.

**Collect (Aerodrome):**

1% of the collected tokens is paid as a fee.\
\
**Split Lock:**\
\
For all blockchains, standard flat fee (table above).

**LP Relock**

Only the 1% on the relocked LP fee applies, there is no additional flat fee per blockchain.&#x20;

**Change Ownership**

Free.

**PCS v1 to v2 migration (migrating locked LP in v1 to v2)**

1% of the migrated locked supply paid as a fee.


# LP Lock V3

<table><thead><tr><th width="128.16796875" align="center">Chain</th><th width="131.6328125" align="center" valign="middle">Flat fee</th><th align="center">Default</th><th align="center">LVP</th><th align="center" valign="middle">LLP</th></tr></thead><tbody><tr><td align="center">ETH</td><td align="center" valign="middle">0.1ETH</td><td align="center">0.5% liquidity and 2% collect fee </td><td align="center">0.8% liquidity and 1% collect fee</td><td align="center" valign="middle">0.3% liquidity and 3.5% collect fee</td></tr><tr><td align="center">BSC</td><td align="center" valign="middle">0.2BNB</td><td align="center">0.5% liquidity and 2% collect fee </td><td align="center">0.8% liquidity and 1% collect fee</td><td align="center" valign="middle">0.3% liquidity and 3.5% collect fee</td></tr><tr><td align="center">Base</td><td align="center" valign="middle">0.1ETH</td><td align="center">0.5% liquidity and 2% collect fee </td><td align="center">0.8% liquidity and 1% collect fee</td><td align="center" valign="middle">0.3% liquidity and 3.5% collect fee</td></tr><tr><td align="center">Robinhood</td><td align="center" valign="middle">0.1ETH</td><td align="center">0.5% liquidity and 2% collect fee </td><td align="center">0.8% liquidity and 1% collect fee</td><td align="center" valign="middle">0.3% liquidity and 3.5% collect fee</td></tr><tr><td align="center">ARB</td><td align="center" valign="middle">Free</td><td align="center">0.5% liquidity and 2% collect fee </td><td align="center">0.8% liquidity and 1% collect fee</td><td align="center" valign="middle">0.3% liquidity and 3.5% collect fee</td></tr><tr><td align="center">HyperEVM</td><td align="center" valign="middle">3 HYPE</td><td align="center">1% liquidity and 2% collect fee</td><td align="center">1.5% liquidity and 1% collect fee</td><td align="center" valign="middle">0.5% liquidity and 5% collect fee</td></tr><tr><td align="center">AVAX</td><td align="center" valign="middle">Free</td><td align="center">0.5% liquidity and 2% collect fee </td><td align="center">0.8% liquidity and 1% collect fee</td><td align="center" valign="middle">0.3% liquidity and 3.5% collect fee</td></tr><tr><td align="center">Polygon</td><td align="center" valign="middle">100 POL</td><td align="center">0.5% liquidity and 2% collect fee </td><td align="center">0.8% liquidity and 1% collect fee</td><td align="center" valign="middle">0.3% liquidity and 3.5% collect fee</td></tr><tr><td align="center">OP</td><td align="center" valign="middle">Free</td><td align="center">0.5% liquidity and 2% collect fee </td><td align="center">0.8% liquidity and 1% collect fee</td><td align="center" valign="middle">0.3% liquidity and 3.5% collect fee</td></tr><tr><td align="center">SEI</td><td align="center" valign="middle">Free</td><td align="center">0.5% liquidity and 2% collect fee </td><td align="center">0.8% liquidity and 1% collect fee</td><td align="center" valign="middle">0.3% liquidity and 3.5% collect fee</td></tr><tr><td align="center">Sepolia</td><td align="center" valign="middle">Free</td><td align="center">0.5% liquidity and 2% collect fee </td><td align="center">0.8% liquidity and 1% collect fee</td><td align="center" valign="middle">0.3% liquidity and 3.5% collect fee</td></tr></tbody></table>

**LP Relock**

Free

**Change Ownership**

Free


# LP Lock V4

| **Blockchain** | **Fee**   |
| -------------- | --------- |
| Ethereum       | 0.1 ETH   |
| Unichain       | 0.1 ETH   |
| Base           | 0.1 ETH   |
| BSC            | 0.2 BNB   |
| Polygon        | 100 MATIC |
| Arbitrum One   | 0.05 ETH  |

&#x20;\+ 1% of the locked LP + 2% of the collected fees.

**LP Relock**

Free

**Change Ownership**

Free


# Solana Lockers

<table><thead><tr><th></th><th width="232" align="center">LP Lock</th><th align="center" valign="middle">Increment</th><th align="center">Split Lock</th><th align="center">Relock</th><th align="center">Ownership transfer</th></tr></thead><tbody><tr><td>Raydium CPMM</td><td align="center">0.75 SOL + 1% of LP locked/4% collect fee</td><td align="center" valign="middle">1% of LP from the increment</td><td align="center">0.2 SOL</td><td align="center">1% of the LP locked</td><td align="center">Free</td></tr><tr><td>Raydium CP Swap</td><td align="center">0.75 SOL + 1% of LP locked/4% collect fee</td><td align="center" valign="middle">1% of LP from the increment</td><td align="center">0.75 SOL</td><td align="center">1% of the LP locked</td><td align="center">Free</td></tr><tr><td>Raydium CLMM</td><td align="center">0.75 SOL + 1% of LP locked/4% collect fee</td><td align="center" valign="middle">N/A</td><td align="center">N/A</td><td align="center">1% of the LP locked</td><td align="center">Free</td></tr></tbody></table>


# Token Vesting

| **Blockchain** | **Fee**                        |
| -------------- | ------------------------------ |
| Ethereum       | 0.05 ETH + 0.1% Vested Tokens  |
| Base           | 0.05 ETH + 0.1% Vested Tokens  |
| BSC            | 0.2 BNB + 0.1% Vested Tokens   |
| Unichain       | 0.05 ETH + 0.1% Vested Tokens  |
| Avalanche      | 4 AVAX + 0.1% Vested Tokens    |
| Polygon        | 500 POL + 0.1% Vested Tokens   |
| Optimism       | 0.05 ETH + 0.1% Vested Tokens  |
| Telos          | 500 Telos + 0.1% Vested Tokens |
| SEI            | Free                           |
| Arbitrum One   | 0.05 ETH + 0.1% Vested Tokens  |
| Solana         | 0.5 SOL + 0.1% Vested Tokens   |

### Auto-claim (Solana only)

0.15 SOL


# Token Minter

| **Blockchain** | **Fee**   |
| -------------- | --------- |
| Ethereum       | 0.035 ETH |
| BSC            | 0.3 BNB   |
| Arbitrum One   | 0.035 ETH |
| Polygon        | 100 MATIC |
| Unichain       | Free      |
| Base           | 0.035 ETH |
| SEI            | 0 SEI     |
| Avalanche      | 3 AVAX    |
| TELOS          | Free      |
| IOTA EVM       | Free      |

plus 0.2% of the minted supply is taken as a fee.


# Staking

| **Blockchain** | **Fee**  |
| -------------- | -------- |
| Ethereum       | 0.15 ETH |
| BSC            | 1 BNB    |
| Avalanche      | 1 AVAX   |

plus 1% of the tokens added to the reward pool is taken as a fee.


# UNCX Info Bot

| Blockchain          | Fee  |
| ------------------- | ---- |
| Ethereum            | Free |
| Binance Smart Chain | Free |
| Polygon             | Free |
| Arbitrum One        | Free |
| Avalanche           | Free |
| Base                | Free |


# Stealth Launch

| **Blockchain** | **Fee**  |
| -------------- | -------- |
| Ethereum       | 0.04 ETH |
| Arbitrum One   | 0.04 ETH |
| Base           | 0.04 ETH |
| Avalanche      | 2 AVAX   |
| BSC            | 0.1 BNB  |
| Polygon        | 50 MATIC |
| Telos          | FREE     |
| IOTA           | FREE     |

Plus 1% of the liquidity locked.


# Disperser

| **Blockchain** | **Fee**  |
| -------------- | -------- |
| Ethereum       | 0.01 ETH |
| Arbitrum One   | 0.01 ETH |
| Base           | 0.01 ETH |
| Avalanche      | 1.3 AVAX |
| BSC            | 0.05 BNB |
| Polygon        | 125 POL  |
| Unichain       | 0.01 ETH |
| Telos          | FREE     |
| SEI            | FREE     |
| Base Sepolia   | 0.01 ETH |


# UNCX token

On this page you can read about both of our token, including its availability and utilities.

## UNCX

UNCX is a primary, deflationary governance token of the UNCX platform.<br>

### Utility

<table><thead><tr><th>Utility</th><th></th><th data-hidden></th></tr></thead><tbody><tr><td>Staking</td><td>Staking your UNCX allows you to receive yield in UNCX.</td><td></td></tr><tr><td>Staking boost</td><td>You can use your UNCX to boost your share weight on specific staking pools</td><td></td></tr><tr><td>Referral program</td><td>Holding UNCX makes you eligible for gaining rewards from our referral program</td><td></td></tr></tbody></table>

### Availability

Main DEX Pairs: [UniSwap V3 UNCX/ETH](https://app.uniswap.org/#/swap?inputCurrency=ETH\&outputCurrency=0xadb2437e6f65682b85f814fbc12fec0508a7b1d0\&use=V2)

`⚠️We also have a UNCX/ETH pair listed on Bilaxy, but we highly recommend not using or interacting with this pair. Our team has never been in contact with this provider, it is a ‘rogue’ listing. Exercise extreme caution️.`

### Other info

#### Detailed UNCX token specifications/burn history

Initial Supply : **50,000 UNCX**

Current Supply : **47650 UNCX**<br>

More info on [CoinGecko](https://www.coingecko.com/en/coins/unicrypt)

🔥 **UNCX burn history**

<table data-header-hidden><thead><tr><th>Burns</th><th>Date </th><th width="132">Amount</th><th>Blockchain</th></tr></thead><tbody><tr><td><strong>Burns</strong></td><td><strong>Date</strong></td><td><strong>Amount</strong></td><td><strong>Blockchain</strong></td></tr><tr><td><a href="https://etherscan.io/tx/0x602c0989e947a03018744eadc22bceb94be554d287b69a1e8aa89e358e24b21f">11</a></td><td>23rd Apr 2021</td><td>1000 UNCX</td><td>ETH</td></tr><tr><td><a href="https://etherscan.io/tx/0x62129c49dfade2285bbb36ab1d120e8788b6f8b1075c6293a2ace1cccad6d249">10</a></td><td>29th Jan 2021</td><td>350 UNCX</td><td>ETH</td></tr><tr><td><a href="https://etherscan.io/tx/0x1786cc192f1f89ba831b69abd62b0456d4854a2b2586041f102c4814e0dbf5f9">9</a></td><td>1st Dec 2020</td><td>63 UNCX</td><td>ETH</td></tr><tr><td><a href="https://etherscan.io/tx/0x7cc1a104e10891ac21e69a50f77610442be3a5d9663fd6e2d9a4bf673b34df91">8</a></td><td>26th Nov 2020</td><td>247 UNCX</td><td>ETH</td></tr><tr><td><a href="https://etherscan.io/tx/0x2be0aed0bd69b2e700337a7f3ba5f6269bb274612b4ac909234ca97cb4138363">7</a></td><td>26th Nov 2020</td><td>438 UNCX</td><td>ETH</td></tr><tr><td><a href="https://etherscan.io/tx/0x2003253d8e80efd68c253600bfe76f5c947be2d01b72223ab5484ad567c391d6">6</a></td><td>22nd Nov 2020</td><td>67 UNCX</td><td>ETH</td></tr><tr><td><a href="https://etherscan.io/tx/0xa2334340a4cd7c42fd1921d53b155aaf2be31c7c3c444f1adb841af7e46fff8b">5</a></td><td>19th Nov 2020</td><td>66 UNCX</td><td>ETH</td></tr><tr><td><a href="https://etherscan.io/tx/0xcd75c224124f5f617b933f051f187e0905e6c8d5e221ccb80206a8f3485de848">4</a></td><td>18th Nov 2020</td><td>92 UNCX</td><td>ETH</td></tr><tr><td><a href="https://etherscan.io/tx/0xecde1aad017527c0bda230d6dff8ec3aa5dd9ae9676d8a0ece929abf4cadc525">3</a></td><td>14th Nov 2020</td><td>11 UNCX</td><td>ETH</td></tr><tr><td><a href="https://etherscan.io/tx/0x20e98537c03514f3c5aa71dd33ea24c3db7f18590a0dcdc5d37b4ae6ec91c4ee">2</a></td><td>10th Oct 2020</td><td>13 UNCX</td><td>ETH</td></tr><tr><td><a href="https://etherscan.io/tx/0x1830c1db44743569184f09f0bdbcea1fabff32e728ab923e1e852151fcb9ec02">1</a></td><td>18th Oct 2020</td><td>3 UNCX</td><td>ETH</td></tr></tbody></table>

#### Development wallets

The UNCX foundation wallets are used to fund development and grow the UNCX project, this includes marketing bounties, floating initial liquidity on additional exchanges, payment to developers and core team members and any additional ways of increasing exposure and growing the project.

* [0x60e2E1b2a317EdfC870b6Fc6886F69083FB2099a](https://etherscan.io/address/0x60e2e1b2a317edfc870b6fc6886f69083fb2099a)
* [0xAA3d85aD9D128DFECb55424085754F6dFa643eb1](https://etherscan.io/address/0xAA3d85aD9D128DFECb55424085754F6dFa643eb1)

### How to bridge your UNCX/UNCL from Binance Smart Chain to Gnosis Chain

**`DISCLAIMER:`**` ``⚠ UNCX is not responsible for any losses caused by the user error in the process below. Make sure to follow the guide carefully and double check all the inputs before proceeding. Also keep in mind, that this bridge is not a product of UNCX, and we have no control over the changes occurring to the bridge ⚠`

#### UNCX&#x20;

First, make sure you are connected to the website. To do that, select the "Connect to Web3" button and log into your wallet.\
\
![](/files/8DnJB46ZzbopS9s0Tbrs)

Open the link below and open the "Write as Proxy" tab.\
<https://bscscan.com/address/0x09a6c44c3947B69E2B45F4D51b67E6a39ACfB506#writeProxyContract>

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

Open the "approve" method, fill the fields displayed below with following data:

1. The contract address of the bridge - 0xF0b456250DC9990662a6F25808cC74A6d1131Ea9
2. The amount of UNCX you want to bridge including decimals (amount + 18 zeros). On the screenshot below you can see that the data in the \_value field is equal to 1 UNCX

Select the "Write" button and accept the transaction in your wallet.

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

Now we can proceed to the bridging. Open the link below and select the "Write as Proxy" tab again (remember to also connect your wallet)\
<https://bscscan.com/address/0xf0b456250dc9990662a6f25808cc74a6d1131ea9#writeProxyContract#F13>\
\
After opening the "Write as Proxy" tab, scroll down untill you find the 14th method, called "relayTokens". Into the the fields presented below input:

1. The address of the token. In this case it will be 0x09a6c44c3947B69E2B45F4D51b67E6a39ACfB506
2. Address of the receiver. That wallet will receive the bridged tokens on Gnosis Chain
3. The amount including the decimals. The value presented below is equal to 1 UNCX

Proceed by selecting "Write" and confirm the transaction in your wallet.

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

**UNCL**

First, make sure you are connected to the website. To do that, select the "Connect to Web3" button and log into your wallet.\
\
![](/files/8DnJB46ZzbopS9s0Tbrs)

Open the link below and open the "Write as Proxy" tab.\
[https://bscscan.com/address/0x0E8D5504bF54D9E44260f8d153EcD5412130CaBb#writeProxyContract#F1<br>](<https://bscscan.com/address/0x0E8D5504bF54D9E44260f8d153EcD5412130CaBb#writeProxyContract#F1&#xA;>)

Open the "approve" method, fill the fields displayed below with following data:

1. The contract address of the bridge - 0xF0b456250DC9990662a6F25808cC74A6d1131Ea9
2. The amount of UNCL you want to bridge including decimals. On the screenshot below you can see that the data in the \_value field is around 0.17 UNCL.

Select the "Write" button and accept the transaction in your wallet.

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

Now we can proceed to the bridging. Open the link below and select the "Write as Proxy" tab again (remember to also connect your wallet)\
<https://bscscan.com/address/0xf0b456250dc9990662a6f25808cc74a6d1131ea9#writeProxyContract#F13>\
\
After opening the "Write as Proxy" tab, scroll down untill you find the 14th method, called "relayTokens". Into the the fields presented below input:

1. The address of the token. In this case it will be 0x0e8d5504bf54d9e44260f8d153ecd5412130cabb
2. Address of the receiver. That wallet will receive the bridged tokens on Gnosis Chain
3. The amount including the decimals. The value presented below is around 0.17 UNCL.

Proceed by selecting "Write" and confirm the transaction in your wallet.<br>

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


# Guides

In this section you will find guides for both investors and project owners on how to use our services and how to create using them.

## Quick navigation:

### For investors:

[Initial Liquidity Offering (ILO)](https://docs.unicrypt.network/guides/for-investors/initial-liquidity-offering-ilo)

[Liquidity Lockers](https://docs.unicrypt.network/guides/for-investors/liquidity-lockers)

[Token Vesting](https://docs.unicrypt.network/guides/for-investors/token-vesting)

[Staking](https://docs.unicrypt.network/guides/for-investors/staking)

### For project owners:

[Initial Liquidity Offering (ILO)](https://docs.unicrypt.network/guides/for-developers/initial-liquidity-offering-ilo)

[Liquidity Lockers (V2)](https://docs.uncx.network/guides/for-projects/liquidity-lockers-v2)\
\
[Liquidity Lockers (V3)](https://docs.uncx.network/guides/for-projects/liquidity-lockers-v3)

[Token Vesting](https://docs.unicrypt.network/guides/for-developers/token-vesting)

[Staking-as-a-service](https://docs.unicrypt.network/guides/for-developers/staking-as-a-service)

[Token Minter](https://docs.unicrypt.network/guides/for-developers/token-minter)


# For Investors

Under this section you will find useful information about participating in ILOs and researching the projects you want to invest in.


# Liquidity Lockers

In this section you will find everything you need to know about checking if the project's liquidity is locked.

To understand what liquidity lockers are, first you have to be familiar with concepts of liquidity pools.

If you are not, we recommend watching [this video](https://youtu.be/cizLhxSKrAc).

## What is a liquidity locker?

Developers listing their tokens on decentralized exchanges are granted LP tokens when they initiate a pool. These LP tokens, once in their possession, can be transferred like any other tokens on the blockchain they have been minted on, or bridged to another one.

A liquidity locker allows the developer to store these LP tokens in a smart contract, revoking his permission to move these LP from a start date to an end date.&#x20;

For a deeper dive into this topic, we recommend having a read of [our medium article](https://unicrypt.medium.com/liquidity-locking-overview-112329ecfaaa) about liquidity locking.


# How can I check if the project locked liquidity?

## Guide <a href="#how-can-i-check-if-the-project-locked-liquidity" id="how-can-i-check-if-the-project-locked-liquidity"></a>

First, from our UI, select the "Explore" tab. Select the search button in the top right corner of the screen.

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

Next step is searching for the pair. Input the pair address into the searchbar and select the result.

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

You will be taken to the page of that pair. Here you will be able to browse all the details about the liquidity locks for that pair.

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


# Token Vesting

In this section you will find everything you need to know about checking if the project's tokens are locked.

## What is token vesting?

While our Liquidity Locker allows you to lock Liquidity Provider tokens to prevent classic "rug pulls", it does not allow single tokens (i.e. not LP pairs) to be time-locked.

This is what our Token Vesting feature does.

Token vesting is simply the ability to lock ***n*** amount of token for ***x*** amount of time as a commitment to hold the token.

A clear token vesting schedule is a sign for an investor that project is serious about their development and is transparent to their community. Locked tokens cannot be sold or withdrawn before the unlock date, which may help you in deciding if you want to invest in a specific project or not.&#x20;

Vested tokens are time-locked in a smart contract, fully audited by Chainsulting, and cannot be sent, sold, added to liquidity or staked.


# How can I check if the project locked tokens?

## Guide

First, from our UI, select the "Explore" tab. Select the search button in the top right corner of the screen.

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

Next step is searching for the token. Input the token address into the searchbar and select the result.

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

You will be taken to the page of that token. Here you will be able to browse all the details about the locks for that token.

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


# Staking

On this page you will find everything you need to know about using a staking/farming service.

## Product summary

This whole page is dedicated for investors who wish to stake their tokens in a farm available on our platform.&#x20;

We offer three tiers of UNCX staking pools for our users, all with different minimum/maximum stake. In addition to that, we have many pools created by our customers available for you to stake.

Apart from just normal staking, we also offer two boost methods available, which can improve your rewards and increase your share of the pool.

## How to stake?&#x20;

First, you have to locate our Farms, to do that select the dropdown menu next to our logo in our UI and select "Farms". You can also select [this page](https://app.uncx.network/staking/explore).

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

You will be taken to the list of the available staking pools. Select the one you are interested in. \ <br>

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

After selecting one of the staking pools you will be taken to its page. In order to stake your tokens find the staking panel (located on the right side of the page)\ <br>

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

Input the amount of tokens you want to stake, then scroll down to select a time boost option.

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

The time boost options may vary depending on the staking pool you selected. Remember that once you selected a time boost option you cannot withdraw your tokens before the lock expires. \
\
Select the "Approve" button, and approve the amount of tokens you want to stake. Then select the "Stake" button to stake your tokens.&#x20;

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

The last step is to subscribe to the reward pools in order to be eligible for staking rewards (**if you don't do it you will not get rewarded for staking your tokens**). In order to do that select the "Subscribe all" button visible in the "Rewards" section. \
\
After you successfully staked and subscribed to the reward pools you will be able to harvest your rewards with the "Harvest all" button. All harvestable rewards are visible in the "Rewards" section.<br>

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

If you select a specific reward pool, you will see the screen presented below. You will be able to see more details about the reward pool you are browsing in there.&#x20;

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

## How to withdraw my staked tokens?

In order to withdraw your staked tokens visit the staking pool page that you are staking your tokens on. In order to do that you can open the "Manage" tab and proceed to "Your Pools".

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

After selecting the pool you want to withdraw from, open the "Withdraw" tab on the right side panel.&#x20;

Select the amount you would like to withdraw and select "Withdraw Token" button.&#x20;

<figure><img src="/files/6jJc2x5Q8MPRARJsIR1U" alt=""><figcaption></figcaption></figure>

\ <br>

## How to boost my stake?

In order to boost your stake visit the staking pool page that you are staking on (to check how to do that see the previous section). Proceed to the "Boost" tab. You can use your USDC (or UNCX for UNCX staking) to boost your stake and increase your rewards. \
\
Below the input field you will be informed how much your stake will be boosted for the amount of tokens you use. \
\
After selecting the amount select the "Boost" button.&#x20;

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

##


# How to stake?

## Guide <a href="#how-to-stake" id="how-to-stake"></a>

First, you have to locate our Farms, to do that select the dropdown menu next to our logo in our UI and select "Farms". You can also select [this page](https://app.uncx.network/staking/explore).

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F6mACwiqjYf7rtzveA8AO%252Fimage.png%3Falt%3Dmedia%26token%3Dced5dffb-8e40-40c8-94ba-c64ab7d0ac12&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=be737d23&#x26;sv=2" alt=""><figcaption></figcaption></figure>

You will be taken to the list of the available staking pools. Select the one you are interested in.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Fqp5DHqHEEXGbaez6CGdq%252Fimage.png%3Falt%3Dmedia%26token%3D2b95c977-c61f-4cbe-9d03-b2abe20868cd&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=cc9a71d8&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After selecting one of the staking pools you will be taken to its page. In order to stake your tokens find the staking panel (located on the right side of the page)

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FGnl9qfybb3JRSoN9rBqW%252Fimage.png%3Falt%3Dmedia%26token%3D508e4436-6ea7-40e9-849c-70498743cb58&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=facd601a&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Input the amount of tokens you want to stake, then scroll down to select a time boost option.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FLw7vSmlKw4tntOwYJvHy%252Fimage.png%3Falt%3Dmedia%26token%3D4fd9abcf-9e88-4972-99c0-87273206595a&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=49169c9b&#x26;sv=2" alt=""><figcaption></figcaption></figure>

The time boost options may vary depending on the staking pool you selected. Remember that once you selected a time boost option you cannot withdraw your tokens before the lock expires. Select the "Approve" button, and approve the amount of tokens you want to stake. Then select the "Stake" button to stake your tokens.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FLeNVPGsZ4i5fRIXhM0Ja%252Fimage.png%3Falt%3Dmedia%26token%3D704f6b4a-92e9-4d15-8157-16e6be4a234d&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=58d5151d&#x26;sv=2" alt=""><figcaption></figcaption></figure>

The last step is to subscribe to the reward pools in order to be eligible for staking rewards (**if you don't do it you will not get rewarded for staking your tokens**). In order to do that select the "Subscribe all" button visible in the "Rewards" section. After you successfully staked and subscribed to the reward pools you will be able to harvest your rewards with the "Harvest all" button. All harvestable rewards are visible in the "Rewards" section.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FtM4aSkVmIppcqjOPSL65%252Fimage.png%3Falt%3Dmedia%26token%3D473ec0c8-1530-4e75-a61e-6ee7dd826d76&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=62c1a07d&#x26;sv=2" alt=""><figcaption></figcaption></figure>

If you select a specific reward pool, you will see the screen presented below. You will be able to see more details about the reward pool you are browsing in there.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FYEtxBScXG6SUeumXqhWV%252Fimage.png%3Falt%3Dmedia%26token%3D854847ff-b970-4119-a581-76e6a27885ee&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=8092c071&#x26;sv=2" alt=""><figcaption></figcaption></figure>

### &#x20; <a href="#how-to-withdraw-my-staked-tokens" id="how-to-withdraw-my-staked-tokens"></a>


# How to withdraw my staked tokens?

## Guide <a href="#how-to-withdraw-my-staked-tokens" id="how-to-withdraw-my-staked-tokens"></a>

In order to withdraw your staked tokens visit the staking pool page that you are staking your tokens on. In order to do that you can open the "Manage" tab and proceed to "Your Pools".

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F6xFSJf9ZvOvVsOZvTxkf%252Fimage.png%3Falt%3Dmedia%26token%3D54095cd2-6925-4a09-a9a7-28c194a705be&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=63c0f7e1&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After selecting the pool you want to withdraw from, open the "Withdraw" tab on the right side panel.

Select the amount you would like to withdraw and select "Withdraw Token" button.

<br>

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FZ6OXt8nr9xRkOWk4OsGW%252Fimage.png%3Falt%3Dmedia%26token%3D670174b4-f426-46f8-a0f2-c870116c02a9&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=ba746331&#x26;sv=2" alt=""><figcaption></figcaption></figure>


# How to boost my stake?

## Guide <a href="#how-to-boost-my-stake" id="how-to-boost-my-stake"></a>

In order to boost your stake visit the staking pool page that you are staking on (to check how to do that see here). Proceed to the "Boost" tab. You can use your USDC (or UNCX for UNCX staking) to boost your stake and increase your rewards. Below the input field you will be informed how much your stake will be boosted for the amount of tokens you use. After selecting the amount select the "Boost" button.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FvUKQYwu0IahAp4X6VNdg%252Fimage.png%3Falt%3Dmedia%26token%3D3df2cacb-3037-4ac8-aa1d-8cda4cba1908&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=da6a4d78&#x26;sv=2" alt=""><figcaption></figcaption></figure>


# For Projects

Under this section you will find useful guides and recommendations on using our products as a project owner.


# Stealth Launch

In this section you will find everything you need to know about launching your project with our Stealth Launch tool.

## Product Summary

Stealth launch your project with UNCX to:

* Increase your community's trust by using a reputable provider
* Build up hype and allow your community to launch trading on the pair
* Have your LP locked from the first transaction made on the pair, increasing security

Features:

* Automatic LP locking
* Editable starting capital
* Multiple launch options - including owner launch and community launch
* Limitless marketing opportunities


# Creating your launch

## Guide <a href="#creating-your-launch" id="creating-your-launch"></a>

In order to create your launch, open <https://app.uncx.network/stealth/explore>.

On the "Explore" page, select the green "Create" button on the right side of the screen.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FV6MIU8K718wiYarz3dkm%252Fimage.png%3Falt%3Dmedia%26token%3Dde10973d-e8f2-43e2-a269-2e9494a97f36&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=3ba5785c&#x26;sv=2" alt=""><figcaption></figcaption></figure>

You will be taken to the product overview. From here you can manage all of your launches and create new ones. Select the "New Launch" button.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FVlOQl4DWs4R6aYRlAjwm%252Fimage.png%3Falt%3Dmedia%26token%3D62d2b3e4-d66a-4752-9f03-97d21b986a9e&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=9f3ff5eb&#x26;sv=2" alt=""><figcaption></figcaption></figure>

First you have to select the chain you want to launch on from the dropdown menu.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F0vt1WPSTLfDSeoqYrv9W%252Fimage.png%3Falt%3Dmedia%26token%3D69607845-6f1b-4e3c-bb37-6f601d380d37&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=55f77093&#x26;sv=2" alt=""><figcaption></figcaption></figure>

The next step is selecting:

1. Token address of your token
2. Asset that your token will be paired against (gas token or USDC)
3. Information about taxes on your token (YES/NO; it affects your ability to launch on Uniswap V3, as Uniswap V3 does not support tokens with taxes)
4. The AMM you want to launch on

After filling those information in, select "Continue".

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FTxbrebwGNw4lbMaK75Av%252Fimage.png%3Falt%3Dmedia%26token%3Dd85bbf19-ea9b-4204-991f-ec0cfca97bda&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=7dc78585&#x26;sv=2" alt=""><figcaption></figcaption></figure>

In the next step you have to input:

1. The number of your tokens that you want to add to the pool
2. The number of the paired asset that you want to add to the pool
3. The launch date

After filling those information, select "Continue".

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FjuXS4wW8VzhziDOsfRKL%252Fimage.png%3Falt%3Dmedia%26token%3D2c2c7826-7908-474d-b2b0-7b1042805cd3&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=4720bb37&#x26;sv=2" alt=""><figcaption></figcaption></figure>

In the next step you have to select the unlock date of your liquidity lock. The minimum lock time is 30 days **after your launch date.**

After choosing the date, select "Continue".

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FaVQuz8jjH5DDKKulaCEZ%252Fimage.png%3Falt%3Dmedia%26token%3Da3e940cd-bafb-4f84-b0c7-d81a3affe80e&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=13c43a96&#x26;sv=2" alt=""><figcaption></figcaption></figure>

On the next page you will enter your project details. That includes:

* Your project's name (REQUIRED)
* Your project's description (REQUIRED)
* Referral Address
* Social Media Links
* Website link
* Telegram link
* Twitter link
* Youtube link
* Token logo
* Banner image

All of the information above can be edited after the launch creation.

Proceed by selecting "Continue".

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F3O8ti0SGBkiFMapgyPVW%252Fimage.png%3Falt%3Dmedia%26token%3D7ebe501a-fe39-4d2d-845a-149d37680b38&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=43c76e82&#x26;sv=2" alt=""><figcaption></figcaption></figure>

On the "Preview" page you will see all the details you have selected for you to double-check, including:

* Your project's name
* Your project's description
* Selected chain
* Selected AMM
* Total supply of your token
* % of your supply going to the liquidity
* The unlock date
* Contract address of your token
* Breakdown of the fees

Select "Create" to proceed.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FPUs49GTPCeWRJZM42851%252Fimage.png%3Falt%3Dmedia%26token%3Da03844c4-1d47-4246-b3c1-027c37e10be4&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=84203ee3&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After selecting the "Create" button, you will be asked to:

1. Approve your tokens
2. Pay the fees
3. Sign a signature in your wallet

After those steps are completed you will see the information displayed below. From there you can select:

* **"Get Trending on X"** to use our xTrend bot
* **"Join our exclusive KOL group!"** to get in touch with us and our ecosystem
* **"Close"** to simply close the window

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FmKnvBL8ZIfaC9iwhPoU3%252Fimage.png%3Falt%3Dmedia%26token%3D163d4f73-a485-48f7-bb81-844588ab8b0d&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=a7767b9b&#x26;sv=2" alt=""><figcaption></figcaption></figure>

That's it, your launch was created!


# Managing your launch

## Guide <a href="#managing-your-launch" id="managing-your-launch"></a>

To manage your launch, select the "Manage" tab on our website.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FQe73UOtZNd5AXrG3SEMw%252Fimage.png%3Falt%3Dmedia%26token%3D99fba064-61a6-4597-b488-a29f6e74d104&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=95bd28c1&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Here you can select "Your launches" tab and select the launch you want to edit.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FmRMZ0CNWltw2hYOWgYmn%252Fimage.png%3Falt%3Dmedia%26token%3D1abfe801-8a27-4628-9b69-93520b990e45&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=64238878&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After selecting the launch, you will see all the details of your launch, as well as two buttons in the top right corner of the screen:

* **Edit** - allowing you to edit your launch and the project details
* **Like** - allowing you to leave a like on your launch page

Let's select the "Edit" button.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FMEwKICvEC456LVvcOfBw%252Fimage.png%3Falt%3Dmedia%26token%3D033fdfa7-3443-4e59-a7ac-487ea2063d7b&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=7bfb6d46&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After selecting the edit button, you will be presented with two tabs:

* **Launch settings** - allowing you to add liquidity, update the launch time or active/cancel the launch
* **Project details** - allowing you to edit your project's details

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FiQJrqvEsnBhWa8wzkxol%252Fimage.png%3Falt%3Dmedia%26token%3D434397a2-62f6-494c-a933-cb34c074b1a4&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=436edb7&#x26;sv=2" alt=""><figcaption></figcaption></figure>

In case of any doubts, don't hesitate to get in touch with the support team on our [Telegram](https://t.me/uncx_token).


# Liquidity Lockers V2

To understand what liquidity lockers are, first you have to be familiar with concepts of liquidity pools.

If you are not, we recommend watching [this video](https://youtu.be/cizLhxSKrAc).

## What is a liquidity locker?

Developers listing their tokens on decentralized exchanges are granted LP tokens when they initiate a pool. These LP tokens, once in their possession, can be transferred like any other tokens on the blockchain they have been minted on, or bridged to another one.

A liquidity locker allows the developer to store these LP tokens in a smart contract, revoking his permission to move these LP from a start date to an end date. \
\
For a deeper dive into this topic, we recommend having a read of [our medium article](https://unicrypt.medium.com/liquidity-locking-overview-112329ecfaaa) about liquidity locking.

We also recommend reading our medium article on [automating liquidity locking using Gelato](https://unicrypt.medium.com/code-guide-automating-liquidity-locking-on-unicrypt-with-gelato-6aead943cd7d), to explore more options of interacting with our lockers.

### Contracts

| AMM                         | Contract                                   |
| --------------------------- | ------------------------------------------ |
| ETH (Uniswap V2)            | 0x59d7d55ddc58494fbbbca29904f108ece82ac7fb |
| ETH (Sushiswap)             | 0xc4E637D37113192F4F1F060DaEbD7758De7F4131 |
| Base (Uniswap V2)           | 0xED9180976c2a4742C7A57354FD39d8BEc6cbd8AB |
| Base (Sushiswap)            | 0xBeddF48499788607B4c2e704e9099561ab38Aae8 |
| Base (Aerodrome)            | 0x30e522deDfFE3e3d11Cd53E27d18Cd4F016eD870 |
| BSC (Pancakeswap V1)        | 0xc8B839b9226965caf1d9fC1551588AaF553a7BE6 |
| BSC (Pancakeswap v2)        | 0xC765bddB93b0D1c1A88282BA0fa6B2d00E3e0c83 |
| BSC (Uniswap V2)            | 0x7229247bD5cf29FA9B0764Aa1568732be024084b |
| POLYGON (Quickswap)         | 0xaDB2437e6F65682B85F814fBc12FeC0508A7B1D0 |
| POLYGON (Uniswap V2)        | 0x939d71ADe0Bf94d3F8cf578413bF2a2f248BF58b |
| Telos (VaporDEX)            | 0x08655a59381EA4fEbF210D609D52c0F2Ac47b8d1 |
| IOTA (MagicSea V2)          | 0x7f5C649856F900d15C83741f45AE46f5C6858234 |
| AVAX (TraderJoe)            | 0xa9f6aefa5d56db1205f36c34e6482a6d4979b3bb |
| AVAX (Uniswap V2)           | 0x07DD74C2dF2bC4eB04cf8eDb2F695AA79Ba590Eb |
| ARB (Uniswap V2)            | 0x63F4B2C082B1E0bbA38874567E053800379bF8D7 |
| ARB (Sushiswap)             | 0x275720567e5955f5f2d53a7a1ab8a0fc643de50e |
| ARB (Camelot)               | 0xa71182392faaa9a123a9e8120e79515117f05be4 |
| OP Mainnet (Uniswap V2)     | 0x5923c3911d9424F7725CAd33Ed176A6b885484D6 |
| Unichain (Uniswap V2)       | 0x6a76da1eB2cBe8b0D52cFe122C4B7f0cA5a940eF |
| SEI Network (DragonSwap V1) | 0xAd2071A3021a118A92E95328A6D12bEE0E1C5D8d |

##


# How to lock your LP tokens?

## Guide <a href="#how-to-lock-your-lp-tokens" id="how-to-lock-your-lp-tokens"></a>

Visit <https://app.uncx.network/lockers/manage/lockers-v2>. Connect your wallet by selecting the "Connect" button in the top right corner of the screen (on desktop).

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FkAwjLzd4f7AQFDTKwMbv%252Fimage.png%3Falt%3Dmedia%26token%3D47a369d6-1853-457c-afe0-6ebda424019e&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=787caeee&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Select "V2 Liquidity" tab on the left .After you successfully connected your wallet, a "New Lock" button will appear. Select it.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FPtetnkyTpeD7o4rctYlv%252Fimage.png%3Falt%3Dmedia%26token%3D47d31e02-264e-4cc3-8aa7-60fc568fb913&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=ab5553cc&#x26;sv=2" alt=""><figcaption></figcaption></figure>

In this step, you have to input the address of your LP token into the input field. Make sure you are connected to the network your pool is on. After you enter the address, the pool will show up. Select it.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FLZ35FQmDkhnZKqvaPz5K%252Fimage.png%3Falt%3Dmedia%26token%3D2c8e2026-b07f-4833-a4c6-4ee73bf19973&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=ced37eb2&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After selecting your lock you will be taken to the lock settings screen presented below.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FjAOWA1dA8VB1XXfWKZiH%252Fimage.png%3Falt%3Dmedia%26token%3D64f10d37-1c5d-424a-894f-124f48de6462&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=67c1ce70&#x26;sv=2" alt=""><figcaption></figcaption></figure>

**Amount**

The amount of LP tokens you want to lock.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F7VsZdZfFsbpKDU8bSGUN%252Fimage.png%3Falt%3Dmedia%26token%3Dd619f732-cc83-4d68-a039-3a6d571534fa&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=77afaaf0&#x26;sv=2" alt=""><figcaption></figcaption></figure>

**Unlock Date**

The expiration date of your lock. You will be able to withdraw your LP tokens after that date passes.

**NOTE: IT IS NOT POSSIBLE TO WITHDRAW YOUR LP BEFORE THE UNLOCK DATE**

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FVzEBDQvsD5iK0aG4axEL%252Fimage.png%3Falt%3Dmedia%26token%3D53d9bd31-82fb-4ba7-b3d2-d4a363235e6d&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=170f03e0&#x26;sv=2" alt=""><figcaption></figcaption></figure>

**Owner and Condition**

**Owner:** The owner of the lock. That address will be able to edit the lock and withdraw tokens from it once the lock expires.

**Referral:** If you have a valid referral address, you can input it into that field (more info about referral program [here](https://docs.uncx.network/uncx-referral-program)).

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FYub5guo8WqakADuFvQJZ%252Fimage.png%3Falt%3Dmedia%26token%3De6001164-657b-40ce-8967-9e34b62d8bdc&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=b1059cd8&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Proceed by selecting the "Approve" button, and then "Lock" button (it will appear after the approval).


# Managing your lock/Withdrawal

## Guide <a href="#managing-your-lock-withdrawal" id="managing-your-lock-withdrawal"></a>

Visit <https://app.uncx.network/lockers/explore/tokens> and select "Manage".

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Fg7ZJ1ZTf9dzMcOud9G38%252Fimage.png%3Falt%3Dmedia%26token%3D650186d9-5cd9-4ba6-b7ad-b75d755f5ff5&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=75b05470&#x26;sv=1" alt=""><figcaption></figcaption></figure>

Connect your wallet. Select "V2 Liquidity" tab.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FZvka0GAikE6uTrDNcOmr%252Fimage.png%3Falt%3Dmedia%26token%3D0c3e2b74-da90-479e-a910-bc339f585daa&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=c47dcba7&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After connecting your wallet, select "Edit Lock" tab and select the lock you would like to edit/withdraw from.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FR2InshlTNpXL9LIAdAEm%252Fimage.png%3Falt%3Dmedia%26token%3Dae0f0a9e-c9f3-40f8-a549-e97d99f4c27b&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=ebfbef9a&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After selecting the lock you want to edit, you will be able to see all the details about your lock, as presented below.

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

You will be able to see all the options available to you:

**Withdraw:** Withdraw locked liquidity.

**Increment:** Allows you to "top up" your lock with more LP tokens without creating a new lock.

**Relock:** Lock LP tokens and extend the duration of the initial lock.

**Transfer (Ownership):** Allows token developers to transfer the ownership of their liquidity lock.

**Split:** Splits your lock into 2 separate locks without changing the unlock date.

**Gauge Mode (Only available for Aerodrome on Base):** Enables/disables the gauge feature


# Liquidity Lockers V3

In this section you will find everything you need to know about locking your Uniswap V3 LP position with us.

To understand what liquidity lockers are, first you have to be familiar with concepts of liquidity pools.

If you are not, we recommend watching [this video](https://youtu.be/cizLhxSKrAc).

## What is a liquidity locker?

Developers listing their tokens on Uniswap V3 are granted an NFT when they initiate a pool. This NFT representing the LP position, once in their possession, can be transferred like any other tokens on the blockchain they have been minted on, or bridged to another one.

A liquidity locker allows the developer to store the NFT in a smart contract, revoking their permission to move the NFT from a start date to an end date. <br>

### Contracts

<table><thead><tr><th width="249">Chain</th><th>Contract</th></tr></thead><tbody><tr><td>ETH</td><td>0xFD235968e65B0990584585763f837A5b5330e6DE</td></tr><tr><td>BSC</td><td>0xfe88DAB083964C56429baa01F37eC2265AbF1557</td></tr><tr><td>BASE</td><td>0x231278eDd38B00B07fBd52120CEf685B9BaEBCC1</td></tr><tr><td>ARB</td><td>0x6b5360B419e0851b4b81644e0F63c1A9778f2506</td></tr><tr><td>Robinhood</td><td>0xF28704c691290547924e2129D407dA36bda8ce0f</td></tr><tr><td>HyperEVM</td><td>0x7B21D8Db3Cec21FD0e88b08aBa0cd63EA15E708b</td></tr><tr><td>Polygon</td><td>0x40f6301edb774e8B22ADC874f6cb17242BaEB8c4</td></tr><tr><td>AVAX</td><td>0x625e1b2e78DC5b978237f9c29DE2910062D80a05</td></tr><tr><td>OP Mainnet</td><td>0x1cE6d27F7e5494573684436d99574e8288eBBD2D</td></tr><tr><td>Unichain</td><td>0xcb399f22b923f6ec9fe7be15a99dd2df0a9822c8</td></tr><tr><td>Sepolia</td><td>0x6a976ECb2377E7CbB5B48913b0faA1D7446D4dC7</td></tr></tbody></table>

### V3 Liquidity Lockers on The Graph:

* [Ethereum](https://thegraph.com/explorer/subgraphs/EivEZQdzXg7uzSF5kXTgJ25k9K79s7yGMyCKVo8ZCHxK?view=Overview\&chain=mainnet)
* [Arbitrum](https://thegraph.com/explorer/subgraphs/CAusauLqFL9D5FTyRyNtTn51a3sR8ZrwRGMCJvDp42ta?view=Overview\&chain=mainnet)
* [Polygon](https://thegraph.com/explorer/subgraphs/8NmtZjDhGLMignM3QYYK8fKtJ5nYcdP37GhLD3KjWnEG?view=Overview\&chain=mainnet)


# How to lock your LP?

## Guide <a href="#how-to-lock-your-lp" id="how-to-lock-your-lp"></a>

Please make sure that:

* DEX pair is created (on UniSwap, for example)
* NFT positions you want to lock are held in a wallet you are currently connected with

Visit <https://app.uncx.network/lockers/manage/lockers-v3>, select "Manage" on top of the screen

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FPZ7qsDJGax29kt5zNcpA%252Fimage.png%3Falt%3Dmedia%26token%3Dd68ea319-3bf3-49a0-84c7-074515b63af7&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=6e6a2ee2&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Select the "V3 Liquidity" tab and connect your wallet to the dapp by clicking "Connect".

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FSB6CiF94JTBkPH8mu4r7%252Fimage.png%3Falt%3Dmedia%26token%3Da95808b6-a524-4481-8137-dc9988b0d275&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=cce8f1a2&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After connecting the wallet the "Connect" button will change to "New lock". Select that button to proceed.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F1UOpLRXHYu1c6IYYffNX%252Fimage.png%3Falt%3Dmedia%26token%3D822bd27f-73e0-46ae-b3f6-7e2b100abaf6&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=c4134dbc&#x26;sv=2" alt=""><figcaption></figcaption></figure>

The dapp will automatically detect the NFT positions you hold in your wallet. Select the one you want to lock.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F8UJYNDODdbX1YUVh41hb%252Fimage.png%3Falt%3Dmedia%26token%3D1517606e-33d3-4dfe-a332-5ca8a7d60711&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=7eb3b4f3&#x26;sv=2" alt=""><figcaption></figcaption></figure>

In the next screenshots (presented below), let's go through all the default settings (for more information about the advanced settings, check "Advanced features" section of this page).

**Fee Collector:** The address to which the fees will be collect. You can update this field at any stage if you are the lock owner.

**Country:** The country your business is operating in.

**Unlock Date:** Date when liquidity can be withdrawn (you can switch the "Lock Eternally" setting on to lock the liquidity forever).

**Convert to full range:** If you are locking a ranged NFT position, you can convert it to full range by using this setting.

**Fee Options:** You can select the fee option that fits your needs the best.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FpFVaN8HN20LSm1iVClKb%252Fimage.png%3Falt%3Dmedia%26token%3Dfb23ac57-3a4b-44e9-89ce-14cb1c689009&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=c4307ddb&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After all parameters are set, double-check them and proceed by selecting "Approve Ranged Lock". Accept the transaction in your wallet. The button will change to "Lock Ranged NFT/Lock in Full Range". Press the button again and accept the transaction in the wallet to finalize the process.

### Advanced features <a href="#advanced-features" id="advanced-features"></a>

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FzJ7suFUUGlWt7Rq9BGgl%252Fimage.png%3Falt%3Dmedia%26token%3D729abf70-8215-4118-aa67-029a2ec7cf9c&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=ec51b923&#x26;sv=2" alt=""><figcaption></figcaption></figure>

The features above are displayed if you select the "Advanced" tab when selecting the V3 lock settings.

**Additional Collector:** The additional collector may call collect on the lock as well as the lock owner. Very useful for bots to auto-collect fees. You can update this field at any stage if you are the lock owner.

**Dust receiver:** The address that will receive any dust amounts of tokens during the range conversion to full range.

**Owner:** The address who will own the lock you are creating (by default it is set to the one you are connected with to the dapp at the moment of locking)


# Managing your lock/Withdrawal

## Guide <a href="#managing-your-lock-withdrawal" id="managing-your-lock-withdrawal"></a>

Visit <https://app.uncx.network/lockers/explore/tokens> and select "Manage"

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Fg7ZJ1ZTf9dzMcOud9G38%252Fimage.png%3Falt%3Dmedia%26token%3D650186d9-5cd9-4ba6-b7ad-b75d755f5ff5&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=d7c988fb&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Select the "V3 Liquidity" tab and connect your wallet.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FkG7E2SFIZBnwTUp8zthZ%252Fimage.png%3Falt%3Dmedia%26token%3D40bfb2d5-69af-4a81-8fbf-b142f2d23a9e&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=406f4c12&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After connecting your wallet, select "Edit Locks" tab and select the lock you would like to edit/withdraw from.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F5w4S3NNZNap03Cc68GSL%252Fimage.png%3Falt%3Dmedia%26token%3D02c3886b-223f-4949-836e-f82622a662a1&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=9edd789e&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After selecting the position you want to edit, you will be able to see all the details about your lock at the top of the page, as presented below.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Far0M2d8mrkfuGQsBD3xc%252Fimage.png%3Falt%3Dmedia%26token%3D3ec8107d-a47b-4422-8593-40bb9dbd5402&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=3d54da04&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After scrolling down, you will be able to see all the options available to you.

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

**Withdraw:** Withdraw locked liquidity position

**Collect:** Collect the trading fees or/and edit the wallet address receiving them.

**Relock:** Lock Uniswap V3 NFT position and extend the duration of the initial lock.

**Additional Collector:** The additional collector may call collect on the lock as well as the lock owner. Very useful for bots to auto-collect fees. You can update this field at any stage if you are the lock owner.

**Collect address:** Allows you to change the collect address.

**Transfer Ownership:** Allows token developers to transfer the ownership of their liquidity lock.

**Gauge Mode (Only available for Aerodrome on Base):** Enables/disables the gauge feature


# Liquidity Lockers V4

In this section you will find everything you need to know about locking your Uniswap V4 LP position with us.

To understand what liquidity lockers are, first you have to be familiar with concepts of liquidity pools.

If you are not, we recommend watching [this video](https://youtu.be/cizLhxSKrAc).

## What is a liquidity locker?

Developers listing their tokens on Uniswap V4 are granted an NFT when they initiate a pool. This NFT representing the LP position, once in their possession, can be transferred like any other tokens on the blockchain they have been minted on, or bridged to another one.

A liquidity locker allows the developer to store the NFT in a smart contract, revoking their permission to move the NFT from a start date to an end date. <br>

### Contracts

<table><thead><tr><th>Chain</th><th width="432">Contract</th></tr></thead><tbody><tr><td>ETH</td><td>0x147aeca171a79466fe9e2c03f21b45155ff403f8</td></tr><tr><td>BSC (Uni V4)</td><td>0xA55d5Ce984E9e933732cDF51095AF8F3fb374ac8</td></tr><tr><td>BSC (Pancakeswap Infinity CLMM)</td><td>0x4d19c218cD2DE3261E77e3A4ed80FEca8Cb4cba6</td></tr><tr><td>BASE</td><td>0xff908dEd2a6c68226D3F834b25D803A815bDB28B</td></tr><tr><td>ARB</td><td>0xfd52659dd221356e0f703cfa070c1213a0a1575b</td></tr><tr><td>POL</td><td>0x5cff5c8e4ab3ef911dbcfc6698663f5f471899d1</td></tr><tr><td>Unichain</td><td>0xb08b965e966b5a042cfe64d5b5978ed1cb48b8a1</td></tr><tr><td>Sepolia</td><td>0xb9Fa6751923F89cC0bc1d6f0A7A5A377B5E5205a</td></tr></tbody></table>

##


# How to lock your LP?

## Guide <a href="#how-to-lock-your-lp" id="how-to-lock-your-lp"></a>

Please make sure that:

* DEX pair is created (on UniSwap)
* NFT positions you want to lock are held in a wallet you are currently connected with

Visit [https://app.uncx.network/lockers/manage/lockers-v4](https://app.uncx.network/lockers/manage/lockers-v3), select "Manage" on top of the screen

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FPZ7qsDJGax29kt5zNcpA%252Fimage.png%3Falt%3Dmedia%26token%3Dd68ea319-3bf3-49a0-84c7-074515b63af7&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=6e6a2ee2&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Select the "V4 Liquidity" tab. The dapp will automatically detect the NFT positions you hold in your wallet. Select the one you want to lock.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Ft9cKFG8jEzgSPHmoKErF%252Fimage.png%3Falt%3Dmedia%26token%3Dd01c779f-8eec-48ba-89e6-35b7df395eb2&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=1b230e85&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After selecting the position you would like to lock, select the unlock date of your liquidity position. Proceed by selecting the "Lock" button. Make sure to double-check if you have selected the correct date.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Fy8wzYuQLVXc4ZhHFBb6r%252Fimage.png%3Falt%3Dmedia%26token%3Da9034fcb-cbe4-4ac9-a93e-abe96a920422&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=c8c2f56&#x26;sv=2" alt=""><figcaption></figcaption></figure>


# Managing your lock/Withdrawal

## Guide <a href="#managing-your-lock-withdrawal" id="managing-your-lock-withdrawal"></a>

Visit <https://app.uncx.network/lockers/explore/tokens> and select "Manage"

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Fg7ZJ1ZTf9dzMcOud9G38%252Fimage.png%3Falt%3Dmedia%26token%3D650186d9-5cd9-4ba6-b7ad-b75d755f5ff5&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=d7c988fb&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Select the "V4 Liquidity" tab and connect your wallet. After connecting your wallet, select "Edit Locks" tab and select the lock you would like to edit/withdraw from.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FIjDkgbVAynd60iMymT1d%252Fimage.png%3Falt%3Dmedia%26token%3Dd654b951-8241-40a2-af20-da29a695ff1e&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=dca31b7a&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After selecting the position you want to edit, you will be able to see all the details about your lock at the top of the page, as presented below.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F7f1HD9R7pXKc5jVK7BKY%252Fimage.png%3Falt%3Dmedia%26token%3Da1e9534c-10bd-4b80-96d0-b77b8e030f70&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=5d695a3b&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After scrolling down, you will be able to see all the options available to you.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FaHxmxG4YPRmIQjuWybOu%252Fimage.png%3Falt%3Dmedia%26token%3D29fb9c55-b9d0-4978-8097-e9c4b23e6b6e&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=2ed8d3fa&#x26;sv=2" alt=""><figcaption></figcaption></figure>

**Withdraw:** Withdraw locked liquidity position.

**Collect:** Collect the trading fees.

**Relock:** Lock Uniswap V4 NFT position and extend the duration of the initial lock.

**Transfer Ownership:** Allows token developers to transfer the ownership of their liquidity lock.


# Solana Lockers

In this section you will find everything you need to know about locking your Raydium LP position with us.

Developers listing their tokens on Raydium are granted a liquidity representation when they initiate a pool. Once in their possession, it can be transferred like any other token on the blockchain they have been minted on, or bridged to another one.

A liquidity locker allows the developer to store that representation in a smart contract, revoking their permission to move it from a start date to an end date.&#x20;

## Contracts

| Raydium Version          | Program                                      | LP Storage account                           |
| ------------------------ | -------------------------------------------- | -------------------------------------------- |
| **AMM V4 Lockers**       | GsSCS3vPWrtJ5Y9aEVVT65fmrex5P5RGHXdZvsdbWgfo | BzKincxjgFQjj4FmhaWrwHES1ekBGN73YesA7JwJJo7X |
| **AMM V4 Smart Lockers** | UNCX77nZrA3TdAxMEggqG18xxpgiNGT6iqyynPwpoxN  | DAtFFs2mhQFvrgNLA29vEDeTLLN8vHknAaAhdLEc4SQH |
| **CP Swap**              | UNCXdvMRxvz91g3HqFmpZ5NgmL77UH4QRM4NfeL4mQB  | FEmGEWdxCBSJ1QFKeX5B6k7VTDPwNU3ZLdfgJkvGYrH5 |
| **CLMM**                 | UNCXrB8cZXnmtYM1aSo1Wx3pQaeSZYuF2jCTesXvECs  | GAYWATob4bqCj3fhVm8ZxoMSqUW2fb6e6SBQ7kk5qyps |

##


# How to lock your LP?

## Guide <a href="#how-to-lock-your-lp" id="how-to-lock-your-lp"></a>

**CPMM Liquidity**

Visit <https://solana.uncx.network/lockers/manage/locker>, select "Manage" on top of the screen.

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

Select the CPMM Liquidity and connect your wallet. After connecting you will see a "New Lock" button. Select it to proceed.

You will see the screen presented on the images below, from this point you have to input:

* **Lock Amount:** The amount of Raydium LP tokens you want to lock
* **Unlock date:** At that date, your lock will expire (the date/time you set here is in UTC timezone. Make sure to take it into account when setting this up)
* **Release Schedule:** A visual representation of your release schedule
* **External Owner:** Allows you to set the lock owner to a different wallet than the one you are currently using
* **Referral:** If you have a valid referral address, you can input it into that field

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FHblmPoLzCResMWJzg4K1%252Ftelegram-cloud-photo-size-4-6023753094078254774-y.jpg%3Falt%3Dmedia%26token%3D191c8466-164a-42d0-9727-13ed667e769e&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=d76ddc71&#x26;sv=2" alt=""><figcaption></figcaption></figure>

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

Make sure to double-check all your settings. To proceed, select "Lock"

**CP Swap Liquidity**

Visit <https://solana.uncx.network/lockers/manage/locker>, select "Manage" on top of the screen.

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

Select the CP Swap Liquidity and connect your wallet. After connecting you will see a "New Lock" button. Select it to proceed. \
\
Input your pool address into the field and select your pool.<br>

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

You will see the screen presented on the images below, from this point you have to input:

* **Lock Amount:** The amount of Raydium LP tokens you want to lock
* **Unlock date:** At that date, your lock will expire (the date/time you set here is in UTC timezone. Make sure to take it into account when setting this up)
* **Release Schedule:** A visual representation of your release schedule
* **External Owner:** Allows you to set the lock owner to a different wallet than the one you are currently using
* **Referral:** If you have a valid referral address, you can input it into that field

<figure><img src="/files/51K5EsytHuIUuvDjXRTz" alt=""><figcaption></figcaption></figure>

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

Make sure to double-check all your settings. To proceed, select "Lock".

**CLMM Liquidity**

Visit <https://solana.uncx.network/lockers/manage/locker>, select "Manage" on top of the screen.

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

Select the CLMM Liquidity and connect your wallet. After connecting you will see a "New Lock" button. Select it to proceed. \
\
Select the pool you want to lock.&#x20;

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

You will see the screen presented on the images below, from this point you have to input:

* **External Owner:** Allows you to set the lock owner to a different wallet than the one you are currently using
* **Referral:** If you have a valid referral address, you can input it into that field
* **Release Schedule:** A visual representation of your release schedule
* **Country:** Country from which your business conducts operations from
* **Unlock Date:** At that date, your lock will expire (the date/time you set here is in UTC timezone. Make sure to take it into account when setting this up)

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

<figure><img src="/files/6K5xKybDvLPoMXGREve2" alt=""><figcaption></figcaption></figure>

Make sure to double-check all your settings. To proceed, select "Lock".


# Managing your lock/Withdrawal

### CPMM Liquidity

Visit <https://solana.uncx.network/> and select "Manage".

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FNPgLLx9oY8HCcZgEGAFw%252Fimage.png%3Falt%3Dmedia%26token%3D850fdc6b-028e-4734-bae5-1da92d045d94&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=941563d6&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Select "CPMM Liquidity" and connect your wallet. Then, select the "Edit Lock" tab. Here you can select the lock you want to manage/withdraw.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FSN2EiYca59VrNfv9bv7O%252Fimage.png%3Falt%3Dmedia%26token%3D4cbf7964-43e7-4713-ab74-7e1dc3875fab&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=9291d028&#x26;sv=2" alt=""><figcaption></figcaption></figure>

On the image above you can see the lock edit page. The options available to your are:

**Withdraw:** Withdraws locked liquidity position

**Increment:** Allows you to add more LP tokens to a existing lock.

**Relock:** Lock your LP tokens and extend the duration of the initial lock.

**Transfer Ownership:** Allows you to transfer the ownership of their liquidity lock.

**Split:** It is possible to split your lock in different sub-locks.

### CP Swap Liquidity

Visit <https://solana.uncx.network/> and select "Manage".

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

Select "CP Swap Liquidity" and connect your wallet. Then, select the "Edit Lock" tab. Here you can select the lock you want to manage/withdraw.

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

On the image above you can see the lock edit page. The options available to your are:

**Withdraw:** Withdraws locked liquidity position

**Increment:** Allows you to add more LP tokens to a existing lock.

**Relock:** Lock your LP tokens and extend the duration of the initial lock.

**Transfer (Ownership):** Allows you to transfer the ownership of their liquidity lock.

**Split:** It is possible to split your lock in different sub-locks.

**Claim Fees:** Allows you to claim fees from your pool.

### CLMM Liquidity

Visit <https://solana.uncx.network/> and select "Manage".

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

Select "CLMM Liquidity" and connect your wallet. Then, select the "Edit Lock" tab. Here you can select the lock you want to manage/withdraw.

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

On the image above you can see the lock edit page. The options available to your are:

**Withdraw:** Withdraws locked liquidity position

**Relock:** Lock your LP tokens and extend the duration of the initial lock.

**Transfer (Ownership):** Allows you to transfer the ownership of their liquidity lock.

**Claim Fees:** Allows you to claim fees from your pool.


# Squads Multisig

## Guide <a href="#squads-multisig" id="squads-multisig"></a>

You can use your Squads Multisig wallet to lock and edit your LP position with us. The way you interact with the app is the same as in the previous section, with a small exception.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FdodHKzK76clS3c8XtEIg%252Fimage.png%3Falt%3Dmedia%26token%3D6cafc2d1-8920-476a-916b-9cf06cc9ff1b&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=de3c998c&#x26;sv=2" alt=""><figcaption></figcaption></figure>

If you want to lock using the Squads Multisig, select "Add your Squads Multisig" link (visible on the screenshot above).

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FLwCxEUnV9KEt5m0A4EEH%252Fimage.png%3Falt%3Dmedia%26token%3Df9f46ca5-c236-44bb-b160-74ad4d30cb47&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=867000f6&#x26;sv=2" alt=""><figcaption></figcaption></figure>

You will be asked to enter your Squads Multisig account (You can find your address on the squads website, under settings > "Multisig Account").

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FeOcPSJgMj0rr6iXMWyBf%252Fimage.png%3Falt%3Dmedia%26token%3Dd993bd71-747b-4ffc-9e20-48b0da8d4bed&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=1a4c0c3c&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After entering your Multisig account, you will also be able to see your Vault Address. From this screen you can always change the account you are using.

To proceed with any transaction using the Squads Multisig on our dapp, you will first have to accept it in your Metamask/Phantom wallet, then in the Squads app.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FVpqYVqVPDJRmamPS27lM%252Fimage.png%3Falt%3Dmedia%26token%3Dd2feff7c-e7b5-45d4-81d7-a5c772bb4749&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=2d381c91&#x26;sv=2" alt=""><figcaption></figcaption></figure>

You can also edit your lock using your multisig. The process of connecting and using it is the same as when locking your LP. In case of any doubts, contact us at <https://t.me/uncx_token>


# Token Vesting

In this section you will find everything you need to know about vesting your tokens with us.

## What is token vesting?

While our Liquidity Locker allows you to lock Liquidity Provider tokens to prevent classic "rug pulls", it does not allow single tokens (i.e. not LP pairs) to be time-locked.

This is what our Token Vesting feature does.

Token vesting is simply the ability to lock ***n*** amount of token for ***x*** amount of time as a commitment to hold the token.

A clear token vesting schedule may help gaining the trust of the community supporting the project, and could allow a more sustainable growth of the project by showing their commitment to the community.

Vested tokens are time-locked in a smart contract, fully audited, and cannot be sent, sold, added to liquidity or staked.&#x20;

Our Token Vesting is also a great tool for creating airdrops.

### Contracts

<table><thead><tr><th>Chain</th><th>Vesting Address (Legacy)</th><th width="254">Vesting Address (V2)</th></tr></thead><tbody><tr><td>ETH</td><td>0xdba68f07d1b7ca219f78ae8582c213d975c25caf</td><td>0xA98F06312b7614523d0f5e725e15fd20fB1b99F5</td></tr><tr><td>BSC</td><td>0xeaed594b5926a7d5fbbc61985390baaf936a6b8d</td><td>0x7f3f9f4ED8987B78adC448a840169A0FD5AFFAAB</td></tr><tr><td>BASE</td><td>0xA82685520C463A752d5319E6616E4e5fd0215e33</td><td>0x7ca3dE7D58A0bCAd115184597553485A919320c5</td></tr><tr><td>Polygon</td><td>0x2621816be08e4279cf881bc640be4089bfaf491a</td><td>0x09e9f68F72917984e333BD2E18Adae5fAFf97587</td></tr><tr><td>UNICHAIN</td><td>                         -</td><td>0x3dd1e6c7F905322136E5DF5ECf638059877E0a20</td></tr><tr><td>ARB</td><td>0x8cb0300Af2A801DC9992225D45399ac56888cBcd</td><td>0x7f3f9f4ED8987B78adC448a840169A0FD5AFFAAB</td></tr><tr><td>TELOS</td><td>0x76E62a8397ACD7e7303680365025DB8478E19C90</td><td>                         -</td></tr><tr><td>AVAX</td><td>0xCa61C60D9Da18fA4e836a1e378Ded3205FcEdfA5</td><td>0x586FEfeeFA117cEC8f32a6B2a0ABEE443315eb87</td></tr><tr><td>SEI</td><td>0xEc76C87EAB54217F581cc703DAea0554D825d1Fa</td><td>                         -</td></tr><tr><td>OP Mainnet</td><td>0x599886b24b0a625e4912033213d6b6188a1abca2</td><td>0x2Ba0cb1153f10d2A95E16e0581324244b9227dDB</td></tr><tr><td>Sepolia Testnet</td><td>0x3dFC191d2ff5008e11d878345daD88A0C005fCf0</td><td>0x02F6a02d5efDe05c1708D470CC672f024127298b</td></tr><tr><td>Base Sepolia</td><td>                         -</td><td>0x599deCDe794cC544A2aD0Cb1C0Dc8E16EecbDcb7</td></tr></tbody></table>

##


# How to lock/airdrop your tokens?

## Guide <a href="#how-to-lock-your-tokens" id="how-to-lock-your-tokens"></a>

Visit our vesting page. Connect your wallet by selecting the "Connect" button in the top right corner of the screen (on desktop). Select the "Dashboard" tab

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

After you successfully connected your wallet, select "Create Event" button on the right side of the screen.

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

Select the Event Type you are interested in, then proceed by selecting "Continue".

### Creating a Vesting

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

If you selected Vesting, the next step is selecting the Emission Type. You can choose from 8 different Emission Types:

* **Linear** - Tokens are released continuously and evenly over the entire vesting period.
* **Cliff** - All tokens are locked until a specific cliff date, then released all at once.
* **Unlock in Steps** - Tokens are released in equal portions at regular intervals over time.
* **Monthly Unlocks** - Tokens are unlocked in equal amounts every month for a set duration.
* **Timelock** - Tokens are completely locked until a specific unlock date, then fully available.
* **Unlock Cliff** - Initial amount unlocks immediately, remainder vests linearly after cliff period.
* **Exponential** - Token release rate increases exponentially over time, starting slow then accelerating.
* **Cliff Exponential** - Initial cliff period followed by exponentially increasing token releases.

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

After selecting your Emission Type, the next step is adjusting the Mint settings.

You can allow the recipient to Mint an NFT representing the vesting they are eligible for.

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

The NFT can be minted upon the vesting creation or manually by the recipient, on the vesting page after creation.

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

You can also allow the recipient to cancel or transfer the vesting from here. After you've selected all the desired setting, select "Continue".

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

The next step is to input your token address into the token contract field. If the address is correct you will be able to see the token information, such as balance, decimals, symbol and price in USD. Proceed by selecting "Continue".

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

The next page is the "Vesting Details". Here, you can adjust:

* Amount to be vested
* Allow top-ups (only available for specific Emission Types)
* Recipient Address
* Unlock date(s) (some of the Emission Types will include additional date settings, like a number of steps visible on the screenshot above, exclusively available on the "Unlock in steps" Emission Type. If you need help with adjusting those settings contact the UNCX Support)

After selecting your settings select "Add Vesting".

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

Your vesting will appear on the list on the right. You can create multiple vestings here with different settings, then lock them all in one transaction. After you have all your vestings ready, select "Continue".

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

The next step is to upload a cover image and a logo for your vesting. This step is entirely optional. Select Skip/Continue to proceed.

<figure><img src="/files/6xq4T5AbHwjtlpLtDOZY" alt=""><figcaption></figcaption></figure>

The last step is checkout. Here you can see all the details about your vestings, such as the summary, fee and the schedule. To finish the process select "Continue".

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

After creating your vesting you will see a pop-up window confirming that the vesting creation was successful. From here you can go back to the dashboard or review the transaction details.

### Creating an airdrop

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

If you selected Airdrop, the next step is selecting the Emission Type. You can choose from 2 different Emission Types:

* **Scheduled** - All tokens are distributed to recipients at a specific future date in a single transaction.
* **Unlock In Steps** - Tokens are distributed to recipients in multiple batches over a defined period.

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

After selecting your Emission Type, the next step is adjusting the Mint settings.

You can allow the recipient to Mint an NFT representing the airdrop they are eligible for.

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

The NFT can be minted upon the airdrop creation or manually by the recipient, on the airdrop page after creation.

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

You can also allow the recipient to cancel or transfer the airdrop from here. After you've selected all the desired setting, select "Continue".

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

The next page is the "Airdrop Details". Here, you can adjust:

* Token address
* Recipient Address
* Unlock date(s) (some of the Emission Types will include additional date settings, like a number of steps visible on the screenshot above, exclusively available on the "Unlock in steps" Emission Type. If you need help with adjusting those settings contact the UNCX Support)
* Distribution Type

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

The next step is to select a token amount. If you selected the "Custom" distribution type, you will be able to select different amount for each recipient.

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

On the next page you will see:

* Amount per Recipient (equal for all recipients if the distribution type is "Uniform")
* Remaining Balance of the airdropped token in your wallet
* The field for adding recipients

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

In order to add a recipient to the list, input their address into the field and select "Add". You can also import a .CSV file with a list of addresses and confirm by selecting "Add recipients to the list". Added recipients will be displayed on the list on the right side of the screen. After adding all of the recipients select "Continue".

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

The next step is to upload a cover image and a logo for your vesting. This step is entirely optional. Select Skip/Continue to proceed.

<figure><img src="/files/4vn85QsrDZkwUWJhCX62" alt=""><figcaption></figcaption></figure>

The last step is checkout. Here you can see all the details about your airdrop, such as the summary, fee and the schedule, as well as the recipients. To finish the process select "Continue".

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

After creating your airdrop you will see a pop-up window confirming that the airdrop creation was successful. From here you can go back to the dashboard or review the transaction details.


# Vesting/airdrop page

## Guide <a href="#managing-your-lock-withdrawal" id="managing-your-lock-withdrawal"></a>

Visit vesting page and select "Dashboard"

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

You will be able to see all of your vestings/airdrops. Select the one you want to manage.&#x20;

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

After selecting one of your locks you will be presented with the "Vesting Details" page visible below. Let's go through all the displayed sections.&#x20;

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

#### Progress

The first section is "Progress". Here you can monitor how many tokens have already been unlocked/claimed and how many are available for you to claim. In order to claim tokens select the "Claim" button.

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

The next section is "Details". Here you can see important details about your lock, such as:

* Start/end dates
* Emission type
* Vested amount
* Creator of the lock
* Recipient of the lock
* Address of the vested token
* Chain&#x20;
* Token Symbol
* Status of the lock

#### Details

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

You can also manage your lock from that section by selecting the "Options" dropdown menu.

From there you can:&#x20;

* Stop Vesting
* Transfer Vesting to another recipient
* Top up Vesting

Keep in mind that each one of these options has to be enabled in the lock creation to be available.

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

#### NFT

The next section displays info about your vesting NFT (if it was minted), such as the chain it's on, NFT address and your vesting ID.

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

If the NFT wasn't minted yet, this section will look different (displayed on the image below)

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

#### Emission Schedule

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

The next section is "Emissions Schedule". It's a visual representation of the unlock dates of your vesting (if all of the tokens are unlocked on one date, the chart will look like the one on the image above).

#### Transaction History

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

The last section is "Transaction history". Here you can see all of the transactions relevant for that specific vesting, such as the vesting creation, transfers, claims.&#x20;


# Groups

## Guide

Our Vesting app allows you to create groups for easier management and streamlined workflows. Groups can help you categorize recipients for vesting schedules or airdrops.

To create a group select the "Groups" tab on the top panel. Select "Create your first group".

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

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

To create a group:

1. Enter a group name into the first field
2. Add a wallet address into the second field, select "Add"/Import a .CSV file with a list of wallets. Select "Add recipients to the list".

Proceed by selecting "Create group".


# Staking-as-a-service

In this section you will find everything you need to know about creating your own farm/staking pool.

## Product summary

This whole section is dedicated for projects/teams who wish to create their own stake or farm pool to allow their community to participate in the ecosystem and earn rewards.

Your stakers will get rewarded from the reward pools created by your team, with any chosen token. It can be the same token as the staked one, USDC, ETH, BNB, AVAX etc. \
It's all up to you.

#### You can create either:

* a staking pool, with a single-sided token to be staked (e.g. BNB, ETH, USDC, TOKENXYZ, etc.)
* a farming pool, with an LP token, i.e. pair, to be staked (e.g. BNB/TOKEN XYZ)&#x20;

### IMPORTANT NOTE

Once created, a staking pool cannot be deleted. Do ensure everything is setup correctly, mainly:&#x20;

* contract address of the token to stake
* each time boost with proper scale (minute/hours/days/weeks/months/years),

The minimum and maximum amount of tokens to stake needs to be checked carefully for LP tokens as ratio/supply is not necessarily what you are expecting. However this parameter is **editable** from the "**setting**" > "**Stake pool**" menu by the pool owner.


# Creating a farm

## Guide <a href="#how-to-create-a-farm" id="how-to-create-a-farm"></a>

First, you have to locate our Farms, to do that open the dropdown menu next to our logo in our UI and select "Farms". You can also use [this link](https://app.uncx.network/staking/explore).

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F3LJSZvoVn6l6k0SS7byM%252Fimage.png%3Falt%3Dmedia%26token%3D2d5850db-75ae-42ac-b1c2-552db6fbc865&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=2bb35d75&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Once you are on our farms page select "Create" button, highlighted in red on the image below.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FplIv5tGN9QY6X7aSeLT5%252Fimage.png%3Falt%3Dmedia%26token%3D4ec0b053-2661-400b-b2c3-81b6a5c63d9a&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=fd122f3&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After selecting "Create" button you will be taken to the manage page. Select "New Staking Pool" button to proceed.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FGSjCxcnUDiJMIqMpkkaI%252Fimage.png%3Falt%3Dmedia%26token%3D6edeeb0a-f4f2-4f93-8c39-806e6c579159&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=3fcfebab&#x26;sv=2" alt=""><figcaption></figcaption></figure>

You will be taken to the staking pool creation page. First select the chain you want to create your pool on and the address of the token that you want your community to stake.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FBwuSSeWR0HHQhzO6vK1x%252Fimage.png%3Falt%3Dmedia%26token%3D6fb448ed-a858-491c-be93-5610ba1d469b&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=3f8fabd6&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Next, you can set a minimum staking period. You can set it in seconds, minutes, hours, days, weeks, months or even years. Another customizable thing is minimum staking amount and maximum staking amount. **Note:** If you set "Max stake amount" to max\_value, there will be no limit.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F3cH6z0fepkGilcImTrB6%252Fimage.png%3Falt%3Dmedia%26token%3D4adc8136-4f1d-4c8e-89b2-d3124b6d6d40&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=7807747b&#x26;sv=2" alt=""><figcaption></figcaption></figure>

You can create a fee for a stake modification, although it is optional. It can be charged in the blockchain's native token or any other token you want (on the same chain).

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Fzy2rnrz2qnHFsHZTVU5L%252Fimage.png%3Falt%3Dmedia%26token%3Dde64d076-d2e3-4ac2-9fed-21ee41787264&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=dca94069&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Another optional, yet very useful setting is a custom time boost. It basically incentivizes users for locking their tokens for a specific period of time.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FobqUH5ANbfwi8iBKrduh%252Fimage.png%3Falt%3Dmedia%26token%3Da4567fa5-da55-4551-ad80-c22a955c1e83&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=aa9f0cad&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Last thing is choosing your operation country. **Before proceeding, please double-check all the settings. Once created staking pool cannot be removed. UNCX Network is a decentralized platform and will not fix your staking pool for you.**

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FnIDz4iBazFh25XPHrTWr%252Fimage.png%3Falt%3Dmedia%26token%3D9aabd9ef-fbc7-4303-ab03-df88e349a554&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=4f842182&#x26;sv=2" alt=""><figcaption></figcaption></figure>

### Exclude Staking Pool from taxes <a href="#exclude-staking-pool-from-taxes" id="exclude-staking-pool-from-taxes"></a>

To ensure stakers are not taxed upon staking their tokens as well as when harvesting their rewards, please consider whitelisting the staking and rewards pools from your contract after creation.

**Note:** This only applies to single-side token staking, i.e. not for LP tokens

**Why whitelisting?**

This ensures stakers will not be taxed upon staking.

**Steps for whitelisting your staking pool**

* Create the staking pool as per our documentation above
* Get the address of the staking pool you have just created (this can be found in the URL)
* Whitelist the address of the staking pool from your token contract

### &#x20; <a href="#how-to-create-a-reward-pool" id="how-to-create-a-reward-pool"></a>


# Reward Pools

## Guide <a href="#how-to-create-a-reward-pool" id="how-to-create-a-reward-pool"></a>

To reward your stakers, you have to create a reward pool. In order to do this go to the manage tab on our dapp and select "Admin Pools" tab. Select the pool you want to create a reward pool for.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FIRt5orpLopDCcCLhonCn%252Fimage.png%3Falt%3Dmedia%26token%3Da803894a-cd5a-47f8-9fe9-8a1e32d5d657&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=ba8dc281&#x26;sv=2" alt=""><figcaption></figcaption></figure>

You will be taken to the settings screen. Select "Create Reward Pool".

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F6D0Ku4AReJqmlrj6MYib%252Fimage.png%3Falt%3Dmedia%26token%3D1151832e-6e3a-4fba-9fb7-7abc80f8ae7b&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=c58bbf57&#x26;sv=2" alt=""><figcaption></figcaption></figure>

First, you have to select a token you want to reward your stakers with and the amount of reward token dedicated for farmers from start to end of farming. This can be topped up later on.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FtrzkkjmTUkLzJeT5yHeA%252Fimage.png%3Falt%3Dmedia%26token%3D272f8d9e-56f1-4307-ab4f-9e372ca23777&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=99b6be48&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Next thing to set is a start and end date of the reward pool.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F9sNClTyXu4jw1y5Zj7QR%252Fimage.png%3Falt%3Dmedia%26token%3De700afae-40a8-4bff-b9e1-17adcabbd353&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=b6941150&#x26;sv=2" alt=""><figcaption></figcaption></figure>

You can set an optional bouns period. It works well to encourage your stakers to stake early.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FaA54rHTiqqIEI36g5KlJ%252Fimage.png%3Falt%3Dmedia%26token%3Dd471b044-0ff3-40c0-854c-1b319b26221c&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=bfca8cdd&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Please, check everything again carefully before proceeding further, then select the "Create Reward Pool" button.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FD4Nwky2aTaaEAO0yijqQ%252Fimage.png%3Falt%3Dmedia%26token%3D319d7341-2f8f-4ce9-805f-e76a97523f8a&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=32593caf&#x26;sv=2" alt=""><figcaption></figcaption></figure>

### Exclude Reward Pool from taxes <a href="#exclude-reward-pool-from-taxes" id="exclude-reward-pool-from-taxes"></a>

To ensure stakers are not taxed when harvesting their rewards, please consider whitelisting the reward pools from your contract after creation.

**Note:** This only applies to single-side token staking, i.e. not for LP tokens

**Why whitelisting?**

This ensures stakers will not be taxed upon staking.

**Steps for whitelisting your reward pool**

* Create a reward pool as per our documentation above
* Get the address of the reward pool you have just created from the URL
* Whitelist the address of the reward pool from your token contract
* Repeat the steps for any additional reward pool you will create

**Note:** if you need help finding the address of the reward pool, contact our staff on telegram. We will help you find it!

### How to top up a reward pool? <a href="#how-to-top-up-a-reward-pool" id="how-to-top-up-a-reward-pool"></a>

To top up your reward pool, you have to access the pool settings. In order to do this go to the manage tab on our dapp and select "Admin Pools" tab. Select the pool you want to top up.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FIRt5orpLopDCcCLhonCn%252Fimage.png%3Falt%3Dmedia%26token%3Da803894a-cd5a-47f8-9fe9-8a1e32d5d657&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=ba8dc281&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Select "Edit Reward Pool" and select a reward pool you want to edit, you will find three fields there:

* Top up your reward pool - tops up the rewards
* Increase block reward - increases the reward per block for each staker
* Withdraw a specific token - allows you to withdraw all the tokens from the reward pool different from the reward token (useful in case any other tokens get sent to the contract by mistake)

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Fd6Ro9Xpf51ywtXyCsoq4%252Fimage.png%3Falt%3Dmedia%26token%3D2d353c11-f3f5-45a1-b1b8-cf15742a811f&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=5edd4efe&#x26;sv=2" alt=""><figcaption></figcaption></figure>


# Editing a farm page

## Guide <a href="#how-to-edit-a-farm-page" id="how-to-edit-a-farm-page"></a>

To edit your farm page, you have to access the pool settings. In order to do this go to the manage tab on our dapp and select "Admin Pools" tab. Select the pool you want to edit.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FIRt5orpLopDCcCLhonCn%252Fimage.png%3Falt%3Dmedia%26token%3Da803894a-cd5a-47f8-9fe9-8a1e32d5d657&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=ba8dc281&#x26;sv=2" alt=""><figcaption></figcaption></figure>

You will be taken to the screen presented below.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FQh7CkvL6l6Jt4HCpZwqR%252Fimage.png%3Falt%3Dmedia%26token%3D83ce8444-bffd-47d4-b995-02a781a8cb55&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=e40ae84d&#x26;sv=2" alt=""><figcaption></figcaption></figure>

#### Banners & Media <a href="#banners-and-media" id="banners-and-media"></a>

If you select "Banners & Media" you will be taken to the page presented below. There, you can adjust your Token icon and Banner. **Note:** Upload your image to imgur and provide the link to the **PNG image directly and NOT to the gallery**. i.e. your link **must end in ".PNG".** To ensure you do this properly, you should right-click on your image in imgur and "copy link"

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FXfv9XgGhBb2VvTuWPPho%252Fimage.png%3Falt%3Dmedia%26token%3D672bdc92-1c26-4f8a-be0e-11e0ef5ad483&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=eb9b7cff&#x26;sv=2" alt=""><figcaption></figcaption></figure>

#### Stake Pool <a href="#stake-pool" id="stake-pool"></a>

If you select "Stake pool", you will be taken to the general setting of your staking pool.

Most of the settings are identical to the ones in the pool creation page.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FAZfvQUfSzBk4Rah4b8Eo%252Fimage.png%3Falt%3Dmedia%26token%3D3d443c50-a22f-446f-857f-be1fd4064b32&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=a1f81aac&#x26;sv=2" alt=""><figcaption></figcaption></figure>

### &#x20; <a href="#recommendations" id="recommendations"></a>


# Token Minter

In this section you will find informations about our token minter and a full guide on minting your ERC-20 token with taxes (or without).

## Token Minter overview

As part of our services, you can mint your own, fully ERC-20 compliant ENMT token, as well as more complex ERC-404, Tax Token and LP Tax token. The creation process is explained in the subpages of this section.


# Mint your token

### Simple ERC-20 Token

Open <https://app.uncx.network/minter/manage> and connect your wallet to the dapp.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FnHSAV3ZkDuRZ3gwMkypf%252Fimage.png%3Falt%3Dmedia%26token%3D8577a535-be54-48fd-a55e-c8f69afc5c23&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=b1f3ab2b&#x26;sv=2" alt=""><figcaption></figcaption></figure>

First, select the chain you want to mint your token on.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Fz3zXdVSOrQ1grQ7oWq2h%252Fimage.png%3Falt%3Dmedia%26token%3D54fef8ee-a114-4497-a531-4ff3ad902e7e&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=40721d42&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Select "ERC-20 Basic" from the Blueprint Selection.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FWzVNIKQO8d8lDpowwcWt%252Fimage.png%3Falt%3Dmedia%26token%3Dcf795bc1-8410-4a7a-a1f2-b0da41249740&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=c432ae28&#x26;sv=2" alt=""><figcaption></figcaption></figure>

For a standard ERC-20, you have to fill 3 fields:

* Full name of your token
* Symbol of your token
* Total supply of your token

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FhGmRI7UpOt50DS81S2YF%252Fimage.png%3Falt%3Dmedia%26token%3D71db1745-6483-404c-bc79-b9af5977af41&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=b3194561&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Double-check everything on the Final Review screen and select "Continue" to mint your token.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F4ZEgZijjTUexggMOyAYY%252Fimage.png%3Falt%3Dmedia%26token%3D3ebd6d9c-7fe0-4a9e-8028-783d6efb1f69&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=34abd4dd&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After minting the token you will see your contract address and "Sign Ownership" button. Select it to be assigned as the owner of the token in the contract.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FR9BIhfT97Zi6WgqgAjXK%252Fimage.png%3Falt%3Dmedia%26token%3Ddfc96c73-4921-4ff1-94f7-bf15dc5df718&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=12faa31&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After signing ownership, select "Verify Token" to verify it on the blockchain explorer, so your token contract is visible: **NOTE:** This feature is still being worked on. If your token did not verify correctly, contact us at <https://t.me/uncx_token> and we will guide you how to proceed!

### Hyperlane token

Open <https://app.uncx.network/minter/manage> and connect your wallet to the dapp.

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

First, select the chain you want to mint your token on.&#x20;

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

Select "Hyperlane Token" from the Blueprint Selection.

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

For a Hyperlane token, you have to fill 3 fields:

* Full name of your token
* Symbol of your token
* Total supply of your token

<figure><img src="/files/4vMcJFbzo13fdE2gaXQd" alt=""><figcaption></figcaption></figure>

Double-check everything on the Final Review screen and select "Continue" to mint your token.

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

After minting the token you will see your contract address and "Sign Ownership" button. Select it to be assigned as the owner of the token in the contract.

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

After signing ownership, select "Verify Token" to verify it on the blockchain explorer, so your token contract is visible.\
\
**NOTE:** This feature is still being worked on. If your token did not verify correctly, contact us at <https://t.me/uncx_token> and we will guide you how to proceed!

### **ERC-404** <a href="#erc-404" id="erc-404"></a>

Open <https://app.uncx.network/minter/manage> and connect your wallet to the dapp.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FnHSAV3ZkDuRZ3gwMkypf%252Fimage.png%3Falt%3Dmedia%26token%3D8577a535-be54-48fd-a55e-c8f69afc5c23&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=b1f3ab2b&#x26;sv=2" alt=""><figcaption></figcaption></figure>

First, select the chain you want to mint your token on.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FRaIaho5m2OaLU3cgK8Ad%252Fimage.png%3Falt%3Dmedia%26token%3Dab075231-ec4c-40bc-83fa-efad6b9b7a87&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=8f15a3&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Select "ERC-404" from the Blueprint Selection.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Fbuo4dCsVs0ZfuP4oStof%252Fimage.png%3Falt%3Dmedia%26token%3D011007dc-5a68-45f1-86c2-001825603c6e&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=85123379&#x26;sv=2" alt=""><figcaption></figcaption></figure>

For a standard ERC-404, you have to fill the following fields:

* Full name of your token
* Symbol of your token
* Total supply of your token
* NFT Image Link/Metadata (<https://docs.opensea.io/docs/metadata-standards>)

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F19ZgVLWzEGLuNnw0Y0j1%252Fimage.png%3Falt%3Dmedia%26token%3D932824be-d2a1-4adf-ae6b-7fe202cef6b5&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=a9f09f05&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Double-check everything on the Final Review screen and select "Continue" to mint your token.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Fm1MWjx18RGChds8kD96C%252Fimage.png%3Falt%3Dmedia%26token%3Dcb6aaa9f-da08-47d4-af6b-38ce585de607&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=6b0609b0&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After minting the token you will see your contract address and "Sign Ownership" button. Select it to be assigned as the owner of the token in the contract.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FKeqt4MXBB670x7tW0T24%252Fimage.png%3Falt%3Dmedia%26token%3Df48af028-a3bc-4862-90bd-26edaab336b4&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=f8b2eaed&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After signing ownership, select "Verify Token" to verify it on the blockchain explorer, so your token contract is visible: **NOTE:** This feature is still being worked on. If your token did not verify correctly, contact us at <https://t.me/uncx_token> and we will guide you how to proceed!

### Tax Token <a href="#tax-token" id="tax-token"></a>

Open <https://app.uncx.network/minter/manage> and connect your wallet to the dapp.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FnHSAV3ZkDuRZ3gwMkypf%252Fimage.png%3Falt%3Dmedia%26token%3D8577a535-be54-48fd-a55e-c8f69afc5c23&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=b1f3ab2b&#x26;sv=2" alt=""><figcaption></figcaption></figure>

First, select the chain you want to mint your token on.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FMaHjrOH5WxP63BqEK6Ay%252Fimage.png%3Falt%3Dmedia%26token%3D731c6e31-b3af-400d-b3b6-a6a3af513d02&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=8f6d0e0&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Select "Simple Tax Token" from the Blueprint Selection.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FAZrqyatHFMSbx3JXUMg4%252Fimage.png%3Falt%3Dmedia%26token%3De181374c-787b-4d51-9944-70547824ac0a&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=1b386fd4&#x26;sv=2" alt=""><figcaption></figcaption></figure>

For a Simple Tax Token, you have to fill the following fields:

* Full name of your token
* Symbol of your token
* Total supply of your token
* Adjust the tax (up to 25% buy/sell)
* Enter the address where the collected taxes will be sent
* Renounce Ownership (optional)

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FC8KDu5BqlgNLizjzvj89%252Fimage.png%3Falt%3Dmedia%26token%3D0a025e71-0471-4a65-904a-63a9935cbac1&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=3201d46b&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Double-check everything on the Final Review screen and select "Continue" to mint your token.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FjryPOb4pcIMRkO5qAx7H%252Fimage.png%3Falt%3Dmedia%26token%3Db5dc406b-9a3b-48c4-9889-acae1beb526c&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=932296c1&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After minting the token you will see your contract address and "Sign Ownership" button. Select it to be assigned as the owner of the token in the contract.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FQuJxeXQYmsqWvfim7Qy2%252Fimage.png%3Falt%3Dmedia%26token%3D07c27a51-bb53-45d1-8687-451244342d55&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=9c4fbd18&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After signing ownership, select "Verify Token" to verify it on the blockchain explorer, so your token contract is visible: **NOTE:** This feature is still being worked on. If your token did not verify correctly, contact us at <https://t.me/uncx_token> and we will guide you how to proceed!

### LP Tax Token <a href="#lp-tax-token" id="lp-tax-token"></a>

Open <https://app.uncx.network/minter/manage> and connect your wallet to the dapp.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FnHSAV3ZkDuRZ3gwMkypf%252Fimage.png%3Falt%3Dmedia%26token%3D8577a535-be54-48fd-a55e-c8f69afc5c23&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=b1f3ab2b&#x26;sv=2" alt=""><figcaption></figcaption></figure>

First, select the chain you want to mint your token on.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FN9oLZTZ33IQqyAuy5Nsa%252Fimage.png%3Falt%3Dmedia%26token%3D04cc3df9-e93d-4168-a0e3-3c1a38c0128f&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=715c65b4&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Select "LP Tax Token" from the Blueprint Selection.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FNPOc4j0EPPfgA6pykfRk%252Fimage.png%3Falt%3Dmedia%26token%3Df6e5b169-b948-455f-a401-9d63291928d2&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=ed71ae3c&#x26;sv=2" alt=""><figcaption></figcaption></figure>

For a LP Tax Token, you have to fill the following fields:

* Full name of your token
* Symbol of your token
* Total supply of your token
* Threshold Amount (The amount of **your tokens** collected needed to trigger an LP injection into your pool)
* Adjust the tax (up to 25% buy/sell)

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FWLftOtzjaJN0SOqP4whd%252Fimage.png%3Falt%3Dmedia%26token%3D7c7750c5-1cbd-47b9-a70c-9ec5a416a0a2&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=11f68259&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Double-check everything on the Final Review screen and select "Continue" to mint your token.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FZ8Va83mUyZwiPeW6wTmI%252Fimage.png%3Falt%3Dmedia%26token%3D8d7dab56-b6b1-4a0b-8b39-567c4ddcdd4b&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=5e8e8da1&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After minting the token you will see your contract address and "Sign Ownership" button. Select it to be assigned as the owner of the token in the contract.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FKGxmNsdDaUOSdkK2x5el%252Fimage.png%3Falt%3Dmedia%26token%3Dffbc273a-37c5-4850-a5a4-b8c2c70a9f1d&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=2c72bd38&#x26;sv=2" alt=""><figcaption></figcaption></figure>

After signing ownership, select "Verify Token" to verify it on the blockchain explorer, so your token contract is visible: **NOTE:** This feature is still being worked on. If your token did not verify correctly, contact us at <https://t.me/uncx_token> and we will guide you how to proceed!


# Edit your token

### &#x20;<a href="#editing-your-token" id="editing-your-token"></a>

In order to edit one of your tokens, open <https://app.uncx.network/minter/manage>. You will see a full list of all your tokens minted with our token minter. To edit one of them, select the "Settings" button, on the right side of the screen.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FGMXO2GSujKfPjcj4ReXw%252Fimage.png%3Falt%3Dmedia%26token%3Dcfa2cd38-9922-489e-aadf-8f40cc9a06a3&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=1468c6de&#x26;sv=2" alt=""><figcaption></figcaption></figure>

### Simple ERC-20 Token <a href="#simple-erc-20-token-1" id="simple-erc-20-token-1"></a>

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Fp1wa3N0Cwp1srZ0xWdNp%252Fimage.png%3Falt%3Dmedia%26token%3D3c0c0874-9101-413e-93d8-2e9a8db4724b&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=897eafad&#x26;sv=2" alt=""><figcaption></figcaption></figure>

As the Simple ERC-20 Token does not have any special functions, there is nothing to edit. You can use this page to copy the token address.

### Hyperlane

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

On the Hyperlane Token edit page you can:

* Add networks to your token to enable multichain functionalities
* Configure the couplings (visible after selecting one of the available networks)

### ERC-404 <a href="#erc-404-1" id="erc-404-1"></a>

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F48oRAMbuUfARsgBy04CP%252Fimage.png%3Falt%3Dmedia%26token%3Dfb061252-d602-4cf2-ab8a-5cd3d9b9db3f&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=e6a06969&#x26;sv=2" alt=""><figcaption></figcaption></figure>

On the ERC-404 edit page you can:

* Edit the Token URL (metadata link)
* Renounce contract ownership

### Tax Token <a href="#tax-token-1" id="tax-token-1"></a>

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252Fp4A7GYv2B5abBDQtp4rY%252Fimage.png%3Falt%3Dmedia%26token%3Df9555a4b-6ab4-41f0-a0f9-d9caadd56174&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=3a0eac32&#x26;sv=2" alt=""><figcaption></figcaption></figure>

On the Tax Token edit page you can:

* Change the buy tax
* Change the sell tax
* Whitelist addresses from fees
* Change the fee receiver
* Renounce contract ownership

### LP Tax Token <a href="#lp-tax-token-1" id="lp-tax-token-1"></a>

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252F8xQcbWYkuDCaWLYbrlGT%252Fimage.png%3Falt%3Dmedia%26token%3D9069570e-d219-48ce-b67b-d778d64233a5&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=58e51b53&#x26;sv=2" alt=""><figcaption></figcaption></figure>

On the LP Tax Token edit page you can:

* Change the buy tax
* Change the sell tax
* Change the tax threshold
* Whitelist addresses from fees
* Renounce contract ownership


# Verify your token

### Guide <a href="#verifying-your-token" id="verifying-your-token"></a>

The last step of the minting process is verifying your token on a blockchain explorer. However, if you have skipped this step during the token creation by refreshing/closing the app, you can still do it from the settings.

Select the token you want to verify and select the "Settings" button.

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FCyGlgUBAuHdxKlPVryVi%252Fimage.png%3Falt%3Dmedia%26token%3D4939823e-2200-4ec7-8bf6-1f268da3d716&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=a782e9c1&#x26;sv=2" alt=""><figcaption></figcaption></figure>

The menu below will open, select the "Verify Token" button. That's it!

<figure><img src="https://docs.uncx.network/~gitbook/image?url=https%3A%2F%2F2670842263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FinUXJ41rMT4w6Y9U1Kol%252Fuploads%252FonlGuSmlsxnBWqPCWb2R%252Fimage.png%3Falt%3Dmedia%26token%3D9ff9340d-7fd2-4ea5-bb8f-c73d1dcbb564&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=22d9d67f&#x26;sv=2" alt=""><figcaption></figcaption></figure>


# Disperser

## Guide

Open the [UNCX app](https://app.uncx.network/) and select the "Disperser".

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

Connect your wallet to the app, then proceed to the settings of the disperser app.

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

### Token Type

The first step is selecting the Token Type you want to disperse. If you want to select ETH, you don't have to fill any additional fields for the token.&#x20;

If you want the Token Type to be a custom ERC20 token, you will have to enter the token address.\ <br>

<figure><img src="/files/6LHhOF2c3x9soIa9pHBx" alt=""><figcaption></figcaption></figure>

### Disperse Type

You can select to disperse an equal amount to all of the recipients using the "Equal Amount" setting. Just input the amount your want to disperse and enter the addresses of the recipients.

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

You can select a "Custom Amount" setting, it allows you to disperse a different amount to each recipient.&#x20;

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

### Uploading recipient wallets with CSV file

Our disperser allows the customer to upload a wallet list with a CSV file, making it especially convenient for larger amounts of wallets. You can download the template at the bottom of the page:

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

To properly fill out the CSV file, make sure that the wallet addresses you want to add are entered in a singular column, one wallet per row. It should look something like this:

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

Make sure that there are no comas or dots, otherwise the file will not be read properly.

After you are finished with editing the file, use the Upload File button and select it from your PC.

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

When the upload is successful, the wallet list should automatically appear above the CSV section.

**Important note:** Make sure to first enter the amount of tokens you want to disperse and then upload the file, otherwise the wallets will not load from CSV file.


# For Developers

In this section, you'll find a brief description of each of our services, along with links to the smart contracts and APIs.


# Subgraphs

## Authentication

### The Graph Network <a href="#the-graph-network" id="the-graph-network"></a>

The Graph Protocol is a decentralised network that serves API requests through its distributed network of indexers. Graph queries are constructed using GraphQL, which allows a high degree of flexibility for the caller. This combination ensures that responses are accurate and fast, and the requests are highly customizable.

### Billing <a href="#billing" id="billing"></a>

In order to obtain your API key, you must first connect your wallet to the Graph and charge your balance with GRT tokens. This can also be accomplished by paying with a card at [https://thegraph.com/studio/billing/(opens in a new tab)](https://thegraph.com/studio/billing/). To avoid exposure to market fluctuations, you have the option to peg your tokens to a stablecoin.

### Pricing Structure <a href="#pricing-structure" id="pricing-structure"></a>

You might consider using Arbitrum for payments, as the fees are significantly cheaper. The Graph charges a variable rate per request, which can be adjusted according to your needs. If you require higher quality responses, you can choose to pay a higher rate.

### &#x20;<a href="#getting-your-api-key" id="getting-your-api-key"></a>


# Liquidity Lockers


# Lockers V2

Developers listing their tokens on decentralized exchanges are granted LP tokens when they initiate a pool. These LP tokens, once in their possession, can be transferred like any other token. A liquidity locker allows the developer to store these LP tokens in a smart contract, revoking his permission to move these LP from the lock date to an end date.


# Contracts

| Chain     | Liquidity Lockers V2                       | Explorer                                                                                                     |
| --------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
| Ethereum  | 0x663a5c229c09b049e36dcc11a9b0d4a8eb9db214 | [etherscan(opens in a new tab)](https://etherscan.io/address/0x663a5c229c09b049e36dcc11a9b0d4a8eb9db214)     |
| BNB Chain | 0xc765bddb93b0d1c1a88282ba0fa6b2d00e3e0c83 | [bscscan(opens in a new tab)](http://bscscan.com/address/0xc765bddb93b0d1c1a88282ba0fa6b2d00e3e0c83)         |
| Polygon   | 0xadb2437e6f65682b85f814fbc12fec0508a7b1d0 | [polygonscan(opens in a new tab)](http://polygonscan.com/address/0xadb2437e6f65682b85f814fbc12fec0508a7b1d0) |
| Arbitrum  | 0x275720567e5955f5f2d53a7a1ab8a0fc643de50e | [arbiscan(opens in a new tab)](http://arbiscan.io/address/0x275720567e5955f5f2d53a7a1ab8a0fc643de50e)        |
| Avalanche | 0xa9f6aefa5d56db1205f36c34e6482a6d4979b3bb | [snowtrace(opens in a new tab)](http://snowtrace.io/address/0xa9f6aefa5d56db1205f36c34e6482a6d4979b3bb)      |
| Base      | 0xc4e637d37113192f4f1f060daebd7758de7f4131 | [basescan](http://basescan.org/address/0xc4e637d37113192f4f1f060daebd7758de7f4131)                           |


# Technical Reference


# UniswapV2Locker (2.1)

## Functions Write <a href="#functions-write" id="functions-write"></a>

### LockLPToken <a href="#locklptoken" id="locklptoken"></a>

```
function lockLPToken (    address _lpToken,    uint256 _amount,    uint256 _unlock_date,    address payable _referral,    bool _fee_in_eth,    address payable _withdrawer,    uint16 _countryCode) external payable
```

Creates a new lock.

Parameters:

| Name           | Type    | Description                                                                                   |
| -------------- | ------- | --------------------------------------------------------------------------------------------- |
| \_lpToken      | address | The univ2 token address.                                                                      |
| \_amount       | uint256 | Amount of LP tokens to lock.                                                                  |
| \_unlock\_date | uint256 | The unix timestamp (in seconds) until unlock.                                                 |
| \_referral     | address | The referrer address if any or address(0) for none.                                           |
| \_fee\_in\_eth | bool    | Fees can be paid in eth or in a secondary token such as UNCX with a discount on univ2 tokens. |
| \_withdrawer   | address | The user who can withdraw liquidity once the lock expires.                                    |
| \_countryCode  | uint16  | The code of the country from which the lock user account/business is from.                    |

***

### Relock <a href="#relock" id="relock"></a>

```
function relock (    uint256 _lockID,    uint256 _unlock_date) external
```

Extends a lock with a new unlock date.

Parameters:

| Name           | Type    | Description                                                                                  |
| -------------- | ------- | -------------------------------------------------------------------------------------------- |
| \_lockID       | uint256 | The ID of the lock to be extended.                                                           |
| \_unlock\_date | uint256 | The new unix timestamp (in seconds) until unlock. This must be greater than the current one. |

***

### Withdraw <a href="#withdraw" id="withdraw"></a>

```
function withdraw (    uint256 _lockID,    uint256 _amount) external
```

Withdraws a specified amount from a lock.

Parameters:

| Name     | Type    | Description                                    |
| -------- | ------- | ---------------------------------------------- |
| \_lockID | uint256 | ID associated with the specific locked tokens. |
| \_amount | uint256 | Amount of tokens the user wishes to withdraw.  |

***

### IncrementLock <a href="#incrementlock" id="incrementlock"></a>

```
function incrementLock (    uint256 _lockID,    uint256 _amount) external
```

Increases the amount of tokens per a specific lock.

Parameters:

| Name     | Type    | Description                                               |
| -------- | ------- | --------------------------------------------------------- |
| \_lockID | uint256 | ID associated with the specific locked tokens.            |
| \_amount | uint256 | Amount of tokens the contract or user wishes to lock/add. |

***

### SplitLock <a href="#splitlock" id="splitlock"></a>

```
function splitLock (    uint256 _lockID,     uint256 _amount) external payable 
```

Splits a lock into two seperate locks.

Parameters:

| Name      | Type    | Description                                    |
| --------- | ------- | ---------------------------------------------- |
| `_lockID` | uint256 | ID associated with the specific locked tokens. |
| `_amount` | uint256 | Amount of tokens the user wishes to split.     |

***

### TransferLockOwnership <a href="#transferlockownership" id="transferlockownership"></a>

```
function transferLockOwnership (    uint256 _lockID,     address payable _newOwner) external
```

Transfers a lock to a new owner.

Parameters:

| Name       | Type    | Description                                      |
| ---------- | ------- | ------------------------------------------------ |
| \_lockID   | uint256 | ID associated with the specific locked tokens.   |
| \_newOwner | address | The new owner's address to transfer the lock to. |

***

### Migrate <a href="#migrate" id="migrate"></a>

```
function migrate (    uint256 _lockID,     uint256 _amount,     uint256 _migration_option) external 
```

Migrates liquidity to the next release of an AMM

Parameters:

| Name                | Type    | Description                                            |
| ------------------- | ------- | ------------------------------------------------------ |
| \_lockID            | uint256 | ID associated with the specific locked tokens.         |
| \_amount            | uint256 | Amount of tokens the user wishes to migrate.           |
| \_migration\_option | uint256 | Option to be used as an AMM selector during migration. |

***

## Functions View <a href="#functions-view" id="functions-view"></a>

### GetNumLocksForToken <a href="#getnumlocksfortoken" id="getnumlocksfortoken"></a>

```
function getNumLocksForToken (address _lpToken) external view returns (uint256)
```

Parameters:

| Name      | Type    | Description              |
| --------- | ------- | ------------------------ |
| \_lpToken | address | Address of the LP token. |

Return Values:

| Type    | Description                                 |
| ------- | ------------------------------------------- |
| uint256 | Number of locks for the specified LP token. |

***

### GetNumLockedTokens <a href="#getnumlockedtokens" id="getnumlockedtokens"></a>

```
function getNumLockedTokens () external view returns (uint256)
```

Return Values:

| Type    | Description                     |
| ------- | ------------------------------- |
| uint256 | Number of unique locked tokens. |

***

### GetLockedTokenAtIndex <a href="#getlockedtokenatindex" id="getlockedtokenatindex"></a>

```
function getLockedTokenAtIndex (uint256 _index) external view returns (address)
```

Parameters:

| Name     | Type    | Description                |
| -------- | ------- | -------------------------- |
| `_index` | uint256 | Index of the locked token. |

Return Values:

| Type    | Description                                         |
| ------- | --------------------------------------------------- |
| address | Address of the locked token at the specified index. |

***

### GetUserNumLockedTokens <a href="#getusernumlockedtokens" id="getusernumlockedtokens"></a>

```
function getUserNumLockedTokens (address _user) external view returns (uint256)
```

Parameters:

| Name    | Type    | Description          |
| ------- | ------- | -------------------- |
| `_user` | address | Address of the user. |

Return Values:

| Type    | Description                                 |
| ------- | ------------------------------------------- |
| uint256 | Number of unique tokens locked by the user. |

***

### GetUserLockedTokenAtIndex <a href="#getuserlockedtokenatindex" id="getuserlockedtokenatindex"></a>

```
function getUserLockedTokenAtIndex (address _user, uint256 _index) external view returns (address)
```

Parameters:

| Name    | Type    | Description                |
| ------- | ------- | -------------------------- |
| \_user  | address | Address of the user.       |
| \_index | uint256 | Index of the locked token. |

Return Values:

| Type    | Description                                                      |
| ------- | ---------------------------------------------------------------- |
| address | Address of the locked token at the specified index for the user. |

***

### GetUserNumLocksForToken <a href="#getusernumlocksfortoken" id="getusernumlocksfortoken"></a>

```
function getUserNumLocksForToken (address _user, address _lpToken) external view returns (uint256)
```

Parameters:

| Name    | Type    | Description          |
| ------- | ------- | -------------------- |
| `_user` | address | Address of the user. |

Return Values:

| Type    | Description                                 |
| ------- | ------------------------------------------- |
| uint256 | Number of unique tokens locked by the user. |

***

### GetUserLockForTokenAtIndex <a href="#getuserlockfortokenatindex" id="getuserlockfortokenatindex"></a>

```
function getUserLockForTokenAtIndex (    address _user,     address _lpToken,     uint256 _index) external view   returns (TokenLock memory)
```

Parameters:

| Name     | Type    | Description                |
| -------- | ------- | -------------------------- |
| `_user`  | address | Address of the user.       |
| `_index` | uint256 | Index of the locked token. |

Return Values:

| Type    | Description                                                      |
| ------- | ---------------------------------------------------------------- |
| address | Address of the locked token at the specified index for the user. |

***

### GetWhitelistedUsersLength <a href="#getwhitelisteduserslength" id="getwhitelisteduserslength"></a>

```
function getWhitelistedUsersLength () external view returns (uint256)
```

Parameters:

| Name       | Type    | Description              |
| ---------- | ------- | ------------------------ |
| `_user`    | address | Address of the user.     |
| `_lpToken` | address | Address of the LP token. |

Return Values:

| Type    | Description                                              |
| ------- | -------------------------------------------------------- |
| uint256 | Number of locks for the specified LP token for the user. |

***

### GetWhitelistedUserAtIndex <a href="#getwhitelisteduseratindex" id="getwhitelisteduseratindex"></a>

```
function getWhitelistedUserAtIndex (uint256 _index) external view returns (address)
```

Parameters:

| Name       | Type    | Description                |
| ---------- | ------- | -------------------------- |
| `_user`    | address | Address of the user.       |
| `_lpToken` | address | Address of the LP token.   |
| `_index`   | uint256 | Index of the locked token. |

Return Values:

| Type      | Description                                                                                                                                                                                                   |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| TokenLock | An object that contains: `lpToken` (address), `lockDate` (uint256), `amount` (uint256), `initialAmount` (uint256), `unlockDate` (uint256), `lockID` (uint256), `owner` (address), and `countryCode` (uint16). |

***

### GetUserWhitelistStatus <a href="#getuserwhiteliststatus" id="getuserwhiteliststatus"></a>

```
function getUserWhitelistStatus (address _user) external view returns (bool)
```

Return Values:

| Type    | Description                       |
| ------- | --------------------------------- |
| uint256 | Number of users on the whitelist. |

## Events <a href="#events" id="events"></a>

### OnNewLock <a href="#onnewlock" id="onnewlock"></a>

```
event onNewLock(    uint256 indexed lockID,     address indexed lpToken,     address indexed owner,     uint256 amount,     uint256 lockDate,     uint256 unlockDate,     uint16 countryCode)
```

Parameters:

| Name        | Type    | Description                                 |
| ----------- | ------- | ------------------------------------------- |
| lockID      | uint256 | ID of the new lock.                         |
| lpToken     | address | The LP token involved in the lock.          |
| owner       | address | Address of the lock owner.                  |
| amount      | uint256 | Amount of tokens in the lock.               |
| lockDate    | uint256 | Date when the tokens were locked.           |
| unlockDate  | uint256 | Date when the tokens can be withdrawn.      |
| countryCode | uint16  | The country code of the locker or business. |

***

### OnRelock <a href="#onrelock" id="onrelock"></a>

```
event onRelock(    uint256 indexed lockID,     address indexed lpToken,     address indexed owner,     uint256 amountRemainingInLock,     uint256 liquidityFee,     uint256 unlockDate)
```

Parameters:

| Name                  | Type    | Description                             |
| --------------------- | ------- | --------------------------------------- |
| lockID                | uint256 | ID of the relocked token.               |
| lpToken               | address | The LP token involved in the relock.    |
| owner                 | address | Address of the lock owner.              |
| amountRemainingInLock | uint256 | Amount of tokens remaining in the lock. |
| liquidityFee          | uint256 | Fee associated with the liquidity.      |
| unlockDate            | uint256 | Date when the tokens can be withdrawn.  |

***

### OnWithdraw <a href="#onwithdraw" id="onwithdraw"></a>

```
event onWithdraw(    uint256 indexed lockID,     address indexed lpToken,     address indexed owner,     uint256 amountRemainingInLock,     uint256 amountRemoved)
```

Parameters:

| Name                  | Type    | Description                              |
| --------------------- | ------- | ---------------------------------------- |
| lockID                | uint256 | ID of the withdrawn lock.                |
| lpToken               | address | The LP token involved in the withdrawal. |
| owner                 | address | Address of the lock owner.               |
| amountRemainingInLock | uint256 | Amount of tokens remaining in the lock.  |
| amountRemoved         | uint256 | Amount of tokens removed from the lock.  |

***

### OnIncrementLock <a href="#onincrementlock" id="onincrementlock"></a>

```
event onIncrementLock(    uint256 indexed lockID,     address indexed lpToken,     address indexed owner,     address payer,     uint256 amountRemainingInLock,     uint256 amountAdded,     uint256 liquidityFee)
```

Parameters:

| Name                  | Type    | Description                                    |
| --------------------- | ------- | ---------------------------------------------- |
| lockID                | uint256 | ID of the incremented lock.                    |
| lpToken               | address | The LP token involved in the increment.        |
| owner                 | address | Address of the lock owner.                     |
| payer                 | address | Address of the one who paid for the increment. |
| amountRemainingInLock | uint256 | Amount of tokens remaining in the lock.        |
| amountAdded           | uint256 | Amount of tokens added to the lock.            |
| liquidityFee          | uint256 | Fee associated with the liquidity.             |

***

### OnSplitLock <a href="#onsplitlock" id="onsplitlock"></a>

```
event onSplitLock(    uint256 indexed lockID,     address indexed lpToken,     address indexed owner,     uint256 amountRemainingInLock,     uint256 amountRemoved)
```

Parameters:

| Name                  | Type    | Description                                |
| --------------------- | ------- | ------------------------------------------ |
| lockID                | uint256 | ID of the split lock.                      |
| lpToken               | address | The LP token involved in the split.        |
| owner                 | address | Address of the lock owner.                 |
| amountRemainingInLock | uint256 | Amount of tokens remaining in the lock.    |
| amountRemoved         | uint256 | Amount of tokens removed during the split. |

***

### OnTransferLockOwnership <a href="#ontransferlockownership" id="ontransferlockownership"></a>

```
event onTransferLockOwnership(    uint256 indexed lockID,     address indexed lpToken,     address indexed oldOwner,     address newOwner)
```

Parameters:

| Name     | Type    | Description                                    |
| -------- | ------- | ---------------------------------------------- |
| lockID   | uint256 | ID of the lock whose ownership is transferred. |
| lpToken  | address | The LP token involved in the transfer.         |
| oldOwner | address | Address of the previous lock owner.            |
| newOwner | address | Address of the new lock owner.                 |

***

### OnMigrate <a href="#onmigrate" id="onmigrate"></a>

```
event OnMigrate(    uint256 indexed lockID,     address indexed lpToken,     address indexed owner,     uint256 amountRemainingInLock,     uint256 amountMigrated,     uint256 migrationOption)
```

Parameters:

| Name                  | Type    | Description                             |
| --------------------- | ------- | --------------------------------------- |
| lockID                | uint256 | ID of the migrated lock.                |
| lpToken               | address | The LP token involved in the migration. |
| owner                 | address | Address of the lock owner.              |
| amountRemainingInLock | uint256 | Amount of tokens remaining in the lock. |
| amountMigrated        | uint256 | Amount of tokens migrated.              |
| migrationOption       | uint256 | Option selected for migration.          |


# UniswapV2Locker

## Functions Write <a href="#functions-write" id="functions-write"></a>

### LockLPToken <a href="#locklptoken" id="locklptoken"></a>

```
function lockLPToken (    address _lpToken,    uint256 _amount,    uint256 _unlock_date,    address payable _referral,    bool _fee_in_eth,    address payable _withdrawer) external payable 
```

Creates a new lock.

Parameters:

| Name           | Type            | Description                                                                    |
| -------------- | --------------- | ------------------------------------------------------------------------------ |
| `_lpToken`     | address         | The UniV2 token address.                                                       |
| `_amount`      | uint256         | Amount of LP tokens to lock.                                                   |
| `_unlock_date` | uint256         | The Unix timestamp (in seconds) until unlock.                                  |
| `_referral`    | address payable | The referrer address. Use `address(0)` if there is none.                       |
| `_fee_in_eth`  | bool            | If `true`, fees will be paid in ETH. Otherwise, in a secondary token like UNCX |
| `_withdrawer`  | address payable | The user who can withdraw liquidity once the lock expires.                     |

***

### Relock <a href="#relock" id="relock"></a>

```
function relock (    address _lpToken,     uint256 _index,     uint256 _lockID,     uint256 _unlock_date) external 
```

Extends a lock with a new unlock date.

Parameters:

| Name           | Type    | Description                                                       |
| -------------- | ------- | ----------------------------------------------------------------- |
| `_lpToken`     | address | The liquidity pool token address associated with the locked funds |
| `_index`       | uint256 | Index indicating the lock's position in the user's lock array     |
| `_lockID`      | uint256 | ID of the lock ensuring the correct lock undergoes the extension  |
| `_unlock_date` | uint256 | New proposed unlock date (timestamp) for the tokens               |

***

### Withdraw <a href="#withdraw" id="withdraw"></a>

```
function withdraw (    address _lpToken,     uint256 _index,     uint256 _lockID,     uint256 _amount) external 
```

Withdraws a specified amount from a lock.

Parameters:

| Name       | Type    | Description                                                           |
| ---------- | ------- | --------------------------------------------------------------------- |
| `_lpToken` | address | The liquidity pool token address from which funds are to be withdrawn |
| `_index`   | uint256 | Index of the lock for the user                                        |
| `_lockID`  | uint256 | ID of the lock to ensure the correct lock is changed                  |
| `_amount`  | uint256 | Amount of tokens to be withdrawn                                      |

***

### IncrementLock <a href="#incrementlock" id="incrementlock"></a>

```
function incrementLock(    address _lpToken,     uint256 _index,     uint256 _lockID,     uint256 _amount) external 
```

Increases the amount of tokens per a specific lock.

Parameters:

| Name       | Type    | Description                                                        |
| ---------- | ------- | ------------------------------------------------------------------ |
| `_lpToken` | address | The liquidity pool token address associated with the lock.         |
| `_index`   | uint256 | Index indicating the lock's position in the user's array of locks. |
| `_lockID`  | uint256 | ID of the lock to ensure the correct lock is being incremented.    |
| `_amount`  | uint256 | The amount by which the locked tokens should be increased.         |

***

### SplitLock <a href="#splitlock" id="splitlock"></a>

```
function splitLock(    address _lpToken,     uint256 _index,     uint256 _lockID,     uint256 _amount) external payable 
```

Splits a lock into two seperate locks.

Parameters:

| Name       | Type    | Description                                                        |
| ---------- | ------- | ------------------------------------------------------------------ |
| `_lpToken` | address | The liquidity pool token address associated with the lock.         |
| `_index`   | uint256 | Index indicating the lock's position in the user's array of locks. |
| `_lockID`  | uint256 | ID of the lock to ensure the correct lock is being split.          |
| `_amount`  | uint256 | The amount of tokens to be allocated to the new split lock.        |

***

### TransferLockOwnership <a href="#transferlockownership" id="transferlockownership"></a>

```
function transferLockOwnership (    address _lpToken,     uint256 _index,     uint256 _lockID,     address payable _newOwner) external
```

Transfers a lock to a new owner.

Parameters:

| Name        | Type            | Description                                                                |
| ----------- | --------------- | -------------------------------------------------------------------------- |
| `_lpToken`  | address         | The liquidity pool token address associated with the lock.                 |
| `_index`    | uint256         | Index indicating the lock's position in the user's array of locks.         |
| `_lockID`   | uint256         | ID of the lock to ensure the correct lock is being transferred.            |
| `_newOwner` | address payable | Address of the new owner to whom the lock ownership should be transferred. |

***

### Migrate <a href="#migrate" id="migrate"></a>

```
function migrate (    address _lpToken,     uint256 _index,     uint256 _lockID,     uint256 _amount) external 
```

Migrates liquidity to uniswap v3.

Parameters:

| Name       | Type    | Description                                                                        |
| ---------- | ------- | ---------------------------------------------------------------------------------- |
| `_lpToken` | address | The liquidity pool token address that will be migrated to Uniswap V3.              |
| `_index`   | uint256 | Index of the lock for the user in their list of locks for the specific `_lpToken`. |
| `_lockID`  | uint256 | ID of the lock to ensure the correct lock is affected during migration.            |
| `_amount`  | uint256 | Amount of tokens from the lock to be migrated to Uniswap V3.                       |

## Functions View <a href="#functions-view" id="functions-view"></a>

### GetNumLocksForToken <a href="#getnumlocksfortoken" id="getnumlocksfortoken"></a>

```
function getNumLocksForToken (address _lpToken) external view returns (uint256)
```

Retrieves the amount of locks associated with a specific liquidity pool token.

Parameters:

| Name       | Type    | Description                              |
| ---------- | ------- | ---------------------------------------- |
| `_lpToken` | address | The address of the liquidity pool token. |

Return Values:

| Type    | Description                                                        |
| ------- | ------------------------------------------------------------------ |
| uint256 | Number of locks associated with the provided liquidity pool token. |

***

### GetNumLockedTokens <a href="#getnumlockedtokens" id="getnumlockedtokens"></a>

```
function getNumLockedTokens () external view returns (uint256) 
```

Retrieves the total number of unique tokens that have been locked.

Return Values:

| Type    | Description                    |
| ------- | ------------------------------ |
| uint256 | Total number of locked tokens. |

***

### GetLockedTokenAtIndex <a href="#getlockedtokenatindex" id="getlockedtokenatindex"></a>

```
function getLockedTokenAtIndex (uint256 _index) external view returns (address)
```

Fetches the address of the locked token at a specified index.

Retrieves the total number of unique tokens that have been locked.

Parameters:

| Name     | Type    | Description                                              |
| -------- | ------- | -------------------------------------------------------- |
| `_index` | uint256 | Index to specify which locked token address to retrieve. |

Return Values:

| Type    | Description                                         |
| ------- | --------------------------------------------------- |
| address | Address of the locked token at the specified index. |

***

### GetUserNumLockedTokens <a href="#getusernumlockedtokens" id="getusernumlockedtokens"></a>

```
function getUserNumLockedTokens (address _user) external view returns (uint256)
```

Retrieves the amount of unique tokens locked by a specific user.

Parameters:

| Name    | Type    | Description          |
| ------- | ------- | -------------------- |
| `_user` | address | Address of the user. |

Return Values:

| Type    | Description                                     |
| ------- | ----------------------------------------------- |
| uint256 | Number of locked tokens for the specified user. |

***

### GetUserLockedTokenAtIndex <a href="#getuserlockedtokenatindex" id="getuserlockedtokenatindex"></a>

```
function getUserLockedTokenAtIndex (address _user, uint256 _index) external view returns (address)
```

Fetches the address of the locked token for a specific user at a given index.

Parameters:

| Name     | Type    | Description                                       |
| -------- | ------- | ------------------------------------------------- |
| `_user`  | address | Address of the user.                              |
| `_index` | uint256 | Index to specify which token address to retrieve. |

Return Values:

| Type    | Description                                                            |
| ------- | ---------------------------------------------------------------------- |
| address | Address of the locked token at the specified index for the given user. |

***

### GetUserNumLocksForToken <a href="#getusernumlocksfortoken" id="getusernumlocksfortoken"></a>

```
function getUserNumLocksForToken (address _user, address _lpToken) external view returns (uint256)
```

Retrieves the amount of locks a user has for a specific liquidity pool token.

Parameters:

| Name       | Type    | Description                              |
| ---------- | ------- | ---------------------------------------- |
| `_user`    | address | Address of the user.                     |
| `_lpToken` | address | The address of the liquidity pool token. |

Return Values:

| Type    | Description                                                      |
| ------- | ---------------------------------------------------------------- |
| uint256 | Number of locks for the specified user and liquidity pool token. |

***

### GetWhitelistedUsersLength <a href="#getwhitelisteduserslength" id="getwhitelisteduserslength"></a>

```
 function getWhitelistedUsersLength () external view returns (uint256)
```

Retrieves the amount of users whitelisted.

Return Values:

| Type    | Description                             |
| ------- | --------------------------------------- |
| uint256 | Total number of users in the whitelist. |

***

### GetUserLockForTokenAtIndex <a href="#getuserlockfortokenatindex" id="getuserlockfortokenatindex"></a>

```
function getUserLockForTokenAtIndex (address _user, address _lpToken, uint256 _index) external view returns (uint256, uint256, uint256, uint256, uint256, address)
```

Provides details of a specific lock a user has for a liquidity pool token.

Parameters:

| Name       | Type    | Description                                               |
| ---------- | ------- | --------------------------------------------------------- |
| `_user`    | address | Address of the user.                                      |
| `_lpToken` | address | The address of the liquidity pool token.                  |
| `_index`   | uint256 | Index indicating the lock's position in the user's array. |

Return Values:

| Name            | Type    | Description                                 |
| --------------- | ------- | ------------------------------------------- |
| `lockDate`      | uint256 | Date when the tokens were locked.           |
| `amount`        | uint256 | Amount of tokens locked.                    |
| `initialAmount` | uint256 | Initial amount of tokens when first locked. |
| `unlockDate`    | uint256 | Date when the tokens will be unlocked.      |
| `lockID`        | uint256 | ID of the token lock.                       |
| `owner`         | address | Address of the token lock owner.            |

***

### GetWhitelistedUserAtIndex <a href="#getwhitelisteduseratindex" id="getwhitelisteduseratindex"></a>

```
function getWhitelistedUserAtIndex (uint256 _index) external view returns (address)
```

Retrieves the address of a whitelisted user at a specified index.

Parameters:

| Name     | Type    | Description                                               |
| -------- | ------- | --------------------------------------------------------- |
| `_index` | uint256 | Index to specify which whitelisted user address to fetch. |

Return Values:

| Type    | Description                                             |
| ------- | ------------------------------------------------------- |
| address | Address of the whitelisted user at the specified index. |

***

### GetUserWhitelistStatus <a href="#getuserwhiteliststatus" id="getuserwhiteliststatus"></a>

```
function getUserWhitelistStatus (address _user) external view returns (bool)
```

Checks if a user is whitelisted or not.

Parameters:

| Name    | Type    | Description          |
| ------- | ------- | -------------------- |
| `_user` | address | Address of the user. |

Return Values:

| Type | Description                                                          |
| ---- | -------------------------------------------------------------------- |
| bool | Boolean indicating if the specified user is in the whitelist or not. |

## Events <a href="#events" id="events"></a>

### OnDeposit <a href="#ondeposit" id="ondeposit"></a>

```
  event onDeposit(    address lpToken,    address user,    uint256 amount,    uint256 lockDate,    uint256 unlockDate   )
```

Emitted on [LockLPToken](https://developers.uncx.network/lockers-v2/technicalReference/uniswapV2Locker#locklptoken) and [Relock](https://developers.uncx.network/lockers-v2/technicalReference/uniswapV2Locker#relock).

Parameters:

| Name         | Type    | Description                                           |
| ------------ | ------- | ----------------------------------------------------- |
| `lpToken`    | address | The liquidity pool token associated with the deposit. |
| `user`       | address | Address of the user making the deposit.               |
| `amount`     | uint256 | Amount of tokens deposited.                           |
| `lockDate`   | uint256 | Date when the tokens were locked.                     |
| `unlockDate` | uint256 | Date when the tokens will be unlocked.                |

***

### OnWithdraw <a href="#onwithdraw" id="onwithdraw"></a>

```
  event onWithdraw(    address lpToken,    uint256 amount   )
```

Emitted on [Withdraw](https://developers.uncx.network/lockers-v2/technicalReference/uniswapV2Locker#withdraw).

Parameters:

| Name      | Type    | Description                                              |
| --------- | ------- | -------------------------------------------------------- |
| `lpToken` | address | The liquidity pool token associated with the withdrawal. |
| `amount`  | uint256 | Amount of tokens withdrawn.                              |


# Subgraphs


# Endpoints

### The Graph Network <a href="#the-graph-network" id="the-graph-network"></a>

| Chain     | Endpoint                                                                                                                                                                                                                                                                 |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Base      | [https://thegraph.com/explorer/subgraphs/5NwRYFsj3tvtJ9bQDKc7pLKdkNcybAdXE8sitm4b3LWm?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/5NwRYFsj3tvtJ9bQDKc7pLKdkNcybAdXE8sitm4b3LWm?view=Query\&chain=arbitrum-one)           |
| Ethereum  | [https://thegraph.com/explorer/subgraphs/5gByjbCu558gLVwzvWiYD8JPQC8KLk6PSe9AVFy8LC69?v=3\&view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/5gByjbCu558gLVwzvWiYD8JPQC8KLk6PSe9AVFy8LC69?v=3\&view=Query\&chain=arbitrum-one) |
| Arbitrum  | [https://thegraph.com/explorer/subgraphs/9tHceukBZ5hFEcAH7zoV5zXxGDYQRezZr1ZMgwUcLK5w?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/9tHceukBZ5hFEcAH7zoV5zXxGDYQRezZr1ZMgwUcLK5w?view=Query\&chain=arbitrum-one)           |
| Polygon   | [https://thegraph.com/explorer/subgraphs/45uxcY7sHRXbcaEZbFsaaSfWhvkYheoneAwNzW5FvAgk?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/45uxcY7sHRXbcaEZbFsaaSfWhvkYheoneAwNzW5FvAgk?view=Query\&chain=arbitrum-one)           |
| BNB Chain | [https://thegraph.com/explorer/subgraphs/2tcZ7Q7N56yxK2uyVvWqidUucV8dRBh621NR3EyntKui?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/2tcZ7Q7N56yxK2uyVvWqidUucV8dRBh621NR3EyntKui?view=Query\&chain=arbitrum-one)           |
| Avalanche | <https://thegraph.com/explorer/subgraphs/FFbvdrLc4DkgsdYkVPkciReFzfvSKP1yRx5tHtCmpiWE?view=Query&chain=arbitrum-one>                                                                                                                                                     |


# Queries

## Sample Queries

GraphQL's flexible query structure allows you to explore various data fetching strategies (such as direct lookup, pagination, diffing, etc). This page will help you get started by providing examples using the most techniques.

## Try Out The Queries <a href="#try-out-the-queries" id="try-out-the-queries"></a>

You can try out the Lockers V2 queries below using Graph Protocol's playground:

[https://thegraph.com/explorer/subgraphs/5gByjbCu558gLVwzvWiYD8JPQC8KLk6PSe9AVFy8LC69?view=Playground\&chain=arbitrum-one ↗(opens in a new tab)](https://thegraph.com/explorer/subgraphs/5gByjbCu558gLVwzvWiYD8JPQC8KLk6PSe9AVFy8LC69?view=Playground\&chain=arbitrum-one)

All of the examples can also be accessed from the preset dropdown.

## Get First 10 Locks Where Locked Liquidity is Greater Than 0 <a href="#get-first-10-locks-where-locked-liquidity-is-greater-than-0" id="get-first-10-locks-where-locked-liquidity-is-greater-than-0"></a>

This query returns all locks that currently exist on all AMMs for a given chain (regardless of their expiration).

The amount of locks returned might exceed the Subgraph return limit (currently at `1000` results per query). It is suggested to combine this query with various [Pagination Techniques(opens in a new tab)](https://thegraph.com/docs/en/querying/graphql-api/#pagination).

```
{  locks(first: 10, where: { lockedLiquidity_gt: 0 }) {    id    pool {      totalSupply      token0 {        id      }      token1 {        id      }    }    lockedPercent    lockedLiquidity    unlockDate    owner {      id    }    lockID  }}
```

## Get All Locks After a Block <a href="#get-all-locks-after-a-block" id="get-all-locks-after-a-block"></a>

```
{  locks(where: { _change_block: { number_gte: 18200000 } }) {    id    pool {      totalSupply    }    unlockDate    amount0    amount1    lockedLiquidity  }}
```

## Get All Locks For a Pool <a href="#get-all-locks-for-a-pool" id="get-all-locks-for-a-pool"></a>

```
{  lockedPools(    where: { pool_: { id: "0xf531ca1336663dfb6bd581b011c74482ee20f6d5" } }  ) {    pool {      totalSupply    }    locks {      id      unlockDate      liquidity    }  }}
```


# Entities

## Entities <a href="#locker" id="locker"></a>

### Locker <a href="#locker" id="locker"></a>

`Locker` entity holds information about all UNCX lockers, each locker corresponding to a specific AMM.

| Field        | Type                   | Description                                                                 |
| ------------ | ---------------------- | --------------------------------------------------------------------------- |
| id           | ID!                    | Locker Address                                                              |
| totalLocks   | BigInt!                | Total number of locks associated with the locker                            |
| totalTokens  | BigInt!                | Total number of tokens associated with the locker                           |
| feeWhitelist | \[WhitelistedWallet!]! | Fee whitelisted wallets; these accounts do not pay flatrate fees on locking |
| fees         | Fees!                  | Reference to the fee details associated with the locker                     |

### LockedPool <a href="#lockedpool" id="lockedpool"></a>

`LockedPool` encapsulates the overall lock data for a pool. Each pool can have multiple locks associated with it.

| Field         | Type        | Description                                                                                  |
| ------------- | ----------- | -------------------------------------------------------------------------------------------- |
| id            | ID!         | Combination of Locker and Pair addresses                                                     |
| pool          | Pool!       | Pool address                                                                                 |
| locker        | Locker!     | Locker address                                                                               |
| numberOfLocks | BigInt!     | Total number of locks for a pair address                                                     |
| mainToken     | Token!      | Main token (does not follow token0 / token1 contract order)                                  |
| baseToken     | Token!      | Core tokens like stablecoins, ETH, BNB etc. (does not follow token0 / token1 contract order) |
| lockIds       | \[String!]! | All lock IDs associated with the pool                                                        |
| locks         | \[Lock!]!   | All locks for LP token derived from the 'lockedPool' field                                   |

### Lock <a href="#lock" id="lock"></a>

`Lock` provides the base-level data for locked liquidity. Some properties starting with 'locked..' are non-withdrawable assets (i.e., `unlockDate > current timestamp`). Other properties describe withdrawable assets and their value.

| Field           | Type                   | Description                                                                                   |
| --------------- | ---------------------- | --------------------------------------------------------------------------------------------- |
| id              | ID!                    | V2 contracts: Locker + Pair + LockID; V2.1 contracts: Locker + Nonce                          |
| lockID          | BigInt!                | LockID of the lock                                                                            |
| amount0         | BigDecimal!            | Amount of token0 stored in the lock                                                           |
| amount1         | BigDecimal!            | Amount of token1 stored in the lock                                                           |
| liquidity       | BigDecimal!            | Amount of LP tokens vested in the lock                                                        |
| coreTotalUSD    | BigDecimal!            | Core token USD TVL stored in the lock (e.g., stablecoins, ETH, BNB)                           |
| lockedLiquidity | BigDecimal!            | Liquidity stored in a lock (non-withdrawable)                                                 |
| lockedAmount0   | BigDecimal!            | Amount0 stored in a lock (non-withdrawable)                                                   |
| lockedAmount1   | BigDecimal!            | Amount1 stored in a lock (non-withdrawable)                                                   |
| lockedCoreUSD   | BigDecimal!            | USD value of the core asset locked (non-withdrawable)                                         |
| lockedPercent   | BigDecimal!            | Locked percent of the active liquidity (non-withdrawable)                                     |
| mainToken       | Token!                 | Main token (does not follow token0 / token1 contract order)                                   |
| baseToken       | Token!                 | Core tokens like stablecoins, ETH, BNB, etc. (does not follow token0 / token1 contract order) |
| unlockDate      | BigInt!                | Unlock timestamp                                                                              |
| owner           | Wallet!                | Lock owner address                                                                            |
| countryCode     | BigInt                 | Country code of the project (optional, introduced in V2.1)                                    |
| lockedPool      | LockedPool!            | Locker + Address of the LP tokens locked                                                      |
| pool            | Pool!                  | Address of the LP tokens locked                                                               |
| locker          | Locker!                | Locker address                                                                                |
| blockNumber     | BigInt!                | Last update block                                                                             |
| timestamp       | BigInt!                | Last update timestamp                                                                         |
| eventSnapshots  | \[StateDiffSnapshot!]! | Collection of all event snapshots for a lock                                                  |

### WhitelistedWallet <a href="#whitelistedwallet" id="whitelistedwallet"></a>

`WhitelistedWallet` contains information about wallets that are whitelisted to not pay flat-rate fees on locking operations.

| Field  | Type    | Description                     |
| ------ | ------- | ------------------------------- |
| id     | ID!     | Locker Address + Wallet Address |
| locker | Locker! | The locker address              |
| wallet | Wallet! | The whitelisted wallet address  |

### Wallet <a href="#wallet" id="wallet"></a>

`Wallet` provides an aggregated view of all locks and whitelisted lockers for a specific wallet address.

| Field              | Type                  | Description                                                     |
| ------------------ | --------------------- | --------------------------------------------------------------- |
| id                 | ID!                   | Unique identifier for the wallet, usually the wallet's address. |
| locks              | \[Lock!]              | List of liquidity locks that this wallet owns.                  |
| whitelistedLockers | \[WhitelistedWallet!] | List of all lockers where this wallet is fee whitelisted.       |

### Token <a href="#token" id="token"></a>

The `Token` entity stores all information related to Total Value Locked (TVL) and LockedTVL (non-withdrawable assets) in a specific token. TVL is considered only if the token is paired with a liquid stablecoin or a sizable protocol/gas token like ETH, BTC, BNB, etc.

| Field                   | Type                  | Description                                                                            |
| ----------------------- | --------------------- | -------------------------------------------------------------------------------------- |
| id                      | ID!                   | Smart contract address of the token.                                                   |
| name                    | String!               | Token name, usually mirrored from the smart contract.                                  |
| symbol                  | String!               | Token symbol, usually mirrored from the smart contract.                                |
| decimals                | BigInt!               | Number of decimal places this token uses, default is usually 18.                       |
| tvlUSD                  | BigDecimal!           | Dollar value locked in this token across all pools and AMMs.                           |
| lockedUSD               | BigDecimal!           | Non-withdrawable dollar value locked in this token across all pools and AMMs.          |
| baseTokens              | \[BaseToken!]         | Checks if this token is considered a base token in the system.                         |
| blockNumber             | BigInt!               | Block number when the last update occurred.                                            |
| timestamp               | BigInt!               | Timestamp when the last update occurred.                                               |
| mainTokenReserves       | \[LockedPool!]        | All reserves where this token is the main token.                                       |
| baseTokenReserves       | \[LockedPool!]        | All reserves where this token is considered a core or base token.                      |
| mainTokenLocks          | \[Lock!]              | All locks where this token is the main token.                                          |
| baseTokenLocks          | \[Lock!]              | All locks where this token is considered a core or base token.                         |
| eventSnapshotsMainToken | \[StateDiffSnapshot!] | Collection of all event snapshots where this token is the main token.                  |
| eventSnapshotsBaseToken | \[StateDiffSnapshot!] | Collection of all event snapshots where this token is considered a core or base token. |

### BaseToken <a href="#basetoken" id="basetoken"></a>

The `BaseToken` entity represents a liquid stablecoin or a sizable protocol/gas token like ETH, BTC, BNB, etc. The base price of these assets is constantly updated via a Chainlink Oracle.

| Field                    | Type    | Description                                              |
| ------------------------ | ------- | -------------------------------------------------------- |
| id                       | ID!     | Smart contract address of the token.                     |
| token                    | Token!  | The actual Token entity containing more details.         |
| basePrice                | BigInt! | Current price of the asset, useful for TVL calculations. |
| lastBaseUpdatedTimestamp | BigInt! | Timestamp when the base price was last updated.          |

### Pool <a href="#pool" id="pool"></a>

The `Pool` entity contains data related to liquidity pools. It provides information about the tokens involved, the liquidity provided, and other related parameters.

| Field       | Type            | Description                                                |
| ----------- | --------------- | ---------------------------------------------------------- |
| id          | ID!             | Unique identifier for the pair address.                    |
| token0      | Token!          | Address of the first token in the pair.                    |
| token1      | Token!          | Address of the second token in the pair.                   |
| lockedPools | \[LockedPool!]! | Array of Locked LP Tokens for this LP address.             |
| reserve0    | BigDecimal!     | Total reserves of the first token (`token0`) in the pool.  |
| reserve1    | BigDecimal!     | Total reserves of the second token (`token1`) in the pool. |
| totalSupply | BigDecimal!     | Total supply of the ERC20 token for this liquidity pair.   |

### Fees <a href="#fees" id="fees"></a>

The `Fees` entity contains data related to various fees in the UNCX ecosystem. This includes the base Ethereum fee, secondary token fees, liquidity fees, and referral discounts.

| Field                  | Type    | Description                                                                                      |
| ---------------------- | ------- | ------------------------------------------------------------------------------------------------ |
| id                     | ID!     | Locker address identifier.                                                                       |
| ethFee                 | BigInt! | Fee amount in Ethereum.                                                                          |
| secondaryFeeToken      | Token!  | Secondary fee token, either UNCX or UNCL.                                                        |
| secondaryTokenFee      | BigInt! | Fee amount for the secondary token, either UNCX or UNCL. (Optional)                              |
| secondaryTokenDiscount | BigInt! | Discount on liquidity fee when burning the secondary token.                                      |
| liquidityFee           | BigInt! | Fee imposed on Uniswap V2 (UNI-V2) liquidity tokens.                                             |
| referralPercent        | BigInt! | Percentage fee for referrals.                                                                    |
| referralToken          | Token!  | The token that a referral wallet must hold to qualify as a referrer.                             |
| referralHold           | BigInt! | Minimum balance of the referral token that a referral wallet must hold to qualify as a referrer. |
| referralDiscount       | BigInt! | Discount on flat-rate fees for using a valid referral address.                                   |

## Snapshots <a href="#snapshots" id="snapshots"></a>

### LockSnapshot <a href="#locksnapshot" id="locksnapshot"></a>

The `LockSnapshot` entity is an immutable snapshot that captures the state of a lock at a specific event. This entity is comprehensive and includes data such as amounts, liquidity, and core token values.

The `id` field is constructed as follows:\
`Locker Address` + `'Events'` + `EventType ('Lock')` + `EventType.eventsNumber (0..10000+)` + `'Before / After'` (depending on the order).

| Field           | Type           | Description                                                      |
| --------------- | -------------- | ---------------------------------------------------------------- |
| id              | ID!            | Composite ID based on locker address, event type, and index.     |
| lockID          | BigInt         | The ID of the lock.                                              |
| amount0         | BigDecimal     | The amount of `token0` stored in the lock.                       |
| amount1         | BigDecimal     | The amount of `token1` stored in the lock.                       |
| liquidity       | BigDecimal     | The amount of LP tokens vested in the lock.                      |
| coreTotalUSD    | BigDecimal     | Core token USD TVL stored in the lock.                           |
| lockedLiquidity | BigDecimal     | Liquidity stored in a lock that is non-withdrawable.             |
| lockedAmount0   | BigDecimal     | Amount of `token0` stored in a lock that is non-withdrawable.    |
| lockedAmount1   | BigDecimal     | Amount of `token1` stored in a lock that is non-withdrawable.    |
| lockedCoreUSD   | BigDecimal     | USD value of the core asset locked that is non-withdrawable.     |
| lockedPercent   | BigDecimal     | The percentage of the active liquidity that is non-withdrawable. |
| mainToken       | TokenSnapshot! | The main token associated with the lock.                         |
| baseToken       | TokenSnapshot! | Core tokens like stablecoins, ETH, BNB, etc.                     |
| unlockDate      | BigInt         | The timestamp at which the lock will be unlocked.                |
| owner           | Wallet         | The owner address of the lock.                                   |
| countryCode     | BigInt         | The country code of the project, introduced in V2.1 (optional).  |

### TokenSnapshot <a href="#tokensnapshot" id="tokensnapshot"></a>

The `TokenSnapshot` entity is an immutable representation capturing the state of a token at a specific event in time. It includes values like the total dollar value locked in all pools as well as the non-withdrawable dollar value.

The `id` field is constructed as follows:\
`Locker Address` + `'Events'` + `EventType (name)` + `EventType.eventsNumber (index)` + `'Before / After'` (depending on the order).

| Field     | Type        | Description                                                                         |
| --------- | ----------- | ----------------------------------------------------------------------------------- |
| id        | ID!         | Composite ID generated from the Locker Address, Events, EventType, and event index. |
| tvlUSD    | BigDecimal! | Dollar value locked in this token across all pools.                                 |
| lockedUSD | BigDecimal! | Non-withdrawable dollar value locked in this token across all pools.                |

### StateDiffSnapshot <a href="#statediffsnapshot" id="statediffsnapshot"></a>

The `StateDiffSnapshot` entity stores all before and after event snapshots. Users can filter snapshots based on the event type using the `eventType` field.

| Field            | Type             | Description                                |
| ---------------- | ---------------- | ------------------------------------------ |
| id               | ID!              | Locker address + event index               |
| eventType        | EventType!       | Type of event                              |
| lockBefore       | LockSnapshot!    | Lock event snapshot before the transaction |
| lockAfter        | LockSnapshot!    | Lock event snapshot after the transaction  |
| lock             | Lock!            | Reference to the lock                      |
| pool             | Pool!            | Reference to the pool                      |
| lockedPool       | LockedPool!      | Reference to the locked pool               |
| locker           | Locker!          | Reference to the locker                    |
| mainToken        | Token!           | Reference to the main token                |
| baseToken        | Token!           | Reference to the base token                |
| transaction      | Bytes!           | Transaction hash                           |
| eventsCollection | EventCollection! | Reference to the event collection          |
| blockNumber      | BigInt!          | Event block number                         |
| timestamp        | BigInt!          | Event timestamp                            |

## Events <a href="#events" id="events"></a>

### EventCollection <a href="#eventcollection" id="eventcollection"></a>

The `EventCollection` entity serves as a repository for all event-related snapshots. It keeps track of the number of various events that modify or create locks, such as lock events, withdraw events, etc.

| Field                             | Type                  | Description                                                                                      |
| --------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------ |
| id                                | ID!                   | Composite ID based on locker address and 'Events'.                                               |
| stateDiffSnapshots                | \[StateDiffSnapshot!] | Array of state differences captured by snapshots. These are derived from this `EventCollection`. |
| lockEventsNumber                  | BigInt                | Total number of lock events.                                                                     |
| withdrawEventsNumber              | BigInt                | Total number of withdraw events. (Commented out)                                                 |
| incrementEventsNumber             | BigInt                | Total number of increment lock events. (Commented out)                                           |
| relockEventsNumber                | BigInt                | Total number of relock events. (Commented out)                                                   |
| splitLockEventsNumber             | BigInt                | Total number of split lock events. (Commented out)                                               |
| transferLockOwnershipEventsNumber | BigInt                | Total number of transfer lock ownership events. (Commented out)                                  |
| migrateEventsNumber               | BigInt                | Total number of migrate events. (Commented out)                                                  |

### EventType <a href="#eventtype" id="eventtype"></a>

`EventType` is an enumeration that lists various types of events that can occur within the locker system.

| Value                   | Description                                                |
| ----------------------- | ---------------------------------------------------------- |
| `Lock`                  | Event corresponding to a new liquidity lock.               |
| `Withdraw`              | Event corresponding to a liquidity withdrawal.             |
| `Increment`             | Event corresponding to an increment of existing liquidity. |
| `Relock`                | Event corresponding to a relocking of liquidity.           |
| `SplitLock`             | Event corresponding to the splitting of an existing lock.  |
| `TransferLockOwnership` | Event corresponding to the transfer of lock ownership.     |

## Search <a href="#search" id="search"></a>

### TokenSearch <a href="#tokensearch" id="tokensearch"></a>

The `tokenSearch` is a full-text search schema over the "Token" entity. It enables users to locate specific "Token" entities by their symbols, names, or unique identifiers.

| name        | entity | fields           |
| ----------- | ------ | ---------------- |
| tokenSearch | Token  | symbol, name, id |

### WalletSearch <a href="#walletsearch" id="walletsearch"></a>

The `walletSearch` is a full-text search schema over the "Wallet" entity. It enables users to locate specific "Wallet" entities by their unique identifiers.

| name         | entity | fields |
| ------------ | ------ | ------ |
| walletSearch | Wallet | id     |


# Lockers V3

UNCX Lockers v3 make it possible to lock in liquidity across all price levels. In Uniswap v3, if the current price goes outside of the liquidity range, you can't trade at those prices anymore. By expanding the upper and lower ranges, UNCX Lockers v3 creates a base of tradable reserves. This means users can trade at any price they want, without having to worry about range mismanagement. It also ensures that the person who locks the liquidity always earns the correct fees.

<br>

<figure><img src="https://developers.uncx.network/_next/image?url=%2Fdiagram.png&#x26;w=1920&#x26;q=75" alt=""><figcaption></figcaption></figure>


# Contracts

| Chain     | Liquidity Lockers V3.1                     | Explorer                                                                                                     |
| --------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
| Ethereum  | 0x7f5c649856f900d15c83741f45ae46f5c6858234 | [etherscan(opens in a new tab)](https://etherscan.io/address/0x7f5c649856f900d15c83741f45ae46f5c6858234)     |
| BNB Chain | 0xf1f7f21e2ea80ab110d0f95faa64655688341990 | [bscscan(opens in a new tab)](http://bscscan.com/address/0xf1f7f21e2ea80ab110d0f95faa64655688341990)         |
| Polygon   | 0xd8207e9449647a9668ad3f8ecb97a1f929f81fd1 | [polygonscan(opens in a new tab)](http://polygonscan.com/address/0xd8207e9449647a9668ad3f8ecb97a1f929f81fd1) |
| Arbitrum  | 0xcb8b00d4018ad6031e28a44bf74616014bfb62ec | [arbiscan(opens in a new tab)](http://arbiscan.io/address/0xcb8b00d4018ad6031e28a44bf74616014bfb62ec)        |
| Base      | 0x231278edd38b00b07fbd52120cef685b9baebcc1 | [basescan(opens in a new tab)](http://basescan.org/address/0x231278edd38b00b07fbd52120cef685b9baebcc1)       |

| Chain     | Liquidity Lockers V3                       | Explorer                                                                                                     |
| --------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
| Ethereum  | 0x231278edd38b00b07fbd52120cef685b9baebcc1 | [etherscan(opens in a new tab)](https://etherscan.io/address/0x231278edd38b00b07fbd52120cef685b9baebcc1)     |
| BNB Chain | 0x0d29598ec01fa03665feead91d4fb423f393886c | [bscscan(opens in a new tab)](http://bscscan.com/address/0x0d29598ec01fa03665feead91d4fb423f393886c)         |
| Polygon   | 0xc22218406983bf88bb634bb4bf15fa4e0a1a8c84 | [polygonscan(opens in a new tab)](http://polygonscan.com/address/0xc22218406983bf88bb634bb4bf15fa4e0a1a8c84) |
| Arbitrum  | 0xfa104eb3925a27e6263e05acc88f2e983a890637 | [arbiscan(opens in a new tab)](http://arbiscan.io/address/0xfa104eb3925a27e6263e05acc88f2e983a890637)        |

| Chain     | NFT Migrator V3.1                          | Explorer                                                                                                     |
| --------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
| Ethereum  | 0xcb8b00d4018ad6031e28a44bf74616014bfb62ec | [etherscan(opens in a new tab)](https://etherscan.io/address/0xcb8b00d4018ad6031e28a44bf74616014bfb62ec)     |
| BNB Chain | 0xe4c7d00a8123cc61206c540bd2caa6924d13a52c | [bscscan(opens in a new tab)](http://bscscan.com/address/0xe4c7d00a8123cc61206c540bd2caa6924d13a52c)         |
| Polygon   | 0x13dfb77a0ed9e439670416d27c5a2e0b31618fcd | [polygonscan(opens in a new tab)](http://polygonscan.com/address/0x13dfb77a0ed9e439670416d27c5a2e0b31618fcd) |
| Arbitrum  | 0x4264bbe70c57d2aa9b64762dfde214219f088a86 | [arbiscan(opens in a new tab)](http://arbiscan.io/address/0x4264bbe70c57d2aa9b64762dfde214219f088a86)        |
| Base      | 0x80ebc53dafb97415b54c7390b1f26d79c7aeda23 | [basescan](http://basescan.org/address/0x80ebc53dafb97415b54c7390b1f26d79c7aeda23)                           |


# Technical Reference


# Locker V3.1

## Functions Write <a href="#functions-write" id="functions-write"></a>

### Lock <a href="#lock" id="lock"></a>

```
function lock(LockParams calldata params) external payable   returns (uint256)
```

Converts nft to full range and collects fees and sends them back to collector.

Parameters:

| Type       | Description                                                                                                                                                                                                                                                                     |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| LockParams | An object that contains: `nftPositionManager` (address), `nft_id` (uint256), `dustRecipient` (address), `owner` (address), `additionalCollector` (address), `collectAddress` (address), `unlockDate` (uint256), `countryCode` (string), `r` (bytes\[]), and `feeName` (string). |

Return Values:

| Type    | Description                       |
| ------- | --------------------------------- |
| uint256 | The ID of the newly created lock. |

***

### Collects <a href="#collects" id="collects"></a>

```
function collect(    uint256 _lockId,     address _recipient,     uint128 _amount0Max,     uint128 _amount1Max) external   returns (    uint256 amount0,     uint256 amount1,     uint256 fee0,     uint256 fee1)
```

Collect fees to \_recipient if msg.sender is the owner of \_lockId.

Parameters:

| Name          | Type    | Description                                       |
| ------------- | ------- | ------------------------------------------------- |
| `_lockId`     | uint256 | The ID of the lock from which to collect fees.    |
| `_recipient`  | address | The address to which collected fees will be sent. |
| `_amount0Max` | uint128 | Maximum amount of token0 to collect.              |
| `_amount1Max` | uint128 | Maximum amount of token1 to collect.              |

Return Values:

| Type    | Description                 |
| ------- | --------------------------- |
| uint256 | Amount of token0 collected. |
| uint256 | Amount of token1 collected. |
| uint256 | Fee associated with token0. |
| uint256 | Fee associated with token1. |

***

### IncreaseLiquidity <a href="#increaseliquidity" id="increaseliquidity"></a>

```
function increaseLiquidity(    uint256 _lockId,     INonfungiblePositionManager.IncreaseLiquidityParams calldata params) external payable   returns (    uint128 liquidity,     uint256 amount0,     uint256 amount1)
```

Increases liquidity.

Parameters:

| Name     | Type                                                | Description                                            |
| -------- | --------------------------------------------------- | ------------------------------------------------------ |
| \_lockId | uint256                                             | The ID of the lock.                                    |
| params   | INonfungiblePositionManager.IncreaseLiquidityParams | Object containing parameters for increasing liquidity. |

Return Values:

| Name      | Type    | Description                |
| --------- | ------- | -------------------------- |
| liquidity | uint128 | Amount of liquidity added. |
| amount0   | uint256 | Amount of token0 added.    |
| amount1   | uint256 | Amount of token1 added.    |

***

### DecreaseLiquidity <a href="#decreaseliquidity" id="decreaseliquidity"></a>

```
function decreaseLiquidity(    uint256 _lockId,    INonfungiblePositionManager.DecreaseLiquidityParams calldata params) external payable   returns (uint256 amount0, uint256 amount1)
```

Decrease liquidity if a lock has expired

Parameters:

| Name     | Type                                                | Description                                            |
| -------- | --------------------------------------------------- | ------------------------------------------------------ |
| \_lockId | uint256                                             | The ID of the lock.                                    |
| params   | INonfungiblePositionManager.DecreaseLiquidityParams | Object containing parameters for decreasing liquidity. |

Return Values:

| Name    | Type    | Description                                           |
| ------- | ------- | ----------------------------------------------------- |
| amount0 | uint256 | Amount of token0 returned after decreasing liquidity. |
| amount1 | uint256 | Amount of token1 returned after decreasing liquidity. |

***

### Relock <a href="#relock" id="relock"></a>

```
function relock(    uint256 _lockId,    uint256 _unlockDate) external  
```

Set the unlock date further in the future.

Parameters:

| Name         | Type    | Description                                                                                                     |
| ------------ | ------- | --------------------------------------------------------------------------------------------------------------- |
| \_lockId     | uint256 | The ID of the lock.                                                                                             |
| \_unlockDate | uint256 | The new unlock date timestamp. It must be greater than the current unlock date and the current block timestamp. |

Return Values:

| Name         | Type    | Description                                                                                                     |
| ------------ | ------- | --------------------------------------------------------------------------------------------------------------- |
| \_lockId     | uint256 | The ID of the lock.                                                                                             |
| \_unlockDate | uint256 | The new unlock date timestamp. It must be greater than the current unlock date and the current block timestamp. |

***

### Withdraw <a href="#withdraw" id="withdraw"></a>

```
function withdraw(    uint256 _lockId,    address _receiver) external  
```

Withdraw a UniV3 liquidity NFT and send it to \_receiver.

Parameters:

| Name       | Type    | Description                                                                     |
| ---------- | ------- | ------------------------------------------------------------------------------- |
| \_lockId   | uint256 | The ID of the lock. The caller must be an admin of this lock.                   |
| \_receiver | address | The address to which the UniV3 liquidity NFT will be sent after the withdrawal. |

***

### Migrate <a href="#migrate" id="migrate"></a>

```
function migrate(    uint256 _lockId) external  
```

Migrate a lock to a new amm version (Uniswap V4).

Parameters:

| Name     | Type    | Description                                                   |
| -------- | ------- | ------------------------------------------------------------- |
| \_lockId | uint256 | The ID of the lock. The caller must be an admin of this lock. |

***

### SetAdditionalCollector <a href="#setadditionalcollector" id="setadditionalcollector"></a>

```
function setAdditionalCollector(    uint256 _lockId,    address _additionalCollector) external  
```

Allow a lock owner to add an additional address, usually a contract, to collect fees. Useful for bots.

Parameters:

| Name                  | Type    | Description                                                                   |
| --------------------- | ------- | ----------------------------------------------------------------------------- |
| \_lockId              | uint256 | The ID of the lock. The caller must be an admin of this lock.                 |
| \_additionalCollector | address | The address designated as an additional collector for the fees from the lock. |

***

### SetCollectAddress <a href="#setcollectaddress" id="setcollectaddress"></a>

```
function setCollectAddress(    uint256 _lockId,    address _collectAddress) external  
```

Set the adress to which fees are automatically collected.

Parameters:

| Name             | Type    | Description                                                              |
| ---------------- | ------- | ------------------------------------------------------------------------ |
| \_lockId         | uint256 | The ID of the lock. The caller must be an admin of this lock.            |
| \_collectAddress | address | The address to which the fees from the lock are automatically collected. |

***

### TransferLockOwnership <a href="#transferlockownership" id="transferlockownership"></a>

```
function transferLockOwnership(    uint256 _lockId,    address _newOwner) external  
```

Transfer ownership of a lock to \_newOwner.

Parameters:

| Name       | Type    | Description                                                                     |
| ---------- | ------- | ------------------------------------------------------------------------------- |
| \_lockId   | uint256 | The ID of the lock. The caller must be an admin of this lock.                   |
| \_newOwner | address | The address of the new owner to whom the lock's ownership is being transferred. |

***

### AcceptLockOwnership <a href="#acceptlockownership" id="acceptlockownership"></a>

```
function acceptLockOwnership(    uint256 _lockId) external  
```

Parameters:

| Name     | Type    | Description                                               |
| -------- | ------- | --------------------------------------------------------- |
| \_lockId | uint256 | The ID of the lock for which ownership is being accepted. |

## Functions View <a href="#functions-view" id="functions-view"></a>

### GetFee <a href="#getfee" id="getfee"></a>

```
function getFee(string memory _name) public  view returns (FeeStruct memory)
```

Retrieves the fee details associated with a given name.

Parameters:

| Type   | Description                                           |
| ------ | ----------------------------------------------------- |
| string | The name used to lookup the associated fee structure. |

Return Values:

| Type      | Description                                                                                                                             |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| FeeStruct | An object that contains: `name` (string), `lpFee` (uint256), `collectFee` (uint256), `flatFee` (uint256), and `flatFeeToken` (address). |

***

### GetFeeOptionAtIndex <a href="#getfeeoptionatindex" id="getfeeoptionatindex"></a>

```
function getFeeOptionAtIndex(uint256 _index) external view returns (FeeStruct memory)
```

Fetches the fee details based on its position.

Parameters:

| Type    | Description                              |
| ------- | ---------------------------------------- |
| uint256 | Index of the fee option to be retrieved. |

Return Values:

| Type      | Description                                                                                                                             |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| FeeStruct | An object that contains: `name` (string), `lpFee` (uint256), `collectFee` (uint256), `flatFee` (uint256), and `flatFeeToken` (address). |

***

### GetFeeOptionLength <a href="#getfeeoptionlength" id="getfeeoptionlength"></a>

```
function getFeeOptionLength() external view returns (uint256)
```

Returns the total amount of fee options available.

Return Values:

| Type    | Description                                |
| ------- | ------------------------------------------ |
| uint256 | The total amount of fee options available. |

***

### GetLock <a href="#getlock" id="getlock"></a>

```
function getLock(uint256 _lockId) external view  returns (Lock memory _lock)
```

Returns a Lock struct for \_lockId.

Parameters:

| Name     | Type    | Description                         |
| -------- | ------- | ----------------------------------- |
| \_lockId | uint256 | The ID of the lock to be retrieved. |

Return Values:

| Type | Description                                                                                                                                                                                                                                                                                                            |
| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Lock | An object that contains: `lock_id` (uint256), `nftPositionManager` (INonfungiblePositionManager), `pool` (address), `nft_id` (uint256), `owner` (address), `pendingOwner` (address), `additionalCollector` (address), `collectAddress` (address), `unlockDate` (uint256), `countryCode` (uint16), and `ucf` (uint256). |

***

### GetLocksLength <a href="#getlockslength" id="getlockslength"></a>

```
function getLocksLength() external view  returns (uint256)
```

Return Values:

| Type    | Description                                                        |
| ------- | ------------------------------------------------------------------ |
| uint256 | The unique nonce representing the amount of locks in the contract. |

***

### GetNumUserLocks <a href="#getnumuserlocks" id="getnumuserlocks"></a>

```
function getNumUserLocks(address _user) external view  returns (uint256)
```

Parameters:

| Type    | Description              |
| ------- | ------------------------ |
| address | The address of the user. |

Return Values:

| Type    | Description                                   |
| ------- | --------------------------------------------- |
| uint256 | The number of locks associated with the user. |

***

### GetUserLockAtIndex <a href="#getuserlockatindex" id="getuserlockatindex"></a>

```
function getUserLockAtIndex(    address _user,    uint256 _index) external view  returns (Lock memory)
```

Parameters:

| Type    | Description                               |
| ------- | ----------------------------------------- |
| address | The address of the user.                  |
| uint256 | The index of the lock for the given user. |

Return Values:

| Type | Description                                                                                                                                                                                                       |
| ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Lock | A struct that contains details of the lock including `lock_id`, `nftPositionManager`, `pool`, `nft_id`, `owner`, `pendingOwner`, `additionalCollector`, `collectAddress`, `unlockDate`, `countryCode`, and `ucf`. |

***

### TickSpacingToMaxTick <a href="#tickspacingtomaxtick" id="tickspacingtomaxtick"></a>

```
function tickSpacingToMaxTick(int24 tickSpacing) public pure returns (int24 maxTick)
```

Parameters:

| Type  | Description                                                   |
| ----- | ------------------------------------------------------------- |
| int24 | The tick spacing used to calculate the maximum possible tick. |

Return Values:

| Type  | Description                                        |
| ----- | -------------------------------------------------- |
| int24 | The maximum tick value calculated for the spacing. |

***

### GetAmountsForLiquidity <a href="#getamountsforliquidity" id="getamountsforliquidity"></a>

```
function getAmountsForLiquidity (    int24 currentTick,     int24 tickLower,     int24 tickHigher,     uint128 liquidity) public pure  returns (uint256 amount0, uint256 amount1) {    return LiquidityAmounts.getAmountsForLiquidity(        TickMath.getSqrtRatioAtTick(currentTick),        TickMath.getSqrtRatioAtTick(tickLower),        TickMath.getSqrtRatioAtTick(tickHigher),        liquidity    )}
```

Parameters:

| Type    | Description                                       |
| ------- | ------------------------------------------------- |
| int24   | The current tick of the liquidity range.          |
| int24   | The lower tick boundary of the liquidity range.   |
| int24   | The higher tick boundary of the liquidity range.  |
| uint128 | The liquidity amount to be used for calculations. |

Return Values:

| Type    | Description                                                         |
| ------- | ------------------------------------------------------------------- |
| uint256 | The amount of `token0` calculated based on the provided parameters. |
| uint256 | The amount of `token1` calculated based on the provided parameters. |

***

### OnERC721Received <a href="#onerc721received" id="onerc721received"></a>

```
function onERC721Received(    address operator,    address from,    uint256 tokenId,    bytes calldata data) public pure  returns (bytes4) {    return IERC721Receiver.onERC721Received.selector}
```

Parameters:

| Type    | Description                                                       |
| ------- | ----------------------------------------------------------------- |
| address | The address of the sender invoking this function (the operator).  |
| address | The address from which the ERC721 token originates.               |
| uint256 | The unique identifier (ID) of the ERC721 token being transferred. |
| bytes   | Additional calldata sent with the transfer.                       |

Return Values:

| Type   | Description                                                |
| ------ | ---------------------------------------------------------- |
| bytes4 | The function selector for the `onERC721Received` function. |

## Events <a href="#events" id="events"></a>

### OnAddFee <a href="#onaddfee" id="onaddfee"></a>

```
event onAddFee(    bytes32 nameHash,     string name,     uint256 lpFee,     uint256 collectFee,     uint256 flatFee,     address flatFeeToken)
```

Emitted on addOrEditFee.

Parameters:

| Name         | Type    | Description                                                    |
| ------------ | ------- | -------------------------------------------------------------- |
| nameHash     | bytes32 | The unique hash representing the name of the fee.              |
| name         | string  | The name of the fee.                                           |
| lpFee        | uint256 | The liquidity provider fee amount.                             |
| collectFee   | uint256 | The fee amount to be collected.                                |
| flatFee      | uint256 | The flat fee amount.                                           |
| flatFeeToken | address | The address of the token in which the flat fee is denominated. |

***

### OnEditFee <a href="#oneditfee" id="oneditfee"></a>

```
event onEditFee(    bytes32 nameHash,     string name,     uint256 lpFee,     uint256 collectFee,     uint256 flatFee,     address flatFeeToken)
```

Emitted on addOrEditFee.

Parameters:

| Name         | Type    | Description                                                    |
| ------------ | ------- | -------------------------------------------------------------- |
| nameHash     | bytes32 | The unique hash representing the name of the fee.              |
| name         | string  | The name of the fee.                                           |
| lpFee        | uint256 | The liquidity provider fee amount.                             |
| collectFee   | uint256 | The fee amount to be collected.                                |
| flatFee      | uint256 | The flat fee amount.                                           |
| flatFeeToken | address | The address of the token in which the flat fee is denominated. |

***

### OnRemoveFee <a href="#onremovefee" id="onremovefee"></a>

```
event onRemoveFee(    bytes32 nameHash)
```

Emitted on removeFee.

Parameters:

| Name     | Type    | Description                                       |
| -------- | ------- | ------------------------------------------------- |
| nameHash | bytes32 | The unique hash representing the name of the fee. |

***

### OnLock <a href="#onlock" id="onlock"></a>

```
event onLock(    uint256 lock_id,    address nftPositionManager,    uint256 nft_id,    address owner,    address additionalCollector,    address collectAddress,    uint256 unlockDate,    uint16 countryCode,    uint256 collectFee,    address poolAddress,    INonfungiblePositionManager.Position position)
```

Emitted ont [Lock](https://developers.uncx.network/lockers-v3/technicalReference/UNCX_ProofOfReservesV2_UniV3#lock).

Parameters:

| Name                | Type                        | Description                                                                                       |
| ------------------- | --------------------------- | ------------------------------------------------------------------------------------------------- |
| lock\_id            | uint256                     | The unique nonce per lock.                                                                        |
| nftPositionManager  | INonfungiblePositionManager | The NFT position manager of the Uniswap fork.                                                     |
| nft\_id             | uint256                     | The NFT token ID of the NFT belonging to the nftPositionManager.                                  |
| owner               | address                     | The owner who can collect and withdraw.                                                           |
| additionalCollector | address                     | An additional address allowed to call collect.                                                    |
| collectAddress      | address                     | The address to which automatic collections are sent.                                              |
| unlockDate          | uint256                     | The unlock date of the lock in seconds.                                                           |
| countryCode         | uint16                      | The country code of the locker/business.                                                          |
| collectFee          | uint256                     | The collect fee.                                                                                  |
| poolAddress         | address                     | The pool address.                                                                                 |
| position            | IUniswapV3Pool.Position     | Represents a unique position in a Uniswap V3 Pool. Contains details about the liquidity provided. |

***

### OnIncreaseLiquidity <a href="#onincreaseliquidity" id="onincreaseliquidity"></a>

```
event onIncreaseLiquidity(    uint256 lockId)
```

Emitted on [IncreaseLiquidity](https://developers.uncx.network/lockers-v3/technicalReference/UNCX_ProofOfReservesV2_UniV3#increaseliquidity).

Parameters:

| Name   | Type    | Description                                           |
| ------ | ------- | ----------------------------------------------------- |
| lockId | uint256 | The ID of the lock for which liquidity was increased. |

***

### OnDecreaseLiquidity <a href="#ondecreaseliquidity" id="ondecreaseliquidity"></a>

```
event onDecreaseLiquidity(    uint256 lockId)
```

Emitted on [DecreaseLiquidity](https://developers.uncx.network/lockers-v3/technicalReference/UNCX_ProofOfReservesV2_UniV3#increaseliquidity).

Parameters:

| Name   | Type    | Description                                           |
| ------ | ------- | ----------------------------------------------------- |
| lockId | uint256 | The ID of the lock for which liquidity was decreased. |

***

### OnRelock <a href="#onrelock" id="onrelock"></a>

```
event onRelock(    uint256 lockId,     uint256 unlockDate)
```

Emitted on [Relock](https://developers.uncx.network/lockers-v3/technicalReference/UNCX_ProofOfReservesV2_UniV3#relock).

Parameters:

| Name       | Type    | Description                                |
| ---------- | ------- | ------------------------------------------ |
| lockId     | uint256 | The ID of the lock that is being relocked. |
| unlockDate | uint256 | The new unlock date for the relocked lock. |

***

### OnWithdraw <a href="#onwithdraw" id="onwithdraw"></a>

```
event onWithdraw(    uint256 lock_id,     address owner,     address receiver)
```

Emitted on [Withdraw](https://developers.uncx.network/lockers-v3/technicalReference/UNCX_ProofOfReservesV2_UniV3#withdraw).

Parameters:

| Name     | Type    | Description                           |
| -------- | ------- | ------------------------------------- |
| lock\_id | uint256 | The ID of the lock being withdrawn.   |
| owner    | address | The owner of the lock.                |
| receiver | address | The address receiving the withdrawal. |

***

### OnMigrate <a href="#onmigrate" id="onmigrate"></a>

```
event onMigrate(    uint256 lockId)
```

Emitted on [Migrate](https://developers.uncx.network/lockers-v3/technicalReference/UNCX_ProofOfReservesV2_UniV3#migrate).

Parameters:

| Name   | Type    | Description                                |
| ------ | ------- | ------------------------------------------ |
| lockId | uint256 | The ID of the lock that is being migrated. |

***

### OnSetAdditionalCollector <a href="#onsetadditionalcollector" id="onsetadditionalcollector"></a>

```
event onSetAdditionalCollector(    uint256 lockId,     address additionalCollector)
```

Emitted on [SetAdditionalCollector](https://developers.uncx.network/lockers-v3/technicalReference/UNCX_ProofOfReservesV2_UniV3#setadditionalcollector).

Parameters:

| Name                | Type    | Description                                         |
| ------------------- | ------- | --------------------------------------------------- |
| lockId              | uint256 | The ID of the lock setting an additional collector. |
| additionalCollector | address | The address being set as the additional collector.  |

***

### OnSetCollectAddress <a href="#onsetcollectaddress" id="onsetcollectaddress"></a>

```
event onSetCollectAddress(    uint256 lockId,     address collectAddress)
```

Emitted on [SetCollectAddress](https://developers.uncx.network/lockers-v3/technicalReference/UNCX_ProofOfReservesV2_UniV3#setcollectAddress).

Parameters:

| Name           | Type    | Description                                                   |
| -------------- | ------- | ------------------------------------------------------------- |
| lockId         | uint256 | The ID of the lock where the collection address is being set. |
| collectAddress | address | The new collection address being set.                         |

***

### OnLockOwnershipTransferStarted <a href="#onlockownershiptransferstarted" id="onlockownershiptransferstarted"></a>

```
event onLockOwnershipTransferStarted(    uint256 lockId,     address currentOwner,     address pendingOwner)
```

Emitted on [TransferLockOwnership](https://developers.uncx.network/lockers-v3/technicalReference/UNCX_ProofOfReservesV2_UniV3#transferlockownership).

Parameters:

| Name         | Type    | Description                                       |
| ------------ | ------- | ------------------------------------------------- |
| lockId       | uint256 | The ID of the lock initiating ownership transfer. |
| currentOwner | address | The current owner initiating the transfer.        |
| pendingOwner | address | The proposed new owner.                           |

***

### OnTransferLockOwnership <a href="#ontransferlockownership" id="ontransferlockownership"></a>

```
event onTransferLockOwnership(    uint256 lockId,     address oldOwner,     address newOwner)
```

Emitted on [AcceptLockOwnership](https://developers.uncx.network/lockers-v3/technicalReference/UNCX_ProofOfReservesV2_UniV3#acceptlockownership).

Parameters:

| Name     | Type    | Description                                       |
| -------- | ------- | ------------------------------------------------- |
| lockId   | uint256 | The ID of the lock finalizing ownership transfer. |
| oldOwner | address | The address of the previous owner.                |
| newOwner | address | The address of the new owner.                     |

***

### OnSetMigrator <a href="#onsetmigrator" id="onsetmigrator"></a>

```
event onSetMigrator(    address migrator)
```

Emitted on SetMigrator.

Parameters:

| Name     | Type    | Description                            |
| -------- | ------- | -------------------------------------- |
| migrator | address | The address of the migrator being set. |

***

### OnSetUCF <a href="#onsetucf" id="onsetucf"></a>

```
event onSetUCF(    uint256 lockId,     uint256 ucf)
```

Emitted on setUCF.

Parameters:

| Name   | Type    | Description                                    |
| ------ | ------- | ---------------------------------------------- |
| lockId | uint256 | The ID of the lock where the UCF is being set. |
| ucf    | uint256 | The new UCF value being set.                   |


# NFT Migrator V3

## Functions Write <a href="#functions-write" id="functions-write"></a>

### Migrate <a href="#migrate" id="migrate"></a>

```
function migrate (    uint256 _lockId,     INonfungiblePositionManager _nftPositionManager,     uint256 _tokenId)     external returns (bool)
```

Enables migration of liqudity from Uniswap Locker V2 into Locker V3.

Parameters:

| Name                 | Type                        | Description                                                                            |
| -------------------- | --------------------------- | -------------------------------------------------------------------------------------- |
| \_lockId             | uint256                     | ID of the lock to be migrated from the older contract.                                 |
| \_nftPositionManager | INonfungiblePositionManager | The position manager for the NFT.                                                      |
| \_tokenId            | uint256                     | ID of the NFT token to be transferred and then approved for the new reserves contract. |

Return Values:

| Type | Description                                                          |
| ---- | -------------------------------------------------------------------- |
| bool | Returns `true` once the migration process is successfully completed. |

## Functions Wiew <a href="#functions-wiew" id="functions-wiew"></a>

### OnERC721Received <a href="#onerc721received" id="onerc721received"></a>

Parameters:

| Name     | Type    | Description                                                                                 |
| -------- | ------- | ------------------------------------------------------------------------------------------- |
| operator | address | Address initiating the transfer or creation. This could be an external or contract address. |
| from     | address | Address from which the token was sent.                                                      |
| tokenId  | uint256 | Unique identifier for the token being transferred.                                          |
| data     | bytes   | Additional data accompanying the transfer or minting call.                                  |

Return Values:

| Type   | Description                                                                                 |
| ------ | ------------------------------------------------------------------------------------------- |
| bytes4 | Function selector for the `onERC721Received` function, confirming successful token receipt. |


# Subgraphs

This Subgraph indexes liquidity locking contracts associated with the Proof of Reserves, optimized for compatibility with Uniswap v3 and its subsequent forks. It has the capability to index several v3-compatible Automated Market Makers (AMMs) for each blockchain. Each lock is assigned a unique, automatically incrementing nonce, regardless of the AMM involved. To prevent potential ID collision, especially in areas like the NFT position ID, the NFT Position manager address is used as a prefix.

### Active Pool Liquidity <a href="#active-pool-liquidity" id="active-pool-liquidity"></a>

The active liquidity of a token can vary significantly as its price fluctuates and enters different liquidity ranges. This results in dynamic changes to the percentage locked, in stark contrast to Uniswap v2 where each liquidity position covered the entire range. For instance, a liquidity provider (LP) might offer liquidity within a specific, narrow price range. If the current price falls into this range, the locked liquidity could significantly decrease for a certain period. In such cases, it might be more useful to represent the liquidity, locked token amounts, or the locked value in USD.

### Limitations <a href="#limitations" id="limitations"></a>

While the majority of the data is updated in real-time, there can be exceptions that may result in outdated information. For instance, assets with low liquidity might have slightly outdated Total Value Locked (TVL) or locked liquidity (as reflected in Lock.lockedLiquidity and similar metrics). This typically only happens with low liquidity assets and the USD value of the asset. To obtain the most accurate data, it's recommended to compare the unlock date with the current timestamp and compare the token reserves with the current ETH price at the time of data retrieval.

<br>


# Endpoints

### The Graph Network <a href="#the-graph-network" id="the-graph-network"></a>

| Chain     | Endpoint                                                                                                                                                                                                                                                       |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Base      | [https://thegraph.com/explorer/subgraphs/BdptdLJLXzkMnveNpa98B8bUmRrHvGMrZ8Nm8eYJG1gg?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/BdptdLJLXzkMnveNpa98B8bUmRrHvGMrZ8Nm8eYJG1gg?view=Query\&chain=arbitrum-one) |
| Ethereum  | [https://thegraph.com/explorer/subgraphs/H9ZXC11AKM4q7mfUeqFqmENFfYhrenkJMi45i8Va2ww2?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/H9ZXC11AKM4q7mfUeqFqmENFfYhrenkJMi45i8Va2ww2?view=Query\&chain=arbitrum-one) |
| Arbitrum  | [https://thegraph.com/explorer/subgraphs/F5yxXD18u4f9ansZZQ7Zi9E26LN4oDzMageSruR72beg?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/F5yxXD18u4f9ansZZQ7Zi9E26LN4oDzMageSruR72beg?view=Query\&chain=arbitrum-one) |
| Polygon   | [https://thegraph.com/explorer/subgraphs/vKWMWN2Pq6syv2UZXnRN7KWUh7A4eRm2ipX71817eJE?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/vKWMWN2Pq6syv2UZXnRN7KWUh7A4eRm2ipX71817eJE?view=Query\&chain=arbitrum-one)   |
| BNB Chain | [https://thegraph.com/explorer/subgraphs/CEFz2uqGPQGEnstv3ErB5RPE12oc59jY4Tz1DEp34jL7?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/CEFz2uqGPQGEnstv3ErB5RPE12oc59jY4Tz1DEp34jL7?view=Query\&chain=arbitrum-one) |
| Avalanche | <https://thegraph.com/explorer/subgraphs/CR2dfLWhCpkiUVpVBcaSEjoBMWVpvnsTypg637zhgaGd?view=Query&chain=arbitrum-one>                                                                                                                                           |


# Queries

## Sample Queries

GraphQL's flexible query structure allows you to explore various data fetching strategies (such as direct lookup, pagination, diffing, etc). This page will help you get started by providing examples using the most techniques.

## Try Out The Queries <a href="#try-out-the-queries" id="try-out-the-queries"></a>

You can try out the queries below using Graph Protocol's playground:

[https://thegraph.com/hosted-service/subgraph/alex-unicrypt/uncx-lockers-v3-bsc(opens in a new tab)](https://thegraph.com/hosted-service/subgraph/alex-unicrypt/uncx-lockers-v3-bsc)

All of the examples can also be accessed from the preset dropdown.

## Get All Locks <a href="#get-all-locks" id="get-all-locks"></a>

This query returns all locks that currently exist on all AMMs for a given chain (regardless of their expiration).

The amount of locks returned might exceed the Subgraph return limit (currently at `1000` results per query). It is suggested to combine this query with various [Pagination Techniques(opens in a new tab)](https://thegraph.com/docs/en/querying/graphql-api/#pagination).

```
{  locks {    lockedAmount0    lockedAmount1    lockedPercent    lockedLiquidity    lockedCoreUSD    position {      pool {        activeLiquidity        token0 {          id          name        }        token1 {          id          name        }      }    }  }}
```

## Get All Locks After a Block <a href="#get-all-locks-after-a-block" id="get-all-locks-after-a-block"></a>

```
{  locks(where: {_change_block: {number_gte: 29270000}}) {    lockedAmount0    lockedAmount1    lockedPercent    lockedLiquidity    lockedCoreUSD    position {      pool {        activeLiquidity        token0 {          id          name        }        token1 {          id          name        }      }    }  }}
```

## Get All Locks For a Pool <a href="#get-all-locks-for-a-pool" id="get-all-locks-for-a-pool"></a>

```
{  reserve(id: "0x77b95c94903a9b2a1cde22939817ae31b83e664b") {    id    locks {      lockedAmount0      lockedAmount1      lockedPercent      lockedLiquidity    }    pool {      token0 {        id        symbol      }      token1 {        id        symbol      }      activeLiquidity    }  }}
```


# Entities

## Entities <a href="#entities" id="entities"></a>

### Locker <a href="#locker" id="locker"></a>

`Locker` entity represents the UNCX liquidity locker.

| Field | Type | Description    |
| ----- | ---- | -------------- |
| id    | ID!  | Locker address |

### Manager <a href="#manager" id="manager"></a>

`Manager` represents the Uniswap V3 NFT position manager. It is used to control the positions within the liquidity pools.

| Field | Type | Description              |
| ----- | ---- | ------------------------ |
| id    | ID!  | Position manager address |

### Aggregate <a href="#aggregate" id="aggregate"></a>

`Aggregate` entity represents the aggregate of all pools added without the fee tier. It aggregates reserves and locks for a given combination of manager, token0, and token1.

| Field   | Type         | Description               |
| ------- | ------------ | ------------------------- |
| id      | ID!          | Manager + token0 + token1 |
| token0  | Token!       | Token0 address            |
| token1  | Token!       | Token1 address            |
| manager | Manager!     | Position manager address  |
| pools   | \[Reserve!]! | All aggregated reserves   |
| locks   | \[Lock!]!    | All aggregated locks      |

### Reserve <a href="#reserve" id="reserve"></a>

`Reserve` entity represents the locked liquidity reserve for a specific pool.

| Field     | Type        | Description                                    |
| --------- | ----------- | ---------------------------------------------- |
| id        | ID!         | Pool address                                   |
| liquidity | BigInt!     | Locked liquidity reserve                       |
| mainToken | Token!      | Main token                                     |
| baseToken | Token!      | Core tokens such as stablecoins, ETH, BNB etc. |
| pool      | Pool!       | Pool object                                    |
| aggregate | Aggregate!  | Pool aggregate                                 |
| manager   | Manager!    | Position manager address                       |
| locks     | \[Lock!]!   | All locks in a reserve                         |
| lockIds   | \[String!]! | Lock IDs for a reserve                         |
| locker    | Locker!     | Locker address                                 |

### Pool <a href="#pool" id="pool"></a>

`Pool` entity represents a liquidity pool with specific tokens and fee tier. It holds the state of a liquidity pool.

| Field           | Type          | Description                         |
| --------------- | ------------- | ----------------------------------- |
| id              | ID!           | Pool address                        |
| feeTier         | BigInt!       | Pool fee tier                       |
| token0          | Token!        | Token0 address                      |
| token1          | Token!        | Token1 address                      |
| amount0         | BigInt!       | Amount of token0 stored in the pool |
| amount1         | BigInt!       | Amount of token1 stored in the pool |
| price0          | BigDecimal    | Relative price of token0            |
| price1          | BigDecimal    | Relative price of token1            |
| activeLiquidity | BigInt!       | Total in-range liquidity            |
| sqrtPriceX96    | BigInt!       | sqrtPriceX96, used for calculations |
| currentTick     | BigInt!       | Current pool tick                   |
| positionIds     | \[String!]!   | All positions IDs                   |
| positions       | \[Position!]! | All positions                       |
| reserve         | Reserve!      | Reserve                             |
| aggregate       | Aggregate!    | Aggregator                          |
| manager         | Manager!      | Position manager                    |

### Lock <a href="#lock" id="lock"></a>

The `Lock` entity represents a specific lock in the liquidity pool, which is characterized by its unique ID. It contains all the necessary details about the lock such as the locked liquidity, the tokens involved, lock owner, fee collection addresses, and unlock date among other details.

| Field                   | Type                        | Description                                               |
| ----------------------- | --------------------------- | --------------------------------------------------------- |
| id                      | ID!                         | Locker address + lock id                                  |
| lockId                  | String!                     | Lock id                                                   |
| mainToken               | Token!                      | Main token                                                |
| baseToken               | Token!                      | Core tokens such as stablecoins, ETH, BNB etc.            |
| lockedLiquidity         | BigInt!                     | Liquidity stored in a lock (non-withdrawable)             |
| lockedAmount0           | BigInt!                     | Amount0 stored in a lock (non-withdrawable)               |
| lockedAmount1           | BigInt!                     | Amount1 stored in a lock (non-withdrawable)               |
| lockedCoreUSD           | BigDecimal!                 | USD value of the core asset locked (non-withdrawable)     |
| lockedPercent           | BigDecimal!                 | Locked percent of the active liquidity (non-withdrawable) |
| owner                   | Wallet!                     | Lock owner address                                        |
| collector               | Wallet!                     | Fee collection address                                    |
| additionalCollector     | Wallet!                     | Additional fee collection address                         |
| unlockDate              | BigInt!                     | Unlock date as a timestamp                                |
| position                | Position!                   | NFT position (manager + NFT id)                           |
| reserve                 | Reserve!                    | Pool address                                              |
| aggregate               | Aggregate!                  | Aggregator                                                |
| manager                 | Manager!                    | Position manager                                          |
| locker                  | Locker!                     | Locker address                                            |
| blockNumber             | BigInt!                     | Last update block                                         |
| timestamp               | BigInt!                     | Last update timestamp                                     |
| lockEvents              | \[LockEvent!]!              | List all lock events for a lock                           |
| withdrawEvents          | \[WithdrawEvent!]!          | List all withdraw events for a lock                       |
| increaseEvents          | \[IncreaseEvent!]!          | List all increase liquidity events for a lock             |
| relockEvents            | \[RelockEvent!]!            | List all relock events for a lock                         |
| transferOwnershipEvents | \[TransferOwnershipEvent!]! | List all transfer events for a lock                       |
| migrateEvents           | \[MigrateEvent!]!           | List all migration events for a lock                      |

### Position <a href="#position" id="position"></a>

`Position` entity represents a specific NFT position in the liquidity pool. Each position is identified by a unique ID and has all the necessary details such as liquidity, tokens involved, ticks and associated lock.

| Field        | Type        | Description                               |
| ------------ | ----------- | ----------------------------------------- |
| id           | ID!         | Position Manager + NFT ID                 |
| nftId        | String!     | ID of the non-fungible position           |
| token0       | Token!      | Token0 address                            |
| token1       | Token!      | Token1 address                            |
| lowerTick    | BigInt!     | Lower tick of the position                |
| upperTick    | BigInt!     | Upper tick of the position                |
| liquidity    | BigInt!     | Total position liquidity                  |
| amount0      | BigInt!     | Amount of token0 stored in the position   |
| amount1      | BigInt!     | Amount of token1 stored in the position   |
| coreTotalUSD | BigDecimal! | Core token USD TVL stored in the position |
| lock         | Lock!       | Lock nonce                                |
| pool         | Pool!       | Pool address                              |
| aggregate    | Aggregate!  | Aggregator                                |
| manager      | Manager!    | Position manager                          |

### Token <a href="#token" id="token"></a>

`Token` entity represents a specific token. It includes details such as the name, symbol, decimals and its use in reserves.

| Field             | Type           | Description                                                           |
| ----------------- | -------------- | --------------------------------------------------------------------- |
| id                | ID!            | Smart contract address of the token                                   |
| name              | String!        | Name of the token                                                     |
| symbol            | String!        | Symbol of the token                                                   |
| decimals          | Int!           | The number of decimal places this token uses                          |
| tvlUSD            | BigDecimal!    | Dollar value locked in this token across all pools                    |
| lockedUSD         | BigDecimal!    | Dollar value locked in this token across all pools (non-withdrawable) |
| mainTokenReserves | \[Reserve!]!   | All reserves where this token is the main token                       |
| baseTokenReserves | \[Reserve!]!   | All reserves where this token is the core token                       |
| baseTokens        | \[BaseToken!]! | Check if token is a base token                                        |
| blockNumber       | BigInt!        | Last update block                                                     |
| timestamp         | BigInt!        | Last update timestamp                                                 |

### BaseToken <a href="#basetoken" id="basetoken"></a>

`BaseToken` entity represents a specific token that is considered as a base asset. It includes the price and last updated timestamp.

| Field                    | Type    | Description                                    |
| ------------------------ | ------- | ---------------------------------------------- |
| id                       | ID!     | Smart contract address of the token            |
| token                    | Token!  | Token data                                     |
| basePrice                | BigInt! | If asset is a core liquid asset, set its price |
| lastBaseUpdatedTimestamp | BigInt! | Timestamp for updating base price              |

### Wallet <a href="#wallet" id="wallet"></a>

`Wallet` entity represents an account or a wallet on the blockchain. It includes information on locks and collectors.

| Field                | Type      | Description                      |
| -------------------- | --------- | -------------------------------- |
| id                   | ID!       | Account address                  |
| locks                | \[Lock!]! | Associated locks                 |
| collectors           | \[Lock!]! | Associated fee collectors        |
| additionalCollectors | \[Lock!]! | Associated additional collectors |

## Events <a href="#events" id="events"></a>

### EventCollection <a href="#eventcollection" id="eventcollection"></a>

This entity primarily acts as an aggregator for different types of events and contains locker address.

| Field                           | Type                         | Description                                 |
| ------------------------------- | ---------------------------- | ------------------------------------------- |
| id                              | ID                           | Locker Address                              |
| lockEvents                      | \[LockEvent!]                | Collection of lock events                   |
| lockEventsNumber                | BigInt                       | Total number of lock events                 |
| withdrawEvents                  | \[WithdrawEvent!]            | Collection of withdrawal events             |
| withdrawEventsNumber            | BigInt                       | Total number of withdrawal events           |
| increaseEvents                  | \[IncreaseEvent!]            | Collection of increase events               |
| increaseEventsNumber            | BigInt                       | Total number of increase events             |
| relockEvents                    | \[RelockEvent!]              | Collection of relock events                 |
| relockEventsNumber              | BigInt                       | Total number of relock events               |
| transferOwnershipEvents         | \[TransferOwnershipEvent!]   | Collection of ownership transfer events     |
| transferOwnershipEventsNumber   | BigInt                       | Total number of ownership transfer events   |
| migrateEvents                   | \[MigrateEvent!]             | Collection of migration events              |
| migrateEventsNumber             | BigInt                       | Total number of migration events            |
| collectorEvents                 | \[CollectorEvent!]           | Collection of collector events              |
| collectorEventsNumber           | BigInt                       | Total number of collector events            |
| additionalCollectorEvents       | \[AdditionalCollectorEvent!] | Collection of additional collector events   |
| additionalCollectorEventsNumber | BigInt                       | Total number of additional collector events |

### LockEvent <a href="#lockevent" id="lockevent"></a>

This entity records all the information related to the locking event at a time of a transaction.

| Field               | Type            | Description                                                                                     |
| ------------------- | --------------- | ----------------------------------------------------------------------------------------------- |
| id                  | ID              | Locker address + event index                                                                    |
| lockId              | String          | Lock ID                                                                                         |
| mainToken           | Token           | Main token (does not follow token0 / token1 contract order)                                     |
| baseToken           | Token           | Core tokens such as stablecoins, ETH, BNB etc. (does not follow token0 / token1 contract order) |
| lockedLiquidity     | BigInt          | Liquidity stored in a lock (non withdrawable)                                                   |
| lockedAmount0       | BigInt          | Amount0 stored in a lock (non withdrawable)                                                     |
| lockedAmount1       | BigInt          | Amount1 stored in a lock (non withdrawable)                                                     |
| lockedCoreUSD       | BigDecimal      | USD value of the core asset locked (non withdrawable)                                           |
| lockedPercent       | BigDecimal      | Locked percent of the active liquidity (non withdrawable)                                       |
| owner               | Wallet          | Lock owner address                                                                              |
| collector           | Wallet          | Fee collection address                                                                          |
| additionalCollector | Wallet          | Additional fee collection address                                                               |
| position            | Position        | NFT position (manager + NFT id)                                                                 |
| lock                | Lock            | Lock ID                                                                                         |
| reserve             | Reserve         | Pool address                                                                                    |
| aggregate           | Aggregate       | Aggregator                                                                                      |
| manager             | Manager         | Position manager                                                                                |
| locker              | Locker          | Locker address                                                                                  |
| unlockDate          | BigInt          | Unlock date as a timestamp                                                                      |
| blockNumber         | BigInt          | Event block                                                                                     |
| timestamp           | BigInt          | Event timestamp                                                                                 |
| transaction         | Bytes           | Transaction hash                                                                                |
| eventsCollection    | EventCollection | Collection reference                                                                            |

### WithdrawEvent <a href="#withdrawevent" id="withdrawevent"></a>

This entity represents the event of a withdrawal action of the lock's liquidity. It has various attributes related to the withdrawal, such as the liquidity withdrawn and the address of the owner.

| Field               | Type            | Description                               |
| ------------------- | --------------- | ----------------------------------------- |
| id                  | ID              | Locker address + event index              |
| lockId              | String          | Lock ID                                   |
| mainToken           | Token           | Main token                                |
| baseToken           | Token           | Core tokens like stablecoins, ETH, BNB    |
| withdrawnLiquidity  | BigInt          | Liquidity withdrawn from a lock           |
| withdrawnAmount0    | BigInt          | Amount0 withdrawn from a lock             |
| withdrawnAmount1    | BigInt          | Amount1 withdrawn from a lock             |
| withdrawnCoreUSD    | BigDecimal      | USD value of the core asset withdrawn     |
| withdrawnPercent    | BigDecimal      | Withdrawn percent of the active liquidity |
| owner               | Wallet          | Lock owner address                        |
| collector           | Wallet          | Fee collection address                    |
| additionalCollector | Wallet          | Additional fee collection address         |
| position            | Position        | NFT position                              |
| lock                | Lock            | Lock ID                                   |
| reserve             | Reserve         | Pool address                              |
| aggregate           | Aggregate       | Aggregator                                |
| manager             | Manager         | Position manager                          |
| locker              | Locker          | Locker address                            |
| unlockDate          | BigInt          | Unlock date as a timestamp                |
| blockNumber         | BigInt          | Event block                               |
| timestamp           | BigInt          | Event timestamp                           |
| transaction         | Bytes           | Transaction hash                          |
| eventsCollection    | EventCollection | Collection reference                      |

### IncreaseEvent <a href="#increaseevent" id="increaseevent"></a>

The `IncreaseEvent` is an entity representing an event where the amount of liquidity locked in a specific lock is increased. This includes details about the locked funds before and after the increase, and the event details such as timestamp and transaction.

| Field                 | Type            | Description                                                                                     |
| --------------------- | --------------- | ----------------------------------------------------------------------------------------------- |
| id                    | ID              | Locker address + event index                                                                    |
| lockId                | String          | Lock ID                                                                                         |
| mainToken             | Token           | Main token (does not follow token0 / token1 contract order)                                     |
| baseToken             | Token           | Core tokens such as stablecoins, ETH, BNB etc. (does not follow token0 / token1 contract order) |
| lockedLiquidityBefore | BigInt          | Liquidity stored before increase in a lock (non withdrawable)                                   |
| lockedAmount0Before   | BigInt          | amount0 stored before increase in a lock (non withdrawable)                                     |
| lockedAmount1Before   | BigInt          | amount1 stored before increase in a lock (non withdrawable)                                     |
| lockedCoreUSDBefore   | BigDecimal      | USD value of the core asset locked before increase (non withdrawable)                           |
| lockedPercentBefore   | BigDecimal      | Locked percent of the active liquidity before increase (non withdrawable)                       |
| lockedLiquidityAfter  | BigInt          | Liquidity stored in a lock after increase (non withdrawable)                                    |
| lockedAmount0After    | BigInt          | amount0 stored in a lock after increase (non withdrawable)                                      |
| lockedAmount1After    | BigInt          | amount1 stored in a lock after increase (non withdrawable)                                      |
| lockedCoreUSDAfter    | BigDecimal      | USD value of the core asset locked after increase (non withdrawable)                            |
| lockedPercentAfter    | BigDecimal      | Locked percent of the active liquidity after increase (non withdrawable)                        |
| owner                 | Wallet          | Lock owner address                                                                              |
| collector             | Wallet          | Fee collection address                                                                          |
| additionalCollector   | Wallet          | Additional fee collection address                                                               |
| position              | Position        | NFT position (manager + NFT id)                                                                 |
| lock                  | Lock            | Lock ID                                                                                         |
| reserve               | Reserve         | Pool address                                                                                    |
| aggregate             | Aggregate       | Aggregator                                                                                      |
| manager               | Manager         | Position manager                                                                                |
| locker                | Locker          | Locker address                                                                                  |
| unlockDate            | BigInt          | Unlock date as a timestamp                                                                      |
| blockNumber           | BigInt          | Event block                                                                                     |
| timestamp             | BigInt          | Event timestamp                                                                                 |
| transaction           | Bytes           | Transaction hash                                                                                |
| eventsCollection      | EventCollection | Collection reference                                                                            |

### RelockEvent <a href="#relockevent" id="relockevent"></a>

The `RelockEvent` entity represents an event where the unlock date is pushed further back. It provides information about the locked liquidity, the details of the tokens involved, and event specifics like timestamp and transaction.

| Field               | Type            | Description                                                                                     |
| ------------------- | --------------- | ----------------------------------------------------------------------------------------------- |
| id                  | ID              | Locker address + event index                                                                    |
| lockId              | String          | Lock ID                                                                                         |
| mainToken           | Token           | Main token (does not follow token0 / token1 contract order)                                     |
| baseToken           | Token           | Core tokens such as stablecoins, ETH, BNB etc. (does not follow token0 / token1 contract order) |
| lockedLiquidity     | BigInt          | Liquidity stored in a lock (non withdrawable)                                                   |
| lockedAmount0       | BigInt          | Amount0 stored in a lock (non withdrawable)                                                     |
| lockedAmount1       | BigInt          | Amount1 stored in a lock (non withdrawable)                                                     |
| lockedCoreUSD       | BigDecimal      | USD value of the core asset locked (non withdrawable)                                           |
| lockedPercent       | BigDecimal      | Locked percent of the active liquidity (non withdrawable)                                       |
| owner               | Wallet          | Lock owner address transfer                                                                     |
| collector           | Wallet          | Fee collection address                                                                          |
| additionalCollector | Wallet          | Additional fee collection address                                                               |
| position            | Position        | NFT position (manager + NFT id)                                                                 |
| lock                | Lock            | Lock ID                                                                                         |
| reserve             | Reserve         | Pool address                                                                                    |
| aggregate           | Aggregate       | Aggregator                                                                                      |
| manager             | Manager         | Position manager                                                                                |
| locker              | Locker          | Locker address                                                                                  |
| unlockDateBefore    | BigInt          | Old unlock date as a timestamp                                                                  |
| unlockDateAfter     | BigInt          | New unlock date as a timestamp                                                                  |
| blockNumber         | BigInt          | Event block                                                                                     |
| timestamp           | BigInt          | Event timestamp                                                                                 |
| transaction         | Bytes           | Transaction hash                                                                                |
| eventsCollection    | EventCollection | Collection reference                                                                            |

### TransferOwnershipEvent <a href="#transferownershipevent" id="transferownershipevent"></a>

The `TransferOwnershipEvent` entity represents an event where the ownership of a lock is transferred from one wallet to another. It provides details about the locked funds and the wallets involved in the transfer, along with event specifics such as timestamp and transaction.

| Field               | Type            | Description                                                                                     |
| ------------------- | --------------- | ----------------------------------------------------------------------------------------------- |
| id                  | ID              | Locker address + event index                                                                    |
| lockId              | String          | Lock ID                                                                                         |
| mainToken           | Token           | Main token (does not follow token0 / token1 contract order)                                     |
| baseToken           | Token           | Core tokens such as stablecoins, ETH, BNB etc. (does not follow token0 / token1 contract order) |
| lockedLiquidity     | BigInt          | Liquidity stored in a lock (non withdrawable)                                                   |
| lockedAmount0       | BigInt          | Amount0 stored in a lock (non withdrawable)                                                     |
| lockedAmount1       | BigInt          | Amount1 stored in a lock (non withdrawable)                                                     |
| lockedCoreUSD       | BigDecimal      | USD value of the core asset locked (non withdrawable)                                           |
| lockedPercent       | BigDecimal      | Locked percent of the active liquidity (non withdrawable)                                       |
| ownerBefore         | Wallet          | Lock owner address before transfer                                                              |
| ownerAfter          | Wallet          | Lock owner address after transfer                                                               |
| collector           | Wallet          | Fee collection address                                                                          |
| additionalCollector | Wallet          | Additional fee collection address                                                               |
| position            | Position        | NFT position (manager + NFT id)                                                                 |
| lock                | Lock            | Lock ID                                                                                         |
| reserve             | Reserve         | Pool address                                                                                    |
| aggregate           | Aggregate       | Aggregator                                                                                      |
| manager             | Manager         | Position manager                                                                                |
| locker              | Locker          | Locker address                                                                                  |
| unlockDate          | BigInt          | Unlock date as a timestamp                                                                      |
| blockNumber         | BigInt          | Event block                                                                                     |
| timestamp           | BigInt          | Event timestamp                                                                                 |
| transaction         | Bytes           | Transaction hash                                                                                |
| eventsCollection    | EventCollection | Collection reference                                                                            |

### MigrateEvent <a href="#migrateevent" id="migrateevent"></a>

`MigrateEvent` represents an event where a migration of a lock in the liquidity pool occurs. This involves moving funds from one lock to another.

| Field               | Type             | Description                                               |
| ------------------- | ---------------- | --------------------------------------------------------- |
| id                  | ID!              | locker address + event index                              |
| lockId              | String!          | lock id                                                   |
| mainToken           | Token!           | main token                                                |
| baseToken           | Token!           | core tokens such as stablecoins, ETH, BNB etc.            |
| lockedLiquidity     | BigInt!          | liquidity stored in a lock (non withdrawable)             |
| lockedAmount0       | BigInt!          | amount0 stored in a lock (non withdrawable)               |
| lockedAmount1       | BigInt!          | amount1 stored in a lock (non withdrawable)               |
| lockedCoreUSD       | BigDecimal!      | USD value of the core asset locked (non withdrawable)     |
| lockedPercent       | BigDecimal!      | locked percent of the active liquidity (non withdrawable) |
| owner               | Wallet!          | lock owner address                                        |
| collector           | Wallet!          | fee collection address                                    |
| additionalCollector | Wallet!          | additional fee collection address                         |
| position            | Position         | nft position (manager + nft id)                           |
| lock                | Lock             | Lock ID                                                   |
| reserve             | Reserve!         | pool address                                              |
| aggregate           | Aggregate!       | aggregator                                                |
| manager             | Manager!         | position manager                                          |
| locker              | Locker!          | locker address                                            |
| unlockDate          | BigInt!          | unlock date as a timestamp                                |
| blockNumber         | BigInt!          | event block                                               |
| timestamp           | BigInt!          | event timestamp                                           |
| transaction         | Bytes!           | transaction hash                                          |
| eventsCollection    | EventCollection! | collection reference                                      |

### CollectorEvent <a href="#collectorevent" id="collectorevent"></a>

`CollectorEvent` represents an event where the fee collector of a lock changes. The fee collector is the account with the ability to initiate the fee collection process.

| Field               | Type             | Description                                               |
| ------------------- | ---------------- | --------------------------------------------------------- |
| id                  | ID!              | locker address + event index                              |
| lockId              | String!          | lock id                                                   |
| mainToken           | Token!           | main token                                                |
| baseToken           | Token!           | core tokens such as stablecoins, ETH, BNB etc.            |
| lockedLiquidity     | BigInt!          | liquidity stored in a lock (non withdrawable)             |
| lockedAmount0       | BigInt!          | amount0 stored in a lock (non withdrawable)               |
| lockedAmount1       | BigInt!          | amount1 stored in a lock (non withdrawable)               |
| lockedCoreUSD       | BigDecimal!      | USD value of the core asset locked (non withdrawable)     |
| lockedPercent       | BigDecimal!      | locked percent of the active liquidity (non withdrawable) |
| owner               | Wallet!          | lock owner address                                        |
| collectorBefore     | Wallet!          | old fee collection address                                |
| collectorAfter      | Wallet!          | new fee collection address                                |
| additionalCollector | Wallet!          | additional fee collection address                         |
| position            | Position         | nft position (manager + nft id)                           |
| lock                | Lock             | Lock ID                                                   |
| reserve             | Reserve!         | pool address                                              |
| aggregate           | Aggregate!       | aggregator                                                |
| manager             | Manager!         | position manager                                          |
| locker              | Locker!          | locker address                                            |
| unlockDate          | BigInt!          | unlock date as a timestamp                                |
| blockNumber         | BigInt!          | event block                                               |
| timestamp           | BigInt!          | event timestamp                                           |
| transaction         | Bytes!           | transaction hash                                          |
| eventsCollection    | EventCollection! | collection reference                                      |

### AdditionalCollectorEvent <a href="#additionalcollectorevent" id="additionalcollectorevent"></a>

`AdditionalCollectorEvent` represents an event where the additional fee collector of a lock changes. The additional fee collector is an account granted permission to initiate the fee collection process.

| Field                     | Type             | Description                                               |
| ------------------------- | ---------------- | --------------------------------------------------------- |
| lockedAmount1             | BigInt!          | amount1 stored in a lock (non withdrawable)               |
| lockedCoreUSD             | BigDecimal!      | USD value of the core asset locked (non withdrawable)     |
| lockedPercent             | BigDecimal!      | locked percent of the active liquidity (non withdrawable) |
| owner                     | Wallet!          | lock owner address                                        |
| collector                 | Wallet!          | fee collection address                                    |
| additionalCollectorBefore | Wallet!          | old additional fee collection address                     |
| additionalCollectorAfter  | Wallet!          | new additional fee collection address                     |
| position                  | Position         | nft position (manager + nft id)                           |
| lock                      | Lock             | Lock ID                                                   |
| reserve                   | Reserve!         | pool address                                              |
| aggregate                 | Aggregate!       | aggregator                                                |
| manager                   | Manager!         | position manager                                          |
| locker                    | Locker!          | locker address                                            |
| unlockDate                | BigInt!          | unlock date as a timestamp                                |
| blockNumber               | BigInt!          | event block                                               |
| timestamp                 | BigInt!          | event timestamp                                           |
| transaction               | Bytes!           | transaction hash                                          |
| eventsCollection          | EventCollection! | collection reference                                      |

## Search <a href="#search" id="search"></a>

### tokenSearch <a href="#tokensearch" id="tokensearch"></a>

The `tokenSearch` is a full-text search schema over the "Token" entity. It allows users to perform searches over the fields "symbol", "name", and "id".

| name        | entity | fields |
| ----------- | ------ | ------ |
| tokenSearch | Token  | symbol |
| tokenSearch | Token  | name   |
| tokenSearch | Token  | id     |

### poolSearch <a href="#poolsearch" id="poolsearch"></a>

The `poolSearch` is a full-text search schema for the "Pool" entity. It allows users to find specific "Pool" entities by their unique identifiers.

| name       | entity | fields |
| ---------- | ------ | ------ |
| poolSearch | Pool   | id     |

### lockSearch <a href="#locksearch" id="locksearch"></a>

The `lockSearch` is a full-text search schema over the "Lock" entity. It helps users find specific "Lock" entities by their unique "lockId".

| name       | entity | fields |
| ---------- | ------ | ------ |
| lockSearch | Lock   | lockId |

### reserveSearch <a href="#reservesearch" id="reservesearch"></a>

The `reserveSearch` is a full-text search schema designed for the "Reserve" entity. It allows users to search and find specific "Reserve" entities by their unique identifiers.

| name          | entity  | fields |
| ------------- | ------- | ------ |
| reserveSearch | Reserve | id     |

### walletSearch <a href="#walletsearch" id="walletsearch"></a>

The `walletSearch` is a full-text search schema over the "Wallet" entity. It enables users to locate specific "Wallet" entities by their unique identifiers.

| name         | entity | fields |
| ------------ | ------ | ------ |
| walletSearch | Wallet | id     |


# Token Vesting

Token vesting allows wallets to lock ERC20 tokens for a specific amount of time.

Features:

* Rebasing token support.
* Linear schedules with block by block smooth token releases.
* Create multiple locks in a single transaction.
* Unlock conditions.


# Contracts

| Chain           | Contract                                   |
| --------------- | ------------------------------------------ |
| Ethereum        | 0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf |
| Base            | 0xA82685520C463A752d5319E6616E4e5fd0215e33 |
| Arbitrum        | 0x8cb0300Af2A801DC9992225D45399ac56888cBcd |
| BNB Smart Chain | 0xeaEd594B5926A7D5FBBC61985390BaAf936a6b8d |
| Polygon         | 0x2621816bE08E4279Cf881bc640bE4089BfAf491a |
| Avalanche       | 0xCa61C60D9Da18fA4e836a1e378Ded3205FcEdfA5 |
| OP Mainnet      | 0x599886b24B0A625e4912033213d6b6188a1abCA2 |
| Sepolia         | 0x3dFC191d2ff5008e11d878345daD88A0C005fCf0 |


# Technical Reference

## Functions Write <a href="#functions-write" id="functions-write"></a>

### PayForFreeTokenLocks <a href="#payforfreetokenlocks" id="payforfreetokenlocks"></a>

```
function payForFreeTokenLocks(    address _token) external payable
```

Permits to pay a once off fee to have free use of the lockers for the token.

Parameters:

| Name    | Type    | Description                                     |
| ------- | ------- | ----------------------------------------------- |
| \_token | address | The address of the token to be locked for free. |

***

### EditZeroFeeWhitelist <a href="#editzerofeewhitelist" id="editzerofeewhitelist"></a>

```
function editZeroFeeWhitelist(    address _token,    bool _add) external
```

Callable by UNCX\_ADMINS or whitelisted contracts.

Parameters:

| Name    | Type    | Description                                                                          |
| ------- | ------- | ------------------------------------------------------------------------------------ |
| \_token | address | The address of the token to be added or removed from the whitelist.                  |
| \_add   | bool    | Indicates if the token should be added (true) or removed (false) from the whitelist. |

***

### Lock <a href="#lock" id="lock"></a>

```
function lock(    address _token,    LockParams[] calldata _lock_params) external
```

Creates one or multiple locks for the specified token.

Parameters:

| Type       | Description                                                                                                                                    |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| LockParams | An object that contains: `owner` (address), `amount` (uint256), `startEmission` (uint256), `endEmission` (uint256), and `condition` (address). |

***

### Withdraw <a href="#withdraw" id="withdraw"></a>

```
function withdraw(    uint256 _lockID,    uint256 _amount) external
```

Withdraws a specified amount from a lock.

Parameters:

| Name     | Type    | Description                                             |
| -------- | ------- | ------------------------------------------------------- |
| \_lockID | uint256 | The ID of the lock from which tokens will be withdrawn. |
| \_amount | uint256 | The desired amount of tokens to be withdrawn.           |

***

### Relock <a href="#relock" id="relock"></a>

```
function relock(uint256 _lockID, uint256 _unlock_date) external
```

Extends a lock with a new unlock date, if lock is Type 2 it extends the emission end date.

Parameters:

| Name           | Type    | Description                                                                     |
| -------------- | ------- | ------------------------------------------------------------------------------- |
| \_lockID       | uint256 | The ID of the lock which needs to have its unlock date extended.                |
| \_unlock\_date | uint256 | The new unlock date. If the lock is Type 2, this extends the emission end date. |

***

### IncrementLock <a href="#incrementlock" id="incrementlock"></a>

```
function incrementLock(    uint256 _lockID,     uint256 _amount) external 
```

Increases the amount of tokens per a specific lock.

Parameters:

| Name     | Type    | Description                                                        |
| -------- | ------- | ------------------------------------------------------------------ |
| \_lockID | uint256 | The ID of the lock which will have its token amount increased.     |
| \_amount | uint256 | The amount of additional tokens to be added to the specified lock. |

***

### TransferLockOwnership <a href="#transferlockownership" id="transferlockownership"></a>

```
function transferLockOwnership(    uint256 _lockID,     address payable _newOwner) external 
```

Transfers a lock to a new owner.

Parameters:

| Name       | Type            | Description                                                        |
| ---------- | --------------- | ------------------------------------------------------------------ |
| \_lockID   | uint256         | The ID of the lock whose ownership will be transferred.            |
| \_newOwner | address payable | The address of the new owner to whom the lock will be transferred. |

***

### SplitLock <a href="#splitlock" id="splitlock"></a>

```
function splitLock(    uint256 _lockID,     uint256 _amount) external 
```

Splits a lock into two seperate locks.

Parameters:

| Name     | Type    | Description                                                      |
| -------- | ------- | ---------------------------------------------------------------- |
| \_lockID | uint256 | The ID of the lock which will be split.                          |
| \_amount | uint256 | The amount in tokens which will form one part of the split lock. |

***

### Migrate <a href="#migrate" id="migrate"></a>

```
function migrate(    uint256 _lockID,     uint256 _option) external 
```

Migrates to the next locker version.

Parameters:

| Name     | Type    | Description                                                                     |
| -------- | ------- | ------------------------------------------------------------------------------- |
| \_lockID | uint256 | The ID of the lock which will be migrated to the next locker version.           |
| \_option | uint256 | An option for migration. The exact meaning would depend on the migration logic. |

***

### RevokeCondition <a href="#revokecondition" id="revokecondition"></a>

```
function revokeCondition(    uint256 _lockID) external 
```

Revokes premature unlock conditions.

Parameters:

| Name     | Type    | Description                                                          |
| -------- | ------- | -------------------------------------------------------------------- |
| \_lockID | uint256 | The ID of the lock whose premature unlock condition will be revoked. |

## Functions View <a href="#functions-view" id="functions-view"></a>

### TestCondition <a href="#testcondition" id="testcondition"></a>

```
function testCondition (address condition) external view returns (bool)
```

Parameters:

| Name      | Type    | Description                                         |
| --------- | ------- | --------------------------------------------------- |
| condition | address | The condition's address to test on the frontend UI. |

Return Values:

| Type | Description                                            |
| ---- | ------------------------------------------------------ |
| bool | The result of the condition tested in the frontend UI. |

***

### GetWithdrawableShares <a href="#getwithdrawableshares" id="getwithdrawableshares"></a>

```
function getWithdrawableShares (uint256 _lockID) public view returns (uint256)
```

Parameters:

| Name     | Type    | Description                                            |
| -------- | ------- | ------------------------------------------------------ |
| \_lockID | uint256 | The ID of the lock for which shares are being queried. |

Return Values:

| Type    | Description                                  |
| ------- | -------------------------------------------- |
| uint256 | The withdrawable share amount from the lock. |

***

### GetWithdrawableTokens <a href="#getwithdrawabletokens" id="getwithdrawabletokens"></a>

```
function getWithdrawableTokens (uint256 _lockID) external view returns (uint256)
```

Parameters:

| Name     | Type    | Description                                            |
| -------- | ------- | ------------------------------------------------------ |
| \_lockID | uint256 | The ID of the lock for which tokens are being queried. |

Return Values:

| Type    | Description                                         |
| ------- | --------------------------------------------------- |
| uint256 | The current amount in tokens that can be withdrawn. |

***

### ConvertSharesToTokens <a href="#convertsharestotokens" id="convertsharestotokens"></a>

```
function convertSharesToTokens (address _token, uint256 _shares) external view returns (uint256)
```

Parameters:

| Name     | Type    | Description                      |
| -------- | ------- | -------------------------------- |
| \_token  | address | The token's address.             |
| \_shares | uint256 | The number of shares to convert. |

Return Values:

| Type    | Description                                              |
| ------- | -------------------------------------------------------- |
| uint256 | The equivalent amount of tokens for the provided shares. |

***

### convertTokensToShares <a href="#converttokenstoshares" id="converttokenstoshares"></a>

```
function convertTokensToShares (address _token, uint256 _tokens) external view returns (uint256)
```

Parameters:

| Name     | Type    | Description                      |
| -------- | ------- | -------------------------------- |
| \_token  | address | The token's address.             |
| \_tokens | uint256 | The number of tokens to convert. |

Return Values:

| Type    | Description                                              |
| ------- | -------------------------------------------------------- |
| uint256 | The equivalent amount of shares for the provided tokens. |

***

### GetLock <a href="#getlock" id="getlock"></a>

```
 function getLock (    uint256 _lockID) external view returns (    uint256, address,     uint256, uint256,     uint256, uint256,     uint256, uint256,     address, address)
```

Parameters:

| Name     | Type    | Description                       |
| -------- | ------- | --------------------------------- |
| \_lockID | uint256 | The ID of the lock being queried. |

Return Values:

***

### GetNumLockedTokens <a href="#getnumlockedtokens" id="getnumlockedtokens"></a>

```
function getNumLockedTokens () external view returns (uint256)
```

Return Values:

| Type    | Description              |
| ------- | ------------------------ |
| uint256 | Number of locked tokens. |

***

### GetTokenAtIndex <a href="#gettokenatindex" id="gettokenatindex"></a>

```
function getTokenAtIndex (uint256 _index) external view returns (address) 
```

Parameters:

| Name    | Type    | Description                     |
| ------- | ------- | ------------------------------- |
| \_index | uint256 | The index of the token queried. |

Return Values:

| Type    | Description                         |
| ------- | ----------------------------------- |
| address | Token's address at the given index. |

***

### GetTokenLocksLength <a href="#gettokenlockslength" id="gettokenlockslength"></a>

```
function getTokenLocksLength (address _token) external view returns (uint256)
```

Parameters:

| Name    | Type    | Description          |
| ------- | ------- | -------------------- |
| \_token | address | The token's address. |

Return Values:

| Type    | Description                           |
| ------- | ------------------------------------- |
| uint256 | Token Lock ID at the specified index. |

***

### GetTokenLockIDAtIndex <a href="#gettokenlockidatindex" id="gettokenlockidatindex"></a>

```
function getTokenLockIDAtIndex (address _token, uint256 _index) external view returns (uint256)
```

Parameters:

| Name    | Type    | Description                    |
| ------- | ------- | ------------------------------ |
| \_token | address | The token's address.           |
| \_index | uint256 | The index of the lock queried. |

Return Values:

| Type    | Description                           |
| ------- | ------------------------------------- |
| uint256 | Token Lock ID at the specified index. |

***

### GetUserLockedTokensLength <a href="#getuserlockedtokenslength" id="getuserlockedtokenslength"></a>

```
function getUserLockedTokensLength (address _user) external view returns (uint256)
```

Parameters:

| Name   | Type    | Description                 |
| ------ | ------- | --------------------------- |
| \_user | address | The user's address queried. |

Return Values:

| Type    | Description                          |
| ------- | ------------------------------------ |
| uint256 | Number of tokens locked by the user. |

***

### GetUserLockedTokenAtIndex <a href="#getuserlockedtokenatindex" id="getuserlockedtokenatindex"></a>

```
function getUserLockedTokenAtIndex (address _user, uint256 _index) external view returns (address)
```

Parameters:

| Name    | Type    | Description                     |
| ------- | ------- | ------------------------------- |
| \_user  | address | The user's address queried.     |
| \_index | uint256 | The index of the token queried. |

Return Values:

| Type    | Description                                        |
| ------- | -------------------------------------------------- |
| address | Token address at the specified index for the user. |

***

### GetUserLocksForTokenLength <a href="#getuserlocksfortokenlength" id="getuserlocksfortokenlength"></a>

```
function getUserLocksForTokenLength (address _user, address _token) external view returns (uint256)
```

Parameters:

| Name    | Type    | Description          |
| ------- | ------- | -------------------- |
| \_user  | address | The user's address.  |
| \_token | address | The token's address. |

Return Values:

| Type    | Description                               |
| ------- | ----------------------------------------- |
| uint256 | Number of locks for a token for the user. |

***

### GetUserLockIDForTokenAtIndex <a href="#getuserlockidfortokenatindex" id="getuserlockidfortokenatindex"></a>

```
function getUserLockIDForTokenAtIndex (address _user, address _token, uint256 _index) external view returns (uint256)
```

Parameters:

| Name    | Type    | Description                    |
| ------- | ------- | ------------------------------ |
| \_user  | address | The user's address.            |
| \_token | address | The token's address.           |
| \_index | uint256 | The index of the lock queried. |

Return Values:

| Type    | Description                                              |
| ------- | -------------------------------------------------------- |
| uint256 | Lock ID for a token at the specified index for the user. |

***

### GetZeroFeeTokensLength <a href="#getzerofeetokenslength" id="getzerofeetokenslength"></a>

```
function getZeroFeeTokensLength () external view returns (uint256)
```

Return Values:

| Type    | Description              |
| ------- | ------------------------ |
| uint256 | Length of no fee tokens. |

***

### GetZeroFeeTokenAtIndex <a href="#getzerofeetokenatindex" id="getzerofeetokenatindex"></a>

```
function getZeroFeeTokensLength () external view returns (uint256)
```

Parameters:

| Name    | Type    | Description                     |
| ------- | ------- | ------------------------------- |
| \_index | uint256 | The index of the token queried. |

Return Values:

| Type    | Description                      |
| ------- | -------------------------------- |
| address | No fee token at the given index. |

***

### TokenOnZeroFeeWhitelist <a href="#tokenonzerofeewhitelist" id="tokenonzerofeewhitelist"></a>

```
function tokenOnZeroFeeWhitelist (address _token) external view returns (bool)
```

Parameters:

| Name    | Type    | Description          |
| ------- | ------- | -------------------- |
| \_token | address | The token's address. |

Return Values:

| Type | Description                                   |
| ---- | --------------------------------------------- |
| bool | Whether the token is on the no fee whitelist. |

***

### GetTokenWhitelisterLength <a href="#gettokenwhitelisterlength" id="gettokenwhitelisterlength"></a>

```
function getTokenWhitelisterLength () external view returns (uint256)
```

Return Values:

| Type    | Description                   |
| ------- | ----------------------------- |
| uint256 | Length of token whitelisters. |

***

### GetTokenWhitelisterAtIndex <a href="#gettokenwhitelisteratindex" id="gettokenwhitelisteratindex"></a>

```
function getTokenWhitelisterAtIndex (uint256 _index) external view returns (address)
```

Parameters:

| Name    | Type    | Description                           |
| ------- | ------- | ------------------------------------- |
| \_index | uint256 | The index of the whitelister queried. |

Return Values:

| Type    | Description                           |
| ------- | ------------------------------------- |
| address | Token whitelister at the given index. |

***

### GetTokenWhitelisterStatus <a href="#gettokenwhitelisterstatus" id="gettokenwhitelisterstatus"></a>

```
function getTokenWhitelisterStatus (address _user) external view returns (bool)
```

Parameters:

| Name   | Type    | Description                                 |
| ------ | ------- | ------------------------------------------- |
| \_user | address | The user's address whose status is queried. |

Return Values:

| Type | Description                               |
| ---- | ----------------------------------------- |
| bool | Whitelister status of the specified user. |

## Events <a href="#events" id="events"></a>

### OnLock <a href="#onlock" id="onlock"></a>

```
event onLock(    uint256 lockID,     address token,     address owner,     uint256 amountInTokens,     uint256 amountInShares,     uint256 startEmission,     uint256 endEmission,     address unlockCondition)
```

Parameters:

| Name            | Type    | Description                               |
| --------------- | ------- | ----------------------------------------- |
| lockID          | uint256 | ID of the lock.                           |
| token           | address | Token address.                            |
| owner           | address | Address of the lock owner.                |
| amountInTokens  | uint256 | Amount of tokens in the lock.             |
| amountInShares  | uint256 | Amount of shares in the lock.             |
| startEmission   | uint256 | Start time of emission.                   |
| endEmission     | uint256 | End time of emission.                     |
| unlockCondition | address | Address of the unlock condition contract. |

***

### OnWithdraw <a href="#onwithdraw" id="onwithdraw"></a>

```
event onWithdraw(    uint256 lockID,     address lpToken,     uint256 amountInTokens,     uint256 amountInShares)
```

Parameters:

| Name           | Type    | Description                 |
| -------------- | ------- | --------------------------- |
| lockID         | uint256 | ID of the lock.             |
| lpToken        | address | LP token address.           |
| amountInTokens | uint256 | Amount of tokens withdrawn. |
| amountInShares | uint256 | Amount of shares withdrawn. |

***

### OnRelock <a href="#onrelock" id="onrelock"></a>

```
event onRelock(    uint256 lockID,     address token,     uint256 unlockDate)
```

Parameters:

| Name       | Type    | Description      |
| ---------- | ------- | ---------------- |
| lockID     | uint256 | ID of the lock.  |
| token      | address | Token address.   |
| unlockDate | uint256 | New unlock date. |

***

### OnTransferLock <a href="#ontransferlock" id="ontransferlock"></a>

```
event onTransferLock(    uint256 lockIDFrom,     uint256 lockIDto,     address oldOwner,     address newOwner)
```

Parameters:

| Name       | Type    | Description                 |
| ---------- | ------- | --------------------------- |
| lockIDFrom | uint256 | Original lock ID.           |
| lockIDto   | uint256 | New lock ID.                |
| oldOwner   | address | Original owner of the lock. |
| newOwner   | address | New owner of the lock.      |

***

### OnSplitLock <a href="#onsplitlock" id="onsplitlock"></a>

```
event onSplitLock(    uint256 fromLockID,     uint256 toLockID,     uint256 amountInTokens,     uint256 amountInShares)
```

Parameters:

| Name           | Type    | Description                       |
| -------------- | ------- | --------------------------------- |
| fromLockID     | uint256 | Original lock ID.                 |
| toLockID       | uint256 | New lock ID after split.          |
| amountInTokens | uint256 | Amount of tokens in the new lock. |
| amountInShares | uint256 | Amount of shares in the new lock. |

***

### OnMigrate <a href="#onmigrate" id="onmigrate"></a>

```
event onMigrate(    uint256 lockID,     uint256 amountInTokens)
```

Parameters:

| Name           | Type    | Description                      |
| -------------- | ------- | -------------------------------- |
| lockID         | uint256 | ID of the lock being migrated.   |
| amountInTokens | uint256 | Amount of tokens being migrated. |

***

### OnConditionRevoke <a href="#onconditionrevoke" id="onconditionrevoke"></a>

```
event onConditionRevoke(    uint256 lockID,     address tokenAddress)
```

Parameters:

| Name         | Type    | Description                |
| ------------ | ------- | -------------------------- |
| lockID       | uint256 | ID of the lock.            |
| tokenAddress | address | Token address of the lock. |


# Subgraphs

### The Graph Network <a href="#the-graph-network" id="the-graph-network"></a>

| Chain     | Endpoint                                                                                                                                                                                                                                                       |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ethereum  | [https://thegraph.com/explorer/subgraphs/Dp7Nvr9EESRYJC1sVhVdrRiDU2bxPa8G1Zhqdh4vyHnE?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/Dp7Nvr9EESRYJC1sVhVdrRiDU2bxPa8G1Zhqdh4vyHnE?view=Query\&chain=arbitrum-one) |
| Arbitrum  | [https://thegraph.com/explorer/subgraphs/6WJvVn4AFimpn8JfmeZA17ZWbGkj3c1a4Ate4z3Z7dya?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/6WJvVn4AFimpn8JfmeZA17ZWbGkj3c1a4Ate4z3Z7dya?view=Query\&chain=arbitrum-one) |
| Base      | [https://thegraph.com/explorer/subgraphs/CUQ2qwQcVfivLPF9TsoLaLnJGmPRb3sDYFVRXbtUy78z?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/CUQ2qwQcVfivLPF9TsoLaLnJGmPRb3sDYFVRXbtUy78z?view=Query\&chain=arbitrum-one) |
| Polygon   | [https://thegraph.com/explorer/subgraphs/Ln3stVsr8YYQ7YDQf3LhMV4gUaBQWbis5db5hzHgkMD?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/Ln3stVsr8YYQ7YDQf3LhMV4gUaBQWbis5db5hzHgkMD?view=Query\&chain=arbitrum-one)   |
| BNB Chain | [https://thegraph.com/explorer/subgraphs/Bq3CVVspv1gunmEhYkAwfRZcMZK5QyaydyCRarCwgE8P?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/Bq3CVVspv1gunmEhYkAwfRZcMZK5QyaydyCRarCwgE8P?view=Query\&chain=arbitrum-one) |
| Avalanche | [https://thegraph.com/explorer/subgraphs/CXsTmiLaWNPkRNsKaNjgHfkSzARAqYsvPSZFA9Bm1Lhv?view=Query\&chain=arbitrum-one(opens in a new tab)](https://thegraph.com/explorer/subgraphs/CXsTmiLaWNPkRNsKaNjgHfkSzARAqYsvPSZFA9Bm1Lhv?view=Query\&chain=arbitrum-one) |
| Sepolia   | <https://thegraph.com/explorer/subgraphs/5foyqAtEVWtcSJX62sMC6fVR7FmetsFy8eYRKRT2E7DU?view=Query&chain=arbitrum-one>                                                                                                                                           |


# Whitelisted audit/KYC partners

On this page you can find our whitelisted audit/KYC providers.

## General Concept

The idea behind this feature is to help investors identify high-risk tokens.&#x20;

💡 This will encourage developers to have their contracts audited before an ILO on the UNCX platform and address as many weak points in the contract before it becomes a problem further down the line. Auditors are also available to advise on a better tokenomics model and ideal liquidity percentages to support the market.

⚠️These audits search for the most common exploits which AI might miss, and in no way endorse a project. They simply are there as an additional tool to help investors identify malicious or dangerous code in a contract itself.

❓ ILOs taking place can now also be KYC'ed by our whitelisted partners. Once KYC'ed, a token will appear on the default list of the ILOs taking place.

💻 The ideal process is described below

**Onboarding steps for an audited ILO**

1. The token contract gets audited (local, testnet)&#x20;
2. The ILO contract is created by the token team after the token contract has been deployed on main net
3. The whitelisted auditor (see dedicated section) posts the audit results and comments.
4. Time for the ILO! We highly recommend the token team to be KYC'ed by our partners (see dedicated section)

## Whitelisted auditors

<table data-header-hidden><thead><tr><th width="237.53154875717019">Auditor</th><th width="297.3333333333333">Twitter page</th><th>Status</th></tr></thead><tbody><tr><td>Auditor</td><td>Twitter page/website</td><td>Status</td></tr><tr><td>🔎 SolidProof.io 🛡️🔥</td><td><a href="https://twitter.com/SolidProof_io">https://twitter.com/SolidProof_io</a></td><td>✅</td></tr><tr><td>🔎 Line1</td><td><a href="https://line1.io/">https://line1.io/</a></td><td>✅</td></tr><tr><td>🔎 Softstack</td><td><a href="https://softstack.io
">https://softstack.io</a></td><td>✅</td></tr><tr><td>🔎 Hacken</td><td><a href="https://twitter.com/hackenclub">https://twitter.com/hackenclub</a></td><td>✅</td></tr><tr><td>🔎 Assure DeFi</td><td><a href="https://twitter.com/AssureDefi">https://twitter.com/AssureDefi</a></td><td>✅</td></tr><tr><td>🔎 Source Hat Labs</td><td><a href="https://twitter.com/SourceHatLabs">https://twitter.com/SourceHatLabs</a></td><td>✅</td></tr><tr><td>🔎 Cyberscope</td><td><a href="https://twitter.com/cyberscope_io">https://twitter.com/cyberscope_io</a></td><td>✅</td></tr><tr><td>🔎 Coinsult 🔒</td><td><a href="https://twitter.com/CoinsultAudits">https://twitter.com/CoinsultAudits</a></td><td>✅</td></tr><tr><td>🔎 ShellBoxes</td><td><a href="https://twitter.com/ShellBoxes">https://twitter.com/ShellBoxes</a></td><td>✅</td></tr><tr><td>🔎 Defimoon</td><td><a href="https://twitter.com/defimoon_org">https://twitter.com/defimoon_org</a></td><td>✅</td></tr><tr><td>🔎 QuillAudits</td><td><a href="https://twitter.com/QuillAudits">https://twitter.com/QuillAudits</a></td><td>✅</td></tr><tr><td>🔎 CTD Sec</td><td><a href="https://twitter.com/ctdsec">https://twitter.com/ctdsec</a></td><td>✅</td></tr><tr><td>🔎 RD Auditors</td><td><a href="https://twitter.com/rdauditors">https://twitter.com/rdauditors</a></td><td>✅</td></tr></tbody></table>

## Whitelisted KYC partners

<table data-header-hidden><thead><tr><th>KYC partner</th><th width="305.3333333333333">Twitter</th><th>Status</th></tr></thead><tbody><tr><td>KYC partner</td><td>Twitter/website</td><td>Status</td></tr><tr><td>SolidProof.io 🛡️</td><td><a href="https://twitter.com/SolidProof_io">https://twitter.com/SolidProof_io</a></td><td>✅</td></tr><tr><td>Line1</td><td><a href="https://line1.io/">https://line1.io/</a></td><td>✅</td></tr><tr><td>Assure DeFi </td><td><a href="https://twitter.com/AssureDefi">https://twitter.com/AssureDefi</a></td><td>✅</td></tr><tr><td>Cyberscope</td><td><a href="https://twitter.com/cyberscope_io">https://twitter.com/cyberscope_io</a></td><td>✅</td></tr></tbody></table>

## Important notes

#### For investors:

* KYC is not done by UNCX Network but only by one of our partners (listed above). If a project is not behaving as you believe they should, please report the incident with all evidences to the KYC provider directly.
* A KYCed ILO does not mean you will get your funds back in case there is an issue: it means the KYC provider will analyze the situation, get in touch with the ILO Creator and open a case with the local law enforcement authorities in case it is required.
* Always [DYOR](https://docs.unicrypt.network/faq-frequently-asked-questions#dyor)[ ](broken://pages/-Mac-JC5ae3SGEeHpLIo)beforehand. KYC is not the only nor the main parameter to look for.&#x20;

#### **For developers:**

* Be ready before your call:
  * Prepare all the documents requested by our KYC partners&#x20;
  * Have at hand **additional documents which were not requested** but may be required to ensure our partner can verify that you really are who you claim to be.&#x20;
* Whether the KYC is successful or not, **the fee is not refundable**: clarify the conditions with our partner beforehand.
* KYC is not done by UNCX Network but only by one of our partners (listed above).


# UNCX Referral Program

On this page you will be able to find all the information about the referral program, rewards and requirements.

## Introduction

Our referral program aims to reward those helping spreading the word about our services and bringing new customers to use our Liquidity Locker. The process is designed to benefit both projects, and people referring those projects so there's something for everyone in it.

Why would project accept to be referred by you?\
It gives them an instant 10% discount on the flat fee.\
\
Why would you do it?\
You get rewarded!

<figure><img src="/files/jXbXCFoEG8juMullf4LW" alt=""><figcaption><p><strong>Source</strong>: <a href="https://dune.com/aesy2/uncx-v2-lplockers-referrals-eth">https://dune.com/aesy2/uncx-v2-lplockers-referrals-eth</a></p></figcaption></figure>

As can be seen, there is still a large territory of locks that are yet to be claimed for referral fees.<br>

## Participation

**Eligibility**

* Hold at least 1 UNCX (BNB or ETH; the chain depends on where the LP to lock is located).&#x20;

**How to earn?**

* Approach a project with their LP unlocked
* Explain what's in for them (10% discount on the flat fee, and trust from their community)
* Share the process on how to lock, feel free to use our guide!
* Share your wallet address with the project you are talking to. It must contain at least 1 UNCX and needs to be entered into the appropriate field before locking
* As soon as the LP is locked, the payout will occur.

#### How to find unlocked liquidity pools?

**Using UNCX app:**

* <https://app.uncx.network/lockers/explore/pools>

**Using DexTools:**

* ETH:
  * [https://www.dextools.io/app/ether/pair-explorer](https://www.dextools.io/app/ether/pair-explorer/)
  * [https://t.me/DEXTNewPairsBot](https://t.me/DEXTNewPairsBotBSC)

#### Where can I track locked LP?

You can use our app linked above, or take a look at our telegram bot:\
<https://t.me/Unicrypt_locks>

##

## Rewards

For each LP lock you have referred:

* On UniSwap v2 (ETH):  **0.0108 ETH**


# UNCX Related Links

On this page you will find UNCX related links, like our social channels, research related links and more.

## General

[UNCX App](https://legacy.uncx.network/dashboard)

[UNCX Website](https://uncx.network/)

## Social channels

[Main telegram channel](https://t.me/uncx_token)

[Twitter](https://twitter.com/UNCX_token)

[LinkedIn](https://www.linkedin.com/company/sddtech-ou/?originalSubdomain=ee)

[YouTube](https://www.youtube.com/channel/UCIJUgPO9L55kMeOl9knFOjA)

## Research

[DefiLlama](https://defillama.com/protocol/unicrypt) - UNCX's TVL

[Medium](https://unicrypt.medium.com/) - UNCX's articles

[CoinGecko UNCX](https://www.coingecko.com/en/coins/unicrypt) - UNCX on CoinGecko

###

###


# UNCX API Collaborations

On this page you will find information about our API Collaborations with other service providers.

## Description

At UNCX we’re passionate about decentralization and we believe in the importance of transparency and easy access to data. All of our data is on-chain, and the API layer is either contract-based or on its way to being completely decentralized, thanks to our use of [The Graph](https://thegraph.com)’s subgraphs.

We are also actively working to make our locker data more discoverable by creating multiple API collaborations, which you can find in the next section of this page.&#x20;

## Locker Data

Platforms reflecting public UNCX locker data:

* [DexTools](https://www.dextools.io/app/en/pairs)\
  \
  Dextools is a platform or set of tools associated with decentralized finance (DeFi) projects. Specifically, it is often linked to the monitoring and analysis of data related to various DeFi tokens and projects on blockchain networks.<br>
* [Gecko Terminal](https://www.geckoterminal.com)\
  \
  GeckoTerminal is a platform designed for users to monitor live cryptocurrency prices, trading volumes, transactions, liquidity data, and other relevant information across decentralized exchanges on various blockchain networks.<br>
* [Bogged Finance](https://app.bogged.finance/bsc/dashboard)\
  \
  Bogged Finance aims to recreate tools of centralized exchanges for decentralized exchanges, i.e., creating advanced DeFi tools that enable users to trade efficiently.<br>
* [DexCheck](https://dexcheck.io/app)\
  \
  DexCheck brings AI-enhanced blockchain analytics and data-driven trading tools on a unified platform. It visualizes complex blockchain data enabling beginner traders to easily understand advanced analytics.<br>
* [TradingView](https://www.tradingview.com/#main-market-summary)\ <br>

  TradingView is a popular online platform for chart analysis and trading in financial markets. It is a great tool for researching projects you want to invest in, as their indicators include V2 and V3 liquidity locks from our platform, as well as many other details.\
  \
  It provides a wide range of tools and features that cater to both novice and experienced traders. Some key aspects of TradingView include:

  * advanced charting tools with a variety of technical indicators, drawing tools, and customizable chart layouts. Traders can analyze price movements, trends, and patterns on different timeframes
  * real-time data for a wide range of financial instruments, including stocks, cryptocurrencies, forex, commodities, and indices
  * [Economic calendar](https://www.tradingview.com/economic-calendar/), a tool that provides users with information about upcoming economic events and releases that may impact financial markets.&#x20;

\
\&#xNAN;*Our locker data also affects the DextScore on* [*DexTools* ](https://www.dextools.io/app/en/ether/pairs)*and CER score on Hacken's* [*cer.live*](https://cer.live/cryptocurrency-security-rating/all)*.*

## Locker Positions

Platforms reflecting personal locker positions from UNCX platform:

* [Zerion](https://app.zerion.io/connect-wallet)
* [DeBank](https://debank.com)

## TVL

Platforms reflecting UNCX Total-Value-Locked:

* [DeFiLlama](https://defillama.com)


# UNCX Info Bot Manual

This page will help you understand how to add, configure, and use the UNCX Info Bot.

## What is the UNCX Info Bot?

The **UNCX Info Bot** is a telegram bot developed by UNCX Network, to help you and your community with the research. It allows you to track a token of your choice and display specific information about it.\
\
The bot allows you to check:\
-Liquidity Locks on UNCX\
-Token Locks on UNCX\
-Token farms on UNCX

<mark style="color:green;">**The bot is completely free to use, all you have to do is add it to your telegram channel and configure it.**</mark>&#x20;

##

## How to add the UNCX Info Bot to my channel?

Search for the Bot on Telegram, you can find it under the handle **@UNCXInfoBot** or under [this link.](https://t.me/UNCXInfoBot)

Once you've located the bot you can select the "Add to group or channel" button.

<br>

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

You can also add the bot using the edit panel of your telegram group.&#x20;

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

You do not have to grant the bot any special permissions. It does not modify any messages or manage users, so the standard user permissions are enough for the bot to work properly.

## Configuring the bot and the commands

### Configuring the bot

Use the /uncxset command, it sets the bot to listen to events for a specific token on a chain.

Usage: /uncxset \[chain] \[tokenaddress]

Chains: BSC, ETH, MATIC, ARB, AVAX, BASE.

<figure><img src="/files/pzboFxqPl977ym9t5zEi" alt=""><figcaption><p>Configuring the bot to listen to events related to UNCX token.</p></figcaption></figure>

if you want the bot to stop listening to the token you've set, use /uncxdelete

Usage: /uncxdelete

<figure><img src="/files/9lUYGjcsTaf2ZMcRCkqU" alt=""><figcaption><p>Configuring the bot to stop listening to events related to UNCX token.</p></figcaption></figure>

<br>

### Bot commands

**/uncxautoupdates** - Toggles automatic updates. If this setting is toggled on it will post any updates related to the selected service. <mark style="color:red;">(This command is admin only)</mark>

Usage: /uncxautoupdates \[service] \[on/off]

Services: locks, vesting, farms.

**/uncxinfo** - Get comprehensive information about a token's services.

Usage: /uncxinfo

**/uncxlocks** - Details about the liquidity locks of a token.

Usage: /uncxlocks

**/uncxvesting** - Information about token vesting.

Usage: /uncxvesting

**/uncxfarm** - Information about farms for a token address.

Usage: /uncxfarm

<br>

<br>

<br>

<br>

<br>


# Archives


# Migration of PancakeSwap liquidity from v1 to v2

Our decentralized services support migration of your liquidity. Audited by Certik.

The liquidity locked using UNCX under PancakeSwap v1 can be migrated to v2.

## Warnings

* **FOR ALL THE TOKENS WITH FEES ON TRANSFER, IT IS STRONGLY RECOMMENDED (e.g. SafeMoon)** to **whitelist the migration contract** to get as many tokens as possible in the new liquidity pool (the PancakeSwap v2 one).

  The migration tool will undo the LP and recreate it, hence you may be taxed twice by your own token's logic if you skip this step.

  The migration contract is available [**here**](https://bscscan.com/address/0x4D1317bdB1f22B9a1849F128c8Ff2dC13C0edF7c).
* "Whitelist" above may include, but is not limited to: \
  "ExcludeFromRewards" and "ExcludeFromFee".
* Ensure as well that you whitelist our contract if you have a "Max Transfer Amount" or any similar functionalities. Not doing so will simply force you to proceed with multiple "Migrate" operations, each creating a new lock in v1. &#x20;

## Prerequisites

* Your wallet is connected to BSC
* You are the owner of the v1 lock you wish to migrate
* You have checked if you do have a pool or not in v2 with the same pair
  * If you don't, proceed to next section ("There is no v2 pool yet, or it's empty")
  * If you do, proceed to the section "There is a v2 pool already"

## How to migrate my locked v1 LP?

### There is no v2 pool yet, or it's empty

* Go to our [UI ](https://app.unicrypt.network)and select "PancakeSwapv1"
* Connect the wallet which locked the liquidity on v1
* Look for your locked pair and select it
* Select "Migrate / Withdraw Liquidity"
*

```
![](/files/MCoYpf8B0urDfmS9EPNo)
```

```
* Once the pair is found, click the the gear icon next to the pair and select "Migrate"
* Connect your wallet and enter the contract address of your pair



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

* Once the pair is found, click the the gear icon next to the pair and select "Migrate"

![](/files/93TnpksT6VwAUwaQ7vyn)

* Check that there is no pair in PancakeSwap v2 and that the slippage/price difference is 0%\
  Below is an example of how it looks when there is a PancakeSwap v2 pool, which should not be showing if there is no pool yet:

![](/files/v0zG5UYIwnal7EWWE4pC)

* Ensure you have taken necessary actions as per warning at the [top of this page](/pages/-Ma8d15mdF7_9GWJcNgA#warning)
* Click "Migrate" when you are ready
```

### There is a v2 pool already

**Prerequisites:**\
In order to migrate your pool from v1 to v2, you need to ensure that the price difference between v1 and v2 pool is within a 5% range. This is to migrate as much as possible the totality (or at least 95%) of your LP tokens to the v2 pool, and it needs to have a similar BNB/YourToken ratio. In many cases, arbitrage brings an equilibrium in the price between pools.

{% hint style="info" %}
You can connect to the UI, select your pair, and click the gear icon, then "Migrate" to see what is the current price difference between the pools. (check previous section) &#x20;
{% endhint %}

If you are not within the 5% price difference, you will need to proceed with the required buying and selling, or arbitrage, until you are within the expected range.

{% hint style="warning" %}
&#x20;If the ratio/price between v1 and v2 pools falls outside the 5% range during the migration, it will fail and revert.
{% endhint %}

Once you have a similar BNB/YourToken ratio in both pool (no more than 5% difference), you can proceed with the migration as per previous section (check our warning at the [top of this page ](broken://pages/-Ma8d15mdF7_9GWJcNgA#warning)before proceeding further).

Once the migration is completed, you may have some tokens left in the v1 pool, which will be no more than 5% of the original LP amount and will be sent to your wallet.

## Known issues

| Issue                                                                | Workaround                                                                                                                                                                                                                                                                                       |
| -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| The migration fails                                                  | <ul><li>Ensure that the price between v1 and v2 pool is within 5% difference</li><li>Try to have v1 pool price lower than v2 pool, by doing some arbitrage</li><li>Clear your cache and hard refresh the page a few times. Try with another browser and/or device.</li></ul>                     |
| The migration tool doesn't allow me to transfer all of the LP tokens | You may have a "max transfer amount" in your token's smart contract. Whitelist our contract or simply create multiple locks. See [warning ](broken://pages/-Ma8d15mdF7_9GWJcNgA#warning)at the top of this page for more information.                                                            |
| I want to split the v1 lock to few/several new locks on v2           | You can migrate a portion of your LP to v2 as many times as you wish, each time it will create a new lock on v2. The unlock date and ownership will remain unchanged; however if you are the owner, you can transfer the ownership to someone else on some of the new v2 locks you have created. |


# FAQ - Frequently Asked Questions

On this page you can find answers to frequently asked questions.

## Safety

#### An admin contacted me in TG, is this normal?

No, it is not an admin. Admin or moderator will not contact you first. It is likely a scammer. Do not provide any info and do not click on any link. Report to an admin.

#### How to get an airdrop?

**There is no airdrop**. There was a reward through a staking contract at the launch of UNCL in 2020, but no airdrop. Anyone claiming there is an airdrop is a scammer: report to an admin and block him.

#### How to protect myself?

* **Use your PC exclusively for crypto**, don't install anything other that the strict necessary and only from a verified source
* DO NOT store your seed phrase on your PC, on a cloud service or on any location which has a contact (i.e. internet connection) with the "external world". Store on a paper, on steel plates, etc. and keep it safe
* **Use a hardware wallet**: ledger (through metamask) is supported for UNCX ILO and farming. This is a cold storage and you will never need to enter your seed phrase on your PC.
* Do Your Own Research

## DYOR

Aside from the guide below, we prepared a DYOR checklist to help you in evaluating risks and make better decisions when investing, you can find it [here.](https://unicrypt.medium.com/unicrypt-public-sale-dyor-education-eeabea244a95)

#### Why DYOR is important?

In our telegram channels, we often read about concerns about upcoming ILOs, or even ended ones which had a rather shady start or end. Our stance remains the same: we are a tech provider, our platform is decentralized and any dev can start a fund raiser, hence **it is your duty as a participant to know exactly what are the risks involved,** and take the decision to skip some ILOs, or only invest what you can afford to lose. It is your risk management versus your risk appetite.

Even an audited and KYC ILO doesn't protect you from losing your funds, as there are many more ways to steal your funds than there are ways to protect you.&#x20;

With the ILO Platform v6, a lot of improvements were implemented, the major one in term of UI are the blue/orange/red coloring which are giving you a quick taste of the "quality" of an ILO.

That being said, some red flags doesn't necessary means shady, and all blue doesn't mean it's safe.&#x20;

Here are some hints to help you conducting your own research and finding a lower risk ILO.

Do also check the DYOR guide of our partners [SolidProof ](https://solidproof.io/how-to-dyor)and [FOMODEX](https://fomodex.com/how-to-dyor).

#### How do you feel about the flags?

Flags are rather <mark style="color:blue;">**blue**</mark>?

![](/files/exrlUjojqre534Z3S9PP)

Or rather <mark style="color:red;">**red**</mark>?

![](/files/FO7yGvJ0cgAPP7cxLVAi)

Though the blue flags look appealing, do dig into the details of the ILO, like locks expiration (both LP and tokens), type of token locking (linear or standard), audit details, etc. and ask questions in [our dedicated channel ](https://t.me/Unicrypt_Presales)and in the project's channel.&#x20;

#### Is 80 to 100% of the liquidity locked?

Did they lock the minimal % of liquidity or the maximum 100%? Locking 60% means that, **40% of the BNB/ETH are sent to the team/dev/project wallet directly after presale's success**.&#x20;

Locking 100% of the liquidity does not mean however that your funds are safe.

#### Misconception

Liquidity lock is different than token lock/vesting. ETH/BNB/etc. is not "locked" in the liquidity pool, but the LP token (representing the ratio of tokens in a pair) is locked.&#x20;

Take for example and ILO called XYZ supplying XYZ tokens with the funds raised in BNB.

A pool is created with 100 XYZ and 100 BNB upon ILO completion.

The XYZ/BNB token ratio in the pool depends on the price of both tokens in the pair. Unlocked XYZ tokens sold to the XYZ/BNB pool will reduce the amount of BNB and increase the amount of XYZ in that pool, meaning the price of XYZ will decrease.

1 LP token could represent 1 XYZ and 1 BNB, meaning XYZ has a rather high price tag. However, if a large amount of XYZ are sold to the pool, the LP token may represent 100 XYZ and 0.01 BNB: this would mean that 1 XYZ token has practically no value anymore: the liquidity pool was drained. The amount of locked LP tokens remains the same and are still locked, but their value is extremely low.

If the concepts of liquidity pool, liquidity locking and impermanent loss is not clear to you, we recommend watching [this video](https://www.youtube.com/watch?v=cizLhxSKrAc).

#### How to read the Tokenomics?

Under the "info" tab of every ILO, you will see, among other pieces of information, the tokenomics.

#### Definitely bad tokenomics

![This is a tokenomic to stay away from](/files/tRyAOhIUgrYpLLsI5vAe)

***Why**: Too many unlocked tokens, there is a risk of large amount getting sold and driving the price close to zero*

#### Potentially good tokenomics

![Potentially good tokenomics](/files/iDQBkkA2pabOv8ZDL4NN)

***Why**: 80% of tokens are dedicated for presale and liquidity, no unlocked supply (or <1%). However there is about 20% of locked tokens, which might look good, but needs further investigation. Lock type (linear unlock or standard) and lock duration need to be investigated (check the Token Vesting section in Guides).*

#### Funds raised & liquidity locked

Do note that the tokenomics chart is only considering the **tokens of that project** and **not the BNB/ETH/etc. raised**. The amount of ETH/BNB that the team will receive is:

* ETH/BNB raised minus the amount (in %) of liquidity locked.

Example:

* If 100% of 1000 BNB is locked in LP, the team receives 0 BNB.
* If 70% of 1000 BNB is locked in LP, the team will received 300 BNB.

However, in case 100% of the liquidity is locked, this doesn't mean it is safe, so:&#x20;

* Check the circulating supply in the tokenomics chart: how will those tokens be used/sold? What wallets or contracts are those tokens in? \
  Are they locked/vested with a competitor(We can only assure you of safety of our own locks)? Or are they unlocked and can be market sold, draining the liquidity?
* Check for how long is the liquidity locked. Can the team remove the whole liquidity in 1 month?

#### Contract

* If the contract is unaudited:

  * can new tokens be minted and market sold?
  * can fee/tax on transfer be raised?
  * can trading be paused?
  * or any contract-related issues that might cause problems down the line

  \
  \&#xNAN;*(disclaimer: UNCX Network is not an audit company. We don't audit flawed contracts. If the contract is unaudited, you invest at your own risk.)*

#### Token Lock/Vesting

If tokens are vested with UNCX, you will see all the locks under the tokenomics chart on the token page. Otherwise they will appear as "Circulating / Unlocked".&#x20;

Ask yourself a question: will the team ever own more tokens than the amount sold during presale once they are unlocked? If yes, how long until it happens: 1 week? 1 month? 1 year? <br>

#### Linear lock warning

Some teams/devs use the Linear Lock in their ILO to have their tokens in a smart contract rather than circulating: this looks "good" on the tokenomics, however token can be already "unlocked in the locking contract", which means a large amount can be withdrawn by the team even before the ILO ends.  &#x20;

Do check the details of linear locks, here is a good example of a proper linear lock, as there is no token release until 8 months later:

![The linear lock does not release any token before 8 months time](/files/Ea8jai2f5ul3QlfTTo9R)

#### Is the contract audited by one of our whitelisted auditors?

The audit by our partners have proven to detect things like errors in code preventing a successful finalization of the ILO, customizable tax amount (which in some cases could be changed to 90%+ at any time), unlimited minting, and so on.&#x20;

No auditor can detect and flag everything suspicious: the findings of an audit depends on many factors and is not an exhaustive list of all potential threats hidden in a code.&#x20;

#### Is the team KYCed by one of our whitelisted partners?

If a team has passed KYC, it is a good sign: it means that the team behind the project should be known by the KYC provider.

However: Do not trust blindly a team and their project because of a KYC badge. Despite the KYC process of our providers being as tight and tough as possible, an unfortunate turn of events may still occur.&#x20;

In case of concerns about a team behavior after a launch on our platform, do get in touch directly with the KYC provider.&#x20;

#### Is the Telegram group botted? Are admins open to any question?

Do you only see moon boys? Can you ask question without being muted or banned? Are there thousands of people (bots?) in the tg already saying "good project"?

#### Is the Twitter account recently created? Is it botted?

Do you see some tweets with thousands of likes and retweets? Are typical answer to those tweets repetitive and pointless (e.g. "Good project")

#### Does the project use a copyrighted item/picture/movie/anime?

If they use "Ironman" as their token name and Ironman pictures, do you think they were granted a license by Marvel/Disney?

Licenses as such can cost millions: Why are they raising funds then?

If they have a CG trailer which is absolutely breathtaking, and likely costs hundreds of thousands, do they need a fund raising?

#### Do they have a real product?&#x20;

Or did you participate based on people shilling it?

If they claim to have a fantastic product, do they have a beta?

If the economic model is based on taxing other investors, isn't it a type of Ponzi scheme? If not, what are the other source of incomes that will benefit all holders and bring this out of the typical Ponzi scheme?

Look for real long term hold with a real product and a sustainable economic model, and with lots of room to grow, especially if you wish to make it through the bear market.

#### Bottom line

To remain as decentralized as possible, UNCX team will not check nor recommend an ILO, unless it was "incubated". Hence a poorly conducted DYOR means you accept the risk of losing your funds. Avoid this by learning how to sense shady projects and discover solid ones.&#x20;

Empower yourself, do thorough DYOR, invest according to your risk appetite, and be accountable for your investments. This can only help you in your crypto journey.

*`UNCX doesn't refund any funds lost by investing in an ILO that turned out to be a scam. Do your own research.`*<br>

## ILO

#### What does "ILO" mean?

ILO stands for "Initial Liquidity Offering". A project may need to raise funds which will be partly used to create a liquidity pool allowing trading to start smoothly and partly to fund the project.

This model of fundraising makes it safer for investors to participate in a presale, as at least 60% of raised funds are dedicated for liquidity in the pool, meaning every token holder can start trading immidiately after the presale ends.

#### **What are the holding requirements for ILO participation?**&#x20;

There are no holding requirements for ILO participation. Rounds 1 and 2 are public and everyone can participate. If you want to participate in a round 0(if there is one), you have to get whitelisted by the team launching the token

#### **For developers:**

**I have a "JSON" error**

**Before / When creating an ILO:** Restart your computer, clear internet cache, try another web browser. Check all parameters of your ILO, ensure you provide enough gas for the creation.

**During / While raising funds for an ILO:** This is usually when a liquidity pool has been created manually during the ILO. Unfortunately, you have to restart your ILO from the beginning and make sure your tokens are not already in circulation.&#x20;

**After / When initiating the market at the end of a successful ILO**: This is often due to errors in the token smart contract's code. Or with extra large supply of token which are not supported by some AMM.&#x20;

Please get in touch with an official admin to see what are your options.&#x20;

## Other topics

### Farms

#### **There are so many farms, I do not know where is the one I need**

On the farm page, the "Tokens" tab allows you to easily search for a farm by selecting (or searching) the name of the reward token for that farm. Once you found it and selected it, you can click "View farms" to see all farms rewarding with this token.&#x20;

#### **Why do I have less token after I withdraw my LP from the farm?**

You may have less of one token in the pair, but more of the other token. This is called Impermanent Loss. LP tokens are a portion of the liquidity for a pair. And in a liquidity pool, the ratio of both tokens changes as people buy and sell.

#### When providing liquidity on Uniswap I am a bit lost

Welcome to Uniswap v3! Since May 5th 2021, Uniswap v3 was released with a new liquidity pool concept (based on NFT rather than LP UNI-V2 tokens) and several new features.\
The UNCX farms, however, are **still based on Uniswap v2**. In order to provide liquidity to a pair for farming (all UNCX farms have a link to add liquidity if no LP token was found in your wallet), you will need to add "**v2.**" in front of "info.uniswap.org/pair/0x..."

#### I have unstaked my LP token from a UNCX farm: how to get my underlying tokens back from the pair?&#x20;

With Uniswap v3, you will need to find your way in Uniswap to show you the LP v2 removing page.\
The easiest may be to start [here ](https://app.uniswap.org/#/pool/v2)and see if after scanning your wallet, Uniswap finds your liquidity. \
If you cannot see the pair you provided liquidity to, try [this link](https://app.uniswap.org/#/remove/v2/0x2f4eb47A1b1F4488C71fc10e39a4aa56AF33Dd49/0xaDB2437e6F65682B85F814fBc12FeC0508A7B1D0). This is for removing UNCL/UNCX liquidity and convert the LP token to the underlying UNCL and UNCX tokens. You can adjust the URL to replace UNCL and/or UNCX contract number (starting 0x....) to the contract number of the tokens you are willing to remove from the liquidity pool.&#x20;

#### I am in a farm ending soon, when should I exit?

Anytime. Previous farms remain accessible, even if the reward period has ended. You can unstake, then:\
\- Re-stake in a new farm if your LP UNI-V2 token matches that farm\
\- Leave as an LP token in your wallet to still receive 0.3% trading fees\
\- Unpair your LP token to receive the 2 underlying tokens (see question above about getting the underlying token from a pair using Uniswap **v2**)

#### I do not see the earn fees after unstaking my token, where are they?

When a LP UNI-V2 token is staked, Uniswap will not track the earn fees for that LP token. You still own the same portion of the liquidity pool, but the your portion has grown with every liquidity provider fee now stored in the pool.


# Token Vesting (legacy app)

On this page you will find everything you need to know about vesting your tokens with us.

## What is token vesting?

While our Liquidity Locker allows you to lock Liquidity Provider tokens to prevent classic "rug pulls", it does not allow single tokens (i.e. not LP pairs) to be time-locked.

This is what our Token Vesting feature does.

Token vesting is simply the ability to lock ***n*** amount of token for ***x*** amount of time as a commitment to hold the token.

A clear token vesting schedule may help gaining the trust of the community supporting the project, and could allow a more sustainable growth of the project by showing their commitment to the community.

Vested tokens are time-locked in a smart contract, fully audited by Chainsulting, and cannot be sent, sold, added to liquidity or staked.

Token Vesting contracts:

* [Ethereum](https://etherscan.io/address/0xdba68f07d1b7ca219f78ae8582c213d975c25caf)
* [BSC](https://bscscan.com/address/0xeaed594b5926a7d5fbbc61985390baaf936a6b8d)
* [Base](https://basescan.org/address/0xa82685520c463a752d5319e6616e4e5fd0215e33)
* [Polygon](https://polygonscan.com/address/0x2621816be08e4279cf881bc640be4089bfaf491a)
* [Arbitrum](https://arbiscan.io/address/0x8cb0300af2a801dc9992225d45399ac56888cbcd)
* [Telos](https://www.teloscan.io/address/0x4264BBE70C57d2Aa9B64762dFDE214219F088a86)
* [IOTA](https://explorer.evm.iota.org/address/0x625e1b2e78DC5b978237f9c29DE2910062D80a05)
* [Sepolia](https://sepolia.etherscan.io/address/0x3dFC191d2ff5008e11d878345daD88A0C005fCf0)
* [Avalanche](https://snowtrace.io/address/0xCa61C60D9Da18fA4e836a1e378Ded3205FcEdfA5)

## How to lock your tokens?

First, navigate to "services" tab in our UI or use <https://legacy.uncx.network/services>. Select Token Locker.

<figure><img src="/files/62Ta24fqppxCyjOEdyMY" alt=""><figcaption><p>"services" button location in our UI</p></figcaption></figure>

You will be taken to the screen presented below. Next step is pasting a token address into the field.

**Note:** As mentioned on the image, it is not recommended to lock your LP tokens in the token locker, as they will not be displayed in the browser.

<figure><img src="/files/QFQXkjDWhiau8K2UnJBf" alt=""><figcaption><p>Token Locker initial screen</p></figcaption></figure>

After pasting the token address you want to lock, you will see the rest of the UI appear on the right side. To lock, simply select "Add a lock", highlighted on the image. Then select your lock.

<figure><img src="/files/bPezQsOdMOV2tQ5Eq3Zv" alt=""><figcaption><p>Adding a new lock</p></figcaption></figure>

Next thing to do is setting a wallet address allowed to withdraw the tokens on the unlock date, and amount of tokens you want to lock.

<figure><img src="/files/4dBiMzROeNDPLe5iRWkW" alt=""><figcaption><p>Withdraw address and amount</p></figcaption></figure>

Next step is selecting an unlock date for your tokens.

You can select "Unlock on date", which unlocks all your tokens on the same date.

You can also spot a "Premature Unlock Condition" feature, which works very well with ILOs. You should contact the UNCX team for more details if you want to use it.\
\
**Note:** Once locked tokens cannot be withdrawn before the unlock date. UNCX is a decentralized platform and will not unlock your tokens if you choose a wrong date. Please, double-check everything before proceeding further.

<figure><img src="/files/K22Ml2GSXIgSUxdqaDXs" alt=""><figcaption><p>Unlock date of the lock</p></figcaption></figure>

Or "Unlock over time", allowing you to withdraw your tokens not all at once, but in smaller batches over time. Selecting this option, you will have to set a date of the first unlock, and of the last unlock. Tokens will be unlocked every block between those dates.&#x20;

<figure><img src="/files/VJEKkSyKGbhNotWVFhyi" alt=""><figcaption><p>Unlock over time</p></figcaption></figure>

If you selected "Unlock over time" option, you will see a schedule, helping you to better visualize when your token will be unlocked.

<figure><img src="/files/tXJSBI5bsqu692hBB2N5" alt=""><figcaption><p>Schedule of your tokens' unlocks</p></figcaption></figure>

You can enable free locking feature, which allows you, or anyone from your community, to lock the specific token how many times you want with just a one time fee.

To read more about our fees, check [this page](https://docs.unicrypt.network/overview-of-our-services#fees).&#x20;

<figure><img src="/files/PSvb7pgzfisN0ORhc8il" alt=""><figcaption><p>Fee locking feature</p></figcaption></figure>

To see already existing locks, get back to the first locking screen, paste a token address and instead of "New lock", select "View locks" tab.

<figure><img src="/files/c04yBtBFyM0BFJ2kivpb" alt=""><figcaption><p>Already existing locks</p></figcaption></figure>

### Locking with CSV

Sometimes you may need to create a big number of locks at once. Creating them manually, one by one, would be tedious and boring. Lucky for you, we have a tool for that.&#x20;

After you already proceeded to the lock screen, you will see two small buttons: Import CSV and Download CSV (both highlighted on the screenshot below).

<figure><img src="/files/TCLn9MRhi6xZqHtkwKTF" alt=""><figcaption><p>"Download CSV" and "Import CSV" buttons</p></figcaption></figure>

For now, select "Download CSV". That will start a download on a spreadsheet with the lock template. Let's jump into it.&#x20;

<figure><img src="/files/rh0J445aL72E8Vj46X3T" alt=""><figcaption><p>CSV lock settings</p></figcaption></figure>

You will see 5 different settings you can customize (note that the formatting might be a little different when you open the file, it does not matter. It works the same).

Going from left to right:

* **Owner address:** in this field you should input the address of the lock owner.
* **Amount of tokens you want to lock:** The amount of tokens that will be locked in one lock.
* **Start date:** Start date of the tokens emission (input needs to be epoch).\
  Note: change this only if you want to create a linear lock. If you want a standard lock it should stay at 0.
* **End date:** The date of the unlock of the tokens (input needs to be epoch).&#x20;
* **Premature unlock condition:** Address of a contract with a premature unlock condition

<figure><img src="/files/9SGjva3QhJY3LUSX2Cu9" alt=""><figcaption><p>Multiple locks in CSV file</p></figcaption></figure>

After you created your lock, you can copy it as many times you want in a way displayed on the image above.&#x20;

If your locks are ready to go, save the file. Now, navigate back to the lock screen (first screenshot of this guide). Select "Import CSV".

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

After importing the CSV file, all your locks will be displayed on the lock screen.

Also, for a better view you can switch to the table view, using the button highlighted on the screenshot below.&#x20;

<figure><img src="/files/u07D8aLW5A9dVZBm8O3P" alt=""><figcaption><p>Table view button</p></figcaption></figure>

By using the table view you can quickly confirm all the information for all your locks, as well as edit them.&#x20;

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

## How to withdraw your tokens?

First, connect to the app using the wallet allowed to withdraw the tokens and go to your profile. You can do it by selecting an icon in the top right corner of the screen.

<figure><img src="/files/yp6dyW3ueCqrUt2lmW0a" alt=""><figcaption><p>Profile icon</p></figcaption></figure>

Once you are there, select "Token locks" tab, you will be able to see all the tokens you locked. Select the one you want to withdraw.

<figure><img src="/files/LG1rXjAk8aaSPrEdbwYk" alt=""><figcaption><p>Your token locks</p></figcaption></figure>

Once you selected your token, you can use filter options for easier navigation through your locks.

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

The next step is selecting the gear icon and selecting "Withdraw". Then just select the amount you want to withdraw.

<figure><img src="/files/0HlbDndhRfJ4nLMtWldS" alt=""><figcaption><p>Withdrawing your tokens</p></figcaption></figure>

## Advanced features

Another thing you can do using the withdrawal screen is editing your lock. \
We have implemented few unique features to give our customers more flexibility with their tokens and locks.

<figure><img src="/files/G18kOnMFbYaa9JthhoQC" alt=""><figcaption><p>Advanced locker features</p></figcaption></figure>

#### Relock

<figure><img src="/files/9xkVG1LDHYgEh32CV0vJ" alt=""><figcaption><p>Relocking tokens</p></figcaption></figure>

UNCX lockers support relocks directly from the UI. Token developers do not need to withdraw the their tokens to relock them. **It can be done with 1 click from the above UI.**

#### Transfer Ownership

<figure><img src="/files/a5CtidzVsUG2BOsj0cDS" alt=""><figcaption><p>Transferring ownership</p></figcaption></figure>

Simply, choose a different address allowed to withdraw the locked tokens.

#### Increment lock

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

This allows any token developer, already locking with us, to add more tokens for an existing lock. Simply approve and lock!&#x20;

#### Split lock

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

It is possible to split your lock in different sub-locks. You can find more information on the image above.

## Locking tokens with SAFE

This guide will walk you through locking your tokens using transaction builder, a built-in feature of Gnosis Safe.&#x20;

After selecting the transaction builder in the Gnosis Safe UI, you will be taken to the screen presented below.

<figure><img src="/files/nmpq14DaMgdXrgiqW7bV" alt=""><figcaption><p>New Transaction</p></figcaption></figure>

### Approve

First thing you have to do is approve our vesting contract to transfer your tokens.&#x20;

In order to do that, enter the address of your token to the first field and its ABI to the second.

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

You can find an ABI of your token in the "Contract" tab on your token's page in the blockchain explorer.

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

Next, select "approve" method, and fill the next two fields:

**Spender:** in this field, you should input the address of **OUR VESTING CONTRACT** (you can find each contract at the start of this page)**.**

**Amount:** In this field, you should input the amount of tokens you want to approve. Keep in mind you will not be able to lock more tokens than you approved. \
Also, keep in mind you have to include every digit, so if your tokens has 18 digits and you want to lock 10 tokens, you will input 10 + 18 zeros into this field (10000000000000000000).

After filling all the fields, select "Add Transaction" and proceed to the next one.&#x20;

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

### Lock

Next step is creating a lock transaction. The first step here is to input a contract address of our locker and ABI. You can find the ABI in the "Contract" tab on the blockchain explorer.&#x20;

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

Next, select the "lock" method and input the address of the token you want to lock in the \_token (address) field.

For the last field, you have to fill it in the way explained below:

\[\["owner address", "amount of token you want to lock", "Start Emission date", "End Emission date", "condition"]]&#x20;

**owner address:** Wallet address you input here will have an ownership of the lock and be able to edit it/withdraw tokens

**amount of token you want to lock:** Simply, an amount you want to lock.\
NOTE: you cannot lock more than you approved in the previous step\
NOTE2: you have to include every digit, so if your token has 18 digits and you want to lock 10 tokens, you will input 10 + 18 zeros into this field (10000000000000000000).

**Start Emission date:** If you want to create a standard lock, set this to 0 and proceed.\
If you want to create an incremental lock, this will be the date of the start of token emission.\
NOTE: In order to set this setting you will have to input epoch. You can use [Epoch Converter](https://www.epochconverter.com/) to convert a date to an epoch.

**End Emission date:** If you are creating a standard lock this will be a date when your tokens unlock. If you are creating an incremental lock, this will be a date of the emission end. \
NOTE: In order to set this setting you will have to input epoch. You can use [Epoch Converter](https://www.epochconverter.com/) to convert a date to an epoch.

**Condition:** If you have a condition for premature unlock, you can input it here. If not, just enter "0x0000000000000000000000000000000000000000"

Then proceed by selecting "Add Transaction" button.&#x20;

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

At this point, you should have at least two transactions on the right side of your screen (desktop). \
If you want to create multiple locks, you can do it just by adding more lock transactions. You don't have to approve more than once.&#x20;

Proceed by selecting "Create Batch" button.

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

In the final screen, you can first try to "Simulate" your transaction to verify if there are no errors in the settings. If everything&#x20;

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

If there are no errors, you will see an information about the successfull simulation below the buttons. You can proceed by selecting "Send Batch" buttons. And that's it!&#x20;

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

If you set an owner of the lock to a wallet address different than the safe, you can view your locked tokens by connecting the wallet to our dapp, selecting the human icon in the top right corner of the dapp (desktop), and going to "Token Locks" tab. You can withdraw then the standard way.

Althought, if you selected your gnosis safe address as the owner, you can still withdraw using the transaction builder (see the guide in the next section).

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

### Withdraw

To withdraw your locked tokens using the transaction builder, you have to locate your lock in our dapp first.&#x20;

To do this, open our [dashboard](https://app.unicrypt.network/dashboard), select "Services" button and go to Token Locker.&#x20;

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

Once you are there, you have to input a token address you locked, and select "view locks" tab.

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

Next step is selecting the lock you want to withdraw from, expand it by selecting it and find the lock ID. Save or remember it, you will need it to withdraw the tokens.

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

It's time to use the transaction builder. Input an address of the vesting contract your token are locked in and its ABI (you can find it on the blockchain explorer page of the contract, under the "Contract" tab).

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

In the next step, select "withdraw" from the method list and input the lock ID you previously checked in our dapp.&#x20;

Input the amount and proceed.

NOTE: you have to include every digit, so if your token has 18 digits and you want to lock 10 tokens, you will input 10 + 18 zeros into this field (10000000000000000000).

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

You should have at least one transaction on the right side of your screen now (desktop).

Select "Create Batch" to proceed.

<figure><img src="/files/4kPhJtptEAzMCv4I6dbc" alt=""><figcaption></figcaption></figure>

In the final screen, you can test your transaction by selecting "Simulate" button to make sure there are no errors if the settings. If the simulation is successfull proceed by selecting "Send Batch" button. That's it!

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


# Liquidity Lockers V2 (legacy app)

On this page you will find everything you need to know about locking your liquidity with us.

To understand what liquidity lockers are, first you have to be familiar with concepts of liquidity pools.

If you are not, we recommend watching [this video](https://youtu.be/cizLhxSKrAc).

## What is a liquidity locker?

Developers listing their tokens on decentralized exchanges are granted LP tokens when they initiate a pool. These LP tokens, once in their possession, can be transferred like any other tokens on the blockchain they have been minted on, or bridged to another one.

A liquidity locker allows the developer to store these LP tokens in a smart contract, revoking his permission to move these LP from a start date to an end date. \
\
For a deeper dive into this topic, we recommend having a read of [our medium article](https://unicrypt.medium.com/liquidity-locking-overview-112329ecfaaa) about liquidity locking.

We also recommend reading our medium article on [automating liquidity locking using Gelato](https://unicrypt.medium.com/code-guide-automating-liquidity-locking-on-unicrypt-with-gelato-6aead943cd7d), to explore more options of interacting with our lockers.

### Contracts

<table><thead><tr><th width="365">AMM</th><th>Locker</th></tr></thead><tbody><tr><td>Uniswap v2 (ETH)</td><td>0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214</td></tr><tr><td>Uniswap v2 (Base)</td><td>0xc4E637D37113192F4F1F060DaEbD7758De7F4131</td></tr><tr><td>Sushiswap (ETH)</td><td>0xED9180976c2a4742C7A57354FD39d8BEc6cbd8AB</td></tr><tr><td>Sushiswap (Base)</td><td>0xBeddF48499788607B4c2e704e9099561ab38Aae8</td></tr><tr><td>Pancakeswap v1 (BSC)</td><td>0xc8B839b9226965caf1d9fC1551588AaF553a7BE6</td></tr><tr><td>Pancakeswap v2 (BSC)</td><td>0xC765bddB93b0D1c1A88282BA0fa6B2d00E3e0c83</td></tr><tr><td>MagicSea v2 (IOTA)</td><td>0x7f5C649856F900d15C83741f45AE46f5C6858234</td></tr><tr><td>Biswap (BSC)</td><td>0x74dEE1a3E2b83e1D1F144Af2B741bbAFfD7305e1</td></tr><tr><td>Julswap (BSC)</td><td>0x1f23742D882ace96baCE4658e0947cCCc07B6a75</td></tr><tr><td>Quickswap (POLYGON)</td><td>0xaDB2437e6F65682B85F814fBc12FeC0508A7B1D0</td></tr><tr><td>VaporDEX (Telos)</td><td>0x08655a59381EA4fEbF210D609D52c0F2Ac47b8d1</td></tr><tr><td>TraderJoe (AVAX)</td><td>0xa9f6aefa5d56db1205f36c34e6482a6d4979b3bb</td></tr><tr><td>Sushiswap (ARB)</td><td>0x275720567e5955f5f2d53a7a1ab8a0fc643de50e</td></tr><tr><td>Camelot (ARB)</td><td>0xa71182392faaa9a123a9e8120e79515117f05be4</td></tr></tbody></table>

## How to lock your LP?&#x20;

Please make sure that:

* DEX pair is created (on UniSwap, for example)
* LP tokens/NFT you want to lock are held in a wallet you are currently connected with

First, navigate to "services" tab in our UI or use [this link](https://legacy.uncx.network/services). Select Liquidity Lockers.

<figure><img src="/files/C8XovcV5LHHSS5iowSXK" alt=""><figcaption><p>"services" button location in our UI</p></figcaption></figure>

First, you have to select the DEX your liquidity pool is on. For this example, we will select Uniswap V2 on Goerli testnet.

<figure><img src="/files/kqHhkYGeVTunJiY2M5av" alt=""><figcaption><p>Selecting a DEX</p></figcaption></figure>

You will be taken to the screen presented below. If there are pairs already assigned to your address, they will be visible below the searchbar. If not, you will have to paste the address.

<figure><img src="/files/JQjU27NEnAc2fIys5WC2" alt=""><figcaption><p>"New Lock" screen</p></figcaption></figure>

The next step is choosing the amount of LP tokens you want to lock and the unlock date.\
You can allow withdrawal of the LP tokens to another wallet, although you will not be able to do it using the one you are locking with anymore.\
\
If you have a referral address, you can enter it in the field displayed below.&#x20;

To read more about our referral program, check [this page](https://docs.unicrypt.network/unicrypt-referral-program).&#x20;

<figure><img src="/files/BAea7BtE5dQwondsDZJ7" alt=""><figcaption><p>"Lock Liquidity" screen</p></figcaption></figure>

Further down the page you will be able to see "Fee options". There is only one at the moment, so all you need to do from here is select "approve", then create a lock.

**Note:** LP tokens, once locked, cannot be unlocked before the unlock date. **UNCX Network is a decentralized platform and will not unlock your tokens if you select a wrong date by mistake.** \
Please, double-check everything before proceeding

<figure><img src="/files/WDUUddOy94sQa5iW2Ntc" alt=""><figcaption><p>Fee options</p></figcaption></figure>

After successfully locking your LP tokens, you will be taken to the screen presented below. As explained on the image, it might 15 to 20 minutes for the lock to be visible in our UI, so don't worry if it's not visible right away. \
\
Select the button on the bottom of the screen to access the lock page.

<figure><img src="/files/WAt5MFFynVeZ5lBVafcH" alt=""><figcaption><p>LP tokens Locked screen</p></figcaption></figure>

On the lock page, you can find all the information about your lock, such as how much of the liquidity is locked and the unlock date or expired locks.

<figure><img src="/files/CmTKX8UHPDqK30UhAuTu" alt=""><figcaption><p>Lock page</p></figcaption></figure>

## How to withdraw your LP?&#x20;

First, navigate to "services" tab in our UI or use [this link](https://legacy.uncx.network/services). Select Liquidity Lockers.

<figure><img src="/files/C8XovcV5LHHSS5iowSXK" alt=""><figcaption><p>"services" button location in our UI</p></figcaption></figure>

First, you have to select the DEX your liquidity pool is on. For this example, we will select Uniswap V2 on Goerli testnet.

<figure><img src="/files/kqHhkYGeVTunJiY2M5av" alt=""><figcaption><p>Selecting a DEX</p></figcaption></figure>

You will be taken to the screen presented below. Select the "Edit / Withdraw" tab, visible on the image below.

<figure><img src="/files/JQjU27NEnAc2fIys5WC2" alt=""><figcaption><p>"New Lock" screen</p></figcaption></figure>

If there are pairs already assigned to your address, they will be visible below the searchbar. If not, you will have to paste the address.

<figure><img src="/files/WlQmWypqL6MuTDrZmLZC" alt=""><figcaption><p>"Edit / Withdraw" screen</p></figcaption></figure>

After selecting a pair, you will be able to withdraw your liquidity using the button presented below. Make sure you are using a wallet permitted to withdraw.

<figure><img src="/files/zWJBm9uuFKdvQFxEUwZJ" alt=""><figcaption><p>Withdrawing liquidity</p></figcaption></figure>

## Advanced features

Another thing you can do using the withdrawal screen is editing your lock. \
We have implemented few unique features to give our customers more flexibility with their LP and locks.

<figure><img src="/files/ZHB4RHwW81aGWk4Qc7sc" alt=""><figcaption><p>Advanced features of our lockers</p></figcaption></figure>

#### Relock

<figure><img src="/files/XSt6p8wrn2ID99gLp8HL" alt=""><figcaption><p>Relock Liquidity page</p></figcaption></figure>

UNCX lockers support relocks directly from the UI. Token developers do not need to withdraw the LP tokens to relock them. **It can be done with 1 click from the above UI.**

#### Transfer Ownership

<figure><img src="/files/f2hEZW1FoMPoDhXuvPsw" alt=""><figcaption><p>Transfer Ownership page</p></figcaption></figure>

Simply, choose a different address allowed to withdraw the locked LP tokens.

#### Increment Lock

<figure><img src="/files/DbffFhQ4GSUyIN8d6RKn" alt=""><figcaption><p>Increment lock page</p></figcaption></figure>

This allows any token developer, already locking with us, to add more LP tokens for an existing lock. Simply approve and lock!&#x20;

#### Split Lock

<figure><img src="/files/DmrmqQUgbyIll3Ha7sp5" alt=""><figcaption><p>Split Lock screen</p></figcaption></figure>

It is possible to split your lock in different sub-locks. You can find more information on the image above.


# Initial Liquidity Offering (ILO)

On this page you will find everything you need to know about creating your own ILO.

## What is Initial Liquidity Offering (ILO)?

Initial Liquidity Offering (ILO) is a fundraising mechanism through which many projects and startups raise funds by selling tokens on the DeFi based Decentralized Exchanges without undergoing the process of ICO.

In other words, ILO allows you to raise funds and immediately after launching, the liquidity pool will be created which allows your investors to start trading right away.

UNCX ILO v6 Presales smart contracts can be found on:

* Etherscan ([ETH Mainnet contract](https://etherscan.io/address/0xa0450f2a4e9fbf8a6d86e6b46c0f5abbb5c7deac))
* Bscscan ([BSC Mainnet contract](https://bscscan.com/address/0x4c19ca89a4ef7b1c9b466c4a2f745bfbbf404a59))

## How to create an ILO?&#x20;

Before creating your ILO, take a look at our recommendations (you can find them below the guide), they will help you with planning your ILO to assure its success. Also, make sure to read through the important notes to ensure you don't miss anything.

&#x20;If you already have your presale planned, you can skip that part and go ahead with the guide.

#### Selecting the blockchain, DEX and token

To locate our Launchpad UI, select the "services" tab in our UI or select [this page.](https://legacy.uncx.network/services)

<figure><img src="/files/62Ta24fqppxCyjOEdyMY" alt=""><figcaption><p>Location of "services" button in our UI</p></figcaption></figure>

Then, just select our LaunchPad from the service list.&#x20;

Afer that, you will be asked which blockchain and dex you want to create your ILO on.&#x20;

<figure><img src="/files/nakdEYu8vl3WhH54K4na" alt=""><figcaption><p>Selecting a DEX</p></figcaption></figure>

The next step is choosing the ILO type. For now, there is just one, so just select the "Fair sale" and proceed.

<figure><img src="/files/D9mPhDxz3RSo5aCTayMf" alt=""><figcaption><p>Selecting an ILO type</p></figcaption></figure>

Now, you have to choose the token you want to use for your ILO. If you are using a token created by our ENMT Token Minter, it will appear on the left side as displayed on the screenshot below. If you already have your own token, just paste the address into the empty field.

<figure><img src="/files/oedXpfvXyRoSKn0K3XpS" alt=""><figcaption><p>Selecting your token</p></figcaption></figure>

#### Adjusting your ILO

First thing you have to do is determine how many of your tokens will be up for your ILO, as well as set up the softcap and the hardcap.

**Softcap:** If the softcap is met, the markets can get initiated by a project owner/ILO creator, or they will be initiated automatically when the ILO ends. All unsold tokens will be sent to a burn wallet.

**Hardcap:** If the hardcap is met, it means all tokens were sold and markets can get initiated by anyone.\
\
For more information about ILO scenarios and ILO rounds, check [this page](https://docs.unicrypt.network/guides/for-investors/initial-liquidity-offering-ilo#ilo-rounds-and-outcomes).

<figure><img src="/files/4ocntoKejXKK8PyzTANq" alt=""><figcaption><p>Amount of tokens, softcap and hardcap</p></figcaption></figure>

The next step is adjusting the listing rate, and deciding how many of the funds you raise you want to use for liquidity. Below the slider you can see how many additional tokens will be required for liquidity.

<figure><img src="/files/UuSu7Bxf3pnfWgmVnna3" alt=""><figcaption><p>Presale/listing rate</p></figcaption></figure>

Next step is a prediction of how much your ILO will raise. \
\
For more information about fees check [this page](https://docs.unicrypt.network/guides/for-investors/initial-liquidity-offering-ilo#ilo-rounds-and-outcomes).&#x20;

<figure><img src="/files/fhh14u6TgigwnQkwvhHH" alt=""><figcaption><p>Presale prediction</p></figcaption></figure>

Next thing is setting up a max allocation per user. This setting simply sets a limit on how many funds a contributor can spend on your ILO.&#x20;

**Note:** Max allocation affects the number of whitelist spots on round 0\
\
Lower allocation = more whitelist spots\
Higher allocation = less whitelist spots\
\
\&#xNAN;*"UNCL spots" field can be ignored, as this is no longer a working feature.*

<figure><img src="/files/ft9aJudf36GwUxWBJwVu" alt=""><figcaption><p>Max allocation per user</p></figcaption></figure>

This field allowed you to adjust the start of UNCL reservation round, which is no longer supported, hence you can skip this one.\
\
To read more about ILO rounds check [this page](https://docs.unicrypt.network/guides/for-investors/initial-liquidity-offering-ilo#ilo-rounds-and-outcomes).&#x20;

<figure><img src="/files/NGWDUdqOBumzEcg40xk6" alt=""><figcaption><p>Start date of the round 0</p></figcaption></figure>

The next date you have to set is the date of round 1. As mentioned with the round 0, the UI displays your local browser time.

To read more about ILO rounds check [this page](https://docs.unicrypt.network/guides/for-investors/initial-liquidity-offering-ilo#ilo-rounds-and-outcomes).&#x20;

<figure><img src="/files/I2A9UaL8vwGV19voAdT1" alt=""><figcaption><p>Start date of the round 1</p></figcaption></figure>

This time you have to set the time of the preslae end. You can set it to every date you want except the past dates. The length of your presale is up to you.

<figure><img src="/files/VOuRpVJiROLLUTqJtbe3" alt=""><figcaption><p>Presale end date</p></figcaption></figure>

Next step is selecting your country of operation.

<figure><img src="/files/ObLFuSD9fiUH6mcX3ViZ" alt=""><figcaption><p>Selecting your country of operation</p></figcaption></figure>

If you have a referral address, you can enter it in the field displayed below.&#x20;

To read more about our referral program, check [this page](https://docs.unicrypt.network/unicrypt-referral-program). \
\
**Note:** remember to not leave that field empty and select a "No" option if you don't have a referral address. Otherwise you will not be able to create an ILO due to an error.

<figure><img src="/files/tdvczs569XcXSvGu28Ww" alt=""><figcaption><p>Referral address field</p></figcaption></figure>

You can request a vesting for tokens sold on your presale, preventing them from being sold for a period of time. The vesting has to be done by the UNCX team member, selecting "Yes" option presented below does not lock the tokens. It just provides an information on your ILO page for your investors.\
\
To be eligible for token vesting, your project has to have:

* KYC done by one of our whitelisted partners
* Audit done by one of our whitelisted partners
* Appropriate tokenomics (Team tokens locked in our vesting contracts)

If you completed all three, reach out to a team member via our [Telegram channel](https://t.me/uncx_token) to request vesting.

<figure><img src="/files/6MhTH5I4ccuor2crW66k" alt=""><figcaption><p>Selecting if information about vesting will appear</p></figcaption></figure>

Information about vested tokens is presented below.

<figure><img src="/files/kRZCGI5WpiblrMicPc27" alt=""><figcaption><p>Information about vested presale tokens</p></figcaption></figure>

Take a look at your fees, make sure you have enough of the required currency to pay the fee and the gas.&#x20;

<figure><img src="/files/MROchZNnpMNAe35ZTgJ0" alt=""><figcaption><p>Fees for presale creation</p></figcaption></figure>

Next thing is to check if your tokenomics look like you want them to. This chart will also be displayed on your ILO page.

<figure><img src="/files/SS97HJwySoqAU6yRUkN0" alt=""><figcaption><p>Tokenomics</p></figcaption></figure>

Last two fields on the page inform you about how many tokens you need to launch your ILO and how many whitelist spots are available in your ILO.\
\
**Note:** despite the UI displaying "UNCL spots", this can be ignored as the UNCL reservation is no longer a working feature. Right now round 0 supports only whitelist spots.

<figure><img src="/files/0oLas5fNKNuI4f0uqtlj" alt=""><figcaption><p>Required tokens and whitelist spots</p></figcaption></figure>

## How to edit an ILO?

After you successfully created your ILO, you can edit it by selecting the "edit presale" button on your ILO page.&#x20;

<figure><img src="/files/Rq1Ssme3CYC51xr4PnwR" alt=""><figcaption><p>presale edit button location</p></figcaption></figure>

You will be taken to the page presented below. From that page you are able to edit your icons and social media links, whitelist spots, start date and end date of your presale, or fail it and withdraw your tokens (not user contribution).

<figure><img src="/files/hzhwK8UPQhtw56U4fcNF" alt=""><figcaption><p>ILO edit page</p></figcaption></figure>

First button takes you to the screen presented below. There you can adjust all your social links and token icon.&#x20;

**Note:** to set your token icon you have to upload your image to imgur first. Then you have to right click on your image in imgur and select "copy link", then paste it into the field below. Your link should end in ".png".<br>

<figure><img src="/files/MTJ6qNvRy1yymYWwSWyH" alt=""><figcaption><p>Adding token logo and social links</p></figcaption></figure>

Next button takes you to the whitelist edit. Just paste the addresses to the field presented at the bottom of image below and select "Add to whitelist".\
\
The upper field lets you check if a specific address is already whitelisted without going through hundreds of them manually.

<figure><img src="/files/WkPITxYsCOTeFX7DB2lD" alt=""><figcaption><p>Whitelist edit page</p></figcaption></figure>

Another thing you can modify is your presale's start date and end date. It can only be changed before the start of the ILO.\
\
**NOTE:** Keep in mind that the minimum start date is 4 hours from the presale creation time, and if you set it lower it will be set to 4 hours automatically.

<figure><img src="/files/2cvUFTDFYpon1cDyTVZ1" alt=""><figcaption><p>Start date and end date edit page</p></figcaption></figure>

Last thing you can do from the edit page is failing your presale. After you select "cancel this sale" you will be able to withdraw your tokens from the edit page.

<figure><img src="/files/iCdIBmIxGS15Oj99TCyr" alt=""><figcaption><p>Cancel presale page</p></figcaption></figure>

## Recommendations

Below you will find our recommendations on how to plan, create your ILO and set your tokenomics properly. If you already have your whole ILO planned, you can skip this section and proceed to the guide.&#x20;

#### Pre-ILO tasks

We will not get into the details of the non-technical part (social, marketing, integrity, etc.) of the preparation needed before you are starting a presale.

Do ensure though that (non-exhaustive list):

* You have a product that brings value to DeFi space and to your holders
* You are a project manager and are ready for the challenge
* Your goal is clear and you foresee the path to achieve it&#x20;
* You are properly set in term of social presence
* Your marketing is ongoing or set to be launched on time
* The images and other material you use are not copyrighted

#### Sustainability

Your project and product(s) need to be sustainable in the long term and ideally survive a bear market. Your tokenomics need to support this vision (e.g. with proper token vesting and release over the coming years). There must be an incentive for people to hold your token, other than just taxes (consider our staking services).

With no product ("Pumpamental" is not a "Product"), it is a Ponzi Scheme and late comers/leavers will lose part of investment, or all of it, becoming "bag holders".&#x20;

#### KYC / Know Your Customer

We recommend doing a KYC for your team by contacting one of our whitelisted KYC providers. This will grant you a presale badge stating that your team has went through a KYC process, which increases trust in your community.

#### Audit

We also recommend requesting a contract audit from one of our whitelisted auditors. This will prevent any contract-related problems down the line and also grant you a badge, letting your investors know if the contract is safe or not.&#x20;

**Note:** if you used our ENMT Token Minter, audit will not be necessary as the token contract was already audited by our partners. The token is fully ERC-20 compliant.

#### Tokenomics

Below are some recommendations, however every project is different hence your funding needs may differ slightly depending on your roadmap, product(s), etc.:

* 80%+ of your LP should be locked
* The majority of your tokens should be reserved for presale and liquidity. There could be some exceptions with very long term projects but only with proper, long term token vesting applied.
* The remaining tokens must be locked using our token vesting service. Other providers are not supported: locks from those providers will appear as "unlocked" in your ILO tokenomics chart.
* A very small amount can remain unlocked if required for your project, or be reserved as farming/staking rewards.

Below you will find a tool we've prepared for you to help you in planning your ILO.\
You will see few field which you need to adjust (only those with yellow background).

\
The last field will appear on a **green** background if your token supply is large enough for your ILO forecast. Consider extra tokens if required by tyour project and be ready to lock them after the creation of ILO

If the last field is **red**, it indicates your supply is not large enough for your ILO and you have to readjust it.

{% file src="/files/9Jnrce43C5DW5wDeeZg7" %}
Prediction tool
{% endfile %}

## ILO rounds and outcomes

### Rounds

Our ILOs Platform is now under it's 6th version and each presale takes place in the order specified below.

#### Rounds Summary&#x20;

* **Round 0/Whitelist round:** after the ILO is created, owner is able to use a round 0 feature by adding wallets to a whitelist. Whitelisted wallets are allowed to participate in a presale before the public round started. Whitelist round is not mandatory and not every presale will have it\
  `(UNCX team will not provide you with a presale spot presales are managed by their respective teams and whitelist request should be addressed to them).`
* **Round 1:** a public round open to everyone. During that round you can normally participate in a presale without a need of getting whitelisted or reserving a slot. There are also no holding requirements to participate.
* **Round 2:** If the presale wasn't filled in rounds 0 and 1, round 2 is triggered 2 hours after the end of round 1. Rounds 1 and 2 work in the same way.&#x20;

### Possible ILO outcomes

| 💯 Success                                                                                                                                                                                                                                | ❌ Failure                                                                                                                                                                                                                                                                                                                                                       |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><strong>Scenario 1:</strong> The soft cap of the ILO is met, and the end block of the second round is reached.<br><br><strong>Scenario 2:</strong> The hard cap of the ILO is met, prior to the end block of the second round.<br></p> | <p><strong>Scenario 1:</strong> <br>The soft cap of the ILO is not met by the end block of the second round.</p><p></p><p><strong>Scenario 2:</strong> <br>The markets cannot initiate due to errors in token's smart contract <strong>.</strong></p><p></p><p><strong>Scenario 3:</strong> <br>A liquidity pool is created manually during the ILO.</p><p></p> |

#### Success:

**Scenario 1:** If the presale met the softcap, the markets will get initiated after the end block of the presale. Unsold tokens will be burned and the pool will be normally created, allowing trading for token holders.

**Scenario 2:** If the presale met the hardcap, the markets can get initiated by anyone. The market init button will appear on the presale page. Met hardcap means all the tokens were sold. Pool is created and token holders can start trading.

#### Failure:

**Scenario 1:** The softcap of the ILO is not met by the end of the presale. All participants can withdraw their contribution from the presale page. Owner can withdraw their presale tokens.

**Scenario 2:** Markets cannot initiate due to errors in the smart contract. All participants can withdraw their contribution from the presale page. Owner can withdraw their presale tokens.

**Scenario 3:** If the market pair already exists before the end of the ILO, markets will not be able initiate and the presale will fail. All participants can withdraw their contribution from the presale page. Owner can withdraw their presale tokens.

\
**Initiate Market/pair button** appears as soon as the ILO is in "Success" status and this button can be clicked by anyone to initiate the markets.

Within one transaction, it will:

* create a liquidity pool using "token of ILO" + "currency used to purchase" \
  (BNB, ETH, BUSD, MATIC, AVAX, etc.)&#x20;
* send to the newly created pair the % of funds (60-100%) reserved for the liquidity&#x20;
* send the rest (0-40%) to the ILO creator
* time-lock the LP token as per the parameters of the ILO
* burn the unsold portion of the tokens in case the hardcap wasn't reached &#x20;

This will effectively make the token purchased during the ILO tradable on the target AMM.&#x20;

## Important notes

Before reading the guide, we recommend reading these important notes. Below you will find a list of things you have to know to properly launch your ILO without any issues:

* We highly recommend getting your contract audited by one of our whitelisted auditors. UNCX Network is not an audit company and will not fix your code nor audit it if something goes wrong

* We highly recommend to complete KYC with one of our whitelisted KYC providers

* Failed ILO is not refundable. Creators of the project are responsible for setting achievable goals for their ILO and achieving them

* Launching tokens with extra large supply(for example 1,000,000,000,000 or more) might cause issues when initiating markets on some AMMs handling only smaller supplies, like PancakeSwap

* Ensure you have **no circulating tokens (no holders) before the ILO creates the liquidity pool**. If anyone creates the same pair as the one your ILO is supposed to, it will fail your ILO due to the price/ratio mismatch

* Do NOT use a hardware wallet(like Ledger, Trezor etc.) as some signatures are not recognized by some of these devices

* We recommend using only MetaMask wallet to create and interact with your ILO

* If the ILO fails by not reaching the softcap before the end of round 2, investors can withdraw their contribution and you can withdraw your tokens used for ILO

* Unsold tokens are burned if your ILO is successful but hardcap was not reached

* Whitelisted round 0 (before ILO) and round 1 (public round) functionalities cannot be altered. Round 2 is exactly the same as round 1 and triggers 2 hours after round 1.

* **Act with integrity** with your community, prove to them and to yourself that you can launch a fantastic project, follow your initial roadmap, be open, be accountable, do not hold their funds hostage

### Tokens with special features

**Whitelist the ILO contract addresses**

It is highly recommended to whitelist the ILO contract from all these special mechanisms.

You should whitelist as well **your** ILO contract (generated from our main ILO smart contract) which you can find at the end of your ILO's URL, as pictured below:

<figure><img src="/files/SHQ2ExHY20IoATHoYEXl" alt=""><figcaption><p>Your ILO's contract address</p></figcaption></figure>

### Adjust your Smart Contract settings

Below are some of the features that typically prevent a proper market initialization and some recommendations on how to adjust them. **This should not be considered as an exhaustive list**, as new functions are constantly created and implemented in newer contracts.

Those settings are on the blockchain under the "WriteContract" section of your token.&#x20;

**Before your ILO starts**

* setLiquidityFeePercent to 0&#x20;
* setMaxTxPercent to 100&#x20;
* setSwapAndLiquifyEnabled false&#x20;
* setTaxFeePercent 0&#x20;
* And any other functions that can prevent a proper market initialization

**When your ILO has finished** ("Success" status)&#x20;

* Call finalize (i.e. Create pair and initiate markets), unless already done by someone (the function to initiate markets is public)

**Your ILO has ended and the market has opened**&#x20;

* setSwapAndLiquifyEnabled true
* setLiquidityFeePercent (To your lp tax fee amount)&#x20;
* setTaxFeePercent (To your reflect fee amount)&#x20;
* setMaxTxPercent to original value
* And any other functions you may have temporarily adjusted

#### Other functions that may prevent a successful market initialization

As developers implement new functions, restrictions, features, and so on, there is an unlimited amount of possibilities for the market initialization to fail. Ensure you review your code thoroughly, including, but not limited to:

* maxWalletAmount
* maxWalletFee
* maxWalletPercent

Anything having "max" or "percent", but not only, should be reviewed.&#x20;

Double check as well that the router used (uni v2, pcs v2, etc.) is correctly set based on the AMM you are launching your ILO on.&#x20;

Finally, do test everything under Kovan to ensure a smooth launch when you switch to mainnet.


# Initial Liquidity Offering (ILO)

On this page you will find everything you need to know to participate in the presales launching on our platform.

## What is Initial Liquidity Offering (ILO)?

Initial Liquidity Offering (ILO) is a fundraising mechanism through which many projects and startups raise funds by selling tokens on the DeFi based Decentralized Exchanges without undergoing the process of ICO.

In other words, projects raise funds and immediately after finishing the presale, liquidity pool is initiated which allows the investors to start trading right after the launch.

## User Interface

### How to locate presales?

There are few ways to browse presales on our platform, in this guide we will show you two main ones that are most straightforward and easy. \
\
First way is locating them on our [dashboard](https://legacy.uncx.network/dashboard) page. Upcoming and live presales (look at the tab on top of the image below) are displayed on the left side of the dashboard page.&#x20;

**Note:** Normally, the names of the presales will be displayed next to the icons, for the purpose of this documentation they were hidden.

<figure><img src="/files/4tJh5ixqZC9MObHdW5ir" alt=""><figcaption><p>Upcoming presales</p></figcaption></figure>

Second way is selecting a DEX from our browser and browse through all the presales there.

<figure><img src="/files/hObHU8PnSSqHkbH9AVyx" alt=""><figcaption><p>Selecting "Browser" in our UI</p></figcaption></figure>

After selecting a DEX, you will be taken to the browser. You will find all the presales that have ever been created on this specific DEX using our platform. Upcoming ones, Live ones, successful ones and failed ones.\
\
**Note:** Normally, the names of the presales will be displayed next to the icons, for the purpose of this documentation they were hidden.

<figure><img src="/files/w3WPO35H6cvdErJI6LXu" alt=""><figcaption><p>Presale browser</p></figcaption></figure>

### Presale page explained

Once you selected a presale you are interested in, you will be taken to the page similiar to this one below. We will go one by one and explain the most important parts of presale page UI.

<figure><img src="/files/ZTNCwZEJsGYKVTINz8Xn" alt=""><figcaption><p>Presale page</p></figcaption></figure>

Let's first look at the top of the page. Here, you will find quick access to the social pages of the project, website, twitter and telegram. \
\
Below, you will find "Status", this indicates if the presale awaiting start, live, finished successfully or failed.

Under "Status", you will find "Softcap". This indicates the minimum of funds presale needs to raise to initiate markets (read more about softcap/hardcap and rounds here).

Next is "Badges". First badge on the left on the screenshot displays how many people already participated. Next one, in the middle, indicates the percent of liquidity that will be locked on launch. Last one is an indicator that the presale uses our pre-audited ENMT token (read more about ENMT Token Minter [here](https://docs.unicrypt.network/guides/for-developers/token-minter)).<br>

<figure><img src="/files/8LdutMpvdntjPGNvyN2t" alt=""><figcaption><p>Top of the presale page</p></figcaption></figure>

There are two more badges you can spot on a presale page. \
\
First one is granted for requesting an audit from one of our whitelisted providers. Along with it there will be an audit report displayed on the presale page.

Second one is granted if the team got KYC done by one of our whitelisted providers.

<figure><img src="/files/73KQk8PT0SYShnZt1HjA" alt=""><figcaption><p>Audit and KYC badges</p></figcaption></figure>

On the left side of the page you will find a tokenomics chart. Take a careful look at it, it will help you visualize few important things, including:

* How many tokens are up for sale?
* How many tokens are going for liquidity?
* How many of the tokens are locked in the vesting contract?
* How many tokens remain unlocked?<br>

Based on those information, you can make better decisions when deciding what presale you want to invest in.

<figure><img src="/files/Fo0BcW1EXuzsVyqtD7gv" alt=""><figcaption><p>Presale tokenomics</p></figcaption></figure>

On the right side of the page you will find a button allowing you to participate when the public round starts, and also some useful info. \
\
Information about ENMT token is an addition to a badge displayed under the presale. \
It means the token contract is already audited by our partners and approved by us. \
(read more about ENMT token [here](https://docs.unicrypt.network/guides/for-developers/token-minter)).

Below this information, you will see the amount of funds you spent on a project. Depending on the outcome, this screen will allow you to withdraw your tokens (If the presale is successful) or withdraw your contribution (If the presale fails).\
\
To read more about presale rounds and outcomes, check [this page](https://docs.unicrypt.network/guides/for-investors/initial-liquidity-offering-ilo#ilo-rounds-and-outcomes).

**Note:** Reserving a presale spot with UNCL is no longer supported.<br>

<figure><img src="/files/9w7nJGqfu5tDrTkwNB0B" alt=""><figcaption><p>Presale participation screen</p></figcaption></figure>

The screen above will slightly change after the presale gets live, allowing you to participate.

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

You will be able to withdraw the tokens from the screen presented below if the ILO succesfully reached softcap/hardcap and initiated markets.

<figure><img src="/files/nVY1wvqbONxWQvxGxW0N" alt=""><figcaption><p>Withdrawing tokens from a presale</p></figcaption></figure>

If presale fails, you will be able to withdraw your contribution in the same place.

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

Selecting the "INFO" tab will take you to the sceer presented below. Here you will be able to find all the social pages, token address and more useful info presented below.

<figure><img src="/files/qp528VzR8VQPM2eTMN9v" alt=""><figcaption><p>Presale info tab</p></figcaption></figure>

## ILO rounds and outcomes

### Rounds

Our ILOs Platform is now under it's 6th version and each presale takes place in the order specified below.

#### Rounds Summary&#x20;

* **Round 0/Whitelist round:** after the ILO is created, owner is able to use a round 0 feature by adding wallets to a whitelist. Whitelisted wallets are allowed to participate in a presale before the public round started. Whitelist round is not mandatory and not every presale will have it\
  `(UniCrypt team will not provide you with a presale spot presales are managed by their respective teams and whitelist request should be addressed to them).`
* **Round 1:** a public round open to everyone. During that round you can normally participate in a presale without a need of getting whitelisted or reserving a slot. There are also no holding requirements to participate.
* **Round 2:** If the presale wasn't filled in rounds 0 and 1, round 2 is triggered 2 hours after the end of round 1. Rounds 1 and 2 work in the same way.&#x20;

### Possible ILO outcomes

| 💯 Success                                                                                                                                                                                                                                | ❌ Failure                                                                                                                                                                                                                                                                                                                                                       |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><strong>Scenario 1:</strong> The soft cap of the ILO is met, and the end block of the second round is reached.<br><br><strong>Scenario 2:</strong> The hard cap of the ILO is met, prior to the end block of the second round.<br></p> | <p><strong>Scenario 1:</strong> <br>The soft cap of the ILO is not met by the end block of the second round.</p><p></p><p><strong>Scenario 2:</strong> <br>The markets cannot initiate due to errors in token's smart contract <strong>.</strong></p><p></p><p><strong>Scenario 3:</strong> <br>A liquidity pool is created manually during the ILO.</p><p></p> |

#### Success:

**Scenario 1:** If the presale met the softcap, the markets can get initiated **only** by the presale owner. \
If the owner initiates markets after reaching the softcap, but not hardcap, unsold tokens will be burned and the pool will be normally created, allowing trading for token holders.

**Scenario 2:** If the presale met the hardcap, the markets can get initiated by anyone. The market init button will appear on the presale page. Met hardcap means all the tokens were sold. Pool is created and token holders can start trading.

#### Failure:

**Scenario 1:** The softcap of the ILO is not met by the end of the presale. All participants can withdraw their contribution from the presale page. Owner can withdraw their presale tokens.

**Scenario 2:** Markets cannot initiate due to errors in the smart contract. All participants can withdraw their contribution from the presale page. Owner can withdraw their presale tokens.

**Scenario 3:** If the market pair already exists before the end of the ILO, markets will not be able initiate and the presale will fail. All participants can withdraw their contribution from the presale page. Owner can withdraw their presale tokens.

\
**Initiate Market/pair button** appears as soon as the ILO is in "Success" status and this button can be clicked by anyone to initiate the markets.

Within one transaction, it will:

* create a liquidity pool using "token of ILO" + "currency used to purchase" \
  (BNB, ETH, BUSD, MATIC, AVAX, etc.)&#x20;
* send to the newly created pair the % of funds (60-100%) reserved for the liquidity&#x20;
* send the rest (0-40%) to the ILO creator
* time-lock the LP token as per the parameters of the ILO
* burn the unsold portion of the tokens in case the hardcap wasn't reached &#x20;

This will effectively make the token purchased during the ILO tradable on the target AMM.&#x20;

## ILO Badges

Going through different presale, you will most likely find badges that reflect different information on presale pages, such as:

* % of liquidty locked

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

* Tokenomics score, reflecting how good are the project's tokenomics. \
  Note that this badge can also appear in different colors, specifically red or orange. That will just reflect the lower score of the tokenomics.

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

* Audit badge, meaning the token contract is audited by one of our whitelisted partners. \
  Note that this badge can also appear in different colors, specifically red or orange. That will mean that the auditor found some vulnerabilities in the contract. We recommend checking the full report, it will help you your investment decisions.

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

* KYC badge, meaning the team of the project you are looking at went through KYC process provided by one of our partners. \
  Note that this badge can also appear in different colors, specifically red. That will mean that the team did not pass the KYC.

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

* ENMT badge, meaning that the token used in a presale was created by our ENMT Token Minter, which means it is pre-audited by our whitelisted partners and safe. <br>

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


# Token Minter

In this section you will find informations about our ENMT token minter and a full guide on minting your own token.

## Token Minter overview

As part of our services, you can mint your own, fully ERC-20 compliant ENMT token, as well as more complex Tax Token, both explained in the guide section.&#x20;

#### ENMT characteristics

* No mint function
* No owner/admin functions
* Already pre-audited
* No unsafe code in the token contract
* Fully ERC-20 compliant
* Fully decentralised
* Grants you an ENMT badge if you launch it via our launchpad

#### Tax Token characteristics

* Fully adjustable taxation (up to 30%)
* Ability to lock functions without renouncing the contract
* Mint/Pause/Blacklist functions available
* UNCX AntiBot included
* Fully ERC-20 compliant

Check out [our medium article](https://unicrypt.medium.com/presenting-taxtoken-our-new-minter-backed-by-lossless-enmt-v2-57a638326e05) to learn more about the Tax Token minter.

If you have a product, but no solidity skills, this minter is for you (don't worry, if you have solidity skills you can still use it!).

## How to mint a token?&#x20;

First, navigate to "services" tab in our UI or use <https://legacy.uncx.network/services>. Select Token Minter.

<figure><img src="/files/62Ta24fqppxCyjOEdyMY" alt=""><figcaption><p>Location of "services" button in our UI</p></figcaption></figure>

You will be taken to the screen presented below. You will see ENMT v1 and our Tax Token explained, read through both descriptions to see which minter will fit your needs better. Then simply select the one you would like to use and proceed.

<figure><img src="/files/Gu4EaUHu2SzOfaKD7HjH" alt=""><figcaption><p>ENMT v1 and Tax Token descriptions</p></figcaption></figure>

### Tax Token

If you selected Tax Token, next step is choosing a name for your token and a total supply.&#x20;

For "Creator" field, if you leave it empty, the ownership will belong to the wallet you are currently using. If you want another wallet to be an owner, paste its address into this field.\
\
We highly recommend going through our recommendation page for planning how many tokens you want to mint. You can find it [here](https://docs.unicrypt.network/overview-of-our-services#fees).&#x20;

<figure><img src="/files/EcwYSDPb14XcFIDwXDrs" alt=""><figcaption><p>Naming your token and choosing a total supply</p></figcaption></figure>

#### AntiBot Features

Next screen displays optional AntiBot Features, let's take a closer look at them.

<figure><img src="/files/XjpdkB3tR9eQvCARRImH" alt=""><figcaption><p>AntiBot Features</p></figcaption></figure>

First feature is called "AntiBot", and it has three parameters you can customize:

**Initial Max Balance:** How many tokens can one address hold (until the end date of the AntiBot)

**Max Wallet Increment:** Increment with witch Max Balance amount will rise. \
For example, if your Max Balance is 1500 and the increment is set to 5, your Max Balance will grow bigger by 5 on every block until the end date.

**Ending Date:** Ending date of the AntiBot (up to 48 hours after market initialization)

<figure><img src="/files/WQCRPQj83wqA0LL6eReB" alt=""><figcaption><p>AntiBot Feature</p></figcaption></figure>

Second feature is "Max Balance". Simply allows you to adjust how many token one wallet can obtain via market buy.

<figure><img src="/files/3jZey4xaoDovggGINpv3" alt=""><figcaption><p>Max Balance feature</p></figcaption></figure>

Last feature on this page is "Swap Whitelisting". When this option is active, only whitelisted wallets will be allowed to buy the token. You will be able to submit the whitelist in the token admin panel at a later date. Keep in mind that presale wallets will still be able to sell their allocation.\
\
Maximum period for this feature is 48 hours.

<figure><img src="/files/mxX0QCSkzsy2AL0n5CbI" alt=""><figcaption><p>Swap Whitelisting</p></figcaption></figure>

#### Tax Presets

On the next screen, you will be able to select a tax preset that fits your needs. This feature is optional as you will be able to adjust your taxes on the next page, but it may help you if you want a quick setup.&#x20;

Different presets represent different taxes, that is:

**High Tax:** 12% tax on buy/12% tax on sell

**Medium Tax:** 5% tax on buy/6% tax on sell

**Low Tax:** 3% tax on buy/3% tax on sell

<figure><img src="/files/bUf9ctp8vuXYz5pAv8mX" alt=""><figcaption><p>Tax Presets</p></figcaption></figure>

#### Main Page

Next is the main page. On the top of it, you will see four adjustable taxes, including:

**Transaction Tax:** Tax deducted from each buy and sell, going to the wallet specified by you in the field below

**Buyback Tax:** When turned on, it will trigger automated buys (depending on a set up threshold) and remove the tokens being bought back from the token total supply. \ <mark style="color:red;">**Important Note:**</mark> <mark style="color:red;"></mark><mark style="color:red;">Both fees and tokens bought back by this function are stored in an automatically generated wallet and cannot be accessed by no one, removing the tokens out of total supply forever.</mark>

**Reflection Tax:** Whenever a transaction happens, a part of it will be deducted and distributed among token holders based on how many tokens they hold. It's essentialy a reward for holding!\
This feature is always locked and cannot be modified after the token creation.

**LP Tax:** Automatically deducts a part of any transaction and injects it into the liquidty pool making sure the size of your pool is healthy

**Important Note:** Keep in mind that If you select **"Locked"** for any of the features, you will not be able to edit them or disable them.

<figure><img src="/files/krdyuLAxEqEnV2eZsvvW" alt=""><figcaption><p>Main page - top</p></figcaption></figure>

Next feature on the page is "Custom Taxes". This feature allows you to add up to 10 custom taxes and assign any wallet to it. It is useful in case you want different percent of your taxes going for different purposes, like marketing, development, charity or anything you need.&#x20;

<figure><img src="/files/sBfmHAgBr2x8FRLdlKaa" alt=""><figcaption><p>Custom Taxes feature</p></figcaption></figure>

Going further down the page, you will see three next options you can use, including:\
\
**Mintable:** Allows you to mint more tokens (mintable is locked when reflection is active)

**Blacklist:** Allows you to block certain wallet addresses from trading the token

**Pause:** Allows you to temporarily pause trading

<figure><img src="/files/f6vP1lwGn6kd9QbLtPm0" alt=""><figcaption><p>Mintable, Blacklist and Pause features</p></figcaption></figure>

Below the above features, you will see a summary of your fees.

<figure><img src="/files/tPAVMOoHroE4FZwZxGq8" alt=""><figcaption><p>Total Fees</p></figcaption></figure>

The last option on the token creaton main page is "Lossless Settings".&#x20;

Lossless is a proprietary protocol that allows you to mitigate any damages deriving from hacks/exploits revolving around your token. \
\
For more information, [visit this page](https://docs.lossless.io/protocol/technical-reference/hack-mitigation-protocol).

<figure><img src="/files/6DLgZaVCcJD0SA8Aq7tb" alt=""><figcaption><p>Lossless Settings</p></figcaption></figure>

#### View/Edit your token

After successfully creating your token, you will se it in your profile page under the tab "Your Tokens". From there, you can edit all editable features, let's take a look at some of them.

<figure><img src="/files/1WQjytGLnT955nb7xmeV" alt=""><figcaption><p>Your minted tokens - profile</p></figcaption></figure>

At the top of your token edit page, you will see the name of your token, its address, the owner, trading status and four buttons you can use, including:

* **Renounce** - allows you to renounce the ownership if the token contract.\ <mark style="color:red;">**IMPORTANT NOTE: Renouncing the ownership of the contract will make you unable to edit it and the token will disappear from "Your tokens" page. This action cannot be reversed.**</mark>
* **Mint** - allows you to mint the amount of tokens specified by you.
* **Burn** - allows you to burn the amount of tokens specified by you.
* **Pause** - allows you to pause trading.<br>

<figure><img src="/files/DYlDv1cesl714h9ZsY5U" alt=""><figcaption><p>Top of the token edit page</p></figcaption></figure>

Next you will see two tabs you can choose, "Taxes" and "Antibot". Let's take a look at the "Taxes" page first.\
\
**Taxes tab:**

Here you will be able to edit all the setting you could adjust when creating your token (unless they are locked). We will not cover them here as they are explained above (see [here](https://docs.unicrypt.network/guides/for-developers/token-minter#main-page)).

<figure><img src="/files/5aE2R7yEju34i4WNNbck" alt=""><figcaption><p>Taxes edit page</p></figcaption></figure>

If you scroll to the bottom, you will see three more settings you can adjust, including:

* **Wallet Max Balance** - allows you to set a maximum balance for all wallets excluding the whitelisted ones (you can edit the whitelist using the "Whitelist Addresses" on the right side).
* **Blacklisting** - allows you to block certain wallet addresses from trading the token.
* **Taxed LP Tokens** - LP Tokens you would like to apply the tax to. This feature automatically deducts a part of any transaction and injects it into the liquidty pool making sure the size of the pool is healthy.

<figure><img src="/files/ZmdkUlAwySBHkOsysA2R" alt=""><figcaption><p>Bottom of the "Taxes" edit page</p></figcaption></figure>

**AntiBot tab:**

Second tab on the token view/edit page is "AntiBot". It allows you to adjust the AntiBot setting you selected when creating your token. You can read more about them [here](https://docs.unicrypt.network/guides/for-developers/token-minter#antibot-features).

Both features work only up to 48 hours after the presale creation, and will be automatically disabled after that time.

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

### ENMT v1

If you selected ENMT v1, next step is choosing a name for your token and a total supply. \
\
We highly recommend going through our recommendation page for planning how many tokens you want to mint. You can find it [here](https://docs.unicrypt.network/guides/for-developers/initial-liquidity-offering-ilo#recommendations).

<figure><img src="/files/MzqitmkGbNKjnvjTrQQE" alt=""><figcaption><p>Naming your token and choosing a total supply</p></figcaption></figure>

After minting a Token, you will find it on the right side of the same page. From here, you can launch your token, copy its address, lock it or access the info page.&#x20;

You can also find all your minted tokens in your profile page.

<figure><img src="/files/UkojTL3LQ1WaHCEVroZt" alt=""><figcaption><p>Your ENMT tokens - profile</p></figcaption></figure>

Before launching your token, we recommend creating one on Goerli testnet and testing it with other products to get more familiar with the process. \
\
To read more about our recommendations, check [this page](https://docs.unicrypt.network/guides/for-developers/initial-liquidity-offering-ilo#recommendations).

<figure><img src="/files/Pt5IlzkvFPTsrH54rwCg" alt=""><figcaption><p>Your ENMT Tokens</p></figcaption></figure>

To proceed to the info page, click on the arrow next to your token's name, select "info" tab (green highlight), then select "View Token Page" (red highlight)

<figure><img src="/files/8uhJ18968bNiPBUBefme" alt=""><figcaption><p>Finding your token info page</p></figcaption></figure>

You will be taken to your token's info page. You will find all the locks and pairs here.

<figure><img src="/files/8kR3voea1C4AeJRaImWZ" alt=""><figcaption><p>Token info page</p></figcaption></figure>


