🔐 Kettenverifizierung - SoWasIt
Überprüfen Sie die kryptografische Integrität Ihrer SoWasIt-Ketten
Kettenverifizierung
Überprüfen Sie die kryptografische Integrität Ihrer SoWasIt-Integritätsketten offline, jederzeit und überall. Keine API-Schlüssel erforderlich für die Verifizierung - vollständige Transparenz und Unabhängigkeit.
Funktionen
- Offline-Verifizierung - Überprüfen Sie die Kettenintegrität ohne API-Aufrufe
- Kryptografischer Beweis - Doppelte SHA-256-Hash-Verifizierung
- Fortschrittsverfolgung - Visuelle Fortschrittsbalken für große Ketten
- CLI-Tool - Einfache Befehlszeilenschnittstelle
- NPM-Paket - Programmatische API für Node.js-Anwendungen
- Vertrauen, aber überprüfen - Vertrauen Sie nicht einfach der Plattform, überprüfen Sie den kryptografischen Beweis selbst
- Compliance - Erfüllen Sie Audit-Anforderungen mit unabhängiger Verifizierung
- Backup-Validierung - Stellen Sie sicher, dass Ihre Ketten-Backups intakt und unverändert sind
- Transparenz - Jeder kann die Integrität Ihrer Kette überprüfen, kein spezieller Zugang erforderlich
- Unabhängigkeit - Verifizierung funktioniert offline, keine Abhängigkeit von SoWasIt-Infrastruktur
Installation
Installation über npm:
npm install @sowasit/chain-verifierOder direkt mit npx verwenden (keine Installation erforderlich):
npx @sowasit/chain-verifier verify my-chain.jsonCLI-Nutzung
Eine Kette verifizieren
Sie können entweder eine lokale Datei verifizieren oder eine Kette per ID herunterladen und verifizieren:
# Eine lokale Datei verifizieren
npx @sowasit/chain-verifier verify chain.json
# Eine öffentliche Kette herunterladen und verifizieren
npx @sowasit/chain-verifier verify my-chain-id
# Eine private Kette herunterladen und verifizieren
npx @sowasit/chain-verifier verify my-private-chain --api-key te_xxxxx
# Mit detaillierter Ausgabe verifizieren
npx @sowasit/chain-verifier verify my-chain.json --verbose --output report.jsonOptionen
-o, --output <file>- Verifizierungsbericht in Datei speichern-v, --verbose- Detaillierte Block-für-Block-Ergebnisse anzeigen-k, --api-key <key>- API-Schlüssel (oder SOWASIT_API_KEY-Umgebungsvariable verwenden). Nur für private Ketten erforderlich-u, --api-url <url>- API-URL (Standard: https://api.sowasit.io)--force-download- Erzwungener erneuter Download, Cache ignorieren--include-anchors- Ankerblöcke für Verifizierung einbeziehen
Eine Kette von der API herunterladen
Laden Sie eine vollständige oder teilweise Kette von der SoWasIt-API herunter:
# Eine öffentliche Kette herunterladen
npx @sowasit/chain-verifier download my-public-chain-id
# Eine private Kette herunterladen
npx @sowasit/chain-verifier download my-chain-id --api-key te_xxxxx
# Teilbereich von Blöcken herunterladen
npx @sowasit/chain-verifier download my-chain-id --from 100 --to 200Programmatische API
Eine Kette verifizieren
import { verifyChain } from '@sowasit/chain-verifier';
import { readFile } from 'fs/promises';
// Ketten-Export laden
const chainData = JSON.parse(await readFile('chain.json', 'utf-8'));
// Verifizieren
const result = verifyChain(chainData);
if (result.valid) {
console.log(`✓ ${result.validBlocks} Blöcke sind gültig`);
} else {
console.log(`✗ ${result.invalidBlocks} ungültige Blöcke`);
console.log('Fehler:', result.errors);
}Eine Kette herunterladen
import { downloadChain } from '@sowasit/chain-verifier';
import { writeFile } from 'fs/promises';
// Öffentliche Kette herunterladen (kein API-Schlüssel erforderlich)
const publicChainData = await downloadChain('public-chain-id', {
apiUrl: 'https://api.sowasit.io/v1',
});
// Private Kette herunterladen (API-Schlüssel erforderlich)
const privateChainData = await downloadChain('private-chain-id', {
apiKey: 'te_xxxxx',
apiUrl: 'https://api.sowasit.io/v1',
from: 0,
to: 100,
});
await writeFile('chain.json', JSON.stringify(privateChainData, null, 2));Verifizierungsprozess
- Hash-Integrität - Der Hash jedes Blocks wird mit doppeltem SHA-256 neu berechnet und mit dem gespeicherten Hash verglichen
- Kettenkontinuität - Der prev_hash jedes Blocks muss mit dem Hash des vorherigen Blocks übereinstimmen
- Genesis-Block - Der erste Block muss einen prev_hash haben, der mit dem Ketten-Hash übereinstimmt (von chain.hash)
- Block-Reihenfolge - Blöcke werden in sequentieller Reihenfolge nach ID verifiziert
- Anker-Verifizierung - Wenn Ankerblöcke enthalten sind, wird überprüft, ob alle referenzierten Blöcke existieren und die Hashes übereinstimmen
Nutzungsbeispiele
CI/CD-Integration
Automatisieren Sie die Kettenverifizierung mit GitHub Actions:
# .github/workflows/verify-chain.yml
name: Verify Chain Integrity
on:
schedule:
- cron: '0 0 * * *' # Täglich
jobs:
verify:
runs-on: ubuntu-latest
steps:
- name: Kette herunterladen
run: |
npx @sowasit/chain-verifier download ${{ secrets.CHAIN_ID }} \
--api-key ${{ secrets.SOWASIT_API_KEY }} \
--output chain.json
- name: Kette verifizieren
run: |
npx @sowasit/chain-verifier verify chain.json \
--verbose \
--output verification-report.json
- name: Bericht hochladen
uses: actions/upload-artifact@v3
with:
name: verification-report
path: verification-report.jsonAutomatisches Backup-Skript
Laden Sie Ihre Ketten automatisch herunter und verifizieren Sie sie:
// 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;
// Herunterladen
console.log('Kette wird heruntergeladen...');
const chainData = await downloadChain(chainId, { apiKey });
// Speichern
const filename = `backup-${chainId}-${new Date().toISOString()}.json`;
await writeFile(filename, JSON.stringify(chainData, null, 2));
console.log(`Gespeichert in ${filename}`);
// Verifizieren
console.log('Verifizierung...');
const result = verifyChain(chainData);
if (!result.valid) {
throw new Error(`Verifizierung fehlgeschlagen: ${result.errors.join(', ')}`);
}
console.log(`✓ Backup verifiziert: ${result.validBlocks} Blöcke`);
}
backupAndVerify().catch(console.error);Wie es funktioniert
SoWasIt verwendet doppeltes SHA-256-Hashing (derselbe Algorithmus wie Bitcoin), um Unveränderlichkeit zu gewährleisten:
1. Die Daten jedes Blocks werden deterministisch serialisiert (JSON-Kanonisierung)
↓
2. Die Daten werden zweimal mit SHA-256 gehasht: SHA256(SHA256(data))
↓
3. Jeder Block enthält den Hash des vorherigen Blocks (prev_hash)
↓
4. Das Ändern eines beliebigen Bits in einem Block macht alle nachfolgenden Blöcke ungültigGarantien
- Manipulation ist unmöglich - Jede Änderung bricht die Kette
- Verifizierung ist schnell - Nur Hashing, keine komplexe Kryptografie
- Beweis ist portabel - Nur eine JSON-Datei, keine speziellen Tools erforderlich