GitLab Artifact Install
Setup a Witness Node using a pre-compiled GitLab artifact
This document assumes that you are running Ubuntu 20.04.
The Gitlab artifacts were built targeting Ubuntu 20.04 and will not work on Ubuntu 18.04. While Peerplays does support Ubuntu 18.04, you'll need to follow the Manual Install guide for Ubuntu 18.04 or use Docker to use it on this version.
The following steps outline the artifact installation of a Witness Node:
- 1.Prepare the environment
- 2.Download and extract the artifacts
- 3.Copy the artifacts to the proper locations
- 4.Update the
config.ini
File - 5.Create a Peerplays Account
- 6.Update
config.ini
with Witness Account Info - 7.Start the Witness and Vote for Yourself
- 8.Auto-Starting the Witness Node
Before we begin, to set up a Witness node requires about 15 PPY. This is to pay for an upgraded account (5 PPY) and to create a new witness (8 PPY). The remaining funds are to pay for various transaction fees while setting up the node (like voting for yourself!). Please see Obtaining Your First Tokens for more info.
Note that these fees will likely change over time as recommended by the Committee of Advisors.
For the GitLab artifact install, the requirements that we'll need for this guide would be as follows:
Node Type? | CPU | Memory | Storage | Bandwidth | OS |
Witness | 4 Cores | 16GB | 100GB SSD | 1Gbps | Ubuntu 20.04 |
The artifacts from GitLab are already built for x86_64 architecture. These will not work with ARM based architecture.
The following dependencies are necessary for a clean install of Ubuntu 20.04:
sudo apt-get update
sudo apt-get -y install libzmq3-dev wget zip unzip
Artifacts are pre-built binaries that are available to download from GitLab. You can see the available pipelines, sorted by release tags, on the GitLab Peerplays project page. The link in the code below refers to release tag
1.5.18
which is the latest production release as of the writing of this document. Please make sure to replace the tag with the one you need. The test releases are available as well, test-1.5.5
for example.cd $HOME
mkdir artifacts
cd artifacts
sudo wget https://gitlab.com/PBSA/peerplays/-/jobs/artifacts/1.5.18/download?job=build-mainnet -O artifacts.zip
unzip artifacts.zip
Double check the tag in the download link!
Putting the
witness_node
and cli_wallet
programs in the /usr/local/bin
directory will allow us to call the program from any directory.sudo cp $HOME/artifacts/build/programs/witness_node/witness_node /usr/local/bin/witness_node
sudo cp $HOME/artifacts/build/programs/cli_wallet/cli_wallet /usr/local/bin/cli_wallet
Now we can run start the node with:
cd $HOME
witness_node
Launching the witness creates the required directories which contain the config.ini file we'll need to edit. We'll stop the witness now with
Ctrl + C
so we can edit the config file.We need to set the endpoint and seed-node addresses so we can access the cli_wallet and download all the initial blocks from the chain. Within the config.ini file, locate the p2p-endpoint, rpc-endpoint, and seed-node settings and enter the following addresses.
nano ~/witness_node_data_dir/config.ini
p2p-endpoint = 0.0.0.0:9777
rpc-endpoint = 0.0.0.0:8090
seed-node = ca.peerplays.info:9777
seed-node = de.peerplays.xyz:9777
seed-node = pl.peerplays.org:9777
seed-nodes = []
Save the changes and start the Witness back up.
witness_node
We'll need an account as the basis of creating a new Witness. The easiest way to do that is to use the GUI wallet.
- 1.Install, open, and create an account. It's pretty self-explanatory.🙂
- 2.Wait for your node to sync the blocks (about 7.3GB at the time of writing). We need to do this before we can use the CLI wallet.
- 3.From this point on, please note the results of the following commands as you'll need them later.
Back in a new command line window, we can access the cli_wallet program after all the blocks have been downloaded from the chain. Note that "your-password-here" is a password that you're creating for the cli_wallet and doesn't necessarily have to be the password you used in the GUI wallet earlier.
cli_wallet
set_password your-password-here
unlock your-password-here
The CLI wallet will show
unlocked >>>
when successfully unlocked.A list of CLI wallet commands is available here: https://devs.peerplays.tech/api-reference/wallet-api/wallet-calls
This will return an array with your owner key in the form of
["PPYxxx", "xxxx"]
. Note that the "created-username" and "created-password" used here are the username and password from the GUI wallet!get_private_key_from_password created-username owner created-password
The second value in the returned array is the private key of your owner key. Now we'll import that into the cli_wallet.
import_key "created-username" SECONDVALUEFROMLASTCOMMAND
Once again, this will return an array with your active key in the form of
["PPYxxx", "xxxx"]
. Note that the "created-username" and "created-password" used here are the username and password from the GUI wallet!get_private_key_from_password created-username active created-password
The second value in the returned array is the private key of your active key. Now we'll import that into the cli_wallet.
import_key "created-username" SECONDVALUEFROMLASTCOMMAND
The keys that begin with "PPY" are the public keys.
You will need some PPY for this command to succeed. The account must have lifetime membership status to create a new Witness.
upgrade_account created-username true
The URL in this command is your own URL which should point to a page which describes who you are and why you want to become a Peerplays witness. Note your block signing key after you enter this command.
This command will require some PPY as well.
create_witness created-username "https://your-url-to-witness-proposal" true
First we'll get the private key for your block_signing_key.
get_private_key YOURBLOCKSIGNINGKEY
Then dump your keys to check and compare. One of the returned values from the following command should match your block_signing_key.
dump_private_keys
Last we'll get your witness ID.
get_witness created-username
Exit the cli_wallet with the
quit
command. We'll stop the Witness (Ctrl + C
in the first command line window) and edit the config.ini
file once again.nano ~/witness_node_data_dir/config.ini
witness-id = "your_witness_id"
private-key = ["block_signing_key", "private_key_for_your_block_signing_key"]
witness_node
Once again, we need to wait for the node to sync the blocks to use the cli_wallet. After the sync, you can vote for yourself. Back in the second command line window:
cli_wallet
unlock your-password-here
vote_for_witness created-username created-username true true
Now you can check your votes to verify it worked.
get_witness your_witness_account
Congrats! You've successfully installed your Witness node using GitLab artifacts!
🎊
Up until this point we have been running the node in the foreground which is fragile and inconvenient. So let's start the node as a service when the system boots up instead.
After that, it would be smart to create a backup server to enable you to make software updates, troubleshoot issues with the node, and otherwise take your node offline without causing service outages.
You've got a Witness node. Now you'll need a BOS node. And since you're in the node making mood, how about a SON too?
If you have a node that is accessible from the internet (for example, an API or Seed node) it would be wise to enable SSL connections to your node.
Witness: An independent server operator which validates network transactions.
Witness Node: Nodes with a closed RPC port. They don't allow external connections. Instead these nodes focus on processing transactions into blocks.
Last modified 1yr ago