Roadmap
The Taproot script-path spike, tests, and other unfinished work
Taproot Script-Path Spend (psbt/buildTaprootScriptPathInput)
NBitcoin's PSBTInput type has no leaf-script/control-block fields the way it does for
key-path Taproot — confirmed against real NBitcoin source, not assumed. This operation's actual mechanism
(likely building the final witness directly via TaprootSpendInfo/ControlBlock
rather than a normal PSBTInput field-attach) needs a dedicated spike before it can ship safely.
| What works today | What doesn't |
|---|---|
Key-path Taproot (P2TR) signing via psbt/build + psbt/sign — fully implemented | Taproot script-path spends via psbt/buildTaprootScriptPathInput — timelock-leaf case is best-effort only; script-multisig-leaf fails fast with PSBT_TAPROOT_SPIKE_PENDING |
Test Coverage
There is no Tests/ project for this node yet — this is a from-scratch implementation, not
ported from an existing test suite. Adding unit/integration test coverage (especially around the PSBT
pipeline's fund-safety checks and coin selection) is planned.
Documentation Gaps
Two design documents referenced by the implementation are planned but not yet written:
INFRASTRUCTURE_ErrorCodes.md and INFRASTRUCTURE_EsploraClient.md. The error
codes and Esplora endpoint shapes they'd cover are documented inline in code instead — see
Troubleshooting for the practical error-code reference in the
meantime.
Operational Scaling: Distributed UTXO Reservation
UtxoReservationHelper is currently an in-memory, single-process store. It does not
coordinate UTXO reservations across multiple horizontally-scaled instances of this node. This is an
operational-efficiency gap, not a fund-safety one — psbt/finalize
re-validates every input UTXO is still unspent immediately before finalizing regardless, and Bitcoin's
own consensus rules are the actual backstop against a double-spend. Before scaling this node horizontally
in production, back this helper with a distributed lock (Redis or SQL Server) to avoid redundant
build-then-fail races across instances.