Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Deployment

What shipping this repository actually means today: the release gate, the artifact that ships, and what a production deployment would still need. This is intentionally short and honest — most of this repo is proving infrastructure, not a deployed service.

Releases

Cutting a tag (v*) triggers .github/workflows/release.yml:

  1. The gate — fmt, clippy, schema validation, and the full workspace test suite must pass, then a release build (cargo build --release).
  2. The artifact — the crucible-prover CLI binary is attached to the tag’s GitHub release (creating the release object when a pushed tag has none). Only tags whose tree passes the whole gate ship a binary.

The CLI is the deployment surface: circuits, artifact pinning, proving, verification, vector judging, benchmarking (docs/cli.md). It is orchestration only; it performs no key management and holds no secrets.

What a checkout carries

  • Pinned artifactsartifacts/circuits/<op>/ bytecode + manifests are committed and strict-loaded before any proving (docs/artifacts.md).
  • Verification keys — written at runtime into the VK store (artifacts/verification-keys/, created on demand by prove / verify). Keys are derived by bb during proving and resolved by id during verification; they are not committed today.
  • Fixtures and vectors — committed catalog + envelope material used by tests and tooling, not shipped to end users.

Deployed on testnet

An UltraHonk verifier contract is live on Stellar testnet, and this repository verifies proofs against it:

ContractCCS6Z3VVCKV4F5BCH7VXJLKKWMDROUWOTZYROJ4T26CM7R45SE4IFYI2
Networktestnet (Test SDF Network ; September 2015)
Verification keythe transfer circuit’s, fixed at deploy
Deploy tx2f821d072a241410ad92d29d14eb71a03dc4726b02df35ce73e94a8621ea7e52 (ledger 4569701)
Verified-proof tx5ef50bffa8a89914a987c1d06b10fa096a31db72af61d861fd751cdaad653e79 (ledger 4569705)

The contract is Nethermind’s audited rs-soroban-ultrahonk wrapper, not code from this repository. Reimplementing UltraHonk verification on-chain would replace audited cryptography with unaudited code for no gain, so this repository owns the integration instead: the wire payload, the verifier service registration, the real LiveSorobanClient, and the agreement tests (docs/soroban-verification.md).

Verify it from a checkout, with no key and no fee:

CRUCIBLE_SOROBAN_LIVE=1 cargo test -p crucible-soroban-adapter --test live

That suite submits the committed on-chain fixture to the deployed contract through Soroban RPC simulation, and asserts the pristine proof is accepted while a tampered one is rejected. Simulation is a real execution of the contract and is the definitive verdict for a read-only call; it just does not settle on-chain.

Production gaps (by design)

  • The on-chain path is testnet-only, and the verifier is a third party’s. Mainnet deployment needs a mainnet-funded account and an audited key-management story. Stellar labels Confidential Tokens a developer preview — the contracts and verifier are under audit and not intended for production use (docs/testnet.md).
  • Only the transfer circuit has on-chain fixtures. Register, deposit, merge and withdraw follow the same recipe when on-chain verification is needed for them, so the live path currently proves the seam is correct rather than covering every circuit.
  • The local and on-chain toolchains emit different proof layouts. The contract is pinned to bb 0.87.0 (456-word proofs, 1,760-byte VK) while the local backend tracks bb 6.0.0-nightly (458 words, 3,680 bytes). The committed on-chain fixture is produced on the contract’s pin, so the two formats are each tested on their own terms rather than assumed interchangeable (docs/soroban-verification.md).
  • The exact circuit scheme is scaffold-shaped until aligned with the Confidential Token circuit specification (docs/circuit-model.md); artifacts, keys, and proofs produced before that alignment must not be treated as final.
  • No transaction-submitting testnet automation. Proof verification runs over read-only RPC simulation, so nothing in ordinary CI signs or submits a transaction, and the scenario layer’s live-network adapter stays opt-in and out of the default pipeline (docs/testnet.md).