MALT v0.0.7-rc.1
Pre-releaseThis is a prerelease for integration and verifier testing. MALT remains pre-v1, experimental, and not production-ready.
Release contract
The source tag is the authoritative release artifact. This candidate publishes:
- the Go module at
github.com/dewebprotocol/malt; - structured typed MALT roots in the private-use
0x30VSBBcodec layout; - the
malt.resolve/v0alpha1,malt.read/v0alpha1, andmalt.map-proof/v0alpha1verification profiles; - the experimental client-root profiles documented in the Client-Root Contract;
- the frozen Resolve/Read conformance corpus v1 for structured version-2 roots; and
- the frozen Resolve/Read conformance corpus v2 for version-3 roots.
MALTVersionID=3 is a wire-format version, not the source release version.
Highlights
Structured typed roots: 0x30VSBB
Typed MALT root codecs now use the project private-use 0x30VSBB layout, where V identifies the wire version, S the semantic kind, and BB the commitment backend suite. New constructors emit these version-3 codecs:
| Semantic kind | KZG | IPA |
|---|---|---|
| Map | 0x303101 |
0x303102 |
| List | 0x303201 |
0x303202 |
Decoders fail closed on unknown versions, semantics, backend suites, combinations, identity-hash sizes, and mixed-profile children. Structured version-2 roots remain readable and verifiable, but default constructors do not emit them.
4096-slot KZG semantic geometry
KZG Map and List nodes now use all 4096 commitment positions. KZG Maps consume SHA-256 keys as 12-bit radix digits. KZG Lists reserve position zero for authenticated metadata and expose 4095 content positions. IPA remains a 256-position suite, using 8-bit Map digits and 255 List content positions.
The same backend-sized geometry is used by semantic producers, materialization, and portable verification.
Verifiable Map non-membership
The new Map-proof contract verifies both membership and non-membership for KZG and IPA roots. An exact absent keyed relation can be authenticated by:
- a proved empty radix slot;
- a conflicting terminal leaf; or
- a complete fixed-domain collision bucket.
Version-3 collision buckets authenticate their empty tail positions, enabling sound collision-bucket non-membership. This release adds MapProofRequest, MapProofResult, MapProver, VerifyMapProof, the malt.map-proof/v0alpha1 schemas, the terminal ProofList step map_absence, and the matching Go SDK and browser/WASM verification boundary.
Other changes
- Add deterministic Resolve/Read conformance corpora for KZG and IPA.
- Add complete-view client-root values,
sdk/writer, exact candidate-root bundles, root-bound Map materialization witnesses, and receipt-gated writer sessions. - Add a unified browser writer WASM with isolated KZG and IPA workers.
- Add request-scoped read and writer observations for diagnostics.
- Narrow materializer and graph-writer dependencies to the capabilities used by each algorithm.
- Rebuild a verified structured-version-2 complete view as version 3 before applying client-side changes.
- Reject incomplete List materialization, noncanonical Map-proof coordinates, target relabeling, invalid UTF-8, stale intents, mismatched receipts, and mixed backend/version materialization.
- Remove
radix.ProveTimings,(*radix.Map).ProveWithTimings, the obsolete process-globalloggerpackage, the formergraph/querypathhelper, and the unusedzapandmultierrdependencies.
Compatibility
This is an intentional pre-v1 source- and wire-breaking release candidate.
v0.0.6 emitted the flat experimental codecs 0x300001 through 0x300004. The current decoder intentionally does not classify those roots as structured MALT roots. This release does not provide a flat-root migration layer; experimental roots and their materialized proof-serving state should be recreated.
Structured version-2 roots (0x302...) were introduced on main after v0.0.6 and are not v0.0.6 roots. They remain available for read, proof, and exact complete-view replay. New constructors emit version 3, and collision-bucket non-membership requires the version-3 fixed-domain bucket profile.
Removed Go APIs have no forwarding compatibility shims. The /v1 suffixes on client-root profiles version serialized experimental profiles; they do not declare MALT or its Go APIs stable at v1.
Known limits
- Non-membership proves only whether one exact keyed relation is absent from a Map. It does not prove List-index, graph-path, object, payload-byte, or remote data absence.
- Ordinary
Readkeeps its existing missing-key result,ErrQueryNotFound; there is no corresponding List non-membership API. - Collision-bucket non-membership is available only for version-3 fixed-domain buckets.
- The browser/WASM verifier is the same Go verifier compiled for WebAssembly, not an independent cryptographic implementation.
- Client-root bundles and materialization receipts are not portable state-transition, publication, freshness, or trust proofs.
Validation
- Tagged commit:
a4799c63d167a2ca361c84967f6484bff3bf5471 - Exact-commit CI: Go / Test and vet, Push on main, and Code Quality all succeeded.
- Local release-range, formatting, full Go test, 32-bit KZG/IPA, vet, and build gates passed on the tagged commit.
- Verifier WASM passed 49 Resolve/Read plus 8 Map-proof vectors with both backends, and 25 plus 4 vectors in each KZG-only and IPA-only run.
- Writer WASM passed KZG and IPA stateless/session smoke tests plus the dual-Worker smoke test.
- A temporary external Go module compiled against the tagged tree while importing the module-root
malt,protocol,sdk/verifier, andauth/arcset/materializerpackages.
This is a source-only release. No binary or WASM assets are attached; consumers build from source.