Skip to main content
RTT checks make some claims implausible; they do not prevent spoofing. Treat a result as witness-attested evidence, not proof of presence.

Trust and availability

Offline Protocol controls the backend submitting key and the operator list. A deployment with one operator has a single witness. A backend, RPC, operator or network outage can prevent task completion. Contract registration alone does not make an operator discoverable to clients. The operator receives a random per-task id and coordinates from the client. Match evidence to the intended task, transaction and commitment. Client-supplied coordinates, the distance tolerance and client-controlled delay limit what timing establishes. Correlated or colluding witnesses do not automatically provide independent evidence. The contract upgrade restricting task creation to the backend is pending.

Public data

The geohash (precision 5, approximately a 5 km cell) and each task’s time remain public on Ethereum Sepolia. Task IDs are random and commitments use a secret nonce, so they do not identify the username; see task identifiers, including how older tasks differ. Public location and timing can still reveal information; this is not a zero-knowledge proof or a guarantee of anonymity. Obtain informed consent before submitting data that cannot be deleted from the chain. Offchain copies also exist: the commitment service stores the username, id, commitment, transaction and secret nonce in location_db; the indexer stores the centre point of each task’s public geohash cell; and the operator stores attestations in Postgres when LOCATION_DATABASE_URL is configured. None of them stores the submitted coordinates. These databases have no time-based expiry; the 24-hour Redis TTL applies to the operator’s cache only. Account deletion purges the user’s commitment rows (including the nonce), indexed task rows and stored attestations. Onchain Proof of Location records are permanent; historical tasks retain their old linkable IDs.

Verify the artifact

Verify each operator’s EIP-191 attestation against an approved signer and the expected chain, contract deployment, task and freshness window. Attestations are per operator. Do not treat an API 200, an indexer row or an unverified WebSocket payload as a final location proof. The current service is testnet-only. No final-proof aggregation or operational slashing mechanism is implemented in this workflow. Do not use it as the only authorization check for valuable or safety-sensitive actions.