You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
use rustywallet::prelude::*;// Generate a random private keylet private_key = PrivateKey::random();println!("WIF: {}", private_key.to_wif(Network::Mainnet));// Generate Bitcoin addresslet address = Address::p2wpkh(&private_key.public_key(),Network::Mainnet)?;println!("Address: {}", address);// Generate from mnemoniclet mnemonic = Mnemonic::generate(12)?;println!("Mnemonic: {}", mnemonic.phrase());
Descriptor-Based Address Derivation
use rustywallet_address::prelude::*;// Derive from wpkh descriptorlet addr = Address::from_descriptor("wpkh(02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5)",0,Network::BitcoinMainnet,)?;// Derive from Taproot descriptorlet addr = Address::from_descriptor("tr(02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5)",0,Network::BitcoinMainnet,)?;
BOLT12 Offers
use rustywallet_lightning::bolt12::{Bolt12Offer,OfferBuilder};// Create an offerlet offer = OfferBuilder::new().description("Coffee").amount_msats(10_000).issuer("Bob's Coffee Shop").build()?;println!("Offer: {}", offer.encode());// lno1...// Parse an offerlet parsed = Bolt12Offer::parse(&offer.encode())?;
High-Performance Batch Generation
use rustywallet_batch::prelude::*;// Generate keys at 7M+ keys/seclet generator = FastKeyGenerator::new();for key in generator.take(1_000_000){// Process key...}// Generate addresses in parallellet addr_gen = BatchAddressGenerator::new(BatchAddressType::P2TR,Network::Mainnet);for(key, address)in addr_gen.generate_stream(10_000){// Process...}
Vanity Address Generation (Including Taproot)
use rustywallet_vanity::prelude::*;// Find Taproot address with patternlet result = VanityGenerator::new().address_type(AddressType::P2TR).pattern(Pattern::prefix("abc")).generate()?;println!("Found: {}", result.address);// bc1pabc...
Electrum Balance Checking
use rustywallet_electrum::{ElectrumClient,Network};#[tokio::main]asyncfnmain() -> Result<(),Box<dyn std::error::Error>>{let client = ElectrumClient::connect("electrum.blockstream.info:50002",Network::Mainnet).await?;// Check balance - no rate limits!let balance = client.get_balance("bc1q...").await?;println!("Balance: {} sats", balance.confirmed);Ok(())}
Counting Bloom Filter
use rustywallet_bloom::CountingBloomFilter;letmut filter = CountingBloomFilter::new(100_000,0.01);// Insert and remove items
filter.insert("address1");
filter.insert("address2");assert!(filter.contains("address1"));
filter.remove("address1")?;assert!(!filter.contains("address1"));
Multi-Language Mnemonics
use rustywallet_mnemonic::{Mnemonic,Language};// Generate in Japaneselet mnemonic = Mnemonic::generate_with_language(12,Language::Japanese)?;// Auto-detect language when parsinglet parsed = Mnemonic::parse_auto_detect("γγγγγγ γγγγ€...")?;assert_eq!(parsed.language(),Language::Japanese);
SLIP39 Shamir Secret Sharing
use rustywallet_hd::Slip39;// Split seed into 5 shares, need 3 to recoverlet slip39 = Slip39::new(3,5);let shares = slip39.split(&seed)?;// Recover with any 3 shareslet recovered = Slip39::combine(&shares[0..3])?;