SUI Testnet Node

SUI testnet guide Active Testnets

Sui is a decentralised, high throughput, low latency smart contract platform using the Move language, the first permissionless Layer 1 blockchain designed from the ground up to enable creators and developers to build experiences that cater to the next billion users in web3, a boundless platform to build rich and dynamic on-chain assets from gaming to finance.

Official links to SUI Project: Website, Twitter, Medium, Github, Discord, Whitepaper

SUI Testnet Rating
Expectations
5
Hardware
1
Complexity
1
StatusActive
Start dateDevnet: May 2022
Testnet: August 2022
End dateDevnet: September 2022
Testnet: September 2022
Rewards$2,000 SUI per milestone if minimum requirements are met;
Up to 1,000,000,000 $SUI (up to 10% of the total supply) as delegations to the top performing validators.
Participation requirements:18+ years old (KYC on Coinlist);
Running node in Devnet;
Fill this form by August 15 (use email address from Coinlist)

Server Requirements for SUI DevNet and TestNet Node

Devnet2 CPU, 8 GB RAM, 50 GB SSD, Ubuntu 20.04
Testnetm5.2xlarge (8vCPU, 32GB RAM) + 128GB SSD

Rent servers on: Hetzner | Vultr | Linode | Contabo or similar services.

SUI Testnet Roadmap

Here is the simple picture visualising stages from DevNet to MainNet:

SUI Roadmap

How to Setup SUI TestNet Node Full Install Guide

Rent a server

Best choice for start will be Hetzner CPX21 (all default settings), it’s cheap (0,01€/h, €6.40/mo) and enough for start but if you will be selected to Sui Incentivized Testnet you will need to use another one. I will update this guide when it starts.

Server For Running Node

Choose terminal

All actions described in this guide will be made in terminal (command line), so no any icons or desktop you are used to. Of course you can use your standard Windows or Mac terminal, but I personally prefer Termius. It’s more convenient and has a free version.

Launch

All actions must be performed under the root username.

Update packages and system

sudo apt update && sudo apt upgrade -y

Install required packages

sudo apt install wget jq git libclang-dev cmake -y

Install Rust

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/rust.sh)

Rust version must be at least 1.62.0

rustc --version

If not, then uninstall with the command below and install again

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/rust.sh) \
-un

Create node folder

mkdir -p $HOME/.sui

Make a fork of the repository (the repository itself). Off course you can use original repository, but always better to have it in your GitHub account just in case.

Clone your repository with a node (you need to put your github username in the link)

git clone https://github.com/YOUR_USERNAME/sui

OR if you use original copy this:

git clone https://github.com/MystenLabs/sui

Go to the project folder

cd sui

Create a branch with the original repository

git remote add upstream https://github.com/MystenLabs/sui

Pull up the current version

git fetch upstream

Switch to devnet version

git checkout --track upstream/devnet

Build binary files (speed depends on processor cores, may take 20-30 min)

cargo build --release

Move binaries to binaries folder

mv $HOME/sui/target/release/{sui,sui-node,sui-faucet} /usr/bin/

Return to home directory

cd

Download Genesis File

wget -qO $HOME/.sui/genesis.blob https://github.com/MystenLabs/sui-genesis/raw/main/devnet/genesis.blob

Copy config

cp $HOME/sui/crates/sui-config/data/fullnode-template.yaml \
$HOME/.sui/fullnode.yaml

Edit config

sed -i -e "s%db-path:.*%db-path: \"$HOME/.sui/db\"%; "\
"s%metrics-address:.*%metrics-address: \"0.0.0.0:9184\"%; "\
"s%json-rpc-address:.*%json-rpc-address: \"0.0.0.0:9000\"%; "\
"s%genesis-file-location:.*%genesis-file-location: \"$HOME/.sui/genesis.blob\"%; " $HOME/.sui/fullnode.yaml

Open using ports

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/ports_opening.sh) \
9000 9184

Create service file

printf "[Unit]
Description=Sui node
After=network-online.target

[Service]
User=$USER
ExecStart=`which sui-node` --config-path $HOME/.sui/fullnode.yaml
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target" > /etc/systemd/system/suid.service

Start service

sudo systemctl daemon-reload
sudo systemctl enable suid
sudo systemctl restart suid

Create alias to see node log (last 100 events)

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n sui_log -v "sudo journalctl -fn 100 -u suid" -a

Check if command outputs transactions

wget -qO-  -t 1 -T 5 --header 'Content-Type: application/json' --post-data '{ "jsonrpc":"2.0", "id":1, "method":"sui_getRecentTransactions", "params":[5] }' "http://127.0.0.1:9000/" | jq

In addition, you can find yourself in the checker by entering the server IP. Just enter IP of your server, should look like this:

SUI Node Checker

Or use second checker.

SUI Node Checker 2

Creating a wallet

The wallet is created once (when updating the network you need to restore the previously created one)

To interact with the blockchain, you need to create a wallet, for this you need to run the command below, answer “y” to the first question, press Enter on the second

sui client

Make a backup copy of the folder with keys, saving it in a safe place (the command is copy folder to your local machine)

scp -r root@your_server_ip:/root/.sui/sui_config/ /your_local_machine_path/

Check in yourself

As a confirmation of participation in DevNet, you can follow the steps below

Publishing RPC node

On the server, run the command below to get the RPC nodes

echo "http://`wget -qO- eth0.me`:9000/"

Open the link in the browser on your PC, an inscription should appear (if it does not appear, then the node is not working)

Used HTTP Method is not allowed. POST or OPTIONS is required

To send your RPC, you need to join SUI Discord Server and send it to this channel. At the same time, it is better to keep node until Incentivized TestNet start.

Request tokens from a faucet

Output and copy the wallet address (in the left column)

sui keytool list

Go to the channel #🚰・devnet-faucet, and send a command with YOUR wallet address

!faucet 0x___

Create an NFT

An NFT sample is created by the command

sui client create-example-nft

Final

The folder with the keys must be saved in a safe place so that the wallet can be restored (the command displays the path)

You can monitor your node in the checker by entering the server IP.

The following activities have been carried out:

  • Published RPC nodes;
  • Requested tokens from a faucet;
  • Created test NFT.

You can follow the project updates in the #📢・announcements channel.

Devnet updates are posted in the #📢・devnet-updates channel.

How it was?
Easy to follow guide. Worked 100%
75%
I stuck and gave up in the middle
37.5%
Didn't get it at all
12.5%
Something else (drop a comment)
0%
Voted: 8

If need to update or something goes wrong

Node update

Stop node

systemctl stop suid

Delete old database

rm -rf $HOME/.sui/db

Download new genesis file

wget -qO $HOME/.sui/genesis.blob https://github.com/MystenLabs/sui-genesis/raw/main/devnet/genesis.blob

Go to the project folder

cd $HOME/sui

Create a branch with the original repository, if not already created

git remote add upstream https://github.com/MystenLabs/sui

Pull up the current version

git fetch upstream

Hide local changes

git stash

Update local repository

git checkout -B devnet --track upstream/devnet

Build binary files (speed depends on processor cores, may take 20-30 min)

cargo build --release

Move binaries to binaries folder

mv $HOME/sui/target/release/{sui,sui-node,sui-faucet} /usr/bin/

Check version, should be 0.9.0

sui -V

Restart node

systemctl restart suid

Updates since 0.7.0 change wallet address. All you need to do is replace active wallet.

Check active wallet

sui client active-address

Check new address

sui keytool list

If they are different replace old wallet address with new

active=`grep -oPm1 "(?<=active_address: \")([^%]+)(?=\"$)" $HOME/.sui/sui_config/client.yaml | sed "s%0x%%"`; \
new=`sui keytool list | awk 'NR==3 {print $1}' | tr -d '[:space:]' | sed "s%0x%%"`; \
sed -i -e "s%$active%$new%; " $HOME/.sui/sui_config/client.yaml

How to check if it worked: Request tokens to new address in faucet and create test NFT

Restoring a node

Create node folder

mkdir -p $HOME/.sui

Move the directory with keys from the backup to the server to the created folder

scp -r /your_local_machine_path/ root@your_server_ip:/root/.sui/sui_config/

Run a node (from the beginning of this guide)

Deleting a node

Delete variable

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n sui_log -da

Stop node

systemctl stop suid

Remove service file from autostart

systemctl disable suid

Delete node files

rm -rf $HOME/{sui,.sui} /usr/bin/{sui,sui-node,sui-faucet} \
/etc/systemd/system/suid.service

Update service files list

systemctl daemon-reload

Useful Commands

View node log

sui_log
sudo journalctl -fn 100 -u suid
docker logs sui_node -fn100

View Node Wallets

sui keytool list

View Main Wallet Objects

sui client objects

Restart node

systemctl restart suid

Delete database and restart node

systemctl stop suid; \
rm -rf $HOME/.sui/db; \
systemctl restart suid

FAQ

Lots of warnings and errors in the logs, is that ok?
Why does the checker display 0 objects?
Error: invalid length 0, expected an byte array of size 32
The network has been reset
When try to create/send NFT/sign transaction - Cannot find key for address: [0x__]

Thank you for reading, hope it helped. Drop a comment if you have any questions.

Subscribe to our Telegram and join Discord for latest updates and be a part of community!

In case you want to support my work and cover some servers cost:

In crypto since 2017

Rate author
Add a comment

Lots of warnings and errors in the logs, is that ok?
Yes, this could be in DevNet. Use checkers to see the status of your node.
Why does the checker display 0 objects?
The number of objects in the checker seems to be reset after the node is restarted. Reinstall or update the node or delete database and restart the node.
Error: invalid length 0, expected an byte array of size 32
Out-of-date version of the binary file of the node or Out-of-date version of the genesis file. Download the current genesis and restart the node.
The network has been reset
You need to delete the old database and restart the node.
When try to create/send NFT/sign transaction - Cannot find key for address: [0x__]
Replace active wallet address with new. See update node section above