@@ -43,7 +43,7 @@ use bdk_wallet::{
4343 bitcoin:: {
4444 XOnlyPublicKey ,
4545 key:: { Parity , rand} ,
46- secp256k1:: PublicKey ,
46+ secp256k1:: { PublicKey , Scalar , SecretKey } ,
4747 } ,
4848 descriptor:: { Descriptor , Legacy , Miniscript } ,
4949 miniscript:: { Tap , descriptor:: TapTree , policy:: Concrete } ,
@@ -915,15 +915,14 @@ pub(crate) fn handle_compile_subcommand(
915915 // This improves privacy by preventing observers from determining if key path spending is disabled.
916916 // See BIP-341: https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#constructing-and-spending-taproot-outputs
917917
918- // Generate random scalar r and compute rG (r times the generator point G)
919918 let secp = Secp256k1 :: new ( ) ;
920- let ( r_secret, r_point ) = secp . generate_keypair ( & mut rand:: thread_rng ( ) ) ;
919+ let r_secret = SecretKey :: new ( & mut rand:: thread_rng ( ) ) ;
921920 r = Some ( r_secret. display_secret ( ) . to_string ( ) ) ;
922921
923922 let nums_key = XOnlyPublicKey :: from_str ( NUMS_UNSPENDABLE_KEY_HEX ) ?;
924923 let nums_point = PublicKey :: from_x_only_public_key ( nums_key, Parity :: Even ) ;
925924
926- let internal_key_point = nums_point. combine ( & r_point ) ?;
925+ let internal_key_point = nums_point. add_exp_tweak ( & secp , & Scalar :: from ( r_secret ) ) ?;
927926 let ( xonly_internal_key, _) = internal_key_point. x_only_public_key ( ) ;
928927
929928 let tree = TapTree :: Leaf ( Arc :: new ( taproot_policy) ) ;
0 commit comments