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.
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.
The full roadmap can be found here. Mainnet launch is scheduled for Q2 2024. 👀
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.
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:
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.
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
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:
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.