At-home watchtowers

Steps to run a Witness Chain watchtower client to validate location claims

The PoL Watchtower Client Node participates in the Proof-of-Location (PoL) protocol by verifying location claims made by network nodes.

Watchtower nodes can run on community members' laptops, desktops, or cloud instances. Nodes are selected to participate in PoL watchtowers via a probabilistic algorithm.

Prerequisites

  • Docker: Version 23.0.0 or higher (Install Docker).

  • Instance: Minimum t2.micro equivalent (1 vCPU, 1GB RAM, 5GB disk). Recommended: 2 cores, 4GB RAM, 10GB disk.

  • ECDSA KeyPair ( This video demonstrates how you can use MetaMask to export one ). This will be used for registration & signing purposes.

  • Ports to Open (for public IP only)

    • Incoming (TCP & UDP): 11112, 22223, 33334-33336, 44445-44447, 55556

    • Outgoing: Allow all.

Running the Watchtower Client

1. Configuring watchtower.env File

  • Create a watchtower.env configuration file with the following example entries.

  • If you are running this at home and DON'T have a public IP, you need to change the following entries only in the watchtower.env file

    • latitude, longitude, region, privateKey, walletPublicKey

latitude=37.0151
longitude=-79.0392
radius=1000
privateKey=<your_private_key>
walletPublicKey=<your_public_key>
saveResultsInDatabase=false
submitResultsToContract=false
rpcUrl=https://rpc.witnesschain.com

You can get detailed explanation about these parameters here

Latitude and Longitude are optional. If not provided, they will be automatically determined based on the approximate location of the IP address. However it's recommended to be set for better accuracy.

2. Running the Watchtower Client

Start the challenger client:

docker run -d \
  --network=host \
  --name pol-watchtower \
  --env-file ./watchtower.env \
  witnesschain/infinity-watch:1.0.2

Verify the client is running:

docker ps

If you see an error about "registration required on DCL contract," make sure to complete the watchtower key registration.

Post-Setup

Check logs using:

docker logs -f pol-watchtower

Once the client is ready, you're part of Witness Chain's Watchtower family!

Troubleshooting

The days might be rainy or snowy, but we've got umbrellas and sweaters!. For support, join our Discord or reach out on Telegram.

FAQs

What do the parameters in watchtower.env mean ?

 
latitude=37.015, // Required. Latitude of the machine running the challenger client
longitude=-79.039, // Required. Longitude of the machine running the challenger client

radius=1000 // Optional. Accuracy in meters


privateKey= //  PoL signing key (Watchtower Key)
walletPublicKey= //  Ethereum Wallet addresses where your contributions go (Operator Key)

saveResultsInDatabase=true // Saves the login, session, and challenge related data in a .sqlite file within the container
rpcUrl=https://rpc.witnesschain.com // Witness chain's Layer 2 Chain which holds the proofs of location

What do the parameters in the docker run mean?

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

  • --network=host
    Uses the host's network stack.
  • --name pol-watchtower
    Names the container as 'pol-watchtower'.
  • --env-file ./watchtower.env
    The container's environment is set using the attributes specified in 'watchtower.env' file
  • witnesschain/infinity-watch:1.0.2: The name of the Docker image to run.

Last updated