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.
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.
The app can start from public records instead of asking users to trust a private database row.
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.
Accepted testnet transactions show funds moving through specific paths.
Accepted payloads record app intent or status. A receipt alone is not custody settlement.
The repo reads accepted rows and reconstructs balances, payouts, and blocked actions.
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
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.
Public TN12 evidence exists.
Amount, output, or app receipt can be checked.
Balances, receipts, payouts, or blockers are derived.
The observed result matches the expected path or stays blocked.
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.
42e14cf1...bad8a5b5
2 + 25 + 10 + 10 + 2 + 2 tKAS to operator, pool, users, executor, and reviewer.
Playground 4 accepted session txsFunding, two user deposits, pool payout, and replayed balances.
Evidence file output matchedAmounts and addresses matched the public TN12 API response.
Reviewer run repeatable command pathInstall, verify, rebuild fresh role wallets, review, submit, then replay.
What is done, what is still missing.
- 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.
- 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.
- Mainnet wallet support.
- Audit.
- Production indexer and rollback handling.
- Mainnet activation decision.
Where to go next.
Accepted records, replay rows, and the shortest reviewer story.
Unfinished builds What can I try?Role wallets, faucet flow, deposits, payout, and replayed state.
Experiments What should we build?Budgets, controlled assets, staged workflows, blocked withdrawals, group payments, and scheduled payouts.
Mainnet blockers What is still missing?Wallet signing, production replay behavior, audit, and activation blockers.
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.
Nine core proof/funding/settlement rows plus seven role-separated repeats. The accepted covenant-spend subset is tracked separately in the artifacts.
App data was written into accepted TN12 transactions. Replay can read it; the app receipt alone is not custody settlement.
npm run proof:records checks the canonical proof-record fixture.
Creates a local TN12 address for faucet use. Testnet wallet material stays under .local/.