From e7ce3e1e7022e8eb0dac4d5e6c9d21d509be8803 Mon Sep 17 00:00:00 2001 From: Pedro Piccino Date: Fri, 20 Feb 2026 00:26:19 -0300 Subject: [PATCH] fix: accept base58-encoded transaction_message in CLI The vault_transaction_create CLI command declared transaction_message as Vec, which clap cannot properly parse from command-line arguments (it expects space-separated individual byte values, which is impractical for transaction messages). Changed the argument to accept a base58-encoded string, which is decoded to Vec at runtime. This is consistent with how Solana CLI tools typically handle binary data. Fixes #159 --- cli/Cargo.toml | 1 + cli/src/command/vault_transaction_create.rs | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 5e10f35d..4a7d742b 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -14,6 +14,7 @@ dialoguer = "0.11.0" indicatif = "0.17.7" colored = "2.1.0" bincode = "1.3" +bs58 = "0.5" # Solana deps solana-sdk = "2.2.20" # local deps diff --git a/cli/src/command/vault_transaction_create.rs b/cli/src/command/vault_transaction_create.rs index ffb8ddfd..9480ee36 100644 --- a/cli/src/command/vault_transaction_create.rs +++ b/cli/src/command/vault_transaction_create.rs @@ -56,8 +56,9 @@ pub struct VaultTransactionCreate { #[arg(long)] vault_index: u8, + /// Base58-encoded transaction message bytes #[arg(long)] - transaction_message: Vec, + transaction_message: String, /// Memo to be included in the transaction #[arg(long)] @@ -87,6 +88,10 @@ impl VaultTransactionCreate { approve, } = self; + let transaction_message = bs58::decode(&transaction_message) + .into_vec() + .map_err(|e| eyre::eyre!("Invalid base58 transaction_message: {}", e))?; + let program_id = program_id.unwrap_or_else(|| "SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf".to_string());