# Token Registration

The following guidelines have been prepared for project owners who wish to bridge their assets from Zilliqa to Ethereum or vice versa.&#x20;

## Qualifying Requirements

Project teams wishing to bridge their token must fulfil all of the following criteria:

* No rebasing token;&#x20;
* Must be **strictly either** ZRC-2 or ERC-20 compliant (i.e. the token should not be on both Zilliqa and Ethereum chains);
* At least 500 token holders;&#x20;
* At least USD$1m market capitalisation for the last 2 weeks; and
* Listed on both [CoinGecko](https://www.coingecko.com/en) and [CoinMarketCap](https://coinmarketcap.com/) for ERC-20 tokens, or listed on [ZilStream](https://www.google.com/url?q=https://zilstream.com/\&sa=D\&source=docs\&ust=1636022418497000\&usg=AOvVaw3InmeAzPOCy7T_JCMB1kU1) for ZRC-2 tokens.

The process to get a token registered with the bridge depends on whether the token is currently a:

* A [**ZRC-2 token**](#1-or-zrc-2-tokens) on **Zilliqa;** or
* An [**ERC-20 token**](#erc-20-tokens) on **Ethereum**

{% hint style="info" %}
**Please note that there is no guarantee that the bridge will be enabled on the desired launch date** and the Zilliqa Team reserves the right to approve or reject any token bridging request.
{% endhint %}

## 1 | Steps for ZRC-2 Tokens

The following step-by-step instructions are for projects that have issued a ZRC-2 token on Zilliqa and are looking to expand to Ethereum as an ERC-20 token. Please follow the steps listed below:

* **Step 1:** Make sure that your project and your token fulfil the [qualifying requirements](#qualifying-requirements) set above.

* **Step 2:** Clone <https://github.com/Zilliqa/switcheo-tradehub-eth> and follow the instructions provided in the README to deploy a modified version of an ERC-20 token contract on the Ethereum mainnet.

  *Do note that the ERC-20 token contract for the bridge is slightly different from the standard ERC-20 token contract. At the deployment time, you will need to set the following immutable parameters. Set them as explained below:*

{% hint style="warning" %}
**Please do not modify any token contract logic and strictly follow the instructions**. Failure to keep it unmodified will result in a malfunctioning bridged token.
{% endhint %}

| Contract Param                                                               | Sample Value                  | Note                                                                               |
| ---------------------------------------------------------------------------- | ----------------------------- | ---------------------------------------------------------------------------------- |
| <p><strong>File Name</strong></p><p><em>For the token contract code</em></p> | `WrappedZwapToken`            | Replace Zwap with the ZRC-2 token Symbol following the implicit styling convention |
| **Token Name**                                                               | `Ethereum-bridged ZWAP Token` | Replace ZWAP with the ZRC-2 Token Symbol                                           |
| **Symbol**                                                                   | `eZWAP`                       | Replace ZWAP with the ZRC-2 Token Symbol                                           |
| **Decimal**                                                                  | `12`                          | Use the ZRC-2 token decimals                                                       |

* **Step 3**: Once you have the ERC-20 contract deployed, contact us at **<zilbridge@zilliqa.com>** from your official email account (preferably with the same project domain) and provide the following information:

| Information                                                     | Sample Response                              |
| --------------------------------------------------------------- | -------------------------------------------- |
| **Project team name**                                           | ZilSwap                                      |
| **Project team contact**                                        | <contact@zilswap.io>                         |
| **ERC-20 bridged token contract address from Step 2 (Mainnet)** | `0x0c1c5b92893A522952EB4c939aA24B65FF910C48` |
| **ZRC-2 token contact address (Mainnet)**                       | `zil1p5suryq6q647usxczale29cu3336hhp376c627` |
| **Desired launch date**                                         | November 20, 2021                            |
| **Audit report (if any)**                                       | <https://www.zilswap.io/docs/audit.pdf>      |
| **Any other information we need to take note of**               | N/A                                          |

Upon receipt of the email, the team will reach out with an acknowledgement. Please note that it may take 1–2 weeks (from the time you have received the acknowledgement email) for the token to be available on the bridge.

## 2 | Steps for ERC-20 Tokens

The following step-by-step instructions are for projects that have issued an ERC-20 token on Ethereum and are looking to expand to Zilliqa as a ZRC-2 token. Please follow the steps listed below:

* **Step 1**: Make sure that your project and your token fulfil the [qualifying requirements](#qualifying-requirements) set above. The contract should also be verified on Etherscan.

* **Step 2**: Deploy the following ZRC-2 token contract on the Zilliqa Mainnet: <https://github.com/Switcheo/switcheo-tradehub-zil/blob/main/contracts/SwitcheoTokenZRC2.scilla>.&#x20;

  *Do note that this token contract is slightly different from the standard ZRC-2 token contract. At the deployment time, you will need to set several immutable parameters. Set them as explained below:*

{% hint style="warning" %}
**Please do not modify any token contract code logic.** Failure to keep it unmodified will result in a malfunctioning bridged token.
{% endhint %}

| Immutable Param Name | Immutable Param Type | Sample Value                                 | Note                                           |
| -------------------- | -------------------- | -------------------------------------------- | ---------------------------------------------- |
| **`name`**           | `String`             | `Zilliqa-bridged USDT token`                 | Replace USDT with the ERC-20 Token Symbol      |
| **`symbol`**         | `String`             | `zUSDT`                                      | Replace USDT with the ERC-20 Token Symbol      |
| **`contract_owner`** | `ByStr20`            | `0x823b673337bbee959f90f189e5f0cbd9f0f98d29` | DO NOT MODIFY THIS VALUE                       |
| **`decimals`**       | `Uint32`             | `6`                                          | Decimal should match the ERC-20 token decimals |
| **`init_supply`**    | `Uint128`            | `0`                                          | DO NOT MODIFY THIS VALUE                       |
| **`init_lockproxy`** | `ByStr20`            | 0xd7`3c6b871b4d0e130d64581993b745fc938a5be7` | DO NOT MODIFY THIS VALUE                       |

* **Step 3**: Once the contract has been deployed, double-check if the parameters `contract_owner`, `init_supply`, and `init_lockproxy` are set to the prescribed values. Any difference at this stage will mean that the contract will not be compatible with the ZilBridge.&#x20;

{% hint style="success" %}
You may reference the zUSDT contract for comparison: <https://viewblock.io/zilliqa/address/zil1sxx29cshups269ahh5qjffyr58mxjv9ft78jqy?tab=state>
{% endhint %}

* **Step 4**: Once you have the ZRC-2 contract deployed, contact us at **<zilbridge@zilliqa.com>** from your official email account (preferably with the same project domain) and provide the following information:

| Information                                                                                    | Sample Response                              |
| ---------------------------------------------------------------------------------------------- | -------------------------------------------- |
| **Project team name**                                                                          | Tether USDT                                  |
| **Project team contact**                                                                       | <contact@tether.to>                          |
| <p><strong>ERC-20 token contract address</strong> </p><p><em>Mainnet</em></p>                  | `0xdac17f958d2ee523a2206206994597c13d831ec7` |
| <p><strong>ZRC-2 bridged token contact address from Step 2</strong></p><p><em>Mainnet</em></p> | `zil1sxx29cshups269ahh5qjffyr58mxjv9ft78jqy` |
| **Desired launch date**                                                                        | November 20, 2021                            |
| **Audit report (if any)**                                                                      | N/A                                          |
| **Any other information we need to take note of**                                              | N/A                                          |

Upon receipt of the email, the team will reach out with an acknowledgement. Please note that it may take 1–2 weeks (from the time you have received the acknowledgement email) for the token to be available on the ZilBridge.

* **Step 5**: The last thing you'll need to do is to get your token registered on [Viewblock](https://viewblock.io/). You can do so by submitting your project's information to [github.com/ViewBlock/cryptometa](https://github.com/ViewBlock/cryptometa)
