Called after the user's XLM/USDC payment is confirmed.
Deploys a new lockb0x Soroban contract for user, invokes its
initialize function via cross-contract call, and emits an event.
fn on_board(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
poh_anchor: soroban_sdk::BytesN<32>,
) -> soroban_sdk::Address
Initialise the contract. Must be called once by the deployer.
fn initialise(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
lockb0x_wasm_hash: soroban_sdk::BytesN<32>,
)
Update the lockb0x WASM hash for new deployments.
fn set_lockb0x_wasm(env: soroban_sdk::Env, new_hash: soroban_sdk::BytesN<32>)
Register/update Groth16 verifying key material referenced by vk_id.
fn set_verifying_key(
env: soroban_sdk::Env,
vk_id: soroban_sdk::String,
alpha_g1: soroban_sdk::BytesN<64>,
beta_g2: soroban_sdk::BytesN<128>,
gamma_g2: soroban_sdk::BytesN<128>,
delta_g2: soroban_sdk::BytesN<128>,
ic0_g1: soroban_sdk::BytesN<64>,
ic1_g1: soroban_sdk::BytesN<64>,
)
Redeem a fiat access code using a ZK proof of issuer-commitment knowledge.
The issuer commitment is stored as a persistent key so it cannot be re-used.
fn redeem_access_code(
env: soroban_sdk::Env,
zk_proof_a: soroban_sdk::Bytes,
zk_proof_b: soroban_sdk::Bytes,
zk_proof_c: soroban_sdk::Bytes,
nullifier_hash: soroban_sdk::BytesN<32>,
vk_id: soroban_sdk::String,
user: soroban_sdk::Address,
poh_anchor: soroban_sdk::BytesN<32>,
) -> soroban_sdk::Address
Register a 32-byte access-code commitment hash. Admin-only.
fn register_commitment(env: soroban_sdk::Env, commitment: soroban_sdk::BytesN<32>)
Called by orchestrators that bind onboarding to an off-chain payment key.
Replay-safe behavior:
fn on_board_for_payment(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
poh_anchor: soroban_sdk::BytesN<32>,
payment_key: soroban_sdk::BytesN<32>,
) -> soroban_sdk::Address
Redeem a fiat access code and bind onboarding idempotency to payment_key.
fn redeem_access_code_for_payment(
env: soroban_sdk::Env,
zk_proof_a: soroban_sdk::Bytes,
zk_proof_b: soroban_sdk::Bytes,
zk_proof_c: soroban_sdk::Bytes,
nullifier_hash: soroban_sdk::BytesN<32>,
vk_id: soroban_sdk::String,
user: soroban_sdk::Address,
poh_anchor: soroban_sdk::BytesN<32>,
payment_key: soroban_sdk::BytesN<32>,
) -> soroban_sdk::Address