Skip to main content
Proof of Location is an Offline Protocol service that records witness-attested location evidence. Offline Protocol’s backend commits a geohash of the claimed location to an EigenLayer AVS contract on Ethereum Sepolia testnet. Operator witnesses measure network round-trip time and sign individual attestations. This is not a zero-knowledge proof, a decentralized consensus result, or proof that a person is physically present. Use it to evaluate location-evidence workflows, not as the sole control for attendance, payments, compliance or geographic access.

What the service returns

The submission API returns id, commitment, geoHash, transaction and configured operator endpoints. id is a random task ID; see task identifiers. A successful submission is not a successful witness attestation. Each witness returns its own result over WebSocket; there is no final-proof aggregation step.

Access and privacy

Enable Proof of Location in the application’s Proof of Location tab in the developer portal. Every plan includes verifications (250 a month on Free), and usage beyond the quota is billed at the published rate; see hosted plans and usage. Proof of Location runs on the Ethereum Sepolia testnet, so a plan allowance or charge does not make it a mainnet service. 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. The backend controls the submitting key and the operator list. The current configuration can contain a single witness. Slashing is not implemented in the service workflow. Start with Submit a location claim, then review architecture and security boundaries. React Native 0.3.3 and React 0.2.0 remove the old Proof of Location hooks. The hooks in older versions do not complete the witness evidence flow. Use the standalone @offline-protocol/pol package (0.1.2 on npm), or the raw API flow.