Step by Step Setup Guide for ETH (ERC20) Token Swap Using barterDEX

Warning

Dragons ahead!

Note

THIS GUIDE IS HIGHLY EXPERIMENTAL, DON’T TRY UNLESS YOU KNOW WHAT YOU ARE DOING!

This guide will set you up with ETH swaps in BarterDEX. If you are not looking for non ETH based token swap, please follow this installation guide . The project is still in development. It is for ETH testnet, but mainnet for the BTC protocol coins. This guide may change accordingly in the future. Make sure you are following the latest guide before reporting anything is broken.

Installation steps

Please follow all the steps by their order of appearance in this guide. If you get any error for any step and skip to the next, things will not work for you. If you have any questions or need help, head over to #etomic channel in Komodo Platform Discord and ask there.

Install required dependencies

Install all the following dependencies. Without installing these, your marketmaker binary may crash and not work.

Linux

Install cmake 3.10.2

wget https://cmake.org/files/v3.10/cmake-3.10.2-Linux-x86_64.sh
chmod +x cmake-3.10.2-Linux-x86_64.sh
sudo ./cmake-3.10.2-Linux-x86_64.sh --prefix=/usr

# OR on Ubuntu 16.04 you can use repository:
sudo add-apt-repository ppa:nschloe/cmake-nightly
sudo apt-get update
sudo apt install cmake

accept license when it asks “Do you want to include the subdirectory cmake-3.10.2-Linux-x86_64” choose NO

Install LevelDB

cd ~
git clone https://github.com/google/leveldb.git
cd leveldb
make
sudo scp -r out-static/lib* out-shared/lib* /usr/local/lib/
cd include
sudo scp -r leveldb /usr/local/include/
sudo ldconfig

Delete local nanomsg from home directory

cd ~
rm -rf nanomsg

MacOS

To install latest cmake 3.10.2, gcc 7.3.0 and Leveldb 1.20.2

brew install cmake
brew install gcc
brew install leveldb

To upgrade to latest cmake 3.10.2, gcc 7.3.0 and Leveldb 1.20.2

brew upgrade cmake
brew upgrade gcc
brew ugprade leveldb

To check which version of cmake, gcc and leveldb

brew info cmake
brew info gcc
brew info leveldb

Copy the source repo and compile

Clone SuperNET repo and compile marketmaker for ETH swaps

cd ~
git clone https://github.com/jl777/SuperNET
cd ~/SuperNET
git checkout dev
git submodule update --init --recursive
mkdir build
cd build
cmake ..
cmake --build . --target marketmaker-mainnet
cmake --build . --target marketmaker-testnet
cd ~/SuperNET/build/iguana/exchanges/
strip marketmaker-mainnet
strip marketmaker-testnet

Copy marketmaker binary to iguana dir

The compiled marketmaker binary file can be found in ~/SuperNET/build/iguana/exchanges. Copy marketmaker into ~/SuperNET/iguana/ dir.

cp ~/SuperNET/build/iguana/exchanges/marketmaker-mainnet ~/SuperNET/iguana/marketmaker

Install barterDEX & preparation

Install, copy passphrase file from exchanges dir to dexscripts dir

The following command will install barterDEX and copy all the required API scripts in ~/SuperNET/iguana/dexscripts dir. You need to issue all the required API scripts (e.g.: client, run, orderbook, buy, sell, balance, stop) from ~/SuperNET/iguana/dexscripts dir while running as normal after installation.

cd ~/SuperNET/iguana/exchanges
./install
cp passphrase ../dexscripts/passphrase
cd ~/SuperNET/iguana/dexscripts
nano passphrase

Enter a strong 24 words seed passphrase or WIF key or SHA256 of userpass or ETH private key in between "", save the file and close nano editor using CTRL+X then Y then ENTER.

Edit the client script

You need to edit the client or run script to disable git pull & ./m_mm commands. Otherwise, the commands will compile the marketmaker for non ETH/ERC20 token swap. After the changes, the file should look like similar to the following:

#!/bin/bash
source passphrase
source coins
./stop
#git pull;
cd ..;
#./m_mm;
pkill -15 marketmaker;
./marketmaker "{\"gui\":\"nogui\",\"client\":1, \"userhome\":\"/${HOME#"/"}\", \"passphrase\":\"$passphrase\", \"coins\":$coins}" &

Run marketmaker using client script for the first time to get the userpass value

./client &
./setpassphrase

This should display the userpass value and your smartaddresses in console. Make a note of the userpass. Stop maketmaker using the following command before proceeding to the next step.

pkill -15 marketmaker

The above command should always be used to stop the marketmaker binary.

Copy the userpass file from exchanges dir to dexscripts dir and enter userpass value

cd ~/SuperNET/iguana/exhanges
cp userpass ../dexscripts/userpass
cd ~/SuperNET/iguana/dexscripts
nano userpass

Enter the passphrase we got earlier in between “”, save the file and close nano editor using CTRL+X then Y then ENTER. All these scripts found in ~/SuperNET/iguana/dexscripts are expecting a userpass file, which contains the definition of the $userpass variable (found inside scripts) to authenticate API access. This is to prevent malicious webpages from issuing port 7783 calls to steal your money.

Edit coins file to add DEC8 & JST token

Edit the coins file in dexscripts dir and add the following lines for adding DEC8 & JST ERC20 test tokens. Without these, you will not be able to add these coins and use them.

{\"coin\":\"ETH\",\"name\":\"ethereum\",\"etomic\":\"0x0000000000000000000000000000000000000000\",\"rpcport\":80},      {\"coin\":\"JST\",\"name\":\"JST\",\"etomic\":\"0x996a8ae0304680f6a69b8a9d7c6e37d65ab5ab56\",\"rpcport\":80},   {\"coin\":\"DEC8\",\"name\":\"DEC8\",\"etomic\":\"0x3ab100442484dc2414aa75b2952a0a6f03f8abfd\",\"rpcport\":80},         {\"coin\":\"EOS\",\"name\":\"EOS\",\"etomic\":\"0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0\",\"rpcport\":80},

Run ETOMIC

You need to have ETOMIC running in native mode or electrum mode and KMD or other coins either running native or electrum (native is faster). If running native mode, make sure you have blockchain synced and seed passphrase / WIF key / private key imported into the chain.

For ETOMIC you need to have utxos. You can get free BEER from this faucet and swap it for ETOMIC in normal BarterDEX. You also need to have ETH testnet coins as long as we are testing testnet. Use main-net ETH when testing main-net. If you are unsure which net to use, ask in Discord.

cd ~/SuperNET/iguana/dexscripts
./client &
./setpassphrase

Then, we need to enable ETH and other coins/tokens to start trading. Check the following example script:

Example enable script:

#!/bin/bash
source userpass
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"enable\",\"coin\":\"BEER\"}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"enable\",\"coin\":\"ETOMIC\"}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"enable\",\"coin\":\"DEC8\"}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"enable\",\"coin\":\"JST\"}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"enable\",\"coin\":\"ETH\"}"

And, rest of things are same as normal BarterDEX. More helpful info is available in the following links: Komodo Platform HOME, BarterDEX API Summary, Enabling Native Wallet Coins, Enabling Electrum Wallet Coins, Electrum Servers List , Trade