From 01f0bacf79112552dfbe4757e903ce81702f751e Mon Sep 17 00:00:00 2001 From: CalDescent <> Date: Wed, 18 May 2022 22:51:45 +0100 Subject: [PATCH] Started modifying scriptSig to be compatible with atomicdex-style HTLCs. This removes support for P2PKH inputs, but Pirate doesn't support these anyway. --- zcash_primitives/src/transaction/builder.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/zcash_primitives/src/transaction/builder.rs b/zcash_primitives/src/transaction/builder.rs index c194858..da2cf37 100644 --- a/zcash_primitives/src/transaction/builder.rs +++ b/zcash_primitives/src/transaction/builder.rs @@ -248,14 +248,17 @@ impl TransparentInputs { let mut sig_bytes: Vec = sig.serialize_der()[..].to_vec(); sig_bytes.extend(&[SIGHASH_ALL as u8]); - if (!&info.secret.is_empty()) { - // Include secret and redeem script - mtx.vin[i].script_sig = Script::default() << &info.secret[..] << &sig_bytes[..] << &info.pubkey[..] << &info.redeem_script[..]; + if (!&info.secret.is_empty()) { // Redeem + let is_refund : u8 = 0; + mtx.vin[i].script_sig = Script::default() << &sig_bytes[..] << &info.pubkey[..] << &info.secret[..] << is_refund << &info.redeem_script[..]; } - else { - // P2PKH scriptSig - mtx.vin[i].script_sig = Script::default() << &sig_bytes[..] << &info.pubkey[..]; + else { // Refund + let is_refund : u8 = 1; + mtx.vin[i].script_sig = Script::default() << &sig_bytes[..] << &info.pubkey[..] << is_refund << &info.redeem_script[..]; } + + // No longer supports P2PKH scriptSig since this is a P2SH-only implementation + // mtx.vin[i].script_sig = Script::default() << &sig_bytes[..] << &info.pubkey[..]; } }