2026-09-16
Prove, Don't Disclose: a working paper, and a Kaimeter rewrite
We've published a working paper.
Prove, Don't Disclose: Verifiable CBAM Compliance Across Industrial Supply Chains Using Rules as Code and Zero-Knowledge Proofs - Kaimeter Working Paper 2026-01, v1.1, preprint. DOI: 10.5281/zenodo.22740284 · CC BY 4.0.
The gap
CBAM's Operators Portal already lets an installation share one verified embedded-emissions figure with every EU declarant. Three gaps remain. The figure is held in an EU-operated registry - a problem for producers in jurisdictions that restrict cross-border data transfer; it is per installation, so it cannot assemble a complex or downstream good's emissions from independent suppliers; and it carries a number without the rule version that produced it. Where actual data is unavailable, punitive default values apply: +10% in 2026, +20% in 2027, +30% from 2028 (fertilisers: 1%).
The idea
Two techniques, combined for the first time in border-carbon compliance:
- Rules as code - the CBAM methodology encoded per sector as a versioned, tested, executable rule bundle whose cryptographic hash identifies exactly which rules were applied.
- Zero-knowledge proofs - a producer proves the declared figure is the correct output of that rule version without revealing its activity data. Proofs compose recursively up the supply chain, so a manufacturer can incorporate precursor emissions from installations it never sees.
The paper is explicit that this complements accredited verification, it does not replace it. A proof establishes correct computation, not true inputs; accredited verifiers remain the trust anchor. The full design, legal fit, deployment models including air-gapped operation, a worked smelter→extruder→manufacturer scenario, and the limitations are all in the paper.
Kaimeter is being rebuilt from scratch
The paper specifies a reference implementation, and that is what Kaimeter
becomes: a Rust workspace (kaimeter-rules, kaimeter-core, kaimeter-app)
built around the rule bundle and the proof system. It is a ground-up rewrite,
so its shape differs from the tool you may have tried.
The old prototype is not going away. It remains available, Apache-2.0, on
the legacy-v0 branch:
github.com/kaimeter/kaimeter/tree/legacy-v0.
Where the project stands today
main holds the finalized paper sources and build pipeline, the pinned Rust
toolchain, CI quality gates, the comment policy, and the first conformance
vector - but no crate has been released yet. Planned releases:
| Release | Target | Content |
|---|---|---|
| v0.1 | Oct 2026 | kaimeter-rules aluminium bundle, Appendix B vector, bundle hash, no prover |
| v0.2 | Nov 2026 | First zkVM guest, differential tests, secondary aluminium |
| v0.3 | Q1 2027 | Steel, proof envelope, offline verifier, signed bundles |
| Later | 2027-28 | Cement, fertilisers, hydrogen, downstream, recursive proofs |
- Paper: doi.org/10.5281/zenodo.22740284
- Source: github.com/kaimeter/kaimeter
- Status: docs/STATUS.md
Comments on the preprint are welcome and will be acknowledged in a later version.