Skip to content

Instantly share code, notes, and snippets.

@RCasatta
Created October 19, 2021 10:55
Show Gist options
  • Save RCasatta/86874189144f7c391d6fc27b7ed60a82 to your computer and use it in GitHub Desktop.
Save RCasatta/86874189144f7c391d6fc27b7ed60a82 to your computer and use it in GitHub Desktop.
taproot tests, trying to derive same taproot address from core and from rust
#[test]
fn taproot_tests() {
let secp = Secp256k1::new();
let secret = Vec::from_hex("6c068c2094c3f0986741cddbaff96399e338b4120671c6640216d3e474487a19").unwrap();
let pair = KeyPair::from_seckey_slice(&secp, &secret).unwrap();
let public = schnorr::PublicKey::from_keypair(&secp, &pair);
assert_eq!(public.to_hex(),"72ad3fb702bf1a2111b09c2bf1e72f4f52d4ceb2acdcfcd0c63abf70a59c36d6");
let second_secret = Vec::from_hex("1cbb4d11a771697c1d86d0bbbcf0344b1e8b70d0cc794c3d9d6eff613390ba5e").unwrap();
let second_pair = KeyPair::from_seckey_slice(&secp, &second_secret).unwrap();
let second_public = schnorr::PublicKey::from_keypair(&secp, &second_pair);
assert_eq!(second_public.to_hex(),"244325643930d620858e8628311936ee3cee1e7e9fb2267a488de2eca05b802e");
let merkle_script = Script::new_witness_program(WitnessVersion::V1, &second_public.serialize());
let script_odds = vec![
(1, merkle_script),
];
let tree_info = TaprootSpendInfo::new_huffman_tree(&secp, public, script_odds.clone()).unwrap();
let script = Script::new_witness_program(WitnessVersion::V1, &tree_info.output_key().serialize());
let address = Address::from_script(&script, Network::Signet).unwrap();
assert_eq!(address.to_string(),"tb1pdjcygdnme64g2jrxvsq2tskm8wg5p63xam9y9twy46v3zsucc9uqjzfu7r");
let address = Address::from_script(&script, Network::Bitcoin).unwrap();
assert_eq!(address.to_string(),"bc1pdjcygdnme64g2jrxvsq2tskm8wg5p63xam9y9twy46v3zsucc9uq92lnyv");
/*
$ bitcoin-cli -signet deriveaddresses "tr(72ad3fb702bf1a2111b09c2bf1e72f4f52d4ceb2acdcfcd0c63abf70a59c36d6,pk(244325643930d620858e8628311936ee3cee1e7e9fb2267a488de2eca05b802e))#7n0yvjke"
[
"tb1prv2fch7n3jg27wnxpgnk9m4vgzzvlerykfz7njhqa9hm44g4prrq8kdvjn"
]
*/
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment