]> Untitled Git - bdk-cli/commitdiff
Add add_data enables op_return for bdk-cli
authorPedro Felix <p.felixgarcia@gmail.com>
Wed, 21 Sep 2022 16:56:08 +0000 (09:56 -0700)
committerPedro Felix <p.felixgarcia@gmail.com>
Wed, 21 Sep 2022 16:56:08 +0000 (09:56 -0700)
src/commands.rs
src/handlers.rs

index 4764d629f2165295f0cc217b6e409ac4bd229be5..a0093f2146136ddae2299ef9cb240010c51866f6 100644 (file)
@@ -396,6 +396,22 @@ pub enum OfflineWalletSubCommand {
         /// Selects which policy should be used to satisfy the internal descriptor.
         #[structopt(name = "INT_POLICY", long = "internal_policy")]
         internal_policy: Option<String>,
+        /// Optionally create an OP_RETURN output containing given String in utf8 encoding (max 80 bytes)
+        #[structopt(
+            name = "ADD_STRING",
+            long = "add_string",
+            short = "s",
+            conflicts_with = "ADD_DATA"
+        )]
+        add_string: Option<String>,
+        /// Optionally create an OP_RETURN output containing given base64 encoded String. (max 80 bytes)
+        #[structopt(
+            name = "ADD_DATA",
+            long = "add_data",
+            short = "o",
+            conflicts_with = "ADD_STRING"
+        )]
+        add_data: Option<String>, //base 64 econding
     },
     /// Bumps the fees of an RBF transaction.
     BumpFee {
@@ -945,7 +961,9 @@ mod test {
                             "--change_descriptor", "wpkh(tpubDEnoLuPdBep9bzw5LoGYpsxUQYheRQ9gcgrJhJEcdKFB9cWQRyYmkCyRoTqeD4tJYiVVgt6A3rN6rWn9RYhR9sBsGxji29LYWHuKKbdb1ev/1/*)",
                             "create_tx", "--to", "n2Z3YNXtceeJhFkTknVaNjT1mnCGWesykJ:123456","mjDZ34icH4V2k9GmC8niCrhzVuR3z8Mgkf:78910",
                             "--utxos","87345e46bfd702d24d54890cc094d08a005f773b27c8f965dfe0eb1e23eef88e:1",
-                            "--utxos","87345e46bfd702d24d54890cc094d08a005f773b27c8f965dfe0eb1e23eef88e:2"];
+                            "--utxos","87345e46bfd702d24d54890cc094d08a005f773b27c8f965dfe0eb1e23eef88e:2",
+                            "--add_string","Hello BDK",
+                           ];
 
         let cli_opts = CliOpts::from_iter(&cli_args);
 
@@ -1016,6 +1034,8 @@ mod test {
                     fee_rate: None,
                     external_policy: None,
                     internal_policy: None,
+                    add_data: None,
+                    add_string: Some("Hello BDK".to_string()),
                 }),
             },
         };
index 8845f00d20eae56207bef844d6074b0b0a0c2435..f44f7236412b04b20f8abcc3abd57cee21348cce 100644 (file)
@@ -122,6 +122,8 @@ where
             fee_rate,
             external_policy,
             internal_policy,
+            add_data,
+            add_string,
         } => {
             let mut tx_builder = wallet.build_tx();
 
@@ -151,6 +153,13 @@ where
                 tx_builder.unspendable(unspendable);
             }
 
+            if let Some(base64_data) = add_data {
+                let op_return_data = base64::decode(&base64_data).unwrap();
+                tx_builder.add_data(op_return_data.as_slice());
+            } else if let Some(string_data) = add_string {
+                tx_builder.add_data(string_data.as_bytes());
+            }
+
             let policies = vec![
                 external_policy.map(|p| (p, KeychainKind::External)),
                 internal_policy.map(|p| (p, KeychainKind::Internal)),