Links

SuperNode

Welcome to the Supernode Setup Guide! This document is designed to help you set up a Supernode on the Pastel Network, regardless of your technical expertise. Simply follow these step-by-step instructions.

Overview

Supernodes on the Pastel Network can be operated in one of two configurations:
  1. 1.
    Single Node (HOT Mode): The wallet containing a collateral transaction of 5M PSL on Mainnet (1M LSP on Testnet) is hosted on the same server as the Supernode.
  2. 2.
    Dual Node (HOT/COLD Mode): The wallet with the collateral transaction is stored on a separate host (cold wallet) from the Supernode.
While the HOT/COLD mode is considered more secure, it is vital to maintain the security of your Supernode host irrespective of the selected setup.
Prerequisite: Supernode must be installed on a Linux OS.

I. Single Host Supernode Setup

Step 1. Set Up Remote Host

1. SSH into your HOT node:

Replace placeholders with appropriate values!
ssh <SSH_USER_OF_HOT_NODE>@<IP_ADDRESS_OF_HOT_NODE> -i <PATH_TO_HOT_NODE_SSH_PRIVATE_KEY_FILE>

2. Download pastelUp:

wget https://download.pastel.network/#latest-release/pastelup/pastelup-linux-amd64

Step 2. Install and Initialize Supernode

NOTE: Execute all commands on the remote host.

1. Install Supernode:

For Mainnet:
./pastelup-linux-amd64 install supernode -n=mainnet
For Testnet:
./pastelup-linux-amd64 install supernode -n=testnet
This installs the following applications:
  • pasteld
  • pastel-cli
  • rq-server
  • dd-server
  • hermes
  • supernode

2. Start node and wait for sync

./pastelup-linux-amd64 start node
This will start pasteld as simple node. You can check status if sync by:
./pastel/paslte-cli getinfo
The responce will look like this:
{
"version": 2010001,
"protocolversion": 170010,
"walletversion": 60000,
"balance": 0.00000,
"blocks": 1354,
"timeoffset": 0,
"connections": 7,
"proxy": "",
"difficulty": 1,
"chain": "testnet",
"keypoololdest": 1705034659,
"keypoolsize": 101,
"paytxfee": 0.00000,
"relayfee": 0.00100,
"errors": ""
}
Chek Pastel Explorer for the current top block, here:
Wait until your node reaches the top.

3. Optional: Create new address and send collateral amount:

This step is optional, when you run pastelup-linux-amd64 init it will offer to create an address and will wait until you send collaterral to it.
./pastel/paslte-cli getnewaddress
This will return new address. You should send exact amount of colateral amount in a single transaction:
  • Mainnet - 5'000'000 PSL
  • Testnet - 1'000'000 LSP
Remember txid and vout of the output from transaction that sends the collateral amount.
You can also find out txid and vout by running on your remote host:
./pastel/paslte-cli masternode outputs

4. Initialize Supernode:

Note: You only need to initialize once upon the first installation of Supernode. Skip this step if your Supernode is already initialized.
./pastelup-linux-amd64 init supernode --new --name=<SN-name> --activate
  • SN-name is the node alias in masternode.conf.
  • --activate is optional to immediately active your node. Otherwise, you can activate it at any point with:
    pastel-cli masternode start-alias <SN-name>
Initialization of your Supernode will:
  • Ask for a passphrase
  • Create and register a new Supernode PastelID
  • Ask for collateral transaction txid and vout index
    • If no collateral was sent yet, it will offer to create new address and will wait until collateral is sent to it and the transaction is confirmed
  • Create a masternode.conf file and add configuration against the provided node alias --name
  • Start pasteld as Supernode
  • Active pasteld as Supdernode
  • Start rq-server, dd-server, hermes, and supernode services
Alternatively, you can initialize your Supernode if you know the collateral transaction txid and vout index with the following command:
./pastelup-linux-amd64 init supernode --new --name=<SN-name> --txid=<txid> --ind=<vout index> --activate
After initialization, check the Supernode status:
pastel-cli masternode status
Verify that this returns masternode successfully started.

5. Start Supernode:

NOTE: You do not need to start Supernode right after initialization. Start only if the Supernode was previously stopped.
./pastelup-linux-amd64 start supernode
The above command will start the following services:
  • pasteld
  • rq-server
  • dd-server
  • hermes
  • supernode

Step 3: Register PastelID

NOTE: Execute all commands on the remote host.

1. Check Supernode status and find PastelID:

./pastel/pastel-cli masternode status
./pastel/pastel-cli pastelid list
masternode status should return similar to the following:
{
"outpoint": "0000000000000000000000000000000000000000000000000000000000000000-0",
"service": "<IP_ADDRESS_OF_HOT_NODE>:9933",
"status": "Not capable masternode: Masternode not in masternode list"
}
pastelid list should return similar to the following:
[
{
"PastelID": "<YOUR_SN_PASTELID>",
"legRoastKey": "..."
}
]
NOTE: Be sure to securely store your PastelID!

2. Check SuperNode Balance:

In order to continue and register your PastelID on the blockchain, you will need some available funds in the Supernode wallet. We recommend at least 2000 PSL on Mainnet (1000 LSP on Testnet).
./pastel/pastel-cli getbalance

3. Register PastelID

Now, you are ready to register your PastelID:
Replace the placeholders with the appropriate values!
./pastel/pastel-cli tickets register mnid <YOUR_SN_PASTELID> <PASSPHRASE> <ADDRESS>
Check Supernode status:
./pastel/pastel-cli masternode status
masternode status should return similar to the following:
{
"outpoint": "...",
"service": "<IP_ADDRESS_OF_HOT_NODE>:9933",
"payee": "...",
"extAddress": "<IP_ADDRESS_OF_HOT_NODE>:4444",
"extP2P": "<IP_ADDRESS_OF_HOT_NODE>:4445",
"extKey": "<YOUR_SN_PASTELID>",
"extCfg": "",
"alias": "<SN_name>",
"status": "Masternode successfully started"
}
Congratulations, your SuperNode is successfully running! You can now exit your SSH session.

II. Cold/Hot Strategy

A 5 million PSL stake is required to operate a SuperNode. In order to avoid anything happening to that 5 million PSL, the recommended strategy is to keep these funds on the node that is turned off and in a more secure location than on a publicly accessible server. Thus, we use two SuperNode installations:
  • One cold node where the 5 million PSL stays, that is only on for a brief activation window and then disconnected
  • One hot node that actually operates on the network, but doesn't have 5 million PSL in its wallet
In order for this to occur, the cold node must vouch for the hot node, indicating that the owner of the hot node has properly staked 5 million PSL.
Prerequisites
  • Two nodes (computers)
    • HOT node - this can be cloud instance on some cloud provider. This host MUST have - Ubuntu 22.04 installed
    • COLD node - more secure located computer - local laptop or desktop is recommended, but still can be cloud instance that will be shutdown after SuperNode on HOT node set, initialized and started. This host can be Windows, MacOS or Ubuntu 22.04
  • 5,000,000 PSL that will be used as collateral in some outside wallet

Step 1: Set up the local (COLD) node

As with node installation in the quick start guide, pastelup is the best method for SuperNode installation.
NOTE: All commands should be executed on the COLD node!

1. Download the pastel up

For MacOS
wget https://download.pastel.network/#latest-release/pastelup/pastelup-darwin-amd64
For Linux
wget https://download.pastel.network/#latest-release/pastelup/pastelup-linux-amd64
For Windows (from PowerShell)
Invoke-WebRequest -Uri https://download.pastel.network/latest-release/pastelup/pastelup-win-amd64.exe -OutFile pastelup-win-amd64.exe

2. Install the Pastel node

./pastelup-darwin-amd64 install node -n testnet
./pastelup-linux-amd64 install node -n testnet
pastelup-win-amd64 install node -n testnet
This method will also work if you already had node installed as in the quick start guide. A prompt will ask if you'd like to continue installation to the same directory, select yes and wait for installation to complete.

4. Start the local node and wait for it to fully sync with the Pastel network

./pastelup-darwin-amd64 start node
./pastelup-linux-amd64 start node
pastelup-win-amd64 start node

5. Check the sync status of the node

Windows:
~/Applications/PastelWallet/pastel-cli mnsync status
MacOS:
%userprofile%\AppData\Roaming\PastelWallet\pastel-cli mnsync status
Linux:
~/pastel/pastel-cli mnsync status

Step 2: Install and initialize Supernode on the remote (HOT) host

NOTE: All commands should be executed on the COLD node!

1. Install the Supernode on HOT node

Replace the placeholders with the appropriate values!
./pastelup-darwin-amd64 install supernode remote -n testnet--ssh-ip <IP_ADDRESS_OF_HOT_NODE> --ssh-user <SSH_USER_OF_HOT_NODE> --ssh-key <PATH_TO_HOT_NODE_SSH_PRIVATE_KEY_FILE>

2. Initialize the Supernode on HOT node

Replace the placeholders with the appropriate values!
./pastelup-darwin-amd64 init supernode coldhot --new --name <SN_name> --ssh-ip <IP_ADDRESS_OF_HOT_NODE> --ssh-user <SSH_USER_OF_HOT_NODE> --ssh-key <PATH_TO_HOT_NODE_SSH_PRIVATE_KEY_FILE>
During initialization, you will be prompted to either search for an existing collateral transaction or create a new address and send PLS (mainnet) or LSP (testnet) to it. You will also need to provide a passphrase for the new PastelID.
WRITE DOWN PASSPHRASE YOU ENTERD HERE! (<PASSPHRASE>)
You won't be able to recover it later!!!

3. Activate the SuperNode

NOTE: All commands should be executed on the COLD node!
Replace the placeholders with the appropriate values!
MacOS:
~/Applications/PastelWallet/pastel-cli masternode start-alias <SN_name>
Linux:
./pastel-cli masternode start-alias <SN_name>
Windows:
%userprofile%\AppData\Roaming\PastelWallet\pastel-cli masternode start-alias <SN_name>

Step 3: Register PastelID

NOTE: All commands should be executed on the HOT node!

1. SSH to your HOT node:

Replace the placeholders with the appropriate values!
ssh <SSH_USER_OF_HOT_NODE>@<IP_ADDRESS_OF_HOT_NODE> -i <PATH_TO_HOT_NODE_SSH_PRIVATE_KEY_FILE>

2. Check masternode status and find PastelID

./pastel/pastel-cli masternode status
./pastel/pastel-cli pastelid list
Status should be something like that:
{
"outpoint": "0000000000000000000000000000000000000000000000000000000000000000-0",
"service": "<IP_ADDRESS_OF_HOT_NODE>:9933",
"status": "Not capable masternode: Masternode not in masternode list"
}
And PastelID list:
[
{
"PastelID": "<YOUR_SN_PASTELID>",
"legRoastKey": "..."
}
]
Remember, or better write down your SuperNodes PastelID

3. Check balance on the SuperNode

Next you will have to register PastelID in the blockchain. That requires some available funds (slightly more then 1000PSL - we recommend at least 2000PSL) in the SuperNode wallet.
Check balance:
./pastel/pastel-cli getbalance
If that returns 0 or anything less then 200PSL, you will need to generate new address and send some coins to it from your other walet.
./pastel/pastel-cli getnewaddress
Remember, or better write down your address (<ADDRESS>)
Send some coins to that address from another host with balance
Wait until coins get available, checking periodically with getbalance command.

4. Register pastelid

After funds get avaialiable, run the following command
Replace the placeholders with the appropriate values!
./pastel/pastel-cli tickets register mnid <YOUR_SN_PASTELID> <PASSPHRASE> <ADDRESS>
Check status again:
./pastel/pastel-cli masternode status
This time it should be something like that:
{
"outpoint": "...",
"service": "<IP_ADDRESS_OF_HOT_NODE>:9933",
"payee": "...",
"extAddress": "<IP_ADDRESS_OF_HOT_NODE>:4444",
"extP2P": "<IP_ADDRESS_OF_HOT_NODE>:4445",
"extKey": "<YOUR_SN_PASTELID>",
"extCfg": "",
"alias": "<SN_name>",
"status": "Masternode successfully started"
}
You can exit your SSH session to HOT node after that. You SuperNodes is running!

III. Common tasks

1. Set up the SuperNode as a service

NOTE: All commands should be executed on the COLD node!
To simplify management of SuperNode it is recommended to set it up as systems service. Follow the steps to do that

1. Stop SuperNode

Before setting up SuperNode's applications as systemd services, you first need to stop them
./pastelup-darwin-amd64 stop supernode remote --ssh-ip <IP_ADDRESS_OF_HOT_NODE> --ssh-user <SSH_USER_OF_HOT_NODE> --ssh-key <PATH_TO_HOT_NODE_SSH_PRIVATE_KEY_FILE>

2. Set as service

./pastelup-darwin-amd64 update install-service remote --solution supernode --autostart --ssh-ip <IP_ADDRESS_OF_HOT_NODE> --ssh-user <SSH_USER_OF_HOT_NODE> --ssh-key <PATH_TO_HOT_NODE_SSH_PRIVATE_KEY_FILE>

3. Start SN again, this time as services

TIP: Instead of this command, you can add flag --start to the previous one
./pastelup-darwin-amd64 start supernode remote --ssh-ip <IP_ADDRESS_OF_HOT_NODE> --ssh-user <SSH_USER_OF_HOT_NODE> --ssh-key <PATH_TO_HOT_NODE_SSH_PRIVATE_KEY_FILE>