
Protocol Architecture
Protocol architecture
Current backend support
| Backend | Purpose | Developer selector |
|---|---|---|
| HoneyBadgerMPC | Default asynchronous/robust backend for field-compatible secret application values. | honeybadger / MpcBackend::HoneyBadger |
| AVSS | AVSS backend for verifiable scalar shares, public commitments, and curve-compatible outputs. | avss, avss:<curve> / MpcBackend::Avss { curve } |
Integration points
Stoffel VM
- Secret register operations map to backend share operations.
- Clear-to-secret transitions create backend share data.
- Reveal/open operations reconstruct values through the selected backend.
Share.random,Share.open,Share.get_commitment, andMpc.*builtins route through backend capabilities.
CLI and bytecode
Stoffel.tomlstores[mpc] backend, optionalcurve,parties, andthreshold.- CLI flags such as
--backend,--field,--parties, and--thresholdoverride project settings. .stflbbytecode records backend and curve/field metadata so execution can validate the runtime configuration.
Rust SDK
MpcConfig::builder()configures parties, threshold, instance ID, and backend.- Program builders accept
.backend(...)and.curve(...). NetworkDeploymentand off-chain client configs carry backend selection into generated network/client TOML.
Security model
Each backend has its own threat model and assumptions. Do not treat “MPC backend” as a single security claim.| Backend | Security posture |
|---|---|
| HoneyBadgerMPC | Asynchronous, Byzantine-robust, field-based MPC for private computation over application values. Use it when the output boundary is an opened result or client-output shares. |
| AVSS | Asynchronous verifiable secret sharing with Feldman-style commitments. Use it when public commitments, curve-encoded values, or scalar responses are part of the verifier-facing protocol boundary. |
Data protection flow
- Inputs become secret shares through ClientStore or direct secret-value paths.
- Computation proceeds over backend share data.
- Intermediate secret values remain secret unless the program opens/reveals them.
- Outputs are returned, opened, or sent to client slots only where the program explicitly does so.
Performance considerations
| Operation shape | Notes |
|---|---|
| Local share arithmetic | Addition, subtraction, and scalar operations are usually cheap. |
| Secret multiplication | Requires backend protocol work and preprocessing. |
| Opening/reveal | Requires reconstruction from enough parties. |
| Comparisons and bit-heavy logic | More expensive than field arithmetic because they lower into additional share operations. |
| Curve/commitment workflows | Use AVSS when the output boundary needs public commitments, curve-encoded values, or opened scalar responses. |