Proof Layer

On-chain Anchoring

Binding a Merkle root to a public, independent timeline.

A Merkle root proves that a set of commitments has not changed. It does not, on its own, prove when that set existed — MERIT could compute a root today and claim it was fixed last year. Anchoring solves this by publishing the root somewhere MERIT does not control.

The Solana adapter

The first implementation writes the root as an SPL Memo instruction. The payload is a short ASCII string, the transaction is cheap, and anybody with the signature can read it back from any public RPC endpoint without involving MERIT.

merit:v1:0x91ab…c3d1

Verification re-reads the transaction from the chain and compares the memo against the expected root. The stored database row is never treated as authoritative.

The local adapter

Deployments without a funded keypair fall back to a local adapter so the protocol is fully exercisable in development. It is deliberately honest about its limits: the transaction hash is always null, the status is always LOCAL_ONLY, and every surface renders it as not anchored. It never invents a signature.

If you see LOCAL_ONLY on an anchor, no blockchain write occurred. The record is internally consistent but is not independently verifiable.

Adding another chain

Chain-specific code sits behind a three-method interface — anchor, getAnchor, verifyAnchor. A second chain is a new adapter, not a change to the protocol.