What it is good for
HoneyBadgerMPC is the right starting point when the secret values are application data represented as field-compatible shares:- the program computes over secret integers, fixed-point values, or other field-compatible values;
- public parameters can stay public while private inputs remain ordinary MPC shares;
- the main cost questions are multiplication count, multiplication depth, comparisons, and reveal boundaries;
- the output boundary is an opened value or client-output shares.
Protocol model
HoneyBadgerMPC-style protocols are built around finite-field secret sharing:- secrets are encoded as field elements;
- parties hold shares of those field elements;
- addition and subtraction are local operations on shares;
- multiplication consumes preprocessed material such as Beaver triples;
- opening/revealing reconstructs a clear value from enough valid shares.
Security posture
For developer configuration, remember three points:- HoneyBadgerMPC is designed for asynchronous, Byzantine-robust MPC.
- HoneyBadgerMPC is the default path for private computation over application values; concrete deployments still rely on ordinary cryptography for transport, authentication, signatures, and implementation details.
- Stoffel’s current local/network config enforces
parties >= 4 * threshold + 1.
n >= 3t + 1 thresholds.
Configure HoneyBadgerMPC
honeybadger is the default backend.
Preprocessing
Multiplication of two secret shares needs preprocessed material. Stoffel records preprocessing demand in the bytecode manifest and exposes preprocessing configuration in the Rust SDK network builders.Operation costs
Use-case examples
HoneyBadgerMPC is the best fit when the application is mostly field arithmetic over private inputs. The protocol’s share representation makes additions and scalar shifts local, while multiplication uses the backend’s preprocessed multiplication material. The examples below use Stoffel features that matter in real applications: typed fixed-point shares, loops, variable client counts, client-output channels, and explicit reveal boundaries.Federated fixed-point aggregation
Use this shape when clients contribute model updates, risk vectors, or analytics rows and the application needs per-position aggregates without revealing individual contributions:Private score routing with client-specific outputs
Use this shape when the host application should learn only coordination metadata while selected clients receive private result shares:ClientStore, Mpc.has_capability, and MpcOutput APIs define which clients supply and receive private values.
Further reading
- Performance and circuit shaping
- Andrew Miller et al., “HoneyBadgerMPC and AsynchroMix: Practical Asynchronous MPC and its Application to Anonymous Communication”: https://eprint.iacr.org/2016/1066
- Ben-Or, Canetti, Goldreich, “Asynchronous Secure Computation”: https://doi.org/10.1145/167088.167109
- Shamir, “How to Share a Secret”: https://doi.org/10.1145/359168.359176