G TRIP·GyID

Architecture

How the pieces fit together

Three roles talk to each other: the attester holds the trajectory, the verifier computes the statistics, the relying party asks the question. Only aggregate values cross the boundary.

Layers

Attester

Device side — holds the only copy of the trajectory

  • ▸ Generates and stores the identity key on this device
  • ▸ Quantizes GPS to H3 before anything leaves the device
  • ▸ Signs each breadcrumb and maintains the local chain
  • ▸ Answers live challenges and seals epochs

Verifier

Server side — computes statistics, never sees coordinates

  • ▸ Validates chain rules, signatures and ordering
  • ▸ Runs the criticality engine over quantized cells
  • ▸ Drives Active Verification over a WebSocket channel
  • ▸ Issues PoH certificates under a published policy

Relying party

Whoever needs to know you are human

  • ▸ Generates a nonce and asks the verifier for a certificate
  • ▸ Verifies the certificate signature against the published verifier key
  • ▸ Reads only statistics — α, β, confidence, trust score

Anchor

Public existence proof, deliberately minimal

  • ▸ Registers the mapping from public key to DID suffix once
  • ▸ Stores epoch Merkle roots with strictly contiguous numbering
  • ▸ Stores handle claims above a threshold
  • ▸ No tokens, no coordinates, no delegatecalls

Workspace layout

trip-core Protocol data structures, cryptography, criticality engine, anchor encoding
trip-server Verifier HTTP/WS service with in-memory storage
trip-cli (gyid) Command-line identity, collection, verification, anchoring, calibration
gyid-shared Business logic shared by CLI, web and mobile
gyid-wasm Browser attester bridge, compiled from the same Rust core
gyid-web-astro This site: portal, documentation and the online console
contracts GeoTITRegistry.sol and its compiler / in-process EVM tooling
gyid-android Native Android collector and verifier client

Verifier API

POST /v1/evidence Submit a batch of signed breadcrumbs; the server validates chain rules
GET /v1/identity/:hex Chain head, breadcrumb count and unique cell count for one attester
POST /v1/verify Create a challenge bound to an RP nonce (Active Verification)
WS /v1/challenge Real-time channel carrying challenges down and responses up
GET /v1/poh/:challenge_id Fetch the issued certificate for a challenge
GET /v1/explorer Aggregate view over all attesters known to this verifier
GET /.well-known/verifier.json Verifier public key, policy thresholds and published limits