Problem
The explorer currently duplicates parts of the Rust transaction wire format in TypeScript. That duplication has already drifted once: transaction proof verification assumed a fixed transfer-sized transaction body and failed for newer tagged/channel transaction shapes.
Goal
Expose a small Rust/WASM boundary for explorer transaction decoding and digest verification so the frontend does not need to manually mirror transaction layout details.
A useful first API could return:
- signed transaction digest
- operation kind: transfer, channel open, channel close
- sender/counterparty/value/nonce display fields where needed
Notes
Short term, it is acceptable to keep a narrow TypeScript parser for the current proof fix. This issue tracks the cleaner follow-up so future transaction format changes are validated by the Rust primitives codec instead of duplicated in the explorer.
Problem
The explorer currently duplicates parts of the Rust transaction wire format in TypeScript. That duplication has already drifted once: transaction proof verification assumed a fixed transfer-sized transaction body and failed for newer tagged/channel transaction shapes.
Goal
Expose a small Rust/WASM boundary for explorer transaction decoding and digest verification so the frontend does not need to manually mirror transaction layout details.
A useful first API could return:
Notes
Short term, it is acceptable to keep a narrow TypeScript parser for the current proof fix. This issue tracks the cleaner follow-up so future transaction format changes are validated by the Rust primitives codec instead of duplicated in the explorer.