Specifications for recording, in a verifiable form, what autonomous software did.
| Document | Version | Status |
|---|---|---|
| Adjent Record Format (ARF) | 0.4 | Draft, current |
| Adjent Record Format (ARF) | 0.3 | Superseded |
| Adjent Record Format (ARF) | 0.2 | Superseded |
| Adjent Record Format (ARF) | 0.1 | Superseded |
Version 0.4 adds witness countersignatures, the only construction here that survives an adversary holding every key the operator holds. Entry and checkpoint formats are unchanged from 0.3.
Version 0.3 changed how payload_hash is computed so that a body can be hashed while it is relayed
rather than buffered first. This is a breaking change: 0.2 chains do not verify under 0.3.
The reason for breaking it is in section 5.2. The earlier construction pushed implementations toward committing to only as much of a body as they were willing to hold in memory, and a commitment that covers less than what was relayed describes an action that did not happen.
The reference implementation lives in adjent. This repository holds the format itself, versioned separately, so that an implementation in another language can be written from the specification alone and produce byte-identical hashes.
A record format that only one program can produce is not evidence. It is a log file belonging to whoever wrote the program. The point of specifying this separately is that an auditor, a regulator, or an adversary of ours can verify a record without running our code or trusting our organisation.
Version 0.1 is a draft. It is implemented and tested, and the test vectors are generated from the implementation rather than written by hand, but the format is not yet stable and may change without a compatibility path until it reaches 1.0.
Disagreement about the design is welcome and useful. Open an issue.
Apache-2.0. Implement it freely, including in competing products.