Cover photo

Nulink Horus 2.0 Testnet (Phase 1)

As the decentralized landscape continues to evolve, NuLink emerges as a key player in the realm of privacy-focused solutions for decentralized applications. If you're eager to explore and contribute to NuLink's ecosystem, setting up a Horus testnet node is a great way to get started. In this step-by-step guide, we'll walk you through the process of setting up your NuLink Horus testnet node, allowing you to actively participate in the development and testing phases of this innovative project. First lets look at the testnet milestones broken down by Phase (source)

Horus 2.0 Phases
Horus 2.0 Phases

We are currently at Phase 1 and we will do Number 2, which is the Worker Node Installer Testing.

  • Access the NuLink dashboard here https://dashboard.testnet.nulink.org

  • Connect your wallet (we are using Metamask here on this guide) and switch to BSC Testnet.

  • Claim some test tokens from the faucet (see screenshot below)

Claim tokens from faucet
Claim tokens from faucet
  • Head to staking tab and stake 5 tNLK tokens

Stake 5 nTLK tokens
Stake 5 nTLK tokens
  • Prompts will appear on your Metamask click on approve and sign.

Setup our Worker Node

  • Launch your VPS on any provider, for this guide we will use Contabo.

  • Select Cloud VPS S

post image
  • Click on Apps & Panels and select Docker and choose Ubuntu 22.04 from the dropdown.

post image
  • It will take a few minutes before your server is ready. Wait for the email which contains the IP address of your new server

you will receive an email like this
you will receive an email like this
  • Before we proceed to the next step we might need to install an SSH client if you are running on Windows machine, download and install Putty.

  • Open Putty and paste the IP address you got from your email to the Host Name or IP Address field and click Open

post image
  • Login as: root (press enter)
    and type or paste the password you key in while purchasing the server

post image
  • If you are on MacOS or Linux, just open the default terminal and key in ssh root@12.34.56.78 (replace with the IP of your server)

post image
  • Let’s ensure everything is up to date type the following and press enter

    sudo apt-get update && sudo apt-get upgrade -y
    
  • Install some dependencies

    sudo apt install pkg-config curl git-all build-essential libssl-dev libclang-dev ufw
    
  • Verify that docker has been installed, you should see something like the screenshot below:

post image
  • After that let’s run some docker container

    docker run hello-world
    
post image
  • Let us now create the Node Worker Account

    wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.23-d901d853.tar.gz
    
  • Unpack the package we just downloaded

    tar -xvzf geth-linux-amd64-1.10.23-d901d853.tar.gz
    
  • Go inside the directory

    cd geth-linux-amd64-1.10.23-d901d853/
    
  • Create the new Worker address Account

    ./geth account new --keystore ./keystore
    
Creating the new worker address
Creating the new worker address
  • This will prompt you to enter a password and once confirmed it will start generating a new worker address and the location of the keystore file. Make sure to keep this information safe somewhere. We will need them later.

  • Time to start installing and running our Worker node

    docker pull nulink/nulink:latest
    
post image
  • Let us create a new directory under root, first go to root directory

    cd /root
    
  • Then create a new directory named nulink

    mkdir nulink
    
  • Copy the Keystore files we generated a while ago to this newly created directory

    cp /root/geth-linux-amd64-1.10.23-d901d853/keystore/* /root/nulink
    
  • Change permission

    chmod -R 777 /root/nulink
    
post image
  • Let us now initialize our worker node with the new account, type each command below and press after each command, this is the same password you used a while ago when we were generating the worker address.

    export NULINK_KEYSTORE_PASSWORD=your_very_secure_password
    
    export NULINK_OPERATOR_ETH_PASSWORD=your_very_secure_password
    
post image
  • Run the following commands and ensure to change the encircled portion with the values you get from the Worker Address generation above

    docker run -it --rm \
    -p 9151:9151 \
    -v /root/nulink:/code \
    -v /root/nulink:/home/circleci/.local/share/nulink \
    -e NULINK_KEYSTORE_PASSWORD \
    nulink/nulink nulink ursula init \
    --signer keystore:///code/<UTC--2022-REPLACE_THIS_THE_ACTUAL_VALUE YOU GOT FROM WALLET GENERATION> \
    --eth-provider https://data-seed-prebsc-2-s2.binance.org:8545 \
    --network horus \
    --payment-provider https://data-seed-prebsc-2-s2.binance.org:8545 \
    --payment-network bsc_testnet \
    --operator-address <REPLACE THIS with THE ACTUAL WORKER ADDRESS> \
    --max-gas-price 10000000000
    
make sure to replace this portion with the actual values from your server
make sure to replace this portion with the actual values from your server
  • It will then ask you to complete some steps with a prompt below:

    Detected IPv4 address (XXX.XXX.XXX.XXX) - Is this the public-facing address of Ursula? [y/N]: y
    
    Please provide a password to lock Operator keys.
    Do not forget this password, and ideally store it using a password manager.
    
    Enter nulink keystore password (8 character minimum): xxxxxx
    Repeat for confirmation: xxxxxx
     
    Backup your seed words, you will not be able to view them again.
    xxxxxxx xxxxxxxx xxxxxxx xxxxxxxxxx xxxxxxxx xxxxxxxxxx xxxxxxx
    
    Have you backed up your seed phrase? [y/N]: y
    
    Confirm seed words: xxxxxx xxxxxxxxxxxx xxxxxxxxxxxxxxxxxx
    
    Public Key:   02xxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Path to Keystore: /home/circleci/.local/share/nulink/keystore
    
    - You can share your public key with anyone. Others need it to interact with you.
    - Never share secret keys with anyone! 
    - Backup your keystore! Character keys are required to interact with the protocol!
    - Remember your password! Without the password, it's impossible to decrypt the key!
    
    Generated configuration file at default file path /home/circleci/.local/share/nulink/ursula.json
    
    * Review configuration  -> nulink ursula config
    * Start working         -> nulink ursula run
    
  • Make sure to keep the information above saved somewhere.

  • Let us now RUN the node.

    docker run --restart on-failure -d \
    --name ursula \
    -p 9151:9151 \
    -v /root/nulink:/code \
    -v /root/nulink:/home/circleci/.local/share/nulink \
    -e NULINK_KEYSTORE_PASSWORD \
    -e NULINK_OPERATOR_ETH_PASSWORD \
    nulink/nulink nulink ursula run --no-block-until-ready
    
  • An ID will be generated if everything goes well, save that ID for future reference.

  • Let us now confirm the status of our node by running the command below

    docker logs -f ursula
    

    It should say something about Working - Keep Ursula Online!

  • Let us give some BNB to our Worker Node. Go to BNB Chain’s Faucet

  • Paste your Worker Node’s Address and click Send 0.3 BNB

BNB Chain Faucet
BNB Chain Faucet

Congrats! Your node is now running!

Bond Your Worker Node to your Staking Dashboard

  • Go back to your NuLink Dashboard https://dashboard.testnet.nulink.org

  • Click Bond Worker and paste your worker node address, it might take a few minutes before your NODE IP to show up and for the Worker Status to go ONLINE, but you should see your worker address to be populated.

Node Information Dashboard
Node Information Dashboard

Form Submission (IMPORTANT for REWARD Eligibility)

  • After completing 7 epochs (approximately 7 days 1 epochs = more or less 24 hours) with a living ratio above 80% you need to fill out this FORM

  • At the end of Phase One , a raffle will happen for all eligible stakers/node operators.

  • Good luck and may the odds be ever in your favor!

References and Useful Links:
1. https://docs.nulink.org/products/testnet\ 2. https://www.nulink.org/blog-posts/nulink-testnet-horus-2-0-phase-one-testing rules
3. Discord Discussion Channel
4. Telegram Discussion Channel
5. Form - https://forms.gle/9ZZgECdJFJFQHGuz8