Kaspa testnet proof lab

TN12 covenant proof page

Kaspa TN12 testnet proof lab.

Testnet transactions landed. The repo replays them.

Start with the useful part: accepted records can be replayed into balances, receipts, payouts, and blocked actions. The raw txids are still here, but they are reviewer detail.

Why this is interesting

The money movement can explain the rule.

For users

A wallet should eventually show: this spend is under the cap, this controller is present, this payout matched the evidence, or this withdrawal is blocked.

For builders

The app can start from public records instead of asking users to trust a private database row.

For Kaspa

Fast UTXO ordering makes multi-step rule flows practical to inspect as workflows and as settlement records.

Read this first

Accepted, replayed, and blocked are different claims.

Money moved

Accepted testnet transactions show funds moving through specific paths.

Receipts landed

Accepted payloads record app intent or status. A receipt alone is not custody settlement.

State replayed

The repo reads accepted rows and reconstructs balances, payouts, and blocked actions.

Bad moves blocked

Some bad candidates fail locally or by wallet policy before they should be trusted.

Accepted TN12 proofs

Reviewer txid table.

The table is for verification. Lead with the rule, the replayed result, and the blocked action above.

Open accepted proof txids
Loaded from inline txid table.
Fixture loaded Inline txid from repo fixture. Accepted TN12 API accepted, amount, and destination match. Mismatch Inspect API response before using the row.
Path Script route Txid Status
Vault recoveryvault / recoverb76cc933b97a0bdb901ffae27a517a52577c27297c70be343dc6cab734ba1391Fixture loaded
Vault delayed withdrawalvault / withdraw9bc524406f3d311d16e5c8c115a9d8f044ab83659a24c744b152a90f8b3aa710Fixture loaded
Assurance releaseassurance / release80be77c594bf73dc9a4cb5d3c65152095df6cdfc869e95ea7b94d96262e3fd2fFixture loaded
Assurance refundassurance / refundfaacfee4c4e790e4f36870f78cdb0d151b5a8c5c9356bf55269a78631c4c4d61Fixture loaded
Escrow releaseescrow / release825a9b9f7194d7741136b4be9817d052c9055893e007ef027b92b03d6e425c5dFixture loaded
Escrow DAA refundescrow / refund6731423fa5b600a7ac14ef83aa13a3acc810fdec29f91c02262b67c88eec5f4dFixture loaded
Escrow mutual cancelescrow / cancel14d43df2ef63dbc42c8b9ee8362894cb16225f8001234a67b63b127c0e8d289cFixture loaded
Auction settlement fundingauction / funding6d663293ccbebddddf81e14146c13ac4039fe3047d6d429043d57d5c9717fbeaFixture loaded
Auction settlementauction / settle523ce10f82f353fc9e9a1c5ac330efde376024491e5baf0eec4f9b0ec6faa236Fixture loaded
Role-separated vault recoveryrole-vault / recoverdbe2c3ea5cf7e93031db468a8906be16fdc1a2e4b6382d14d7d01e67e71274e0Fixture loaded
Role-separated assurance releaserole-assurance / releasefe2fba8819f3022f62892215b1bc4316377ffb7e54f833549d30bd247d8fda32Fixture loaded
Role-separated escrow releaserole-escrow / release4f882d934700667819a4c7ad84f51a63e9db4e7b8989bfd65089410051f47382Fixture loaded
Role-separated escrow cancelrole-escrow / cancel677b9c3925c3e9fa6b8c62a3db5c44587a21b2951006395f827574dff7c7bdfaFixture loaded
Role-separated DAA vault withdrawalrole-vault / withdrawcb7da9329250a82bfbe53ce6a25855402de1dc9fdc5d856daa25576088b90b11Fixture loaded
Role-separated DAA assurance refundrole-assurance / refunda35937e44d0b517020f19aa3b7908b9f6f7c47c4bd4222ecf5cddc72a6b411faFixture loaded
Role-separated DAA escrow refundrole-escrow / refund7ac59de80c482402dd0d97e135ad8064e6ac237bcaab0191ea1bef8faa4735c0Fixture loaded
npm run proof:verify

Replay pipeline

From accepted txid to readable state.

This is the core inspection path: an accepted testnet row is fetched, decoded, replayed, matched against expectations, then surfaced as a wallet or reviewer prompt.

1. Acceptedtxid landed

Public TN12 evidence exists.

2. Fetchednode/API row

Amount, output, or app receipt can be checked.

3. Replayedstate rebuilt

Balances, receipts, payouts, or blockers are derived.

4. Matchedrule checked

The observed result matches the expected path or stays blocked.

5. Shownwallet/reviewer view

The user sees why the action should pass or fail.

Multi-wallet TN12 evidence is live.

Fresh role wallets were funded from the local TN12 source wallet. The public txid shows six role outputs and change back to the source address.

What is done, what is still missing.

Accepted or locally checked
  • Accepted proof txids.
  • Accepted app receipts.
  • Checkpointed replay records.
  • Local-key multi-wallet TN12 funding.
  • Reviewer settlement command package.
  • Two accepted script-enforced recurring-cap spends.
  • Accepted script-enforced recurring-cap window reset.
  • Accepted step-workflow route, return, and timeout spends.
  • Accepted controlled-asset move plus local wrong-controller checks.
Still missing
  • User-wallet signing request and return format.
  • User-readable wallet approval flow for the covenant examples.
  • Fresh public-user runs with user-wallet signing.
  • More compact challenge rows only where they prove a new blocked path.
  • Live removed-block rollback evidence.
  • Production replay service.
Future
  • Mainnet wallet support.
  • Audit.
  • Production indexer and rollback handling.
  • Mainnet activation decision.

Where to go next.

Counts need evidence labels.

Use these counts only with their evidence label. Product maps, wallet drafts, pool-style replay checks, scheduler work, and generated artifact inventories live in Lab Tools.

Accepted proof transactions 16

Nine core proof/funding/settlement rows plus seven role-separated repeats. The accepted covenant-spend subset is tracked separately in the artifacts.

Accepted app receipts 40

App data was written into accepted TN12 transactions. Replay can read it; the app receipt alone is not custody settlement.

Verifier command proof records

npm run proof:records checks the canonical proof-record fixture.

Fresh testnet address npm run address

Creates a local TN12 address for faucet use. Testnet wallet material stays under .local/.