From 688534812ce1dd1d623842d4d0c5dd1ff3486df5 Mon Sep 17 00:00:00 2001 From: CalDescent <> Date: Wed, 18 May 2022 08:06:31 +0100 Subject: [PATCH] Convert P2SH address to script_pubkey --- lib/Cargo.toml | 12 ++++++------ lib/src/lightwallet.rs | 10 +++++++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/Cargo.toml b/lib/Cargo.toml index f94c614..aa5c4bf 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -48,33 +48,33 @@ reqwest = { version = "0.10.8", features = ["blocking", "json"] } [dependencies.bellman] git = "https://github.com/CalDescent1/librustzcash.git" -rev = "5a4fd01f351259694c31ca161842dfd7078ef2f1" +rev = "1a8686863b10a608ececdede3deb82d2fb4218fa" default-features = false features = ["groth16", "multicore"] [dependencies.pairing] git = "https://github.com/CalDescent1/librustzcash.git" -rev = "5a4fd01f351259694c31ca161842dfd7078ef2f1" +rev = "1a8686863b10a608ececdede3deb82d2fb4218fa" [dependencies.zcash_client_backend] git = "https://github.com/CalDescent1/librustzcash.git" -rev = "5a4fd01f351259694c31ca161842dfd7078ef2f1" +rev = "1a8686863b10a608ececdede3deb82d2fb4218fa" default-features = false [dependencies.zcash_primitives] git = "https://github.com/CalDescent1/librustzcash.git" -rev = "5a4fd01f351259694c31ca161842dfd7078ef2f1" +rev = "1a8686863b10a608ececdede3deb82d2fb4218fa" default-features = false features = ["transparent-inputs"] [dependencies.zcash_proofs] git = "https://github.com/CalDescent1/librustzcash.git" -rev = "5a4fd01f351259694c31ca161842dfd7078ef2f1" +rev = "1a8686863b10a608ececdede3deb82d2fb4218fa" default-features = false [dependencies.ff] git = "https://github.com/CalDescent1/librustzcash.git" -rev = "5a4fd01f351259694c31ca161842dfd7078ef2f1" +rev = "1a8686863b10a608ececdede3deb82d2fb4218fa" features = ["ff_derive"] [build-dependencies] diff --git a/lib/src/lightwallet.rs b/lib/src/lightwallet.rs index 8462a1b..6ea0e03 100644 --- a/lib/src/lightwallet.rs +++ b/lib/src/lightwallet.rs @@ -77,7 +77,7 @@ pub fn double_sha256(payload: &[u8]) -> Vec { h2.to_vec() } -use base58::{ToBase58}; +use base58::{FromBase58, ToBase58}; /// A trait for converting a [u8] to base58 encoded string. pub trait ToBase58Check { @@ -2887,14 +2887,18 @@ impl LightWallet { // Add P2SH transaction as transparent input, including secret and redeem script + let p2sh_addr_vec = from.from_base58().unwrap(); + let p2sh_addr_arr = <[u8; 20]>::try_from(&p2sh_addr_vec[2..22]).unwrap(); + let p2sh_script_pubkey = TransparentAddress::PublicKey(p2sh_addr_arr).script(); + let outpoint: OutPoint = OutPoint { hash: <[u8; 32]>::try_from(outpoint_txid).unwrap(), n: 0 }; let coin = TxOut { - value: Amount::from_u64(total_value).unwrap(), - script_pubkey: Script { 0: redeem_script_pubkey.to_vec() }, + value: target_value, + script_pubkey: p2sh_script_pubkey, }; let sk = SecretKey::from_slice(privkey).unwrap();