use csv_adapter_core::{Commitment, Hash, SealRef};
fn main() {
println!("=== CSV Adapter Core: Commitment Chain Example ===\n");
let contract_id = Hash::new([0x01; 32]);
let payload_hash = Hash::new([0xAA; 32]);
let seal_ref = SealRef::new(vec![0x00; 32], None).expect("valid seal ref");
let domain_separator = [0u8; 32];
let genesis = Commitment::simple(
contract_id,
Hash::zero(), payload_hash,
&seal_ref,
domain_separator,
);
println!(
"1. Genesis Commitment:");
println!(
" Hash: {}",
hex::encode(genesis.hash().as_bytes())
);
println!(
" Previous: {}",
hex::encode(Hash::zero().as_bytes())
);
println!(
" Payload: {}",
hex::encode(payload_hash.as_bytes())
);
let payload_hash_2 = Hash::new([0xBB; 32]);
let seal_ref_2 = SealRef::new(vec![0x01; 32], None).expect("valid seal ref");
let commitment_2 = Commitment::simple(
contract_id,
genesis.hash(), payload_hash_2,
&seal_ref_2,
domain_separator,
);
println!("\n2. Second Commitment:");
println!(
" Hash: {}",
hex::encode(commitment_2.hash().as_bytes())
);
println!(
" Previous: {}",
hex::encode(genesis.hash().as_bytes())
);
println!(
" Payload: {}",
hex::encode(payload_hash_2.as_bytes())
);
let payload_hash_3 = Hash::new([0xCC; 32]);
let seal_ref_3 = SealRef::new(vec![0x02; 32], None).expect("valid seal ref");
let commitment_3 = Commitment::simple(
contract_id,
commitment_2.hash(), payload_hash_3,
&seal_ref_3,
domain_separator,
);
println!("\n3. Third Commitment:");
println!(
" Hash: {}",
hex::encode(commitment_3.hash().as_bytes())
);
println!(
" Previous: {}",
hex::encode(commitment_2.hash().as_bytes())
);
println!(
" Payload: {}",
hex::encode(payload_hash_3.as_bytes())
);
println!("\n4. Commitment Chain Summary:");
println!(" Genesis → Commitment 2 → Commitment 3");
println!(" Chain length: 3 commitments");
println!(
" Latest commitment: {}",
hex::encode(commitment_3.hash().as_bytes())
);
println!("\n=== Example Complete ===");
}