G TRIP·GyID

Built on the IETF TRIP draft

Prove you are human with the road you actually walked

Geoyuan ID — short for GyID

GyID is a non-transferable, non-forgeable identity that never reveals your location. No documents, no face scan, no password. It accumulates from the way you really live and move.

  • ✓ No documents, face or password
  • ✓ Raw GPS never uploaded
  • ✓ One identity per person
  • ✓ Verifiable on-chain
breadcrumb chain α ∈ [0.30, 0.80]
#0 8a31aa4282effff
#1 8a31aa4282f3fff
#2 8a31aa4282f7fff
#3 8a31aa42867ffff
H3 r10
quantized on device
Ed25519
per breadcrumb
SHA-256
block hash

Why GyID is different

Bots can register ten thousand accounts overnight, but they cannot fake a life. Human movement has a statistical signature that scripts do not reproduce.

Only a real person can hold one

Human displacement follows a power law: the spectrum of your movement decays like 1/f^α with α in the pink-noise band. Synthetic walkers land flat (α≈0) or drift brown (α≳1.2) — separable by a single statistic.

Your location is never uploaded

Every fix is quantized on-device into an H3 cell (res 10, about 15,000 m²) and only the cell id, a context digest and a signature are transmitted. Even the verifier cannot reconstruct where you have been.

It cannot be bought, lent or held for you

Each presentation is bound to a fresh one-time challenge and answered live by the device holding the trajectory. Screenshots, recordings and account handovers all fail.

No name, no sign-up

Your identity is a key pair generated on your device. The relying party learns "a human being" — never who you are.

Four steps to a Geoyuan ID

Nothing is registered anywhere. Everything accumulates locally, then gets proven.

  1. 01

    Create an identity

    A key pair is generated in your browser and stays on this device. No password to remember — your TRIP trajectory is the credential.

  2. 02

    Collect breadcrumbs

    While you move, each fix becomes a signed breadcrumb: H3 cell, timestamp, context digest and previous block hash. One every 15 minutes or longer.

  3. 03

    Seal epochs and anchor

    Every 100 breadcrumbs are sealed into a Merkle root. Roots are registered on-chain (Base) as a public existence proof — aggregate values only.

  4. 04

    Answer a live challenge

    A relying party sends a nonce; the verifier pushes it over a real-time channel; your device signs it. The verifier issues a Proof-of-Humanity certificate bound to that nonce.

The trajectory, without showing the trajectory

Your raw track never leaves the device. Each stage drops information on purpose — only an anchored, statistical proof survives.

Raw track

GPS fixes are collected locally on your device.

Quantize to H3

Each fix snaps to a ~15,000 m² hex cell; coordinates are dropped.

Sign breadcrumbs

Cells become a hash-linked, Ed25519-signed chain.

Seal the epoch

Every 100 breadcrumbs collapse into one Merkle root.

Anchor + PoH

The root is anchored on-chain; the verifier returns statistics only.

The classic criticality engine

The protocol prescribes deterministic, interpretable statistics. GyID implements them byte-for-byte as the interoperability baseline; AI may only add separately-signed evidence.

PSD scaling exponent α

Displacements between consecutive H3 cell centres form a series. A naive DFT gives the power spectrum; a log-log regression gives α. Biological range: 0.30–0.80, centred at 0.55.

Truncated Lévy fits β and κ

The step-length distribution P(Δr) ∝ Δr^(−β)·e^(−Δr/κ) is fitted per epoch by maximum likelihood. Human β typically falls in 1.50–1.90.

Levy–PSD bridge check

α ≈ (3 − β)·g with g expected in 0.3–0.7. A mismatch suggests data-quality problems or adversarial manipulation of a single statistic.

Six-component Hamiltonian

Spatial, temporal, kinetic, flock, contextual and structural terms combine into an anomaly score with NOMINAL / ELEVATED / SUSPICIOUS / CRITICAL levels.

The trust score, and what each level means

T = 40·min(n/200,1) + 30·min(unique/50,1) + 20·min(days/365,1) + 10·chain_integrity. A failed criticality test caps T at 50.

level breadcrumbs meaning
Bootstrap 0 – 63 PSD is not computed yet. Shown honestly as a growing identity.
Provisional 64 – 199 PSD available but high variance. Enough to claim a handle.
Stable 200 – 255 Variance below 0.05. Reliable positive classification.
High confidence 256+ Suitable for high-stakes relying-party decisions.

What is in the repository

Six Rust crates, one Solidity contract and two front-ends, all open source.

trip-core

Rust

Deterministic CBOR, Ed25519, breadcrumb hash chain, epochs and Merkle roots, liveness, PoH certificates, DID/TIT, the criticality engine and EVM anchor encoding.

trip-server

Rust

The verifier: evidence intake with chain rules, Active Verification over WebSocket, PoH issuance and the .well-known policy document.

trip-cli

Rust

The gyid command: identity, collection, verification, did/tit, on-chain anchoring and population calibration.

gyid-wasm + web console

WASM

The browser attester. All cryptography is the same Rust code compiled to WebAssembly — this site uses it directly.

GeoTITRegistry.sol

Solidity

On-chain existence registry: register a public key, anchor epoch roots, claim a handle. No tokens, no coordinates, verifier-gated.

gyid-android

Kotlin

Native collector with a foreground service, resumable upload and the same verification flow.