# Architecture

<figure><img src="/files/keRonD7mdDtkpyNWW40q" alt=""><figcaption></figcaption></figure>

## Challenger Selection Logic for Decentralized Proof of Location

This technical note describes the logic and constraints for selecting challenger nodes in a decentralized proof of location (PoL) system. The selection process ensures that challengers are both active and capable of participating in the verification process.&#x20;

{% hint style="info" %}
The selection process is currently centralized, carried out by the Challenge Coordinator
{% endhint %}

### <mark style="color:blue;">Inclusion Criteria</mark>

#### 1. Activity Status

* Challengers must have been active within the last 60 seconds
* This ensures only currently available nodes are selected for challenges

#### 2. Wallet Requirements

* All challengers must have an associated wallet address
* Wallet address is used for:
  * Identity verification
  * Transaction signing

#### 3. IP Address Rules

**If Prover with Private IP**

* Only challengers with public IP addresses are eligible
* This ensures reliable communication paths
* Prevents potential NAT traversal issues

**If Prover with Public IP**

* Both public and private IP challengers are eligible
* Allows for greater network participation
* Must still meet other selection criteria

### <mark style="color:blue;">Exclusions</mark>

#### 4. Participation Status

* Paused devices are excluded
  * Prevents selection of maintenance mode devices
  * Allows nodes to opt-out temporarily
* Currently active challengers are excluded
  * Prevents concurrent challenge participation
  * Ensures resource availability

#### 5. Geographic Constraints

* Maximum distance: 2000 kilometers from the prover. Determined by the `lat, long` config&#x20;
* Distance calculation:
  * Based on registered coordinates in the initial setup phase
  * Uses great circle distance formula
* Purpose:
  * Ensures realistic challenge timeframes
  * Reduces network latency impact
  * Maintains challenge credibility

#### 6. Selection Limits

* Maximum of 128 challengers per challenge
* Self-selection prevention:
  * Prover cannot be selected as its own challenger
  * Verified via public key comparison


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.witnesschain.com/infinity-watch/proof-of-location-mainnet/architecture.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
