Skip to content
@location-proofs

location proofs

Location Proofs

Composable, verifiable location proof plugins for verifiable applications.


Overview

The Location Proof Framework is building an open ecosystem of location verification plugins that work with the Astral Protocol. Each plugin collects location evidence from a different proof-of-location system, from device-based GPS signatures to infrastructure network measurements.

Multifactor location verification - Combine multiple proof types to increase confidence:

  • Device-based - ProofMode (PGP-signed GPS + hardware attestation)
  • Infrastructure-based - WitnessChain (network latency triangulation)
  • Future - Satellite signals, WiFi positioning, zkSNARKs, and more

Available Plugins

Plugin Type Status NPM
plugin-proofmode Device-based ✅ Alpha @location-proofs/plugin-proofmode
plugin-witnesschain Infrastructure 🚧 In development @location-proofs/plugin-witnesschain

Quick Start

npm install @decentralized-geo/astral-sdk @location-proofs/plugin-proofmode
import { AstralSDK } from '@decentralized-geo/astral-sdk';
import { ProofModePlugin } from '@location-proofs/plugin-proofmode';

const astral = new AstralSDK({ chainId: 84532, signer: wallet });

// Register plugins
astral.plugins.register(new ProofModePlugin());

// Create multifactor proof
const claim = {
  location: { type: 'Point', coordinates: [-73.9857, 40.7484] },
  radius: 100,
  time: { start: Date.now() / 1000, end: Date.now() / 1000 + 3600 }
};

const stamps = [
  await astral.stamps.create('proofmode', proofModeSignals),
  // Add more proof types for higher confidence
];

const proof = astral.proofs.create(claim, stamps);
const credibility = await astral.proofs.verify(proof);

console.log(credibility.score); // Multidimensional credibility vector

Architecture

┌─────────────────────────────────────────┐
│     @decentralized-geo/astral-sdk       │  Core framework
│  (Plugin interface, proof verification) │
└─────────────────────────────────────────┘
                    ▲
                    │ implements
                    │
    ┌───────────────┴───────────────┬─────────────────┐
    │                               │                 │
┌───────────────┐        ┌──────────────────┐   ┌─────────┐
│  ProofMode    │        │  WitnessChain    │   │ Custom  │
│   Plugin      │        │     Plugin       │   │ Plugins │
└───────────────┘        └──────────────────┘   └─────────┘
  Device-based           Infrastructure-based    Community

Plugins are responsible for:

  • ✅ Signal collection (GPS, network data, etc.)
  • ✅ Stamp creation (wrapping raw signals in standard format)
  • ✅ Internal verification (signatures, structure, signal consistency)

SDK is responsible for:

  • ✅ Spatial/temporal evaluation (haversine distance, overlap)
  • ✅ Multidimensional credibility scoring
  • ✅ Cross-stamp correlation analysis
  • ✅ On-chain attestation (via EAS)

Plugin Comparison

Aspect ProofMode WitnessChain
Trust Model Device self-signed External validators
Privacy High (on-device) Medium (IP exposed)
Accuracy GPS precision (~5-50m) City/region (~10-100km)
Hardware Required Smartphone Any internet-connected device
Verification Cost Low (crypto + SafetyNet check) Medium (network measurements)
Best For Photo/video geotagging DePIN node verification

Multifactor approach: Combine multiple compatible plugins to get high-precision device proof + independent infrastructure validation. (We're currently researching whether ProofMode and WitnessChain can be used to verify the location of the same device.)

Contributing a Plugin

Want to add a new proof-of-location system? See the Plugin Development Guide.

Plugin interface:

interface LocationProofPlugin {
  readonly name: string;
  readonly version: string;
  readonly runtimes: Runtime[];

  // Optional: Collect raw signals
  collect?(options?: CollectOptions): Promise<RawSignals>;

  // Required: Transform signals into stamps
  create(signals: RawSignals): Promise<UnsignedLocationStamp>;

  // Optional: Sign stamps
  sign?(stamp: UnsignedLocationStamp, signer: StampSigner): Promise<LocationStamp>;

  // Required: Verify stamp validity
  verify(stamp: LocationStamp): Promise<StampVerificationResult>;
}

Research

Explore the academic foundations of proof-of-location systems:

Resources

Ecosystem

Location Proofs is part of the broader Astral ecosystem:

License

All plugins are MIT licensed. See individual repositories for details.


Built with ✨ by the Astral community

Popular repositories Loading

  1. research research Public

    Research and exploration for location proof systems

    Python

  2. plugin-proofmode plugin-proofmode Public

    ProofMode location proof plugin for the Astral Location Proof Framework

    TypeScript

  3. plugin-witnesschain plugin-witnesschain Public

    WitnessChain location proof plugin for the Astral Location Proof Framework

    TypeScript

  4. .github .github Public

    Community health files for location-proofs organization

  5. plugin-gpsd plugin-gpsd Public

    GPS daemon location proof plugin for Astral Protocol

    TypeScript

  6. plugin-geoclue plugin-geoclue Public

    GeoClue2 D-Bus location proof plugin for Astral Protocol

    TypeScript

Repositories

Showing 8 of 8 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…