Ended
October 24, 2022

Nulink Incentivised Testnet

INTRODUCTION

NuLink network is a decentralized solution for privacy-preserving applications developers to implement best practices and best of breed security and privacy. The NuLink network provides endpoint encryption and cryptographic access control. Sensitive user data can be securely shared from any user platform to cloud or decentralized storage and access to that data is granted automatically by policy in Proxy Re-Encryption or Attribute-Based Encryption.

For the data user on the other side, Zero-Knowledge Proof can help them verify the data source. In more advanced privacy-preserving use cases, NuLink uses Fully Homomorphic Encryption to customize enterprise-level data computation services.The Nulink technology platform consists of blockchain, access control (Proxy Re-Encryption, Attribute-Based Encryption) and secure computation (Zero-Knowledge Proof, Secure Multi-party Computation, Fully Homomorphic Encryption) as its technical core. It provides enterprise-level data sharing and computation services.

NULINK TESTNET

The NuLink Testnet is called the Horus network. It includes four parts:

The NuLink Staking Dapp
The NuLink Worker Node
The NuLink Agent and
The NuLink File Sharing Dapp.

The NuLink Staking Dapp and the NuLink Worker Node are used by those who want to provide cryptographic service in the Horus network; while the NuLink Agent and the NuLink File Sharing Dapp are used by those who want to use the privacy-preserving service in the Horus network. The token in the Horus network is NLK(test). Please be aware it is only used for testing purpose and has no trading value.

1. PREPARATIONS

First you need to know how to rent a server, follow this link 🔗 Then how to log into your server using Putty here.

If you are already good with both, then let's proceed.


1a. Update Packages

sudo apt update && sudo apt upgrade -y

1b. Install Python 3

apt install python3-pip -y

1c. Open the Ports

apt install ufw -y && ufw allow ssh && ufw allow https && ufw allow http && ufw allow 9151 && ufw enable -y

1d. Install Docker

1d.i. Update the apt package index and install packages:

sudo apt-get update && 
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

1d.ii. Add Docker’s official GPG key:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

1d.iii. Set up the repository

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

1d.iv. Install Docker Engine, containerd, and Docker Compose.

sudo apt update && sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

To verify your docker was properly installed, run

sudo docker run hello-world

2. CREATE WORKER ACCOUNT

Download geth:

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

Unzip the Packages

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

Change into the new directory

cd geth-linux-amd64-1.10.23-d901d853/

Generate Ethereum account and Keystore

./geth account new --keystore ./keystore

You will get an output like below;

img

Enter and confirm the new password;

You will get an out put like this

Your new key was generated

Public address of the key:   0x05F3c985CxxxxxxxxxxxxxxxxxF1Exxxxxxx6Bfb
Path of the secret key file: /root/geth-linux-amd64-1.10.23-d901d853/keystore/UTC--2022-10-23T14-01-03.226009757Z--05F3c985CxxxxxxxxxxxxxxxxxF1Exxxxxxx6Bfb

- 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 

Ensure to save your Public address of the Key and the Path of the secret key file

3. INITIALIZE THE STAKING DApp

NuLink currently supports only METAMASK wallet. You can download and install METAMASK wallet Here. Then, create an account for staking in METAMASK after installation.

Login and connect the staking account in Nulink Staking Dapp.

Now, progress to Faucet your wallet using the Horus Faucet; Click on get the BNB and answer the captcha correctly.

Input your wallet address and click on Give me BNB and select 0.5BNB

0.5TBNB will be transferred into your wallet;

Use the Faucet button to request the NLK tokens;

Next click on Staking;

Input the amount as 50000 NLK or us the MAX button, press the confirm button and confirm transaction in your metamask wallet (twice).

Now, the Amount of NLF will reflect on the staking amount.

Send some TBNB from your metamask wallet to your operator address saved from your worker account (Step 2).

Operator address == Public address of the key == 0x05F3c985CxxxxxxxxxxxxxxxxxF1Exxxxxxx6Bfb

send 0.1 TBNB to your Operator address;

4. NULINK WORKER INSTALLATION

Docker Install and Update

Pull the latest version of Nulink

cd && docker pull nulink/nulink:latest

Create a directory in your host machine for later usage.

cd /root && mkdir nulink

Remember in step 3, we saved two information, we will be needing them from here. The private file generated by NuLink Worker will also be stored in this directory. Please ensure that this directory has 777 permissions:

N/B: Replace xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx below with Path of the secret key file

It should look like this:

cp /root/geth-linux-amd64-1.10.23-d901d853/keystore/UTC--2022-10-25T11-03-46.010714300Z--bb3b5ad01404058718726c46e2d5f28bff996b75 /root/nulink

cp xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /root/nulink

Then,

chmod -R 777 /root/nulink

Local Install

It is highly recommend to use python-virtualenv to install Nulink inside a dedicated virtual environment.

pip install virtualenv

Create a Virtual environment

virtualenv /root/nulink-venv

Activate the newly created virtual environment:

source /root/nulink-venv/bin/activate

Download the Nulink package

wget https://filetransfer.nulink.org/release/nulink-0.2.0-py3-none-any.whl

Install the Nulink package

pip install nulink-0.2.0-py3-none-any.whl

Verify Installation

python -c "import nulink"

Then type

nulink --help

5. NuLink Worker Initialization and Running

Export Node Environment Variable

Replace <YOUR NULINK STORAGE PASSWORD> with your preferred name

export NULINK_KEYSTORE_PASSWORD=<YOUR NULINK STOREAGE PASSWORD>

Password (<YOUR NULINK STORAGE PASSWORD>) is used for lock/unlock the private storage generated by NuLink Worker. You can choose some characters(8 minimum) as the password here. Do not forget it!!!

Replace <YOUR WORKER ACCOUNT PASSWORD> with your preferred name

export NULINK_OPERATOR_ETH_PASSWORD=<YOUR WORKER ACCOUNT PASSWORD>

Password (<YOUR WORKER ACCOUNT PASSWORD>) is used to unlock the keystore file of Worker account.

##It's advisable to use the same password

Run Node Via Docker

Initialize Node Configuration:

Replace xxxxxxxxxxxxxxxxxxxxxxxxx by the your keystore file of the Worker (Fig5a) and yyyyyyyyyyyyyyyyyyyyyyyyyy (Fig5b) by the public address of the key in the code below.

Fig5a
Fig 5b
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/xxxxxxxxxxxxxxxxxxxxxxx \
--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 yyyyyyyyyyyyyyy \
--max-gas-price 100

For example:

Press y and enter.

Save your seed word. covered in the picture above(Never share this with anyone), press y and ENTER.

You will be requested to confirm your seed words; Enter your phrase correctly

Save all info from the output in your notepad

Launch a Node

Run the code below to launch 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

Check Node URI for Worker Account

The following command describes how to view worker addresses:

docker logs -f ursula

Press CTRL + c to exit logs.

You can close your putty now.


6. BONDING YOUR WORKER TO EARN REWARDS

Open the link to get to the Nulink test-staking site.

Then, click on Bond worker

Input your Worker Address and Node URL;
Node URL is in the format https://Your_adress_VPS:9151
Replace Your_adress_VPS with your Ip Adress

Approve the transactions in your Metamask.

After that your node will appear Online, if it still appear to be Offline Do not worry it will be Online Soon.


Feed back Form (A MUST)

Fill out the form regarding to bugs or improvements for nulink services! If you did not submit form you won't be eligible! Ensure to fill the necessary if you encounter no issues, skip but submission is a MUST!

Only good submission on feedback form will get rewards. Thats it! You are done and make sure your node is not shutdown!!


USEFUL LINKS

Nulink Discord Website Telegram Official Doc Whitepaper Testnet information about rewards Form