Skip to content

Reject recipient addresses from the wrong network - #370

Open
emma31-dev wants to merge 2 commits into
bitcoindevkit:masterfrom
emma31-dev:fix/360-create-tx-network-validation
Open

emma31-dev wants to merge 2 commits into
bitcoindevkit:masterfrom
emma31-dev:fix/360-create-tx-network-validation

Conversation

@emma31-dev

Copy link
Copy Markdown
Contributor

Description

Fixes #360 .

Retain recipient addresses as unchecked addresses until the wallet network is available, then validate them before converting them to scripts. create_tx, create_sp_tx --to, and create_dns_tx --to now reject addresses from a different network. create_sp_tx --to-sp also rejects silent payment codes whose network differs from the wallet’s.

Notes to the reviewers

The mismatch errors use BDKCliError::Generic with a formatted message rather than adding payload-carrying error variants. Carrying an address or silent payment code in new variants made BDKCliError large enough for Clippy’s result_large_err lint to fail across many functions.

Some integration tests used testnet tb1... recipients with regtest wallets. Those fixtures now use regtest addresses so the tests exercise their intended behavior instead of failing at network validation.

Checklists

All Submissions:

  • I've signed all my commits
  • I followed the contribution guidelines
  • I ran cargo fmt
  • I ran cargo clippy successfully before committing

Bugfixes:

Validate network on --to addresses and --to-sp silent payment codes in
create_tx, create_sp_tx, and create_dns_tx. Previously these commands
would silently build an unspendable PSBT; they now return a clear error
with the expected and actual network.

- parse_recipient now stores Address<NetworkUnchecked> instead of ScriptBuf
- New recipient_script() helper validates network before converting to ScriptBuf
- Silent payment codes also validated against wallet network
- Tests added for all three commands with wrong-network inputs
@emma31-dev
emma31-dev force-pushed the fix/360-create-tx-network-validation branch from 9c0cef4 to eecb1d4 Compare November 9, 2026 21:53
@emma31-dev
emma31-dev marked this pull request as draft November 13, 2026 12:23
@emma31-dev
emma31-dev marked this pull request as ready for review November 13, 2026 15:04
@codecov

codecov Bot commented Nov 14, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 93.22034% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 59.76%. Comparing base (3dec0e0) to head (7aee766).
⚠️ Report is 9 commits behind head on master.

Files with missing lines Patch % Lines
src/handlers/offline.rs 85.18% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #370      +/-   ##
==========================================
- Coverage   60.00%   59.76%   -0.25%     
==========================================
  Files          25       25              
  Lines        4736     4608     -128     
==========================================
- Hits         2842     2754      -88     
+ Misses       1894     1854      -40     
Flag Coverage Δ
rust 59.76% <93.22%> (-0.25%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

This branch has not been deployed

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

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

create_tx accepts recipient addresses from the wrong network

1 participant