🔐 Kettenverifizierung - SoWasIt

Überprüfen Sie die kryptografische Integrität Ihrer SoWasIt-Ketten

📦 GitHub-Repository📚 API-Referenz

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
Warum verifizieren?
  • 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-verifier

Oder direkt mit npx verwenden (keine Installation erforderlich):

npx @sowasit/chain-verifier verify my-chain.json

CLI-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.json

Optionen

  • -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
Caching: Bei der Verifizierung nach Ketten-ID werden Blöcke in .sowasit-cache/chainId/ zwischengespeichert und nur neue Blöcke bei nachfolgenden Ausführungen heruntergeladen.

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 200

Programmatische 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.json

Automatisches 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ültig

Garantien

  • 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