Economic Primitive
Markovian Protocol / Provenance Lineage

TRACE Live

A COMMIT stamp can declare what it was derived from. The references are bound inside the committed bytes, so the doors become nodes, the references become edges, and the collection becomes one provenance lineage. TRACE is the function that walks a stamp's references and verifies the whole lineage. It returns a verified map of the graph, not a verdict. Provenance, not truth.

The lineage lives inside the committed bytes

A traceable payload declares what each stamp was derived from. Every reference is bound inside the bytes the stamp commits to, so you cannot re-point or alter it without changing the stamp's hash, which cascades down the whole lineage. A reference placed in an outer wrapper would be a soft pointer, re-writable at will and worthless for provenance. The link has to be in the pre-image.

# what the stamp derived from is inside the bytes it commits to payload = { "schema": "markovian-provenance/v1", "derived_from": [ { "merkle_root": prior_root, "data_hash": prior_hash, "relationship": "derivedFrom" } ], "body_hash": sha256(content), } data_hash = sha256(canonical(payload)) # the lineage links are bound here

The relationship vocabulary is reused, not invented: derivedFrom (W3C PROV), with parentOf / componentOf / inputTo available from C2PA for edits and assembly. The payload rides in each door's native envelope, unchanged otherwise, which is what lets one lineage span them.

A map, not a verdict

An edge asserts that B was derived from A, and because each node is Bitcoin-anchored, that A existed before B. It does not assert that A is correct, or that B used A faithfully. TRACE verifies the integrity of the lineage, the commitments and the links, and hands back the verified map. The consumer decides what to do with it. A function that returned a verdict would be smuggling a truth claim back in, so TRACE never does.

One property falls out for free: a node anchored at block N that commits an earlier stamp's root proves that earlier stamp existed before block N. Walking the lineage yields a verifiable temporal order over the whole chain of derivation, anchored to Bitcoin.

One lineage spanning unmodified envelopes

A real run: a regime signal stamped and carried inside an A2A artifact, and a trade decision stamped and carried inside a CloudEvent that declares the first stamp in its lineage, in-band. TRACE walks from the second node to the first across the two different doors and verifies both nodes, the link, and both Bitcoin anchors.

TRACE walk, A2A → CloudEvents
node B, doorCloudEvent (trade-decision)
node B rootb1fdd92f9c2712dd2bd247dc0d1d3314b20cc005f3cf80839d08278cc203df8e
linkderivedFrom verified
node A, doorA2A artifact (regime-signal)
node A root2d6f5580ee94e7b7c590956031377e8d6875a1d8d3cc8524af5376e3b965fa17
both nodeshash-bound bitcoin-anchored
lineageVALID

tamper testforge node B's lineage reference → hash-bind fails
a soft pointer cannot be forged undetected, because the reference is inside the committed bytes

Standing on a known foundation

Hash-linked references that chain into a tamper-evident lineage are decades-old and well understood. Git, IPLD, in-toto, and C2PA all do it. TRACE does not claim that idea. What is new is the combination: one provenance lineage whose nodes are heterogeneous records across many unmodified open-standard envelopes, each node independently anchored to Bitcoin and carrying a zero-knowledge commitment, rather than normalized into a single proprietary store. The lineage is the foundation. The cross-door span, the Bitcoin anchor, and the ZK commitment together are the part that is ours.

Verify the lineage today, collapse it tomorrow

The walkable lineage ships today and needs no new cryptography. It reuses the existing stamp exactly, a Merkle root, a Pedersen commitment, and a Bitcoin anchor, and verification cost is linear in the size of the lineage. That is the whole product: hand TRACE a stamp, get back its verified lineage.

The roadmap is to fold an entire lineage into a single proof with constant-cost verification, using recursive proof composition over the same BN254 curve the protocol already uses. It is genuinely hard, which is why it is a later milestone, gated on real demand rather than built ahead of it. Build the lineage, earn the fold.

Check it without trusting this page

The public verifier returns the record behind each root, with no account and no dependency on this site. The cross-door PoC is a single runnable file in the repository.