Canonical Document Bundle Anchor - candidate ERC
We would like feedback on a candidate ERC for deriving and anchoring a deterministic commitment to a bundle of off-chain documents. Applications frequently commit to agreements, certifications, evidence, amendments, and supporting records. Hashing each file is not enough to make a bundle interoperable: implementations can still disagree about entry fields, ordering, normalization identifiers, version separation, duplicate handling, and replacement history. The proposal separates two layers: A normalization profile transforms a raw document into canonical bytes. A manifest describes, orders, and hashes commitments to those bytes. Each manifest entry contains five fixed-width fields: struct DocumentEntry { bytes32 contentHash; bytes32 role; bytes32 mimeTypeHash; bytes32 filenameHash; bytes32 normProfileId; } Entries are ordered lexicographically by role , filenameHash , contentHash , mimeTypeHash , and normProfileId . Equal entries remain duplicated, so the bundle is a multiset rather than a set. Each entry is hashed, and the ordered leaves are committed under a versioned schema identifier to produce one bytes32 bundle hash. The base profiles cover raw bytes, RFC 8785 JSON canonicalization, and Canonical XML 1.1 without comments. JSON and XML normalization occurs off-chain; the Solidity library hashes supplied entry fields and cannot prove that a caller correctly applied a profile. PDF and image documents typically use the raw-bytes profile ( PROFILE_RAW ) unless deployers agree on a custom normalization profile. The on-chain interface anchors a bundle in a (subjectId, role) slot. A slot has at most one active bundle, while supersession preserves the previous record and a forward pointer to its replacement. An optional recovery extension allows an administrator to reassign a contested slot principal without rewriting anchored history. Scope boundaries This proposal standardizes manifest construction, bundle-hash derivation, and anchor lifecycle. It does not prove: document authenticity, provenance, legal effect, or correctness; correct application of a normalization profile; continued availability of the committed documents or metadata URI; or membership proofs for individual documents without reproducing the manifest. The construction commits to the complete ordered manifest. It intentionally does not prescribe a Merkle tree. Questions for review Are the manifest fields and five-field total order sufficient to eliminate hidden ordering ambiguity? Should the JSON and XML normalization profiles remain normative in this ERC, or should profiles live in independently versioned companion documents? Is retaining duplicate entries the right default, or should exact duplicates be rejected? Is (subjectId, role) an appropriate namespace for one active bundle and an append-only supersession history? Should slot-principal reassignment remain an optional recovery extension? Is a complete-manifest hash preferable as the base primitive, leaving Merkle membership proofs to a separate extension? Implementation status A Solidity reference implementation, hashing library, and test suite is available at audited commit caa9b05 , including unit, fuzz, and Medusa property tests. The implementation has also been reviewed in an independent Verichains audit . This interface is independently deployable. It was introduced alongside five other standalone interfaces in an earlier architecture discussion , but it does not depend on an asset registry or any other proposal in that family. Authorship Chris Turner , David Hay ( LinkedIn ), Reagan Simpson , and Collins Musyimi . Developed at Kula , which builds infrastructure for regulated virtual-asset and titled-asset use cases. Reference implementations are open-source; we are proposing ecosystem interfaces, not a Kula-only stack. We are open to additional co-authorship and community contribution beyond Kula. The formal ERC submission is available here: github.com/ethereum/ERCs Add ERC: Canonical Document Bundle Anchor master ← KulaDao:erc/document-bundle-anchor opened 10:10PM - 05 Jul 26 UTC david-hay +676 -0 ## Summary - Adds draft ERC: **Canonical Document Bundle Anchor** - Spec fil … e: `ERCS/erc-document_bundle_anchor.md` - Reference implementation: [`packages/erc-document-bundle-anchor`](https://github.com/KulaDao/titled-asset-standards/tree/caa9b05/packages/erc-document-bundle-anchor) @ [`caa9b05`](https://github.com/KulaDao/titled-asset-standards/commit/caa9b05) Status: Draft. The eip/filename number is a placeholder (XXXX) pending editor assignment. ## Discussion - Meta thread: https://ethereum-magicians.org/t/proposing-a-family-of-candidate-erc-interfaces-for-titled-asset-infrastructure-architecture-review/28913 - Dedicated Proposal 2 thread: https://ethereum-magicians.org/t/canonical-document-bundle-anchor-candidate-erc/28935 ## Reference implementation | | | |---|---| | Repository | https://github.com/KulaDao/titled-asset-standards | | Package | https://github.com/KulaDao/titled-asset-standards/tree/caa9b05/packages/erc-document-bundle-anchor | | Security review | https://github.com/KulaDao/titled-asset-standards/tree/main/docs/security | ## Authors Chris Turner, David Hay (@david-hay), Reagan Simpson (@krumg111), Collins Musyimi (@Musyimi97) 1 post - 1 participant Read full topic
DeFi Intel is an entity-graph aggregator: we curate, tag and link crypto news to a typed knowledge graph of protocols, tokens, people and incidents. We do not republish the full article body. Use the link above to read the original report at Ethereum_magicians.
Want the full article?
Continue reading on Ethereum_magicians →