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