This example shows how a Soroban insurance contract uses TrustLink to verify a policyholder before issuing coverage.
- A contract stores a TrustLink contract address.
issue_policycheckshas_all_claims(subject, ["KYC_PASSED", "AML_CLEARED"])on the policyholder.- Policy issuance is rejected unless both identity claims are valid.
- Unit tests cover both allowed and blocked issuance flows.
The key underwriting guard is:
let mut required_claims: Vec<String> = Vec::new(&env);
required_claims.push_back(String::from_str(&env, "KYC_PASSED"));
required_claims.push_back(String::from_str(&env, "AML_CLEARED"));
if !trustlink.has_all_claims(&policyholder, &required_claims) {
panic!("policyholder must have valid KYC_PASSED and AML_CLEARED claims");
}src/lib.rs: Insurance contract and unit tests.Cargo.toml: Example crate configuration.
cd examples/insurance
cargo test