use wai_quantum::ed25519_dalek::SigningKey;
use wai_quantum::quantum::Measure;
use wai_quantum::quantum_receipt::QuantumReceipt;
use wai_quantum::quantum_toolchain as qt;
fn main() {
let circuit = qt::ghz(3);
let key = SigningKey::from_bytes(&[42u8; 32]);
let receipt = QuantumReceipt::seal(
&key,
"did:key:example",
&circuit,
Some(Measure { seed: 7, shots: 4096 }),
0, None,
)
.expect("seal");
println!("verifies {}", receipt.verify());
println!("re-simulates to claim {}", receipt.verify_reconstruction(&circuit));
println!("work {} amplitude updates", receipt.work_amp_updates);
println!("energy {} uJ (0 = unmetered)", receipt.joules_micro);
let json = receipt.to_json();
let tampered = json.replace("\"work_amp_updates\":24", "\"work_amp_updates\":2400");
assert_ne!(json, tampered, "expected the work field in the JSON");
let forged = QuantumReceipt::from_json(&tampered).expect("still parses");
println!("\nclaiming 100x the work: verifies = {}", forged.verify());
}