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.
Built on the IETF TRIP draft
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.
Bots can register ten thousand accounts overnight, but they cannot fake a life. Human movement has a statistical signature that scripts do not reproduce.
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.
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.
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.
Your identity is a key pair generated on your device. The relying party learns "a human being" — never who you are.
Nothing is registered anywhere. Everything accumulates locally, then gets proven.
A key pair is generated in your browser and stays on this device. No password to remember — your TRIP trajectory is the credential.
While you move, each fix becomes a signed breadcrumb: H3 cell, timestamp, context digest and previous block hash. One every 15 minutes or longer.
Every 100 breadcrumbs are sealed into a Merkle root. Roots are registered on-chain (Base) as a public existence proof — aggregate values only.
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.
Your raw track never leaves the device. Each stage drops information on purpose — only an anchored, statistical proof survives.
GPS fixes are collected locally on your device.
Each fix snaps to a ~15,000 m² hex cell; coordinates are dropped.
Cells become a hash-linked, Ed25519-signed chain.
Every 100 breadcrumbs collapse into one Merkle root.
The root is anchored on-chain; the verifier returns statistics only.
The protocol prescribes deterministic, interpretable statistics. GyID implements them byte-for-byte as the interoperability baseline; AI may only add separately-signed evidence.
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.
The step-length distribution P(Δr) ∝ Δr^(−β)·e^(−Δr/κ) is fitted per epoch by maximum likelihood. Human β typically falls in 1.50–1.90.
α ≈ (3 − β)·g with g expected in 0.3–0.7. A mismatch suggests data-quality problems or adversarial manipulation of a single statistic.
Spatial, temporal, kinetic, flock, contextual and structural terms combine into an anomaly score with NOMINAL / ELEVATED / SUSPICIOUS / CRITICAL levels.
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. |
Six Rust crates, one Solidity contract and two front-ends, all open source.
Deterministic CBOR, Ed25519, breadcrumb hash chain, epochs and Merkle roots, liveness, PoH certificates, DID/TIT, the criticality engine and EVM anchor encoding.
The verifier: evidence intake with chain rules, Active Verification over WebSocket, PoH issuance and the .well-known policy document.
The gyid command: identity, collection, verification, did/tit, on-chain anchoring and population calibration.
The browser attester. All cryptography is the same Rust code compiled to WebAssembly — this site uses it directly.
On-chain existence registry: register a public key, anchor epoch roots, claim a handle. No tokens, no coordinates, verifier-gated.
Native collector with a foreground service, resumable upload and the same verification flow.