Code and permanence

A registry that outlives whoever runs it.

The specification, the code and the public data are open, and every day is anchored in Bitcoin. If the operator disappeared tomorrow, anyone could check what is there and keep serving it.

Public repository in preparation

The code will be published in a public repository under the licences below. Until then, the verifier and the reference code can already be downloaded here.

What is open

Every piece, with its licence.

PieceLicenceWhat it allows
SpecificationCC BY 4.0Copy, adapt and implement, with attribution.
PID reference implementation (parcid.py, parcid.js)CC0 1.0Public domain: use it without conditions.
Independent verifier (parcid-verify.js, cli.mjs)CC0 1.0Check records, proofs and exports without asking the registry.
Resolver, API and operations toolApache-2.0Run a mirror or a compatible registry, with a patent licence.
Public data and daily exportCC0 1.0Reuse the public part of the registry without conditions.
Operator comparison modelsNot openThe physical signature format is public; the engine that compares belongs to each operator.

Transparency

A ledger that can only grow.

  1. Append-only ledger

    Every sealed record enters a ledger with a sequence number. Nothing is deleted or corrected: an amendment is another record.

  2. Daily Merkle tree

    Each UTC day closes into an RFC 6962 Merkle tree. Every record has its inclusion proof at /api/v1/parcels/{PID}/proof.

  3. Chained statement

    The day’s root goes into an Ed25519-signed statement that includes the fingerprint of the previous day’s.

  4. Bitcoin anchor

    The statement is anchored with OpenTimestamps. No tokens, no NFTs and no wallets: just a fingerprint inside a block.

Registry status

Mirrors

How to run a mirror.

A mirror needs neither permission nor the list of PIDs: the export identifies each unit by its own salted fingerprint, so a mirror resolves a PID it is asked about by recomputing that fingerprint with each unit’s salt, without ever being able to extract the list.

  1. Download the daily export

    GET /api/v1/export returns the index; each .jsonl.gz file carries the units, the ledger records, the anchors and a signed manifest. CC0.

  2. Verify it before serving it

    node cli.mjs export parcid-export-YYYYMMDD.jsonl.gz recomputes roots, signatures and the chain of days. If anything is off, do not serve it.

  3. Deploy the resolver

    Once the repository is public: PHP 8.4 and MySQL 8, with the same read API. Publish your own /.well-known/parcid saying which registry you mirror.

  4. Follow it every day

    Import the new export, check that its first statement chains to the last one you had and watch that the daily anchor keeps coming.

Verify without us

Not even this site is needed.

The verifier is a single JavaScript file with no dependencies that works the same in the browser and on Node 20 or later. Download it with cli.mjs and run it wherever you like.

It exits with 0 if everything verifies and 1 if something is off: handy for scheduled jobs.

Or in the browser

node cli.mjs proof PID-1-7QC3-Z79D-G6RZ-8E

Inclusion proof of every record of a unit, signature and the day’s anchor.

node cli.mjs record record.json

A record kept by its owner: fingerprint and registry signature.

node cli.mjs export parcid-export-YYYYMMDD.jsonl.gz

A full export: content, manifest, roots, chain and signatures.

node cli.mjs ots file.ots --bitcoin

A standalone OpenTimestamps proof, checked against a Bitcoin explorer.

Permanence

Commitments so that it lasts. Commitments · not yet published

This is what the operator commits to do. As each piece is published, its link or identifier will appear here.

Export on Arweave

Every daily export will be copied to Arweave, storage paid once and designed not to be deleted.

Code in Software Heritage

The public repository will be archived in Software Heritage, the universal archive of source code.

Specification on Zenodo

Every version of the specification will be deposited on Zenodo with a DOI, so it can always be cited and found.

Custody at cost

Evidence an owner wants to keep will have perpetual custody at cost price.

90-day continuity switch

If the operator stops publishing the daily anchor for 90 days in a row, the handover commitment triggers by itself: any mirror holding the verified chain may carry on the registry, with the same specification and the same PIDs.