SuperNode
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
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.
Supernodes on the Pastel Network can be operated in one of two configurations:
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.
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.
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>
pastelUp
:wget https://download.pastel.network/#latest-release/pastelup/pastelup-linux-amd64
NOTE: Execute all commands on the remote host.
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
./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:
Mainnet = `https://explorer.pastel.network/`
Testnet - `https://explorer-testnet.pastel.network/`
Wait until your node reaches the top.
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
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
.
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
NOTE: Execute all commands on the remote host.
./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!
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
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.
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
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!
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
./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.
./pastelup-darwin-amd64 start node
./pastelup-linux-amd64 start node
pastelup-win-amd64 start node
Windows:
~/Applications/PastelWallet/pastel-cli mnsync status
MacOS:
%userprofile%\AppData\Roaming\PastelWallet\pastel-cli mnsync status
Linux:
~/pastel/pastel-cli mnsync status
NOTE: All commands should be executed on the COLD 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>
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!!!
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>
NOTE: All commands should be executed on the 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>
./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
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.
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!
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
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>
./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>
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>