json_atomic
JSON✯Atomic — o átomo criptográfico do Paper II: canonicalização rigorosa (Same Semantics = Same Bytes = Same Hash), CID BLAKE3, e DV25-Seal (Ed25519) para Signed Facts imutáveis e verificáveis.
Projeto irmão:
logline-core— o átomo conceitual (Paper I). Aqui, qualquer valorSerializevira bytes canônicos, que viram CID e então um selo Ed25519.
Instalação
[]
= "0.1.0"
# Integração opcional (recomendada)
= { = "0.1.0", = ["serde"] }
Features
std(default): experiência completa para dev (tests/examples/benches).alloc: habilita build no_std com alocação.unicode: normalização NFC (aloc-only). Recomendado para confluência semântica de strings.
Quickstart
use ;
use ;
use Serialize;
Integrando com logline-core
use SigningKey;
use ;
use ;
Conformidade (Paper II)
- Objetos → chaves ordenadas lexicograficamente (ordem estável).
- Strings → Unicode NFC (se
feature = "unicode"). - Números → inteiros em forma mínima (sem
+, sem zeros à esquerda).float→ erro. - Boolean / null → preservados.
- Arrays → ordem preservada (sem reordenação).
- Whitespace → nenhum fora de strings; encoding estável.
- Cycle of Truth →
canonize(value)→CID := BLAKE3(bytes)→seal := Ed25519.sign(CID). - Verify → recalcula canônico + CID e verifica a assinatura estrita.
- Headers mínimos em
SignedFact:canon_ver = "1",format_id = "json-atomic/1"hash_alg = "blake3",sig_alg = "ed25519"
Objetivo: Same Semantics = Same Bytes = Same Hash. Qualquer representação JSON semanticamente igual deve resultar na mesma sequência de bytes canônicos e, portanto, no mesmo CID.
📖 Especificação completa: docs/paper-ii-json-atomic.md (mantenha versionado; excluído do publish)
API (essencial)
;
;
;
;
alloc/no_std
Build sem std, apenas com alloc:
Observação:
tests/examples/benchesusamstd. Em CI, compilamos a lib no modoallocpara garantir compatibilidade.
Segurança
- Assinatura Ed25519 é feita sobre o CID (BLAKE3 dos bytes canônicos), nunca sobre JSON bruto.
- Mude o
SigningKey/VerifyingKeyconforme sua HSM/keystore. - Persistir somente o SignedFact já garante recomputação independente e verificação de integridade.
Testes e Benchmarks
&&
Inclui testes de canto:
- Strings em NFC (decomposed vs composed → iguais no canônico)
- Inteiros com zeros à esquerda (como string vs inteiro → diferentes)
- Objetos aninhados com chaves em ordem diferente (canônico → igual)
Roadmap / Changelog
- Veja o CHANGELOG.md e a seção [Unreleased].
- Planejamento inclui: cabeçalhos canônicos estendidos (content-type + schema-hash), Merkle chunking para documentos grandes e vetores determinísticos
no_std.
Licença
MIT — veja LICENSE.
Agradecimentos
Parte do ecossistema LogLine / JSON✯Atomic — verifiable, privacy-first intelligence.