use Arc
This commit is contained in:
@@ -1,15 +1,24 @@
|
|||||||
use std::thread;
|
use std::{
|
||||||
|
thread,
|
||||||
|
sync::{ Arc, Mutex, },
|
||||||
|
};
|
||||||
use rand::rngs::OsRng;
|
use rand::rngs::OsRng;
|
||||||
use secp256k1::{Secp256k1, key::PublicKey, };
|
use secp256k1::{ Secp256k1, key::PublicKey, };
|
||||||
use sha2::Sha256;
|
use sha2::Sha256;
|
||||||
use ripemd160::Ripemd160;
|
use ripemd160::Ripemd160;
|
||||||
use digest::{ Input, FixedOutput, };
|
use digest::{ Input, FixedOutput, };
|
||||||
|
|
||||||
|
const PREFIX: &[&str] = &["1Hatter"];
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
println!("Prefix: {:?}", PREFIX);
|
||||||
|
|
||||||
|
let stop_flag = Arc::new(Mutex::new(false));
|
||||||
let mut handles = vec![];
|
let mut handles = vec![];
|
||||||
for ind in 0..8 {
|
for ind in 0..4 {
|
||||||
|
let the_stop_flag = Arc::clone(&stop_flag);
|
||||||
let child = thread::spawn(move || {
|
let child = thread::spawn(move || {
|
||||||
run_one_task(ind);
|
run_one_task(ind, the_stop_flag);
|
||||||
});
|
});
|
||||||
handles.push(child);
|
handles.push(child);
|
||||||
}
|
}
|
||||||
@@ -19,21 +28,29 @@ fn main() {
|
|||||||
println!("Finished!");
|
println!("Finished!");
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_one_task(ind: usize) {
|
fn run_one_task(ind: usize, the_stop_flag: Arc<Mutex<bool>>) {
|
||||||
let secp = Secp256k1::new();
|
let secp = Secp256k1::new();
|
||||||
let mut rng = OsRng::new().expect("OsRng");
|
let mut rng = OsRng::new().expect("OsRng");
|
||||||
|
|
||||||
for i in 0..1_000_000 {
|
for i in 0..10_000_000 {
|
||||||
let (secret_key, public_key) = secp.generate_keypair(&mut rng);
|
let (secret_key, public_key) = secp.generate_keypair(&mut rng);
|
||||||
|
|
||||||
let s = make_btc_address(&public_key);
|
let s = make_btc_address(&public_key);
|
||||||
|
|
||||||
if i > 0 && i % 10000 == 0 {
|
if i % 10_000 == 0 {
|
||||||
println!("> {} - {}", ind, i);
|
if *the_stop_flag.lock().unwrap() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if i > 0 && i % 100_000 == 0 {
|
||||||
|
println!("> {} - {}", ind, i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if s.starts_with("1Hatt") {
|
if PREFIX.iter().any(|p| s.starts_with(p)) {
|
||||||
println!("{}", s);
|
println!("{}", s);
|
||||||
println!("{}", secret_key);
|
println!("{}", secret_key);
|
||||||
|
|
||||||
|
*the_stop_flag.lock().unwrap() = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user