Skip to content

Commit f5ec54c

Browse files
committed
fix(compile-tr): review edits
1 parent 103b1aa commit f5ec54c

1 file changed

Lines changed: 17 additions & 24 deletions

File tree

src/handlers.rs

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1039,12 +1039,11 @@ pub(crate) fn handle_compile_subcommand(
10391039
// This ensures the key path is effectively disabled and only script path can be used.
10401040
// See https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#constructing-and-spending-taproot-outputs
10411041

1042-
// Validate that the NUMS key is a valid XOnlyPublicKey
1043-
XOnlyPublicKey::from_str(NUMS_UNSPENDABLE_KEY_HEX)
1042+
let xonly_public_key = XOnlyPublicKey::from_str(NUMS_UNSPENDABLE_KEY_HEX)
10441043
.map_err(|e| Error::Generic(format!("Invalid NUMS key: {e}")))?;
10451044

10461045
let tree = TapTree::Leaf(Arc::new(taproot_policy));
1047-
Descriptor::new_tr(NUMS_UNSPENDABLE_KEY_HEX.to_string(), Some(tree))
1046+
Descriptor::new_tr(xonly_public_key.to_string(), Some(tree))
10481047
}
10491048
_ => {
10501049
return Err(Error::Generic(
@@ -1354,21 +1353,20 @@ fn readline() -> Result<String, Error> {
13541353
Ok(buffer)
13551354
}
13561355

1357-
#[cfg(any(
1358-
feature = "electrum",
1359-
feature = "esplora",
1360-
feature = "cbf",
1361-
feature = "rpc"
1362-
))]
13631356
#[cfg(test)]
13641357
mod test {
1365-
use bdk_wallet::bitcoin::Psbt;
1366-
1367-
use super::is_final;
1368-
use std::str::FromStr;
1369-
1358+
#[cfg(any(
1359+
feature = "electrum",
1360+
feature = "esplora",
1361+
feature = "cbf",
1362+
feature = "rpc"
1363+
))]
13701364
#[test]
13711365
fn test_psbt_is_final() {
1366+
use super::is_final;
1367+
use bdk_wallet::bitcoin::Psbt;
1368+
use std::str::FromStr;
1369+
13721370
let unsigned_psbt = Psbt::from_str("cHNidP8BAIkBAAAAASWJHzxzyVORV/C3lAynKHVVL7+Rw7/Jj8U9fuvD24olAAAAAAD+////AiBOAAAAAAAAIgAgLzY9yE4jzTFJnHtTjkc+rFAtJ9NB7ENFQ1xLYoKsI1cfqgKVAAAAACIAIFsbWgDeLGU8EA+RGwBDIbcv4gaGG0tbEIhDvwXXa/E7LwEAAAABALUCAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////BALLAAD/////AgD5ApUAAAAAIgAgWxtaAN4sZTwQD5EbAEMhty/iBoYbS1sQiEO/Bddr8TsAAAAAAAAAACZqJKohqe3i9hw/cdHe/T+pmd+jaVN1XGkGiXmZYrSL69g2l06M+QEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQErAPkClQAAAAAiACBbG1oA3ixlPBAPkRsAQyG3L+IGhhtLWxCIQ78F12vxOwEFR1IhA/JV2U/0pXW+iP49QcsYilEvkZEd4phmDM8nV8wC+MeDIQLKhV/gEZYmlsQXnsL5/Uqv5Y8O31tmWW1LQqIBkiqzCVKuIgYCyoVf4BGWJpbEF57C+f1Kr+WPDt9bZlltS0KiAZIqswkEboH3lCIGA/JV2U/0pXW+iP49QcsYilEvkZEd4phmDM8nV8wC+MeDBDS6ZSEAACICAsqFX+ARliaWxBeewvn9Sq/ljw7fW2ZZbUtCogGSKrMJBG6B95QiAgPyVdlP9KV1voj+PUHLGIpRL5GRHeKYZgzPJ1fMAvjHgwQ0umUhAA==").unwrap();
13731371
assert!(is_final(&unsigned_psbt).is_err());
13741372

@@ -1385,14 +1383,9 @@ mod test {
13851383
use super::{NUMS_UNSPENDABLE_KEY_HEX, handle_compile_subcommand};
13861384
use bdk_wallet::bitcoin::Network;
13871385

1388-
// Expected taproot descriptors with checksums
1389-
const EXPECTED_PK_A: &str =
1390-
"tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,pk(A))#a2mlskt0";
1391-
const EXPECTED_AND_AB: &str = "tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,and_v(v:pk(A),pk(B)))#sfplm6kv";
1392-
1393-
// Verify our test expectations use the same NUMS key
1394-
assert!(EXPECTED_PK_A.contains(NUMS_UNSPENDABLE_KEY_HEX));
1395-
assert!(EXPECTED_AND_AB.contains(NUMS_UNSPENDABLE_KEY_HEX));
1386+
// Expected taproot descriptors with checksums (using NUMS key from constant)
1387+
let expected_pk_a = format!("tr({},pk(A))#a2mlskt0", NUMS_UNSPENDABLE_KEY_HEX);
1388+
let expected_and_ab = format!("tr({},and_v(v:pk(A),pk(B)))#sfplm6kv", NUMS_UNSPENDABLE_KEY_HEX);
13961389

13971390
// Test simple pk policy compilation to taproot
13981391
let result = handle_compile_subcommand(
@@ -1405,7 +1398,7 @@ mod test {
14051398
let json_string = result.unwrap();
14061399
let json_result: serde_json::Value = serde_json::from_str(&json_string).unwrap();
14071400
let descriptor = json_result.get("descriptor").unwrap().as_str().unwrap();
1408-
assert_eq!(descriptor, EXPECTED_PK_A);
1401+
assert_eq!(descriptor, expected_pk_a);
14091402

14101403
// Test more complex policy
14111404
let result = handle_compile_subcommand(
@@ -1418,7 +1411,7 @@ mod test {
14181411
let json_string = result.unwrap();
14191412
let json_result: serde_json::Value = serde_json::from_str(&json_string).unwrap();
14201413
let descriptor = json_result.get("descriptor").unwrap().as_str().unwrap();
1421-
assert_eq!(descriptor, EXPECTED_AND_AB);
1414+
assert_eq!(descriptor, expected_and_ab);
14221415
}
14231416

14241417
#[cfg(feature = "compiler")]

0 commit comments

Comments
 (0)