🔐 Chain Verification
Verify the cryptographic integrity of your SoWasIt blockchain chains
Vérification de chaînes
Vérifiez l'intégrité cryptographique de vos chaînes SoWasIt hors ligne, n'importe quand, n'importe où. Aucune clé API requise pour la vérification - transparence et indépendance totales.
Fonctionnalités
- Vérification hors ligne - Vérifiez l'intégrité de la chaîne sans aucun appel API
- Preuve cryptographique - Vérification de hash double SHA-256
- Suivi de progression - Barre de progression visuelle pour les grandes chaînes
- Outil CLI - Interface en ligne de commande facile
- Package NPM - API programmatique pour les applications Node.js
Pourquoi vérifier ?
- Faites confiance, mais vérifiez - Ne faites pas simplement confiance à la plateforme, vérifiez vous-même la preuve cryptographique
- Conformité - Répondez aux exigences d'audit avec une vérification indépendante
- Validation des sauvegardes - Assurez-vous que vos sauvegardes de chaînes sont intactes et non modifiées
- Transparence - N'importe qui peut vérifier l'intégrité de votre chaîne, aucun accès spécial requis
- Indépendance - La vérification fonctionne hors ligne, sans dépendance à l'infrastructure SoWasIt
Installation
Installez via npm :
npm install @sowasit/chain-verifierOu utilisez directement avec npx (aucune installation nécessaire) :
npx @sowasit/chain-verifier verify my-chain.jsonUtilisation CLI
Vérifier une chaîne
Vous pouvez vérifier soit un fichier local, soit télécharger et vérifier une chaîne par ID :
# Vérifier un fichier local
npx @sowasit/chain-verifier verify chain.json
# Télécharger et vérifier une chaîne publique
npx @sowasit/chain-verifier verify my-chain-id
# Télécharger et vérifier une chaîne privée
npx @sowasit/chain-verifier verify my-private-chain --api-key te_xxxxx
# Vérification avec sortie détaillée
npx @sowasit/chain-verifier verify my-chain.json --verbose --output report.jsonOptions
-o, --output <file>- Sauvegarder le rapport de vérification dans un fichier-v, --verbose- Afficher les résultats détaillés bloc par bloc-k, --api-key <key>- Clé API (ou utilisez la variable d'environnement SOWASIT_API_KEY). Requis uniquement pour les chaînes privées-u, --api-url <url>- URL de l'API (par défaut : https://api.sowasit.io)--force-download- Forcer le re-téléchargement, en ignorant le cache local--include-anchors- Inclure les blocs d'ancrage pour la vérification
Mise en cache: Lors de la vérification par ID de chaîne, les blocs sont mis en cache dans .sowasit-cache/chainId/ et seuls les nouveaux blocs sont téléchargés lors des exécutions suivantes.
Télécharger une chaîne depuis l'API
Téléchargez une chaîne complète ou partielle depuis l'API SoWasIt :
# Télécharger une chaîne publique
npx @sowasit/chain-verifier download my-public-chain-id
# Télécharger une chaîne privée
npx @sowasit/chain-verifier download my-chain-id --api-key te_xxxxx
# Télécharger une plage partielle de blocs
npx @sowasit/chain-verifier download my-chain-id --from 100 --to 200API programmatique
Vérifier une chaîne
import { verifyChain } from '@sowasit/chain-verifier';
import { readFile } from 'fs/promises';
// Charger l'export de chaîne
const chainData = JSON.parse(await readFile('chain.json', 'utf-8'));
// Vérifier
const result = verifyChain(chainData);
if (result.valid) {
console.log(`✓ ${result.validBlocks} blocs sont valides`);
} else {
console.log(`✗ ${result.invalidBlocks} blocs invalides`);
console.log('Erreurs:', result.errors);
}Télécharger une chaîne
import { downloadChain } from '@sowasit/chain-verifier';
import { writeFile } from 'fs/promises';
// Télécharger une chaîne publique (aucune clé API requise)
const publicChainData = await downloadChain('public-chain-id', {
apiUrl: 'https://api.sowasit.io',
});
// Télécharger une chaîne privée (clé API requise)
const privateChainData = await downloadChain('private-chain-id', {
apiKey: 'te_xxxxx',
apiUrl: 'https://api.sowasit.io',
from: 0,
to: 100,
});
await writeFile('chain.json', JSON.stringify(privateChainData, null, 2));Processus de vérification
- Intégrité du hash - Le hash de chaque bloc est recalculé en utilisant le double SHA-256 et comparé au hash stocké
- Continuité de la chaîne - Le prev_hash de chaque bloc doit correspondre au hash du bloc précédent
- Bloc genesis - Le premier bloc doit avoir un prev_hash correspondant au hash de la chaîne (depuis chain.hash)
- Ordre des blocs - Les blocs sont vérifiés dans l'ordre séquentiel par ID
- Vérification des ancres - Si des blocs d'ancrage sont inclus, vérifie que tous les blocs référencés existent et que les hashs correspondent
Exemples d'utilisation
Intégration CI/CD
Automatisez la vérification de vos chaînes avec GitHub Actions :
# .github/workflows/verify-chain.yml
name: Verify Chain Integrity
on:
schedule:
- cron: '0 0 * * *' # Quotidiennement
jobs:
verify:
runs-on: ubuntu-latest
steps:
- name: Télécharger la chaîne
run: |
npx @sowasit/chain-verifier download ${{ secrets.CHAIN_ID }} \
--api-key ${{ secrets.SOWASIT_API_KEY }} \
--output chain.json
- name: Vérifier la chaîne
run: |
npx @sowasit/chain-verifier verify chain.json \
--verbose \
--output verification-report.json
- name: Téléverser le rapport
uses: actions/upload-artifact@v3
with:
name: verification-report
path: verification-report.jsonScript de sauvegarde automatique
Téléchargez et vérifiez automatiquement vos chaînes :
// backup-and-verify.js
import { downloadChain, verifyChain } from '@sowasit/chain-verifier';
import { writeFile } from 'fs/promises';
async function backupAndVerify() {
const chainId = process.env.CHAIN_ID;
const apiKey = process.env.SOWASIT_API_KEY;
// Télécharger
console.log('Téléchargement de la chaîne...');
const chainData = await downloadChain(chainId, { apiKey });
// Sauvegarder
const filename = `backup-${chainId}-${new Date().toISOString()}.json`;
await writeFile(filename, JSON.stringify(chainData, null, 2));
console.log(`Sauvegardé dans ${filename}`);
// Vérifier
console.log('Vérification...');
const result = verifyChain(chainData);
if (!result.valid) {
throw new Error(`Échec de la vérification: ${result.errors.join(', ')}`);
}
console.log(`✓ Sauvegarde vérifiée: ${result.validBlocks} blocs`);
}
backupAndVerify().catch(console.error);Comment ça marche
SoWasIt utilise le double SHA-256 (le même algorithme que Bitcoin) pour garantir l'immuabilité :
1. Les données de chaque bloc sont sérialisées de manière déterministe (canonicalisation JSON)
↓
2. Les données sont hachées deux fois avec SHA-256 : SHA256(SHA256(data))
↓
3. Chaque bloc contient le hash du bloc précédent (prev_hash)
↓
4. Modifier un seul bit dans un bloc invalide tous les blocs suivantsGaranties
- Falsification impossible - Toute modification brise la chaîne
- Vérification rapide - Seulement du hachage, pas de cryptographie complexe
- Preuve portable - Juste un fichier JSON, aucun outil spécial requis