« Preuve de conformité pour MiCA ». Créez des preuves Merkle audit-grade, vérifiez l’inclusion et exportez des Evidence Packs — en minutes.
Mesure en direct sur 5 pings /certify/health
.
Production : envoyez X-API-Key
. Dev (Pi) : définissez SBIX_DEV=1
côté serveur pour bypass l’auth.
X-API-Key: <token>
?api_key=<token>
Idempotency-Key: <uuid>
Démo : https://demo.sbix.io
Local : http://127.0.0.1:8080
Ce site et la démo sont HTTPS. Les pings health doivent réussir depuis un contexte sécurisé.
BASE="https://demo.sbix.io"
API="<YOUR_API_KEY>"
curl -s -X POST "$BASE/certify/" \
-H "Content-Type: application/json" \
-H "X-API-Key: $API" \
-H "Idempotency-Key: $(uuidgen || echo demo-uuid)" \
-d '{"leaves":["TX-AB12","TX-34CD","TX-EEFF"]}'
# → { "proof_id": "...", "merkle_root": "...", "timestamp": "..." }
curl -s "$BASE/certify/proofs?limit=50" -H "X-API-Key: $API"
# → { "items":[...], "next_cursor":"..." }
PID="sbix-1a2b3c4d"
# Preuve complète
curl -s -L "$BASE/certify/export/proof/$PID.json" -H "X-API-Key: $API" -o proof.json
curl -s -L "$BASE/certify/export/proof/$PID.csv" -H "X-API-Key: $API" -o proof.csv
curl -s -L "$BASE/certify/export/proof/$PID.zip" -H "X-API-Key: $API" -o proof.zip
# Chemin d'inclusion (fichier .proof)
curl -s -L "$BASE/certify/export/inclusion/$PID.proof?target=TX-AB12" \
-H "X-API-Key: $API" -o inclusion.proof
Le ZIP peut inclure manifest, proofs, anchors et README auditeur (selon configuration).
import requests
BASE = "https://demo.sbix.io"; API = "<YOUR_API_KEY>"
H = {"X-API-Key": API}
# 1) Create
p = requests.post(f"{BASE}/certify/", json={"leaves":["TX-AB12","TX-34CD"]}, headers=H).json()
pid = p["proof_id"]
# 2) Export a path for TX-AB12
inc = requests.get(f"{BASE}/certify/proof/{pid}/path", params={"target":"TX-AB12"}, headers=H).json()
print("root:", inc["root"], "steps:", len(inc.get("path") or inc.get("proof") or []))
# Serveur recharge le proof par proof_id et reconstruit
curl -s -X POST "$BASE/verify/" \
-H "Content-Type: application/json" \
-d '{"proof_id":"<PID>","target":"TX-AB12"}'
# → { "valid": true, "used_strategy": "strict" }
Pratique pour les auditeurs : ils ne manipulent pas les étapes Merkle.
# Avec root + chemin d'inclusion normalisé
curl -s -X POST "$BASE/verify/" \
-H "Content-Type: application/json" \
-d '{
"leaf":"TX-AB12",
"root":"4f1a...e8",
"proof":[{"position":"right","hash":"aa..."},{"position":"left","hash":"bb..."}]
}'
# → { "valid": true }
Position ∈ {left,right}. Le serveur normalise les strings avant hashing.
# GET ruleset courant
curl -s "$BASE/compliance/ruleset"
# Valider (mode=validate)
curl -s -X POST "$BASE/compliance/ruleset" \
-H "Content-Type: application/json" \
-d '{"mode":"validate","ruleset":"version: \"1.0\"\nrules:\n - field: amount\n condition: greater_than\n value: 10000\n reason: Large movement"}'
# Enregistrer (mode=save)
curl -s -X POST "$BASE/compliance/ruleset" \
-H "Content-Type: application/json" \
-d '{"mode":"save","ruleset":"version: \"1.0\"\nrules:\n - field: aml_risk\n condition: greater_than\n value: 0.8\n reason: High AML score"}'
# Test unitaire
curl -s -X POST "$BASE/compliance/test" \
-H "Content-Type: application/json" \
-d '{"tx":{"tx_id":"TX-1","amount":20000,"jurisdiction":"IR","aml_risk":0.9,"tx_type":"DEX"}}'
# Replay du ledger
curl -s -X POST "$BASE/compliance/replay"
# Lister les alertes
curl -s "$BASE/compliance/alerts?limit=50&offset=0"
/status
— Page statut UI/status.json
— JSON brut/certify/health
, /verify/health
, /compliance/health
/certify/usage
— quotas & compteurs{"error":"message"}
+ code HTTP adaptéETag
: If-None-Match
→ 304 Not Modified
409 Conflict
Passez des captures à la conformité prouvable.
Production à partir de 1 490€/mois • Aucuns frais par transaction • On-prem disponible