P21 / OFFLINE DEMO v0.1.0
#
See what a
check can catch.
Four synthetic examples. Actual Ed25519 signature checks. A separate local instruction. No network or wallet.
Educational demo—not the P21 SDK or a live transaction verifier. Never use these fixtures to approve a real payment.
##
Download. Inspect. Run.
Use Node.js 22 or newer. Save the single file and review it in a text editor before running it. No npm installation is needed.
[Download proof21-demo.mjs ↓](https://proof21.xyz/demo/proof21-demo.mjs)
node proof21-demo.mjs
Run from the directory containing the downloaded file.
node proof21-demo.mjs --json
[Inspect source as text](https://proof21.xyz/demo/source.txt)
·
[SHA-256 checksums](https://proof21.xyz/demo/SHA256SUMS.txt)
·
[ZIP with README](https://proof21.xyz/demo/proof21-offline-demo.zip)
##
What you should see.
Example
Signature
Check
Matching sample
VALID
PASS
Wrong recipient
VALID
FAIL
Missing evidence
VALID
INDETERMINATE
Tampered report
INVALID
INDETERMINATE
The wrong-recipient report has a valid signature. That is the point: authentic evidence can still describe the wrong action.
Even a matching sample stays
REVIEW
for acceptance. Synthetic evidence does not establish a real payment.
##
What actually runs?
The file verifies compact JWS fixtures with Node’s built-in cryptography. It compares their fields with a separately supplied local expectation and a fixed demonstration clock.
No private keys, dependencies, RPC calls, file writes, wallet access, analytics, or payments. Re-running the examples is safe but is not replay-protection testing.
##
What does not run?
Live chain verification, DMT/TAP state validation, Bitcoin sampling, hosted APIs, and production key/revocation policies remain future work.
The restricted JWS reader is not a general-purpose JOSE library or the final P21 receipt standard. A checksum from the same host is not independent proof of publisher identity.
[Read the demo specification ↗](https://proof21.xyz/docs/start/offline-demo/)
##
Already have the repository?
From a checkout that includes this change, this npm command also works. It runs a local script; it does not install a package:
npm run demo
There is no published P21 npm package yet. Do not install a similarly named package assuming it is ours.
