Skip to content

Commit

Permalink
WIP: Liquid sigops
Browse files Browse the repository at this point in the history
  • Loading branch information
junderw committed Sep 19, 2023
1 parent 3b16c0a commit 6bcdf35
Showing 1 changed file with 31 additions and 10 deletions.
41 changes: 31 additions & 10 deletions src/util/transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ pub(super) mod sigops {
All,
},
script::{self, Instruction},
Transaction, TxOut, Witness,
Transaction, TxIn, TxOut, Witness,
};
use std::collections::HashMap;

Expand Down Expand Up @@ -263,20 +263,23 @@ pub(super) mod sigops {

#[inline]
fn count_with_prevout(
prevout: &TxOut,
script_sig: &script::Script,
input: &TxIn,
script_pubkey: &script::Script,
witness: &Witness,
) -> usize {
let mut n = 0;

let script = if prevout.script_pubkey.is_witness_program() {
prevout.script_pubkey.clone()
} else if prevout.script_pubkey.is_p2sh()
&& is_push_only(script_sig)
&& !script_sig.is_empty()
let script = if script_pubkey.is_witness_program() {
script_pubkey.clone()
} else if script_pubkey.is_p2sh()
&& is_push_only(&input.script_sig)
&& !input.script_sig.is_empty()
{
script::Script::from_byte_iter(
last_pushdata(script_sig).unwrap().iter().map(|v| Ok(*v)),
last_pushdata(&input.script_sig)
.unwrap()
.iter()
.map(|v| Ok(*v)),
)
.unwrap()
} else {
Expand All @@ -293,7 +296,25 @@ pub(super) mod sigops {
}

for (input, prevout) in tx.input.iter().zip(previous_outputs.iter()) {
n += count_with_prevout(prevout, &input.script_sig, &input.witness);
#[cfg(feature = "liquid")]
let (script_pubkey, witness) = {
let script_pubkey = if input.is_pegin {
if input.witness.pegin_witness.len() < 4 {
continue;
}
script::Script::from_byte_iter(
input.witness.pegin_witness[3].iter().map(|v| Ok(*v)),
)
.unwrap()
} else {
prevout.script_pubkey.clone()
};

(script_pubkey, &input.witness)
};
#[cfg(not(feature = "liquid"))]
let (script_pubkey, witness) = { (prevout.script_pubkey.clone(), &input.witness) };
n += count_with_prevout(input, &script_pubkey, witness);
}
n
}
Expand Down

0 comments on commit 6bcdf35

Please sign in to comment.