Prove that a specific event_hash is included in a dataset whose Merkle root is anchored on Bitcoin—using only deterministic hashing and Bitcoin data.
Verification succeeds only if:
- the event_hash recomputes into a Merkle root from local receipts, and
- that same root appears in the on-chain pact-anchor-v1 witness payload of the referenced transaction.
No dependency on this repository or its author.
event → hash → Merkle → anchor → Bitcoin → verify
npm install npm run record npm run anchor:bitcoin npm run verify:onchain <event_hash>
Two environment variables control how the runtime reaches external systems:
-
PACT_INSCRIBER_SCRIPT— required byanchor:bitcoin. Absolute path to your inscriber script. Example:export PACT_INSCRIBER_SCRIPT=/path/to/your/inscriber.mjs -
PACT_BITCOIN_CLI_WRAP— optional. Defaults tobitcoin-cli. Set this if your node is reachable through a wrapper (SSH tunnel, custom binary, container exec). Example:export PACT_BITCOIN_CLI_WRAP="ssh mynode bitcoin-cli"
The runtime makes no other assumptions about your Bitcoin setup or your inscriber implementation.
VALID ON-CHAIN PROOF
- inclusion — the event hash is part of a Merkle tree with the given root
- anchoring — that root is committed in a Bitcoin transaction witness
- independence — verification uses deterministic hashing and Bitcoin RPC only
- no wallets
- no indexers
- no data storage (only hashes are anchored)
- no claims about meaning or correctness of the data
Bitcoin = source of truth
Everything else = reproducible
https://github.com/wiard/pact-runtime
ISC