Files
bft-crdt-experiment/side-node/src/clients/btc_other_rpc.rs

39 lines
1.2 KiB
Rust
Raw Normal View History

use bdk::{
bitcoin::Network,
database::MemoryDatabase,
keys::{
bip39::{Language, Mnemonic, WordCount},
DerivableKey, ExtendedKey, GeneratableKey, GeneratedKey,
},
miniscript,
template::Bip84,
KeychainKind, Wallet,
};
pub async fn run() -> Result<(), anyhow::Error> {
// Generate a new mnemonic
let mnemonic: GeneratedKey<_, miniscript::Segwitv0> =
Mnemonic::generate((WordCount::Words12, Language::English)).unwrap();
let mnemonic_words = mnemonic.to_string();
let mnemonic = Mnemonic::parse(&mnemonic_words).unwrap();
// Generate the extended key
let xkey: ExtendedKey = mnemonic.into_extended_key()?;
// Get private key from the extended key
let xprv = xkey.into_xprv(Network::Signet).unwrap();
// Create a BDK wallet using BIP 84 descriptor ("m/84h/1h/0h/0" and "m/84h/1h/0h/1")
let wallet = Wallet::new(
Bip84(xprv, KeychainKind::External),
Some(Bip84(xprv, KeychainKind::Internal)),
Network::Signet,
MemoryDatabase::default(),
)?;
let address = wallet.get_address(bdk::wallet::AddressIndex::New)?;
println!("Generated Address: {:?}", address);
Ok(())
}