use chaincraft::crypto::{pow::PoWChallenge, KeylessCryptoPrimitive, ProofOfWork};
use chaincraft::error::Result;
use std::time::Instant;
#[tokio::main]
async fn main() -> Result<()> {
println!("Chaincraft Proof of Work Example");
println!("=================================\n");
let challenge = PoWChallenge::new("blockchain_challenge_001");
let pow = ProofOfWork::with_difficulty(2);
println!("Mining with difficulty 2 (2 leading zeros)...");
let start = Instant::now();
let proof = pow.create_proof(challenge.clone()).await?;
let elapsed = start.elapsed();
println!(" Nonce: {}", proof.nonce);
println!(" Hash: {}...", &proof.hash[..proof.hash.len().min(16)]);
println!(" Time: {elapsed:?}\n");
let verified = pow.verify_proof(challenge, proof).await?;
println!("Verification: {}", if verified { "PASSED" } else { "FAILED" });
Ok(())
}