Skip to content

Share portable wallet planning, lock proofs, and reference-tested codecs - #25

Merged
yapishu merged 2 commits into
masterfrom
reid/audit-1020
Oct 20, 2026
Merged

yapishu merged 2 commits into
masterfrom
reid/audit-1020

Conversation

@yapishu

@yapishu yapishu commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

Wallets need tagged lock proofs and the same fee, note-data, and selection rules on desktop, WASM, and firmware. This adds one no_std + alloc transaction-planning core and releases the workspace as 0.2.0.

  • Model 1/2/4/8/16-condition locks and build real stub/full Merkle proofs. Validate authorization siblings, ordinary stub axes, and empty conditions.
  • Share candidate-height lock admission, configured protocol-fund maturity, typed bridge note data, exact word accounting, deterministic selection, refunds, and V0-to-V1 sweeps.
  • Replace the separate spend builders with planner::plan and a software-signing adapter. Runtime noun adapters use the portable codecs for both native and embedded backends.
  • Encode canonical JAM backreferences, preserve shared noun structure, and keep collection updates transactional on encoding errors.
  • Include reproducible official Hoon fixtures with source pins and checksums; extend CI across hosted, no-std, WASM, and native builds.

Validation:

  • 111 hosted tx-types tests, 43 no-std tests, and 12 pokenoun tests pass.
  • All seven reference JAM fixtures reproduce exactly with the official Hoon tools. Comparisons cover proof bytes/hashes/axes, note-data hashes, fees, transaction IDs, and signature hashes.
  • thumbv7em-none-eabihf, embedded WASM, and native build/check matrix passes.
  • Wallet, firmware, and RPC consumers compile against this core; wallet and hardware composers produce identical transaction JAMs.

This changes the public builder and lock APIs. Consumers use the shared planner and explicit chain/fee policy; software and hardware signing remain consumer adapters.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant