Running a PoB Prover Client
Steps to run a PoB Prover Client
Prerequisites
Before you begin, ensure you have the following
Docker (version 23.0.0 or above, refer: https://docs.docker.com/desktop/install/linux-install/)
Instance comparable to a t2 micro (1 vcpu, 1GB RAM and 1GB harddisk),
Running your Prover client
There are two aspects in setting up the prover,
Registration: so the challengers are aware of it
Running: so the challengers can engage with it
Here's how to get the provers successfully running
Key Points to consider before proceeding...
Ports to be opened if using public IP:
Incoming ports to be opened (TCP & UDP ):
11112
22223
33334
44445
55556
Outgoing ports: Allow all
Setting up the Prover
You can provide the private key (for example, generated from Metamask) which will be used by the Witnesschain's PoB Prover client.
Use ECDSA Keypairs
Store the prover's private key in the file (Make sure you keep track of the file name and its location, as it would be refered later)
echo "YOUR_PROVER_PRIVATE_KEY" > my_prover_private.key
Prepare a configuration file
my_prover_config.json
with the following entries{ "// 1" : "----- Please change the values that has TODO -----", "claims" : { "uplink_bandwidth" : 11.0, "// 2" : "Required, uplink_bandwidth is in Mbps", "downlink_bandwidth" : 11.0, "// 3" : "Required, downlink_bandwidth is in Mbps" }, "projectName" : "My-DEPIN-Project-Name", "// 4" : "Required", "walletPublicKey" : { "// 5" : "Required - The wallet addresses where your rewards go", "ethereum" : "0x630391b032F444cB40B3603b579064817f312353", "// 6" : "TODO: Please change this to your wallet address" }, "maxChallengesPerDay" : 100, "// 7" : "The MAX no. of challenges you wish to participate per day", "// 8" : "CAREFUL :Set below two values to true - ONLY if you have public IP, but due to some issue with ISP the code is unable to detect it", "havePublicIPv4Address" : false, "havePublicIPv6Address" : false, "// 9" : "CAREFUL : Set below two values to true - ONLY if you want to force to have private IP", "havePrivateIPv4Address": false, "havePrivateIPv6Address": false, "// 10" : "Save the login, session, and challenge related data in a .sqlite file", "saveResultsInDatabase" : false }
Note:
The field
claims.uplink_bandwidth
andclaims.downlink_bandwidth
are the claimed bandwidth supported by the prover (a.k.a. upload speeds and download speeds).is the DePIN project with which the Prover is registered to provide infra services.
walletPublicKey.ethereum
is the wallet address which is usedhavePublicIPv4Address
(andhavePublicIPv6Address
) set them to true if you have a public IPv4 (or IPv6)havePrivateIPv4Address
(andhavePrivateIPv6Address
) set them to true if you want to force the use of private IPsaveResultsInDatabase
saves the login, session, and challenge related data in a .sqlite file within the container
Once you have the
config.json
ready, the prover client can be started withdocker run -d \ --network=host \ --name pob-prover \ -v ./my_prover_config.json:/app/dart/bin/pob/config/prover.json \ -v ./my_prover_private.key:/root/.config/ethereum/private.key \ witnesschain/pob-prover
If you are running a docker engine version < 21.0, you would want to give the full path to
my_prover_config.json
andmy_prover_private.key
Explanation:
docker run -d
: Runs the container in detached mode (in the background).--network=host Uses the host's network stack.
--name pob-prover Names the container as 'pob-prover'.
-v ./my_prover_config.json:/app/dart/bin/pob/config/prover.json Mounts your local config file into the container at the specified path.
-v ./my_prover_private.key:/root/.config/ethereum/provate.key Mounts your local private key file folder into the container at the specified path.
witnesschain/pob-prover: The name of the Docker image to run.
You can verify that the prover is running by looking at the container status
docker ps
Registering the Prover
You can register the prover easily with the help of our registration cli, to do so
Download our dcl-operator-cli
curl -sSfL https://witnesschain-com.github.io/install-dcl-cli | bash
Follow the steps as directed in the output of the script to add the CLI to the shell profile to be able to use the CLI from anywhere.
Prepare the config (prover registration config), (The above command also downloads a template which you can refer to) make sure you set the
prover_private_keys
to the one you provided to the client (Setting the prover Step 2)Run the following command for registration
dcl-operator-cli registerProver --config-file <path-to-prover-registration-config.json>
Post Setup
Once the setting up and registration is successful, you can check the logs from the prover client ready for challenges. (docker logs pob-prover
). Congratulations, you are now a part of our DePIN family!
Troubleshooting
As the only prerequisite is docker, make sure you are running atleast version 23.0.0 or above for the commands mentioned in the doc to work. The days might be rainy or snowy, but we've got umbrellas and sweaters! Join our Discord or Telegram—we're happy to help. :D
Last updated