Comparison to other formats

Strata exists in a very specific design space. This page compares it to commonly used formats to clarify when Strata is the right choice and when it is not.


Strata vs JSON

JSON

  • Human-readable

  • Flexible and forgiving

  • Multiple valid representations of the same value

  • Key order is semantically irrelevant

  • No canonical binary form

  • Hashing JSON reliably requires normalization layers

Strata

  • Machine-first, canonical

  • Exactly one valid binary representation per value

  • Key order is fixed and enforced

  • Designed for stable hashing and reproducibility

  • Strict decoding with explicit failures

Summary

JSON optimizes for ease of use. Strata optimizes for correctness.

If two JSON encoders produce different bytes, that is normal. If two Strata encoders do, one of them is wrong.


Strata vs MessagePack

MessagePack

  • Compact binary format

  • Multiple integer encodings

  • Optional canonical mode

  • Decoders often accept non-canonical input

  • Hash stability is optional, not enforced

Strata

  • Canonical encoding is mandatory

  • One integer representation

  • No permissive decode paths

  • Canonical form is not a mode, it is the format

Summary

MessagePack can be canonical if you are careful. Strata is canonical even if you are careless.


Strata vs Protocol Buffers

Protocol Buffers

  • Schema-driven

  • Designed for forward and backward compatibility

  • Field reordering is allowed

  • Unknown fields are preserved

  • Binary output is not stable across implementations or versions

Strata

  • Schema-agnostic

  • No field reordering

  • No unknown fields

  • Binary output is stable by definition

Summary

Protobuf optimizes for evolving APIs. Strata optimizes for invariant data.

If evolution is your priority, Protobuf wins. If byte identity matters, Strata wins.


Strata vs CBOR

CBOR

  • Flexible binary format

  • Optional canonical rules

  • Supports tags, floats, and extensions

  • Multiple valid encodings for many values

Strata

  • No optional rules

  • No tags or extensions

  • No floats in core

  • Minimal value model

Summary

CBOR is a toolkit. Strata is a contract.


Strata vs BSON

BSON

  • Designed for document databases

  • Focused on storage and queryability

  • Includes type metadata and size fields

  • Not designed for canonical hashing

Strata

  • Designed for transport and hashing

  • Minimal overhead

  • No implicit metadata

  • Hash-first design

Summary

BSON is a database format. Strata is an integrity format.


Strata vs Custom Canonical Layers

Many systems build their own canonical layers on top of JSON or Protobuf.

This usually involves:

  • key sorting

  • numeric normalization

  • strict schema enforcement

  • ad-hoc hashing rules

Strata bakes these guarantees into the format itself.

Summary

Strata replaces fragile conventions with enforced invariants.


When Strata is the Wrong Choice

Do not use Strata if you need:

  • Schema evolution with backward compatibility

  • Floating point arithmetic

  • Human-editable storage

  • Partial or permissive decoding

  • Rich type systems

Strata will actively resist these use cases.


When Strata is the Right Choice

Use Strata when you need:

  • Stable content addressing

  • Cryptographic hashing

  • Cross-language determinism

  • Reproducible builds

  • Trustless or adversarial environments

  • Protocols where bytes matter


Final Perspective

Most formats optimize for humans. Some optimize for networks. Very few optimize for invariants.

Strata optimizes for invariants.

Last updated

Was this helpful?