From: Artemiy Date: Sun, 21 Jun 2026 07:11:17 +0000 (+0300) Subject: fix(create_tx): enforce single recipient for send_all X-Git-Url: http://internal-gitweb-vhost/blockdata/script/encode/-script/scripts/struct.ScriptPath.html?a=commitdiff_plain;h=50d248cfc482bf5d7807b84182e7f19b104ab49b;p=bdk-cli fix(create_tx): enforce single recipient for send_all Previously, passing multiple --to arguments with --send_all would silently drain the wallet to only the first recipient, ignoring the rest. This was inconsistent with the silent-payments create_tx, which already validates the recipient count. Now returns an error unless exactly one recipient is provided --- diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e66f84..3fc8b4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ Changelog info is also documented on the [GitHub releases](https://github.com/bi page. See [DEVELOPMENT_CYCLE.md](DEVELOPMENT_CYCLE.md) for more details. ## [Unreleased] + - Fixed `create_tx --send_all` to reject multiple recipients instead of silently using only the first one ## [3.0.0] diff --git a/src/handlers.rs b/src/handlers.rs index 15a4d5a..398f612 100644 --- a/src/handlers.rs +++ b/src/handlers.rs @@ -540,7 +540,13 @@ pub fn handle_offline_wallet_subcommand( let mut tx_builder = wallet.build_tx(); if send_all { - tx_builder.drain_wallet().drain_to(recipients[0].0.clone()); + if recipients.len() == 1 { + tx_builder.drain_wallet().drain_to(recipients[0].0.clone()); + } else { + return Err(Error::Generic( + "Wallet can only be drained to a single output".to_string(), + )); + } } else { let recipients = recipients .into_iter()