0% 0% 0% 0%

Contracts

Index ▾
  1. 01. Concepts
  2. 02. Contracts
  3. 03. pool
  4. 04. policy
  5. 05. viewkeys
  6. 06. verifier
  7. 07. Circuits
  8. 08. Features
  9. 09. Shielded send
  10. 10. Deposit & withdraw
  11. 11. Consolidate & split
  12. 12. Shielded swap & pay
  13. 13. Escrow
  14. 14. Payment channels
  15. 15. Payroll & subscriptions
  16. 16. Auditor disclosure
  17. 17. ASP compliance
  18. 18. Cloud runtimes

Contracts

The on-chain layer is a small set of Soroban contracts (workspace pins soroban-sdk = "26"), deployed on Stellar testnet. They hold the shielded state and verify the zero-knowledge proofs produced client-side. Proofs are generated off-chain (Noir / UltraHonk) and verified on-chain using Stellar’s BN254 and Poseidon host functions.

There are three deployed contracts plus an embedded UltraHonk verifier:

ContractRole
poolThe vault + private ledger: per-asset SAC vaults, the commitment tree, the nullifier accumulator, and the deposit/transfer/withdraw entrypoints.
policyThe ASP approved set and its depth-20 Poseidon root — kept separate from the pool so compliance can evolve independently.
viewkeysA thin record keeper for published view keys and disclosure grants (the auditable trail).
verifierThe on-chain UltraHonk proof verifier, per-circuit, with an immutable verifying key.

How a spend flows

UI action  →  Rust core builds witness  →  ozky-prover (UltraHonk) proves
           →  relayer submits to pool
           →  pool calls the per-circuit verifier (BN254 + Poseidon host fns)
           →  nullifiers recorded, commitments appended, vault settles

You never submit from a public XLM account — a pre-funded relayer pays fees (see Cloud runtimes).

The circuits these contracts verify (deposit, transfer/transfer4, withdraw, split, escrow, shielded_swap, channel_close) are Noir/UltraHonk circuits — each a pool entrypoint, not a separate contract. Each maps to a feature.