carbon-md verify
Vérifie un Passeport Carbone — signature, fourchettes et ancres on-chain — et annonce le niveau de confiance qu'il peut réellement prouver.
npx carbon-md verify <passport.json | https://…/passport.json> [--offline] [--min L0|L1|L2] [--json]
Sortie
carbon.md passport — ✔ VERIFIED L2
subject hermes did:key:z6Mko2Bjf9Tn…
signature valid
methodology carbonmd-factors-2026-08
emissions 285 gCO2e (93 – 930)
contribution 0.005 / 0.000314 tCO2e credited · target met
anchors 1 (resolved)
Un document falsifié est démasqué immédiatement :
carbon.md passport — ✖ INVALID L0
signature signature does not match the document
⚠ document claims L3; evidence supports L0
· signature invalid — nothing below can be trusted
L'échelle de confiance
Le niveau est re-dérivé à partir des preuves, jamais lu dans le document :
| Niveau | Exige |
|---|---|
| L0 Déclaré | un passeport existe (ou la signature a échoué) |
| L1 Mesuré | signature valide · usage réel · low ≤ central ≤ high · méthodologie épinglée |
| L2 Contribution vérifiée | L1 + ancres résolues on-chain + cible atteinte + chaque ancre comptée est bien du removal (sous une politique removal) |
| L3 Certifié | une entrée au registre de certification carbon.md — pas encore livré ; un document qui le revendique est rapporté au niveau que ses preuves soutiennent |
Le removal est vérifié, pas cru sur parole. Sous removal-only ou removal-weighted, une ancre dont la méthode est avoidance — ou simplement unspecified — ne compte pas pour le L2. C'est tout l'objet : transformer la politique en une propriété qu'un inconnu peut contrôler.
Options
| Option | Signification |
|---|---|
--offline | Ignore la consultation de la chaîne. Signature, fourchettes, fraîcheur et politique sont toujours vérifiées ; les ancres sont déclarées non vérifiées, donc le résultat plafonne à L1 |
--min <niveau> | Sortie non nulle si le niveau dérivé n'atteint pas celui-ci (défaut L1) |
--json | Résultat exploitable par une machine |
Codes de sortie
0 si la signature est valide, le passeport frais, et le niveau dérivé atteint --min ; 1 sinon ; 2 en cas d'erreur d'usage ou de récupération. De quoi en faire une barrière d'intégration continue :
npx carbon-md verify https://votre-registre/passport.json --min L2
Ce qui est vérifié
- Signature — Ed25519 sur le document canonicalisé. La moindre modification, où que ce soit, la casse.
- Fraîcheur — les passeports expirent après 90 jours ; un passeport périmé affiche
⚠ STALE. - Mesure — usage présent, fourchette d'incertitude bien formée, version de méthodologie épinglée.
- Ancres — chaque transaction est récupérée sur Base ; elle doit exister et ne pas avoir échoué.
- Politique — tonnes créditées ≥ cible, et la règle removal ci-dessus.
La clé publique est incluse dans le did:key du sujet : les étapes 1 à 3 fonctionnent donc sans aucun réseau.
Voir aussi
- passport — en émettre un
- Retraits et reçus — d'où viennent les ancres