Running a watchtower

Steps to run a Witness Chain watchtower client (PoL Challenger Client)

The PoL Challenger Client Node is a DePIN Challenger node that participates in the PoL (Proof-of-Location) protocol and measures the location claims made by a DePIN Prover.

PoL Challenger Client Nodes can be run on community members’ laptops, desktops or even on cloud instances. As long as the node is running, there is a probabilistic algorithm (based on stake in the upcoming releases) that determines if the node will participate in a PoL challenge from the network.

Before a node can participate as PoL Challenger, it has to prove it's own capabilities (run a prover to prove it's own location - this mechanism is inbuilt in the challenger client container)

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 5GB harddisk), though we recommend 2 cores, 4 GB RAM and 10 GB of storage.

  • Your operator's address/public key being whitelisted by Witness Chain.

Running your Challenger client

Explorer: https://blue-orangutan-blockscout.eu-north-2.gateway.fm/

Our chain is gasless, so you do NOT have to fund either or the operator or challenger account with tokens.

Key Points to consider before proceeding...

  1. We have 2 sets of keys - Operator Key and Challenger Key.

    1. Operator Key is the ownership key that is used for registering one or more the Challenger Key(s). Staking, Rewards, etc. if any, would be associated with this key.

    2. Challenger Key - This is the signing key for the PoL Challenger Client. Create a new Key for the same. Don't reuse the Operator Key for the Challenger Key. It has to be a ECDSA Key.

  2. Your Operator Key would have to be whitelisted by witness chain team

  3. Register your Challenger Key

  4. Ports to be opened if using public IP:

Incoming ports to be opened (TCP & UDP ):

11112
22223
33334
33335
33336
44445
44446
44447
55556

Outgoing ports: Allow all

1. Setting up the challenger keys and the config file

Use ECDSA Keypairs

  1. Create a ECDSA private key using Metamask or other utilities that will be used as Challenger Key

  2. You can pass the required configuration to the docker container env via a file or directly with -e flag in the run command (read more). Prepare a configuration file my-config-file.env with the following entries as example shown below:

latitude=37.01511676489697
longitude=-79.0392271449855
country=US
region=Virginia
city=Ashburn
radius=1000
privateKey=<my_super_secret_private_key>
walletPublicKey=<my_open_public_address>
keyType=ethereum
havePublicIPv4Address=false
havePublicIPv6Address=false
havePrivateIPv4Address=false
havePrivateIPv6Address=false
saveResultsInDatabase=false
submitResultsToContract=false
rpcUrl=https://blue-orangutan-rpc.eu-north-2.gateway.fm

Explanation:

  •  
        "latitude": 37.015, // Required. Latitude of the machine running the challenger client
        "longitude": -79.039, // Required. Longitude of the machine running the challenger client
        
        "country": "US", // Optional. Country in which the machine is located
        "region": "Virginia", // Optional. State/Region in which the machine is located
        "city": "Ashburn", // Optional. City in which the machine is located
        "radius": 1000 // Optional. Accuracy in meters
        
  • privateKey is your PoL signing key (Challenger Key)

  • walletPublicKey is the wallet addresses where your contributions go (Operator Key)

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

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

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

  1. Once you have the my-config-file.env ready, the challenger client can be started with

docker run -d \
  --network=host \
  --name pol-challenger \
  --env-file ./my-config-file.env \ 
  witnesschain/pol-challenger:0.3.4-internal

you can verify that the challenger is running by looking at the container status

docker ps 

Explanation:

  1. docker run -d: Runs the container in detached mode (in the background).

    • --network=host
      Uses the host's network stack.
    • --name pol-challenger
      Names the container as 'pol-challenger'.
    • --env-file ./my-config-file.env
      The container's environment is set using the attributes specified in 'my-config-file.env' file
    • witnesschain/pol-challenger:0.3.4-internal: The name of the Docker image to run.

You will observe the following errors in the docker container

"registration is required on DCL contract. Please register your challenger publicKey:"

Don't worry, this is normal. Once you COMPLETE STEP 2, these logs should disappear

2. Registering the Challenger Key

If you are already a whitelisted operator on Witness Chain, then you can move forward with registration, else write to us on our Discord channel or Telegram to get whitelisted.

You can register the challenger key 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. Prepare the config (challenger registration config),

    1. The above command also downloads a template which you can refer to.

    2. Make sure you set the challenger_private_keys attribute in the json file with the key, that you provided in private.key

  3. Run the following command for registration

    dcl-operator-cli registerChallenger --config-file <path-to-challenger-registration-config.json>

Ensure the operator address is correctly set in the challenger's config.json,as the contributions are attributed to the operator!

Post Setup

Once the setting up and registration is successful, you can check the logs from the challenger client ready for challenges. (docker logs pol-challenger). 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 reach out to us over Telegramβ€”we're happy to help. :D

Last updated