The protocol
What TRIP actually specifies
GyID implements draft-ayerbe-trip-protocol-04 from the IETF RATS working group. The specification is deliberately narrow: it defines evidence, not transport, naming or anchoring. Those gaps are where this implementation contributes companion work.
baseline: draft-ayerbe-trip-protocol-04 · IETF RATS
01
Breadcrumbs
The unit of evidence. A CBOR map with nine fields, signed with Ed25519; the block hash is SHA-256 over the full encoding.
- ▸ index — position in the chain, contiguous from 0
- ▸ identity — Ed25519 public key of the attester
- ▸ timestamp — Unix seconds
- ▸ h3 cell + resolution — 7 to 10, default 10
- ▸ context digest — SHA-256 over h3 / time bucket / Wi-Fi / cell / IMU parts
- ▸ prev hash — previous block hash, null at genesis
- ▸ meta flags — including exploration sessions
- ▸ signature — covers the deterministic CBOR of fields 0–7
02
Chain rules
Rules that make fabrication expensive, applied identically on device and on the verifier.
- ▸ Consecutive breadcrumbs in the same H3 cell are rejected
- ▸ At most 10 breadcrumbs accumulate per cell
- ▸ Minimum interval 15 minutes; explicit exploration sessions may shorten it to 5
- ▸ Indices must be contiguous and each breadcrumb must reference the previous block hash
- ▸ Every breadcrumb carries its own Ed25519 signature
03
Epochs and anchoring
Breadcrumbs are never written to a chain. They are sealed into a Merkle root, and only that root is anchored.
- ▸ Default epoch size is 100 breadcrumbs
- ▸ The root commits to the ordered set, plus the count of unique cells
- ▸ The root is signed by the identity key
- ▸ Anchor targets are chain-agnostic; this implementation uses Base
04
Proof of Humanity certificate
The output a relying party actually consumes. Fifteen CBOR fields, signed by the verifier, containing statistics only.
- ▸ identity, issued-at, epoch count, breadcrumb and unique-cell counts
- ▸ α, β, κ, π and the criticality confidence
- ▸ trust score and validity window
- ▸ RP nonce — mandatory, binds the certificate to one request
- ▸ chain head hash — mandatory, binds it to one exact evidence set
05
Active Verification
The only mode this deployment promotes. A pre-recorded trajectory cannot answer a challenge that did not exist when it was captured.
- ▸ The relying party generates a 16-byte nonce
- ▸ The verifier pushes a challenge over a real-time channel
- ▸ The attester signs the nonce together with the chain head and expected index
- ▸ The verifier checks the response, then issues a PoH bound to that nonce
06
Multi-verifier by design
Any compliant implementation can act as a verifier with its own Ed25519 key; an attester may submit to several and a relying party picks whom to trust.
- ▸ There is no privileged verifier in the protocol
- ▸ The verifier publishes its key and policy at a well-known URL
- ▸ This project positions itself as the first public verifier, not the only one