January 11, 2022

Chainflip Soundcheck 0.1.1

Let's Node!

⠀Chainflip is a decentralised, trustless protocol that enables cross chain swaps between different blockchains.


Content


Information about the project

To the content

Description

⠀Chainflip is a protocol for automated cross-chain token exchange that solves existing problems of decentralized solutions affecting their usability. This protocol allows users to automatically exchange tokens without relying on centralized providers, token wrap or other software. Commissions for liquidity and network operation are included in each swap, eliminating the need to purchase your own tokens to pay for gas. The operation of the system is provided by a network of validators, the consensus is provided by the PoS protocol. The project is focused on using the Polkadot ecosystem.

Phases

⠀The following phases are known at this point:

  • December 1 — 7 — submission of applications for the Soundcheck testnet;
  • December 7 — documentation publication on a validator running;
  • December 15, 2021 — the testnet launching;
  • January 19, 2022 — completion of the first stage of the testnet.

Rewards

⠀The 250,000 FLIP tokens will be distributed according to the leaderboard - based on the points earned. The total number of points is 4,000,000.

⠀ Points can be earned in the following ways:

  • Completing tasks;
  • Participating in updates;
  • Searching for bugs;
  • Feedback;
  • Other activities.

⠀To participate, you have to complete a KYC after reviewing your application.


Server requirements

To the content

⠀Announced (VDS/DS):
4 CPU, 8 GB RAM, 50 GB SSD, 1 Gbps, Ubuntu 20.04

⠀Suitable servers:


Registration

To the content

Registration is closed. Selected validators have received letters for passing the CUS and verification confirmation letters.

⠀Beware of scammers.

⠀The original letter comes from noreply@chainflip.io and looks like in the screenshot below.

⠀If you have problems passing KYC, try to pass in another browser, especially try the Edge/Internet Explorer.


Preparing

To the content

Private key

⠀To run the validator, you need the private key of the ETH wallet you specified when registering for the testnet.

⠀E.g in the MetaMask it can be obtained in as follows

Rinkeby tokens

⠀Also you need 0.1 ETH in the Rinkeby network, which you can get by using one of the faucets:

Rinkeby RPC

⠀The Rinkeby RPC is required to run the node. It isn't recommended to use Infura, so it is worth choosing either to launch your own node or alternative services. Our choice is Rivet Cloud service.

⠀Go to the website and click «GET STARTED FREE»

⠀Register using:

  • E-mail:
    • Nickname;
    • E-mail.
  • MetaMask Wallet:
    • Allow connection by clicking on the button;
    • Switch to the Rinkeby network;
    • Press the register button again;
    • Confirm registration in MetaMask.

⠀After getting to the control panel:

  • Switch the network to Rinkeby;
  • Save the Websocket URL for later use.

Launching

To the content

⠀Each subsection is a separate type of installation, you have to select one of them.

Linux (manually)

For beginners

⠀Install necessary binaries

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/Chainflip/main/multi_tool.sh)

⠀Create a directories in which a data will be stored

mkdir -p $HOME/chainflip/ $HOME/chainflip_backup

⠀Execute the command and enter the private key from the Ethereum wallet with FLIP tokens to write it into the file

read -rp #39;\e[40m\e[92mEnter Ethereum wallet private key:\e[0m ' pk; echo "$pk" | sed 's%0x%%' | tr -d '\n' > $HOME/chainflip_backup/ethereum_key_file; cp $HOME/chainflip_backup/ethereum_key_file $HOME/chainflip/

⠀Generate validator key

subkey generate | tee -a $HOME/chainflip_backup/signing_key.txt

⠀Add validator ID to the system as a variable

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n chainflip_validator -v `awk 'NR == 5 {printf $(NF)}' $HOME/chainflip_backup/signing_key.txt`

⠀Write validator private key to the file

awk 'NR == 2 {printf $(NF)}' $HOME/chainflip_backup/signing_key.txt | sed 's%0x%%' > $HOME/chainflip_backup/signing_key_file; cp $HOME/chainflip_backup/signing_key_file $HOME/chainflip/

⠀Generate node key

echo -e "`subkey generate-node-key 2>&1`" | tee -a $HOME/chainflip_backup/node_key.txt

⠀Write node key to the file

awk 'NR == 2 {printf $1}' $HOME/chainflip_backup/node_key.txt > $HOME/chainflip_backup/node_key_file; cp $HOME/chainflip_backup/node_key_file $HOME/chainflip/

Make a backup copy of the settings folder, saving it to your PC (the command displays the path)

echo $HOME/chainflip_backup/

⠀Place the previously saved Websocket RPC into the variable

read -rp #39;\e[40m\e[92mEnter Websocket RPC:\e[0m ' rpc

⠀Create a config

sudo tee <<EOF >/dev/null $HOME/chainflip/Default.toml
[node_p2p]
node_key_file = "$HOME/chainflip/node_key_file"

[state_chain]
ws_endpoint = "ws://127.0.0.1:9944"
signing_key_file = "$HOME/chainflip/signing_key_file"

[eth]
from_block = 9810000
node_endpoint = "$rpc"
private_key_file = "$HOME/chainflip/ethereum_key_file"

[health_check]
hostname = "0.0.0.0"
port = 5555

[signing]
db_file = "data.db"
EOF

⠀Create a service file for the node

sudo tee <<EOF >/dev/null /etc/systemd/system/chainflipnd.service
[Unit]
Description=Chainflip Validator Node

[Service]
User=$USER
ExecStart=`which chainflip-node` \\
  --chain soundcheck \\
  --base-path $HOME/chainflip/chaindata \\
  --node-key-file $HOME/chainflip/node_key_file \\
  --in-peers 500 \\
  --out-peers 500 \\
  --port 30333 \\
  --validator \\
  --ws-max-out-buffer-capacity 3000 \\
  --bootnodes /ip4/165.22.70.65/tcp/30333/p2p/12D3KooW9yoE6qjRG9Bp5JB2JappsU9V5bck1nUDSNRR2ye3dFbU
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

⠀Create an engine service file

sudo tee <<EOF >/dev/null /etc/systemd/system/chainfliped.service
[Unit]
Description=Chainflip Validator Engine

[Service]
User=$USER
ExecStart=`which chainflip-engine` --config-path $HOME/chainflip/Default.toml
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

⠀Run service files

sudo systemctl daemon-reload
sudo systemctl enable chainflipnd chainfliped
sudo systemctl restart chainflipnd chainfliped

⠀Add commands to the system as aliases:

  • To view the log of the node;
  • To view the log of the engine.
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n chainflip_node_log -v "sudo journalctl -fn 100 -u chainflipnd" -a
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n chainflip_engine_log -v "sudo journalctl -fn 100 -u chainfliped" -a

Linux (automatically)

For advanced

⠀Run the script, enter Websocket RPC, Ethereum wallet private key with FLIP tokens (if asked) and wait till the installation is done

⠀If any file from list below is missing, a new key will be generated, otherwise the file will be restored from the backup

echo $HOME/chainflip_backup/signing_key_file
echo $HOME/chainflip_backup/node_key_file
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/Chainflip/main/multi_tool.sh) -ai


Staking

To the content

⠀To stake to the node you need:

  • Go to the site;
  • Connect a wallet specified during registration;
  • Click «Add a node»;
  • Insert the public key, which you can find out with the command
echo $chainflip_validator
  • Enter 1000 FLIP or click on «Max»;
  • Confirm the transaction.

⠀After a while, the added node will appear after refreshing the page.


Recovering

To the content

⠀To restore a node, for example in case of migration to another server, it is necessary to place backups of the following files:

  • ethereum_key_file
  • node_key_file
  • signing_key_file

⠀In a special directory (or place the saved directory with these files in the home folder)

echo $HOME/chainflip_backup

⠀Run the script and wait till the installation is done

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/Chainflip/main/multi_tool.sh) -ai


Updating

To the content

⠀Run the script and wait till the updating is done

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/Chainflip/main/multi_tool.sh) -up


Uninstalling

To the content

⠀Run the script and wait till the uninstalling is done

⠀The chainflip_backup directory will not be deleted

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/Chainflip/main/multi_tool.sh) -un


Community contribution

To the content

Our team is not responsible for any possible negative consequences, as we cannot guarantee the safety of the tools presented

How to get here?

⠀To get into this honorable section, you should write a message to SecorD with information about the tool:

  • Project name;
  • A short title in 2-3 words (to be used as a headline);
  • Description to be added to the article (what it's for, functionality, how to use it, other useful information, preferably with screenshots).

⠀What does it give?

  • Benefits to the community;
  • Opportunity to make a statement;
  • An additional opportunity to present evidence of the contribution in various projects.

Useful commands

To the content

⠀Available variables (remove echo while using)

echo $chainflip_validator

⠀To view the log

# The node
chainflip_node_log
sudo journalctl -fn 100 -u chainflipnd

# The engine
chainflip_engine_log
sudo journalctl -fn 100 -u chainfliped

⠀To restart

# The node
sudo systemctl restart chainflipnd
# The engine
sudo systemctl restart chainfliped

Useful links

To the content

Official website | Official Telegram group

Discord | Twitter | Testnet article | Staking UI


Acknowledgments

To the content

Everyone from the Chainflip Team

Let’s Node! Team — studying the project, writing the article, maintaining the Russian-speaking community

Express your gratitude