Files
PalladiumWallet/docs/adr/0016-psbt-centric-signing.md
davide b292590cdc docs: add docs-as-code process and one ADR per feature
docs/docs-as-code.md defines the workflow; docs/adr holds 31 ADRs
(retroactive, reconstructed from code and changelog) with a template and
index. docs/check-docs.sh validates ADR structure, index, cited code
paths, relative links and CLAUDE.md/AGENTS.md sync.
2026-11-03 09:45:51 +01:00

932 B

0016. Route every signing flow through PSBT

  • Status: Accepted
  • Area: Wallet
  • Recorded: 2026-11-03 (retroactive: reconstructed from code, comments and changelog)

Context

Offline, air-gapped and hardware-assisted signing all need a transport format, and a wallet that signs through a different path for each case multiplies the code that handles keys.

Decision

TransactionFactory.Build produces a BuiltTransaction that always carries a PSBT. Accounts that hold keys also return the signed transaction; watch-only accounts return the unsigned PSBT for export and offline signing.

Consequences

  • One build path, interoperable with other PSBT tools.
  • Hardware-wallet and multisig integration (not in v1) can reuse the same format.
  • Cross-implementation tests compare PSBTs to a reference wallet; a differing PSBT or txid is a blocking bug.

References

  • src/Core/Wallet/TransactionFactory.cs