Transparency & independent verification

A ChainAnchor proof doesn’t ask you to trust ChainAnchor. Every proof is recorded on a public blockchain and can be verified by anyone, with our open-source tool or your own — even if ChainAnchor disappeared tomorrow.

How a proof is verified

  1. 1. Your file → hash. SHA-256 is computed from the bytes. The same content always produces the same hash; any change produces a different one.
  2. 2. Hash → Merkle root. Batched anchors fold the hash with its proof (sorted-pair SHA-256) to reconstruct the root that was anchored. A forged proof can’t make a different file fold to a real root.
  3. 3. Root → blockchain. The root (or, for instant anchors, the hash itself) is looked up in the public contract’s timestamps() function on-chain. A non-zero result is immutable, timestamped proof of existence.

On-chain

Loading…

The contract

It’s deliberately tiny, open-source, and verified on-chain. All it does is record the block timestamp a hash (or Merkle batch root) was first registered — values can’t be changed or deleted once written.

View the verified source on the explorer ↗
Show source
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

contract ChainAnchor {
    // Unix time a hash/root was registered (0 = never).
    mapping(bytes32 => uint256) public timestamps;
    event HashRegistered(bytes32 indexed fileHash, uint256 timestamp);

    function registerHash(bytes32 _fileHash) external {
        require(timestamps[_fileHash] == 0, "Hash already registered");
        timestamps[_fileHash] = block.timestamp;
        emit HashRegistered(_fileHash, block.timestamp);
    }
}

Verify it yourself

Open-source, ~80 lines, no dependency on ChainAnchor. It recomputes your file’s hash, validates the Merkle proof, and reads the contract on-chain via a public RPC you control.

# 1. Download the verifier + the proof bundle
curl -O /tools/chainanchor-verify.js
curl -O /proof/<id>/verify.json

# 2. Verify your file against the chain
npm i ethers
node chainanchor-verify.js verify.json yourfile.pdf

Recent anchoring transactions

Loading…

Continuity

Proofs live on the public blockchain, not just on our servers. You can export all of your proofs at any time from your account, and any proof remains independently verifiable with the tool above regardless of ChainAnchor’s status.