Worker Installation


The NuLink Worker is the node to provide cryptographic service in the NuLink network. It provides Proxy Re-encryption service in the Horus network and it will provide more services such as ABE, IBE, ZKP and FHE in NuLink mainnet. The staker needs running a Worker node to be eligible for token reward.

  1. Create Worker Account

  2. Install NuLink Worker

  3. Configure and Run a Worker node

  4. Bond the Worker node with your staking account

Minimum System Requirements

  • Debian/Ubuntu (Recommended)

  • 30GB available storage

  • 4GB RAM

  • x86 architecture

  • Static IP address

  • Exposed TCP port 9151, make sure it's not occupied

  • Nodes can be run on cloud infrastructure.

For this worker node im using CPX21 from Hetzner


Update Depencies

sudo apt update && sudo apt upgrade -y
sudo apt install ufw

Install Latest Docker Engine and Pull Latest Horus Image

curl -fsSL | sh
sudo usermod -aG docker $USER
docker pull nulink/nulink:latest

Setup Firewall

sudo ufw allow ssh
sudo ufw allow 9151/tcp
sudo ufw enable

And press y then enter.

Setup Password Variable


Change both to the password you preffered

Create Worker Account

Download GETH and Extract

wget && tar -xvzf geth-linux-amd64-1.10.23-d901d853.tar.gz

I like to rename it to geth , you can skip this if you want

Rename the directory

mv geth-linux-amd64-1.10.23-d901d853 geth

Go to the geth dir

cd geth/

Now Create the worker account key by running the command below inside the dir geth

./geth account new --keystore ./keystore

You will be prompted to enter the password and confirm the password. Please remember this password for late use.


INFO [09-08|15:30:11.904] Maximum peer count                       ETH=50 LES=0 total=50
INFO [09-08|15:30:11.905] Smartcard socket not found, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
Your new account is locked with a password. Please give a password. Do not forget this password.
Repeat password: 

Your new key was generated

Public address of the key:   0x8B1819341BEc211a45a2186C4D0030681cccE0Ee
Path of the secret key file: /root/geth-linux-amd64-1.10.23-d901d853/keystore/UTC--2022-09-13T01-14-32.465358210Z--8b1819341bec211a45a2186c4d0030681ccce0ee

- You can share your public address with anyone. Others need it to interact with you.
- You must NEVER share the secret key with anyone! The key controls access to your funds!
- You must BACKUP your key file! Without the key, it's impossible to access account funds!
- You must REMEMBER your password! Without the password, it's impossible to decrypt the key!
cd $HOME
sudo mkdir nulink

Copy the keystore file of the Worker account to the host directory. The private file generated by NuLink Worker will also be stored in this directory.

cp $HOME/geth/keystore/* $HOME/nulink

Give the directory 777 Permission

sudo chmod -R 777 $HOME/nulink

Init Worker



Change the --signer and --operator-address to your own!

docker run -it --rm \
-p 9151:9151 \
-v $HOME/nulink:/code \
-v $HOME/nulink:/home/circleci/.local/share/nulink \
nulink/nulink nulink ursula init \
--signer keystore:///code/UTC--2022-09-13T01-14-32.465358210Z--8b1819341bec211a45a2186c4d0030681cccXXXX \
--eth-provider \
--network horus \
--payment-provider \
--payment-network bsc_testnet \
--operator-address Operator Address \
--max-gas-price 10000000000

Example Output :

# step 1
 Detected IPv4 address ( - 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.

 # step 2
 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.


 # step 3
 Have you backed up your seed phrase? [y/N]: y

 # step 4
 Confirm seed words: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Public Key:   02bb2067d21a677ce928967c0ece79a9
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 filepath /home/circleci/.local/share/nulink/ursula.json
* Review configuration  -> nulink ursula config
* Start working         -> nulink ursula run

Backup your Seed!

Run the worker

Before running the worker make sure you have tBNB, if not request BNB Testnet Faucet Run Worker




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

And Voila! Your worker is now running To check the logs you can type

docker logs -f ursula

Example output:

Authenticating Ursula
Loaded Ursula (horus)
 External IP matches configuration
Starting services
 Node Discovery (Horus)
 Work Tracking
 Start Operator Bonded Tracker
 Rest Server
Working ~ Keep Ursula Online!

To check running container you can run

docker ps

To stop container you can run

docker stop ursula

To Restart container

docker restart ursula

Now you can go to the next step which is Bonding the worker to provider.

Last updated