How to Migrate to BEP-2 Token Standard and Apply for Listing on Binance DEX

Maziar Sadri
12 min readJun 25, 2019

In the last few weeks, the Unification team has been proud to work with the Binance Technical team to get UND setup and listed on the Binance DEX.

As an early adopter of Binance DEX platform we took copious notes and decided to give back in true decentralized fashion to the community in this concise 1–2–3 walk-through guide on how to Issue and apply for listing on the Binance DEX.

We were excited to announce the acceptance of our proposal, as well as the commencement of our Lunar Landing tradition competition on June 20th, and are ready to share our findings for all looking to onboard their projects onto Binance DEX.

HOW TO ISSUE A BEP-2 TOKEN

If you are new to the idea of Binance Chain, we recommend reviewing Binance’s own announcement article as well as our step-by-step guide on how to swap your existing UND (or other) ERC-20 tokens to those that offer BEP-2 equivalent here.

When you’re ready to start, the most logical point is binance.vision’s tutorials at https://www.binance.vision/tutorials/

The Binance Community team has already done a great job with some of this coverage. In particular we’re recommend starting with

https://www.binance.vision/tutorials/binance-dex-creating-a-wallet &
https://www.binance.vision/tutorials/binance-dex-accessing-your-wallet

Once you have your wallet setup, you can connect with binance.org and start trading (It’s that simple :-)

If you intend to list your token on Binance DEX, please follow the steps below to make sure that you also have your testnet wallet funded separately. That’s where the fun begins & where you may start to have more unique questions, which is why we’re here to share some of our direct perspective to make the experience even smoother.

Creating your own listing on Binance DEX

While Binance DEX is a decentralized exchange, the community does maintain a goal of only supporting quality projects which strengthen the overall ecosystem.

Read these guidelines to understand the listing and evaluation process that all projects must follow:

https://community.binance.org/topic/18/guidelines-on-how-to-list-your-token-on-binance-dex

While the article above covers most of what’s needed on the process, There are certain nuances (technical and non-technical) we discovered through our experience that we’d like to share with the community to make the process easier for those in the future.

Before starting any activity on the Mainnet, we suggest to become familiar with the process through Binance’s testnet. Testnet and Mainnet of Binance DEX are very similar for almost all actions, expect that given the fact there is real BNB cost to the main net process,

Preparing your Proposal

Before starting your proposal, it’s recommended that you completed a “Proposal for Listing [Project Name] on Binance DEX”. under the “Token Issuance & Listings” category in the Binance Chain Community Forum (https://community.binance.org/).

This document shares your intention with the community, allows questions to be asked back and forth, and allows you to share what you plan to add to the community.

As an example, take a look at Unification’s listing on the Binance Community Forum:

https://community.binance.org/topic/131/reinstated-proposal-listing-for-unification-und-on-binance-dex

As this process will take some time, we’d suggest that the business members of the team work on this part simultaneous to preparing the token listing details.

Wallets — creating/unlocking on binance.org
— — — — — — — — — — — — — — — — — — —

Creating your wallet on the testnet is a very fast and simple process that can be done through Binance DEX GUI interface

The steps are as follows:

  1. Create wallet on https://testnet.binance.org/en/create -download keyfile, and make a note of the 24 word seed phrase, and use a secure password

Please note that the Same wallet file can be used on testnet and mainnet. The respective networks will have different wallet addresses generated form the key file. Testnet addresses are prefixed with a “t” such as:

tbnb12x07th32eac3j8dxaawt8tejawndcayhwug5

However, for clarity, we’d recommend that you create a separate wallet for testnet purposes and later create your main net wallet through:

https://binance.org/en/create

2. Wallet can be opened, and balances checked on:

https://testnet.binance.org/en/balances (for testnet) or
https://binance.org/en/balances (for mainnet)

3. Unlock wallet on URLs in #2, using the password created in #1 and the downloaded keystore files.

Note — binance.org site can be used as well as local keystores (see below) to send tokens etc. However, the bnbcli is required for more complex transactions (such as issuing tokens etc.)

Installing BNB Cli tools
— — — — — — — — — — — — — — — — — — —

Many of the actions for your listing will require the use of the BNB Cli tool.

This is a relatively simpler process but given a few nuances, we have created the following cheatsheet here you can download/utilize.

(Special thanks to Unification CTO, Paul Hodgson for compiling & QA’ing the overwhelming majority of technical references below)

For users on Mac, you can simply run the program “Terminal” while users on Windows please follow the directions here.

The following commands are primarily for Linux/Mac, but can be easily modified for Windows.

Once you have a Cli/Terminal window active, follow these directions:

1. Install git - see https://git-scm.com/book/en/v2/Getting-Started-Installing-Git for more details

2. Open a terminal and run:

mkdir ~/src
cd ~/src

git clone https://github.com/binance-chain/node-binary

3. Copy the bnbcli binaries into the tools directory, for easier use:

cd node-binary
cp cli/testnet/0.5.8.1/linux/tbnbcli tools
cp cli/prod/0.5.8.1/linux/bnbcli tools
chmod +x tools/tbnbcli
chmod +x tools/bnbcli
cd tools

Change platform in the above commands from “linux” to “mac” as appropriate

From here on, if a new terminal is opened, you can get to the tools via

cd ~/src/node-binary/tools

Import your wallet into bnbcli/tbnbcli
— — — — — — — — — — — — — — — — — — —

In order to create a listing, you will need to import your wallet into the bnbcli/tbnbcli tool

The process is as simple as below:

  1. Open a terminal, run:
cd ~/src/node-binary/tools

2. Since the directory ~/.bnbcli is not created by bnbcli, we need to manually create it:

mkdir ~/.bnbcli

3. Import the key created earlier into bnbcli. tbnbcli and bnbcli seem to share the same data directory, keystore etc. so this command should have the same command whether tbnbcli or bnbcli is used:

./tbnbcli keys add name_of_the_account --recover

Enter a SECURE passphrase for the key.

IMPORTANT: This passphrase can be the same as the one used to generate the wallet file earlier, or a new one — this local keystore is independent of the downloaded keyfile (which is encrypted with the password used when creating it).

Paste in the 24 word seed phrase noted earlier when the wallet was created.

“name_of_the_account” can be anything — it’s just what you want to use to identify the key in future. It’s also what is used to identify the key in the other bnbcli/tbnbcli commands when an account/wallet needs referencing.

This keystore now exists in ~/.bnbcli/keys, IN ADDITION to the file downloaded previously during the “create wallet” steps. It is encrypted using the selected password (which may or may not be the same password as the downloaded wallet file)

Note:

./bnbcli keys add name_of_the_account --recover

(no “t” prefix in executable)

Query imported wallet
— — — — — — — — — — — — — — — — — — —

You can query your imported wallet using:

./tbnbcli account YOUR_WALLET_ADDRESS --node=http://data-seed-pre-0-s3.binance.org:80 --chain-id Binance-Chain-Nile

Additionally,

./tbnbcli keys list

Will list the keys you have imported, including their public addresses, the public address should be used in place of YOUR_WALLET_ADDRESS in the above command when querying an account.

Creating your token & Proposing your listing
— — — — — — — — — — — — — — — — — — —

1. Open a terminal, and run:

cd ~/src/node-binary/tools

2. The tools dir contains two shell scripts-- issue.sh and propose.sh, to g a token and propose the token for listing on the DEX respectively

Run:

./issue.sh

3. The issue script will then ask a series of questions to generate the command to be run for your coin issuing

4. Enter the relevant details for the token being created, e.g.

- 1 for testnet
- 2 for Local key store (the one we imported previously into ~/.bnbcli)
- default location of .bnbcli directory (use default, since we created ~/.bnbcli earlier, and imported the key there)

- YOUR_ACCOUNT_ID which was specified when importing the wallet earlier, e.g. name_of_the_account in the example command above

- Readable Name Of The Token
- token Symbol, e.g. MYTOK
- 1000000000 will issue 1 billion tokens

- Y
- N (not mintable), or Y if mintable
- N (abort--run manually)

Important: There are 8 decimal places in the token listing, so 100000000000000, for example will issue 1 million tokens

We should have a command output, similar to:

./tbnbcli token issue -s MYTOK --token-name "Readable Name Of The Token" --total-supply 100000000000000000 --from name_of_the_account --mintable=false --chain-id Binance-Chain-Nile --node=http://data-seed-pre-0-s3.binance.org:80

Flag notes:

-s = token symbol
— token-name = human readable name of the token
— total-supply = total token supply. 8 zeros are appended, to account for the 8 decimal places, so in the above command , 100000000000000000 = 1000000000.00000000
— from = name we gave the key/account when importing earlier, so whatever you specified.
— mintable = whether or not the token is mintable
— chain-id = the binance blockchain network ID. Binance-Chain-Nile is for testnet, and Binance-Chain-Tigris is for mainnet. If running on mainnet, the bnbcli command should be used in place of tbnbcli
— node = the RPC endpoint to send transactions.

When the above command is run, there should be output similar to the following:

Committed at block 111111 (tx hash: EE123078ACB221EE1C5561B9F6E4AEB4FB1D5457EC983D098D88CE12ED0FA9F, response: {Code:0 Data:[...snip...] Log:Msg 0: Issued MYTOK-ABC Info: GasWanted:0 GasUsed:0 Tags:[{Key:[...snip...] Value:[...snip...] XXX_NoUnkeyedLiteral:{} XXX_unrecognized:[] XXX_sizecache:0}] Codespace: XXX_NoUnkeyedLiteral:{} XXX_unrecognized:[] XXX_sizecache:0})

Congratulations: Once you process the following script you should have successfully set your token!

Looking at the “Log:Msg 0: “ part, we can see that MYTOK-ABC was created. This can be viewed in the explorer:

https://testnet-explorer.binance.org/asset/MYTOK-ABC (replacing “MYTOK-ABC” with whatever your token is).

Here is UND’s testnet explore for reference
https://testnet-explorer.binance.org/asset/UND-DC0

Please note: Binance automatically appends 3 random characters to your Token Symbol, hence the MYTOK-ABC instead of just MYTOK

The “tx hash:” can also be passed to the explore--open https://testnet-explorer.binance.org in a browser and search for the Tx hash to see the transaction data

Proposing a Token for Listing
— — — — — — — — — — — — — — — — — — —

Wow! You’re getting far! Now that your newly minted token has been issued, the next step is to make a proposal to list the token on Binance DEX.

Doing so will require the following simple commands

The values you’ll need to prepare for your issue proposal script are as follows

  1. Testnet or Mainnet (again, we suggest running through the process on the testnet first)
  2. The initial price proposal for your token (Please note that your initial price will be set as a BNB pairing, through BNB)
    If your token already has a USD value, you can determine the BNB pairing price by dividing your current token value by the current price of BNB through https://coinmarketcap.com/currencies/binance-coin/
  3. Timing — this is how much time validators will have to vote on your proposal.
    Our recommendation is 2 weeks or 336 hours which is the maximum time to allow validators to recognize your value to the community & platform

4. Your timing to run the script (again we’d recommend 14 days)

1. Open a terminal and run:

cd ~/src/node-binary/tools

2. Run:

./propose.sh

3. Enter the relevant details:
- 1 for testnet
- 2 for Local key store (the one we imported previously into ~/.bnbcli)
- default location of .bnbcli directory (use default, since we created ~/.bnbcli earlier, and imported the key there)

  • YOUR_ACCOUNT_ID which was specified when importing the wallet earlier, e.g. name_of_the_account in the example command above
  • 800 deposit amount for testnet, 1000 for mainnet (remember to use just the bnbcli command for mainnet, not tbnbcli)
    - Y
    - MYTOK-ABC (the generated symbol, which is output in the result from running the tbnbcli token issue command earlier, and NOT just your selected token symbol (e.g. not just MYTOK)
    - BNB — this is what the token will be listed against. Currently, only BNB is supported
    - 0.1 — how many BNB 1 MYTOK is worth
    - Y (accept, or modify)
    - 120 how many hours validators can vote on your proposal, so this is 5 days
    - Y
    - 14 how many days you give yourself to run the actual list command once voting has finished. So, this will be on top of the 5 day voting period.
    - Y
    - N (run manually)

The script will output 2 commands to run, similar to:

*****************************************************

./tbnbcli gov submit-list-proposal --from name_of_the_account --deposit 80000000000:BNB --base-asset-symbol MYTOK-ABC --quote-asset-symbol BNB --init-price 10000000 --title "list MYTOK-ABC/BNB" --description "list MYTOK-ABC/BNB" --expire-time 1560769241 --voting-period 1209600 --chain-id=Binance-Chain-Nile --trust-node --node http://data-seed-pre-0-s3.binance.org:80 --home ~/.bnbcli --json

*****************************************************

And below is the list command, please replace owner account and proposal ID once proposal passed.

*****************************************************

./tbnbcli dex list --from {owner_account} --proposal-id {proposal_id} --node http://data-seed-pre-0-s3.binance.org:80 --chain-id Binance-Chain-Nile --init-price 10000000 -s MYTOK-ABC --quote-asset-symbol BNB --home ~/.bnbcli

*****************************************************

IMPORTANT: ONLY RUN THE FIRST COMMAND! The second cannot be run until the voting period has finished AND was successful

Running the first command will output a Tx receipt similar to:

{"Height":"12345678","TxHash":"B35C34C0E3D4F2A882992B3FDAA3E30356E162E62B63842F80A6682F43EC55A","Response":{"data":"NDY5","log":"Msg 0: ","tags":[{"key":"...","value":"..."},{"key":"...","value":"..."},{"key":"...=","value":"NDY5"},{"key":"...","value":"..."}]}}

The “TxHash” can be entered into https://testnet-explorer.binance.org, which will list all the information about the transaction, including the proposal ID. Note down the proposal ID, as this will be required in future steps

Checking the proposal & votes
— — — — — — — — — — — — — — — — — — —

1. Open a terminal and run:

cd ~/src/node-binary/tools

2. run

./tbnbcli gov query-votes --proposal-id PROPOSAL_ID --chain-id=Binance-Chain-Nile --node=data-seed-pre-2-s1.binance.org:80

changing PROPOSAL_ID to your proposal ID. This will output the current validators votes (if any)

3. run

./tbnbcli gov query-proposal --proposal-id PROPOSAL_ID --chain-id=Binance-Chain-Nile --node=data-seed-pre-2-s1.binance.org:80

This will output the result of the proposal once the voting period has finished

MIGRATION:
— — — — — — —

Once your listing is approved, you and token holders can start to migrate their coins from ERC-20.

To find out more about setting up this process, please check “ Part 1 — The Token Swap” on our article below:

https://medium.com/unificationfoundation/the-official-listing-of-und-on-binance-dex-lunar-landing-trading-competition-airdrop-b52ad3d3061a

We’d also recommend making an announcement to your audience such as Unification above

Listing on DEX
— — — — — — —

Congratulations! Your Proposal has passed.

You’re now ready to go forward with your listing

In order to do so, run the following

./tbnbcli dex list --from {owner_account} --proposal-id {proposal_id} --node http://data-seed-pre-0-s3.binance.org:80 --chain-id Binance-Chain-Nile --init-price 10000000 -s MYTOK-ABC --quote-asset-symbol BNB --home ~/.bnbcli

replacing {owner_account} and {proposal_id} with the name of your key/account and proposal ID respectively.

Congratulations! Once you successfully execute the listing command, your Token will be live for trading on DEX!

Support your Community on DEX
— — — — — — — — — — — — — — — — — — —
Once your listing is live on Binance DEX, it’s time where the real fun of supporting the community begins.

In order to do so, we, at Unification plan to
1. Create guides & tools to help onboard new projects (such as this one :-)
2. Provide incentives to our ERC-20 Token Holders to onboard & support the BEP-2 standard (such as our Airdrop)
3. Build open source tools to improve both Projects & token holders performance & Utility
4. Continue to support community engagement & education such as the onboarding video made by our community.

If you have any questions, feel free to reach out to the UND community in our official Unification Telegram channel or chat with the Binance DEX community.

We look forward to Seeing you on DEX!
Maziar Sadri & Paul Hodgson
- CPO & CTO at Unification

Unification is a Public/Private Hybrid Blockchain designed for Enterprises and Governments

If you are interested in learning more about the full Public/Private Hybrid Blockchain UND Ecosystem, please follow us on twitter at http://www.twitter.com/UnificationUND or visit our website at www.unification.com

Resources

1 — How to SWAP your ERC-20 for BEP-2 (made for UND, but applies to most similar ECR-20-BEP-2 Transfers)
2- How to SWAP (Video Tutorial)
3 —Recommended Resources from Binance
https://www.binance.vision/tutorials/
https://www.binance.vision/tutorials/binance-dex-creating-a-wallet &
https://www.binance.vision/tutorials/binance-dex-accessing-your-wallet

--

--

Maziar Sadri

Product Lead at Unification. Blockchain Innovation enthusiast. Amateur Alpine guide.