Based on the requirement, witness node can be installed using any of the below procedure.
Setup a Witness Node using a pre-configured Docker container
This document assumes that you are running Ubuntu 18.04 or 20.04. Other Debian based releases may also work with the provided script.
The following steps outline the Docker installation of a Witness Node:
Preparing the Environment
Installing Docker
Installing the Peerplays image
Starting the Container
Update the config.ini
File
Create a Peerplays Account
Update config.ini
with Witness Account Info
Start the Container and Vote for Yourself
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.
Please see the Witness node hardware requirements.
For the docker install on Peerplays Mainnet, the requirements that we'll need for this guide would be as follows (as per the hardware requirements doc):
Then we'll clone the Peerplays Docker repository.
It is required to have Docker installed on the system that will be performing the steps in this document.
Docker can be installed using the run.sh
script inside the Peerplays Docker repository:
The run.sh
script contains many commands to make managing the node easy. A list of all its commands are listed in section 9 of this document.
Since the script has added the currently logged in user to the Docker group, you'll need to re-login (or close and reconnect SSH) for Docker to function correctly.
You can look at https://docs.docker.com/engine/install/ to learn more on how to install Docker. Or if you are having permission issues trying to run Docker, use sudo
or look at https://docs.docker.com/engine/install/linux-postinstall/.
Copy the example.env
to .env
located in the root of the repository (ie peerplays-docker folder)
We're going to have to make some changes to the .env
file so we'll open that now using a text editor.
Here are the important parts of the .env
file. These will be the parts that need to be edited or optionally edited. The rest of the file should be unchanged.
Use run.sh
to pull the node image:
With at least 8GB of disk space available in your home folder, we'll start the node. This will create and/or start the Peerplays docker container.
Then we'll check the status of the container to see if all is well.
Last we'll stop the container so we can make updates to the config.ini
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.
Save the changes and start the container back up.
We have successfully started the witness node and it is now ready for configuration.
Exit the cli_wallet with the quit
command. We'll stop the container and edit the config.ini
file once again.
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.
Now you can check your votes to verify it worked.
Next step is to configure the witness node based on the requirement. There are different ways in which the nodes can be configured such as block producer, SON node, API node, and delayed node.
Becoming a block producer is one of the important steps as it is mandatory to use the node for transactions across the wallet. Follow the steps from the below document to become a block producer,
There are other ways it which the node can be configured. The below document showcase the other ways available for node configuration.
run.sh
commands liststart
- starts seed container
start_son
- starts son seed container
start_son_regtest
- starts son seed container and bitcoind container under the docker network
clean
- Remove blockchain, p2p, and/or shared mem folder contents, seed, bitcoind, and son docker network (warns beforehand)
dlblocks
- download and decompress the blockchain to speed up your first start
replay
- starts seed container (in replay mode)
replay_son
- starts son seed container (in replay mode)
memory_replay
- starts seed container (in replay mode, with --memory-replay)
shm_size
- resizes /dev/shm to size given, e.g. ./run.sh shm_size 10G
stop
- stops seed container
status
- show status of seed container
restart
- restarts seed container
install_docker
- install docker
install
- pulls latest docker image from server (no compiling)
install_full
- pulls latest (FULL NODE FOR RPC) docker image from server (no compiling)
rebuild
- builds seed container (from docker file), and then restarts it
build
- only builds seed container (from docker file)
logs
- show all logs inc. docker logs, and seed logs
wallet
- open cli_wallet in the container
remote_wallet
- open cli_wallet in the container connecting to a remote seed
enter
- enter a bash session in the currently running container
shell
- launch the seed container with appropriate mounts, then open bash for inspection
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.
Setup a Witness Node using a pre-compiled GitLab artifact
This document assumes that you are running Ubuntu 20.04.
The following steps outline the artifact installation of a Witness Node:
Prepare the environment
Download and extract the artifacts
Copy the artifacts to the proper locations
Update the config.ini
File
Start the node
For the GitLab artifact install, the requirements that we'll need for this guide would be as follows:
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:
Cmake is an open-source, cross platform tool that uses independent configuration files to generate native build tool files specific to the compiler and platform. It consists of precompiled binaries and the cmake tools makes configuration, building, and debugging much easier.
Install the cmake using the below commands:
Boost libraries provide free peer-reviewed portable C++ source libraries and it can be used across broad spectrum of application.
Install Boost libraries using the below commands:
The components libzmp and cppzmp are used for relaying messages between nodes.
First, install libzmq using the below commands:
Next, install cppzmp using the below commands:
GSL is the GNU scientific library for numerical computing. It is a collection of routines for numerical computing in e.g. linear algebra, probability, random number generation, statistics, differentiation, etc.,
Install the gsl using the below commands:
The libbitcoin toolkit is a set of cross platform C++ libraries for building bitcoin applications. The toolkit consists of several libraries, most of which depend on the base libbitcoin-system library.
Install the libbitcoin using the below commands:
Doxygen is a software utility that recognizes comments within C++ code that have a certain form, and uses them to produce a collection of HTML files containing the information in those comments.
Install the Doxygen using the below commands:
Perl is a high-level, general-purpose, interpreted, dynamic programming language originally developed for text manipulation.
Install the Perl using the below commands:
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.
Now we can run start the node with:
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.
Save the changes and start the Witness back up.
We have successfully started the witness node and it is now ready for configuration.
Next step is to configure the witness node based on the requirement. There are different ways in which the nodes can be configured such as block producer, SON node, API node, and delayed node.
Becoming a block producer is one of the important steps as it is mandatory to use the node for transactions across the wallet. Follow the steps from the below document to become a block producer,
There are other ways it which the node can be configured. The below document showcase the other ways available for node configuration.
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.
Complete! You've installed your Witness node and you're up and running.
After configuring the node with desired configuration, click below to learn the NEXT steps
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 for Ubuntu or use to use it on this version.
Please see the general Witness .
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 page. The link in the code below refers to release version 1.6.1
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.
Congrats! You've successfully installed your Witness node using GitLab artifacts!
After configuring the node with desired configuration, click below to learn the NEXT steps
Node Type?
CPU
Memory
Storage
Bandwidth
OS
Witness
4 Cores
16GB
100GB SSD
1Gbps
Ubuntu 18.04
Node Type? | CPU | Memory | Storage | Bandwidth | OS |
Witness | 4 Cores | 16GB | 100GB SSD | 1Gbps | Ubuntu 20.04 |