Atomic swap: Alice's USDC note -> Bob, Bob's XLM note -> Alice. Both parties must have signed. Pools verify the ZK proofs internally. Atomic swap: Alice's USDC note -> Bob, Bob's XLM note -> Alice. Both parties must have signed. Pools verify the ZK proofs internally.
PRIVACY UPDATE: No explicit "Alice" or "Bob" addresses. Authorization is purely ZK proof possession. Both parties output a new commitment for the counterparty.
fn execute(
env: soroban_sdk::Env,
params: SwapParams,
alice_proof: soroban_sdk::Bytes,
alice_pub_signals: soroban_sdk::Bytes,
alice_nullifier: soroban_sdk::BytesN<32>,
alice_output_commitment: soroban_sdk::BytesN<32>,
alice_output_root: soroban_sdk::BytesN<32>,
bob_proof: soroban_sdk::Bytes,
bob_pub_signals: soroban_sdk::Bytes,
bob_nullifier: soroban_sdk::BytesN<32>,
bob_output_commitment: soroban_sdk::BytesN<32>,
bob_output_root: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>