Learn / developer workshop

Run a real proof.
Break it.
Then build toward BCH.

Proofnote is easiest to understand as an execution sequence, not a whitepaper. Start with released bytes and a falsifiable result. Move into CashVM locally. Touch Chipnet only after the transaction and its privacy residue are reviewable.

immutable source 31b74e8a0391… ↗
Execution ladder

Five boundaries. Three are runnable today.

State labels are part of the claim. Planned work never borrows a green badge from the released verifier.

  1. 01
    RUNNABLE

    Verify a released proof in this browser

    The self-contained verifier performs the complete BN254 pairing over the released V4 proof, pinned key, and public values without a clone, package, wallet, or backend verifier.

    Open the browser lab →
  2. 02
    TRACEABLE

    Follow the proof into BCH

    See the exact program key and settlement projection verified by the pairing, then follow the remaining builder, authenticated-verdict, UTXO-seal, wallet, and chain boundaries without collapsing them into one claim.

    Inspect the binding map →
  3. 03
    RUNNABLE

    Audit the public repository

    Pin the immutable release commit, reproduce the verifier from Node.js, run conformance, and inspect every evidence identity and non-claim.

    Use the clean-clone path →
  4. 04
    RUNNABLE

    Simulate the transaction in CashVM

    Run the released proof-bound spend lab: verify the real pairing, reconstruct the unsigned transaction, execute the covenant in Libauth CashVM, then watch five binding failures reject.

    Run the released CashVM lab →
  5. 05
    OPERATOR GATE

    Promote the local artifact to Chipnet

    Prepare an unsigned continuation first. Funding, signing, broadcast, and chain attestation remain separate human-authorized steps.

    Prepare the Chipnet packet →
Run here / zero install

The proof verifier is already loaded.

Run the published proof, inspect its complete released JSON, and trace each verified value toward the BCH transaction boundary. Your browser performs the complete BN254 pairing locally. The release harness still falsifies every binding, while the visitor view stays focused on one proof and one honest path toward a proof-bound spend.

sha256 928aa666060dd9b138d2719bcb245d2194e6e7bec3ef9d5cc4dfdbaa404b4da0

local browser / released artifact OFFLINE
Run now

A real PASS, from a clean clone.

No install is required for example 01. The runner uses only the published fixture, verification key, and Node.js built-ins.

Read the exact example contract ↗
local / proof
git clone https://github.com/casablanca-labs/proofnote.git
cd proofnote
git checkout 31b74e8a0391d432e5544cb5fe6366f40619b482
node examples/01-verify-a-proof/run.mjs

EXPECTED exit 0 · pairing verified

Falsify it

The useful demo is the one that can fail.

The tamper preserves valid curve-point encodings while changing a committed settlement value. Arithmetic binding—not a parser shortcut—rejects it.

local / negative controls
node examples/01-verify-a-proof/run.mjs --tamper-settlement
node examples/conformance.mjs
node verify.mjs list
node verify.mjs explain verify-a-proof

EXPECTED PAIRING_REJECTED · exit 3

Agentic interface

Delegate the mechanics. Keep the authority boundaries.

These prompts are work contracts. They identify the source, demand negative controls, and stop before secrets or network mutation.

RUNNABLE

Audit the released verifier

Audit the released verifier.

Work only from a clean clone of casablanca-labs/proofnote at commit 31b74e8a0391d432e5544cb5fe6366f40619b482.

Preflight: require Node.js >=20.6.0 and pnpm, confirm HEAD equals the commit, and confirm the checkout is clean. Run pnpm install --frozen-lockfile before conformance.

1. Read examples/01-verify-a-proof/README.md and example.json.
2. Run node examples/01-verify-a-proof/run.mjs; require exit 0.
3. Run node examples/01-verify-a-proof/run.mjs --tamper-settlement; require exit 3 and PAIRING_REJECTED.
4. Run node examples/conformance.mjs, node verify.mjs list, and node verify.mjs explain verify-a-proof.
5. Report the exact evidence identities, positive result, negative result, and every stated non-claim.

Use no private repository or network. Do not claim CashVM execution, BCH validation or inclusion, wallet acceptance, spendability, privacy, or successive transfer.
RUNNABLE

Run the Libauth CashVM example

The agent audits immutable released code and executes the positive path plus every negative control. It receives no wallet or network authority.

Inspect the released lab contract ↗
Audit the released proof-bound CashVM spend lab.

Work only from a clean clone of casablanca-labs/proofnote at commit 31b74e8a0391d432e5544cb5fe6366f40619b482. Do not edit files.

Use the frozen lockfile. Confirm @bitauth/libauth is exactly 3.1.0-next.8 with npm integrity sha512-Pm+Ju+YP3JeBLLTiVrBnia2wwE4G17r4XqpvPRMcklElJTe8J6x3JgKRg1by0Xm3ZY6UFxACkEAoSA+x419/zA==. Disable network access while running the example.

Target: examples/06-simulate-proof-bound-cashvm.

1. Read README.md and example.json; verify every pinned input digest.
2. Run pnpm install --frozen-lockfile, then execute the positive path and require exit 0.
3. Run --tamper-proof, --mismatch-fixture, --tamper-verdict, --tamper-source, and --tamper-locking; require their documented non-zero exit codes and classifications.
4. Run node examples/conformance.mjs and require all examples to match their contracts.
5. Explain the complete chain: private witness and relation → proof and public values → pinned-key Groth16 pairing → authenticated terminal verdict → settlement covenant re-derivation of the BCH transaction projection → authorized UTXO spend.
6. Separate the measured proof-generation time, proof byte size, native verification time, covenant execution, and transaction byte size. Explain why proving time depends on the relation, witness size, recursion/wrapping, hardware, and prover implementation.

The lab performs a real pairing and real local covenant execution, but uses a synthetic terminal verdict token instead of executing Proofnote's production authenticated verifier graph. It does not establish chain inclusion, funding, signing, wallet acceptance, privacy, or successive-owner transfer. Never fund, sign, broadcast, or claim the covenant itself verifies Groth16.
OPERATOR GATE

Prepare a Chipnet continuation

Construction can be automated. tBCH funding, signing, broadcast, and post-broadcast attestation remain separate approvals.

Prepare a Chipnet operator packet template.

Start only after a reviewed, released local CashVM example exists. Name its immutable public commit, example ID, and evidence digest at the top of the report.

1. Re-run the released local positive and negative controls from the pinned commit.
2. Record the exact synthetic transaction bytes and every boundary that makes them non-broadcastable.
3. Produce a checklist separating operator-selected tBCH source outputs, funding authorization, private-key access, signing, pre-broadcast review, broadcast, and fresh chain attestation.
4. State all public metadata and linkage surfaces a real broadcast would expose.
5. Add no wallet integration, UTXO lookup, funding, signing, or network call.

Return a reviewable operator packet template, not a claim that a Chipnet transaction was prepared, signed, relayed, accepted, or confirmed.
Current R&D boundary

Successive private transfer is not a tutorial yet.

Bob → Charles remains blocked until host, Rust, SP1, proof, authenticated CashVM verifier, settlement, chain, and recipient acceptance evidence agree. The public repository carries the blocker as a machine-readable example instead of a runnable-looking substitute.

Inspect all eight blockers ↗