Strategies with Validator Nodes - NuLink Horus

Continuing with the validator nodes topic, let’s remain in the EVM environment and talk about NuLink.

NuLink network is a decentralized solution for Web3 privacy-preserving applications developers providing endpoint encryption, cryptographic access control and a variety of privacy-preserving technologies integrated into:

  • data availability, by encrypting data and ensuring their availability in ciphertext form;

  • data sharing, by encrypting data and let the data owner control access to it through decentralized encrypted storage, proxy re-encryption, identity-based encryption, attribute-based encryption…;

  • data computing.

To verify the data source, data users can utilize ZK Proofs, but for advanced privacy-preserving use cases NuLink utilizes Fully Homomorphic Encryption (FHE) to provide customized enterprise-level data computation services.

List of investors and backers of NuLink
List of investors and backers of NuLink

Currently only EVM blockchains such as Ethereum, BNB Chain, Polygon PoS and Arbitrum are supported, but chains such as Aptos, Sui and Polkadot will be added in the future.

NuLink raised in pre-seed $1.05M from Kangaroo Capital and in a later round $4M from 26 investors. The pre-sale of 25% of the supply (2.5M tokens) at a price of $0.08 per token closed on February 2, with a current valuation of $800'000.

NuLink $NLK Tokenomics, 15% allocated for community and 15% allocated for the Foundation. Another 30% is allocated for liquidity mining
NuLink $NLK Tokenomics, 15% allocated for community and 15% allocated for the Foundation. Another 30% is allocated for liquidity mining

The full roadmap can be found here. Mainnet launch is scheduled for Q2 2024. 👀

Full roadmap, you can check it in NuLink's docs
Full roadmap, you can check it in NuLink's docs

Now let's see together how to launch the worker node!

Don’t forget to subscribe on Mirror to stay tuned to all future articles.

To begin the procedure, you need a computer with any Linux distro installed, Ubuntu 20.04 or later will do, an SSD with +30 GB and a fast Internet connection.

For those without resources capable of supporting a validator node at home, you can fall back on VPS (Virtual Private Server) solutions, that is, you can rent a virtual server.

There are several solutions, but these are the minimum requirements, which I don’t recommend but for only NuLink should work:

  • Contabo, the Cloud VPS S model, with 4 vCPU Cores, 8 GB RAM, 200 GB SSD SATA3. However I recommend the Cloud VPS M model;

  • Aeza, I recommend at least the VIEs-2 or PARs-2 model, with 2 vCPU Cores, 4 GB RAM, 60 GB NVMe. This is a Russian VPS service and payment by credit/debit card is not possible from many Western countries, but payments in crypto (BTC, BEP20, ERC20, TRC20, DASH, LTC, XMR...) are possible.

After payment is made, you will receive the IP address to access.

Contabo VPS plans
Contabo VPS plans

If operating from Windows, open Windows Powershell and launch the following command, entering your IP address instead of IP_ADDRESS:

ssh root@IP_ADDRESS

Give confirmation to save ED25519 key fingerprint to the list of known hosts, available at C:\Users\WINDOWS_USER\.ssh and enter the password of your VPS.

If you have done everything correctly, the following screen will appear:

After login on PuTTy or Windows Powershell on VPS provided by Contabo
After login on PuTTy or Windows Powershell on VPS provided by Contabo

Now enter the following commands and execute them in order to update your system and install curl and docker:

sudo apt -y update
sudo apt -y upgrade
sudo apt -y install curl
curl -fsSL https://get.docker.com/ | sh

To make sure that everything has been installed correctly, run the following command, it should return the message shown in the comment:

sudo docker run hello-world

# Hello from Docker!
# This message shows that your installation appears to be working correctly

At this point we are ready to install the NuLink Worker. Launch every command one by one:

# Download Worker file
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.23-d901d853.tar.gz

# Extract Worker file
tar -xvzf geth-linux-amd64-1.10.23-d901d853.tar.gz

# Enter to the Worker files directory
cd geth-linux-amd64-1.10.23-d901d853/

# Create Worker account
./geth account new --keystore ./keystore

Enter the password you want to use for your Worker account. This process will generate:

  • Worker public address: worker_address;

  • path of the secret key file: /root/geth-linux-amd64-1.10.23-d901d853/keystore/UTC…[…]

Save both of them somewhere safe, you’ll need them later during the installation process. Let’s install now the latest version of NuLink Worker:

# Download latest version of NuLink
docker pull nulink/nulink:latest
cd /root
mkdir nulink

# Copy Worker config files in the new directory
cp /root/geth-linux-amd64-1.10.23-d901d853/keystore/* /root/nulink
chmod -R 777 /root/nulink

# Save the password chosen before in these 2 variable as showed
export NULINK_KEYSTORE_PASSWORD= <password>
export NULINK_OPERATOR_ETH_PASSWORD= <password>

Now you’re ready to run your Worker!

Visit the staking dashboard website at the following link, connect your Metamask extension and create a blank wallet with a new seed phrase. Request for $NLK tokens and $tBNB on BNB Chain Testnet in order to pay gas fees.

Click on the icon of the wallet with a small plus for faucet requests
Click on the icon of the wallet with a small plus for faucet requests

Send at least 0.2 $tBNB to the worker_address saved before. Stake your first 10 $NLK tokens.

Launch the following command with changing keystore path and worker_address saved earlier:

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...[...]> \
--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 <worker_address>\
--max-gas-price 10000000000

Confirm the detected IPv4 address by answering y/n, backup the seed phrase of your worker_address and confirm it. Save somewhere safe your public key and the path to the keystore.

Launch the last command:

docker run --restart on-failure -d \
--name ursula \
-e NULINK_KEYSTORE_PASSWORD \
-e NULINK_OPERATOR_ETH_PASSWORD \
-p 9151:9151 \
-v /root/nulink:/code \
-v /root/nulink:/home/circleci/.local/share/nulink \
nulink/nulink nulink ursula run --no-block-until-ready

Check if everything’s alright by launching the logs command:

docker logs -f ursula

# ✓ External IP matches configuration
# Starting services [current version: 0.5.0]
# ✓ Node Discovery (Horus)
# ✓ operator address: <>
# ✓ Work Tracking
# ✓ Start Operator Bonded Tracker
# ✓ Rest Server https://<IP_ADDRESS>
# Working ~ Keep Ursula Online!
# OperatorBondedTracker: ! Operator <> is not bonded to a staking provider
This will be the message you'll get in the first 24 hours on your staking dashboard
This will be the message you'll get in the first 24 hours on your staking dashboard

Congratulations, you have successfully completed the installation of your node!

In 24 hours your worker will sync to the other NuLink workers on BNB Chain Testnet. After your Metamask and Worker addresses succesfully bond, you’ll see something like this:

My worker address bonded with my Metamask account
My worker address bonded with my Metamask account

To update the node, run the following commands:

export NULINK_KEYSTORE_PASSWORD= <password>
export NULINK_OPERATOR_ETH_PASSWORD= <password>

docker kill <ID_CONTAINER>
docker rm <ID_CONTAINER>
docker pull nulink/nulink:latest

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

If you like my work, I suggest you to subscribe and mint the entry in order to support my work. The cost is insignificant for you, but it helps me to know that you like this kind of content.

Subscribe to 0xOuterGod
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.