Witness Chain
  • Introduction to Witness Chain
  • Infinity Watch
    • Proof of Location (Mainnet)
      • Introduction
      • Process flow
      • Architecture
      • Run a watchtower!
        • For Partner node runners
          • Running on Akash Cloud
          • Running on SuperNoderz
        • EigenLayer operators
          • Running a PoL Watchtower
          • Witness Chain AVS opt-in guide
        • At-home watchtowers
        • For DePIN/Validator Node provider
      • Demos
      • PoL Research
    • APIs
      • Campaign APIs
        • Key Terminologies
        • Authentication
        • Create Campaign
        • Edit campaign
        • Get Photo feed from campaign
        • Get Campaigns
      • Challenge APIs
        • Overview
        • Getting Started
  • Resources
    • Blogs
      • How Proof of Location Works
      • Redefining Geolocation Compliance: Witness Chain & Predicate
    • 🗞️Research
    • 🎙️Talks and Podcasts
    • 🤝Community
    • ⚖️Smart Contracts
    • File a bug
  • Archive
    • Introduction
    • Proof of Diligence Watchtower Protocol
      • How it works
      • Diligence Watchtower Roadmap
      • Watchtower Architecture
      • Chains watched
      • Smart Contracts
      • Quick Links
      • FAQs
    • For the node operators
      • Node requirements
      • Watchtower setup
        • [ARCHIVE] Mainnet Setup
          • L2 Archive Node Setup guide
        • Holesky Setup
          • L2 Archive Node Setup guide
        • Migration from archive to full node
      • Monitoring
    • Research
    • Keys Management
    • Proof of Bandwidth
      • Introduction
      • Architecture
      • For the node operators
        • Running a PoB Challenger Client
        • Running a PoB Prover Client
      • Demos
      • Research
    • 🤝Watchtower Protocol (Architecture v1)
      • 🗼How it works
      • 📅Watchtower Roadmap
      • 🏦Watchtower Architecture
      • 🔗Chains supported
Powered by GitBook
On this page
  • Running your Prover client
  • Key Points to consider before proceeding...
  • Setting up the Prover
  • Registering the Prover
  • Post Setup
  • Troubleshooting
  1. Archive
  2. Proof of Bandwidth
  3. For the node operators

Running a PoB Prover Client

Steps to run a PoB Prover Client

PreviousRunning a PoB Challenger ClientNextDemos

Last updated 7 months ago

Prerequisites

Before you begin, ensure you have the following

  • Docker (version 23.0.0 or above, refer: )

  • 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...

  1. 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

  1. 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

  2. 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:

    1. The field claims.uplink_bandwidth and claims.downlink_bandwidth are the claimed bandwidth supported by the prover (a.k.a. upload speeds and download speeds).

    2. is the DePIN project with which the Prover is registered to provide infra services.

    3. walletPublicKey.ethereum is the wallet address which is used

    4. havePublicIPv4Address (and havePublicIPv6Address) set them to true if you have a public IPv4 (or IPv6)

    5. havePrivateIPv4Address (and havePrivateIPv6Address) set them to true if you want to force the use of private IP

    6. saveResultsInDatabase saves the login, session, and challenge related data in a .sqlite file within the container

  3. Once you have the config.json ready, the prover client can be started with

    docker 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 and my_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 

Now the prover is running successfully but not yet registered, you may find the logs stating the same. The prover will function as intended as soon as registration is done.

Registering the Prover

You can register the prover easily with the help of our registration cli, to do so

  1. 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.

  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!

We publish images (x86 & arm64) with the tag latest and by the git tag, the latest will always point to the new and up to date image. In order to pull the latest image, make sure you don't have an older release of latest to avoid using cached images.

You can remove the older images by

docker rmi witnesschain/pob-prover

Troubleshooting

Prepare the , (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)

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 or Telegram—we're happy to help. :D

https://docs.docker.com/desktop/install/linux-install/
config (prover registration config)
Discord