Disposition 06 · provenance cryptographique
Intégrité & provenance
À chaque publication du corpus, nous calculons une racine de Merkle sur toutes les décisions. La racine est committée dans le dépôt public et ancrée sur la blockchain Bitcoin via OpenTimestamps. Chaque décision est ainsi vérifiable cryptographiquement — même si opencaselaw.ch venait un jour à disparaître.
§01 Racine actuelle
§02 La feuille
Ce que promet la racine
Pour chaque décision, une valeur de feuille est formée selon le schéma suivant puis hachée en SHA-256 :
decision_id
cli:ch
ECLI
content_hash (SHA-256 over regeste || full_text)
decision_date
Les feuilles sont lues dans un arbre de Merkle RFC-6962 par ordre alphabétique de decision_id (même convention que Certificate Transparency). La racine fait 32 octets (64 caractères hex) et s'engage sur chaque décision avec ce decision_id, ce content_hash, ces identifiants, à cette date.
Avec la racine et un chemin de preuve d'inclusion (log₂ N hachages frères, ~20 pour environ 991k décisions), on peut prouver cryptographiquement qu'une décision donnée faisait partie du corpus — sans faire confiance à opencaselaw.ch.
§03 Vérifier
Chemin de vérification
decision_id, content_hash, cli:ch, ECLI, decision_date.decision_id\ncli:ch\nECLI\ncontent_hash\ndecision_dateSHA-256(0x00 || leaf_bytes)SHA-256(0x01 || left || right).docs/integrity/<date>.root dans le dépôt Git..ots contre la blockchain Bitcoin — la racine est alors réputée avoir existé à un instant donné.§04 Statut
Feuille de route
- En production : racine de Merkle hebdomadaire + manifeste comme
docs/integrity/<YYYY-MM-DD>.{root,json}. - En production : ancre OpenTimestamps via
ots stamp; consolidable après ~1 bloc Bitcoin (1–6 h) (ots upgrade). - En production :
GET /api/integrity/<decision_id>livre le chemin de preuve d'inclusion RFC-6962 contre la racine la plus récente. - Optionnel : ancrage croisé vers d'autres services d'horodatage (Sigsum, RFC 3161 TSA).
Fait partie des Open Law Standards (disposition 06 · provenance).
§05 Code
Implémentation de référence
- integrity.py — bibliothèque de Merkle (RFC 6962), domaine public.
- build_integrity_root.py — construit chaque semaine à partir de la base FTS5.