Skip to content

Commit 023576c

Browse files
committed
psbt: Make psbt::finalize_witness() extract by default
1 parent 965f97f commit 023576c

File tree

3 files changed

+11
-11
lines changed

3 files changed

+11
-11
lines changed

examples/ctv-vault.minsc

+1-3
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,6 @@ fn finalize_trigger($trigger_psbt) {
109109
0: [ $hot_signature, $trigger_script, $trigger_ctrl ]
110110
])
111111
}
112-
// Finalize and extract the trigger transaction. psbt::extract_raw() needed for non-Miniscript-compatible Script
113-
fn finalize_extract_trigger($trigger_psbt) = psbt::extract_raw(finalize_trigger($trigger_psbt));
114112

115113
// Setup Vault
116114
$cold_sk = xprv9s21ZrQH143K3Xuq83mkj7qByus7JPgT81E8SohtKAcdPUPXRmNg5tVoT2ek5XfMjvpyh1oPvAqfGJee4jnrTzyH4R49QiKWJoNGNYuPbq1;
@@ -133,7 +131,7 @@ $complete_psbt = $wd->complete[
133131

134132
$trigger_signed = psbt::sign($wd->trigger, $hot_sk);
135133
$complete_signed = psbt::sign($complete_psbt, $hot_sk);
136-
$trigger_tx = finalize_extract_trigger($trigger_signed);
134+
$trigger_tx = finalize_trigger($trigger_signed);
137135
$complete_tx = psbt::finalize_extract($complete_signed);
138136

139137
// Abort the hot withdrawal using the cold key

examples/script-coin-flip.minsc

+2-3
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,10 @@ $redeem = if $outcome == 1 {
114114
};
115115

116116
// Finalize the input witness with the 2 preimages and the winner's signature
117-
$redeem_final = psbt::finalize_witness($redeem, [
117+
$redeem_tx = psbt::finalize_witness($redeem, [
118118
0: [ $redeem->inputs.0->partial_sigs.0.1, $preimage2, $preimage1, $script ]
119119
]);
120120

121-
$redeem_tx = psbt::extract_raw($redeem_final);
122121
// $redeem_tx_hex = hex($redeem_tx);
123122

124123
// Redeem script with witness stack elements (excluding the P2WSH witnessScript),
@@ -190,7 +189,7 @@ $p2_wins_p1_sig = schnorr::sign($sk1, psbt::sighash($p2_wins_psbt, 0, $p2_wins_l
190189
$p2_wins_p2_sig = schnorr::sign($sk2, psbt::sighash($p2_wins_psbt, 0, $p2_wins_leaf));
191190
$p2_wins_tx = psbt::finalize_witness($p2_wins_psbt, [
192191
0: tr::script_witness($tap, $p2_wins_leaf, [ $p2_wins_p2_sig, $p2_wins_p1_sig, $preimage2, $preimage1 ])
193-
]) | psbt::extract_raw();
192+
]);
194193
// $p2_wins_hex = hex($p2_wins_tx);
195194

196195
// To debug script execution with witness elements:

src/stdlib/btc.minsc

+8-5
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,14 @@ fn tx::sighash::tr_leaf($tx, $vin, $script_leaf, $utxos, $sighash_ty) = psbt::si
6262

6363
// TOOD tx::sighash::sw0() with just the signed utxo & tx::sighash::presw() with just the utxo's script
6464

65-
fn psbt::finalize_witness($psbt, $input_witnesses) = psbt::update($psbt, [
66-
"inputs": map($input_witnesses, |[ $input_index, $witness ]|
67-
$input_index: [ "final_script_witness": $witness ]
68-
)
69-
]);
65+
fn psbt::finalize_witness($psbt, $input_witnesses, $extract_tx=true) {
66+
$finalized = psbt::update($psbt, [
67+
"inputs": map($input_witnesses, |[ $input_index, $witness ]|
68+
$input_index: [ "final_script_witness": $witness ]
69+
)
70+
]);
71+
if $extract_tx then psbt::extract_raw($finalized) else $finalized
72+
}
7073

7174
fn psbt::finalize_extract($psbt) = psbt::extract(psbt::finalize($psbt));
7275
fn psbt::sign_extract($psbt, $keys) = psbt::extract(psbt::finalize(psbt::sign($psbt, $keys)));

0 commit comments

Comments
 (0)