Logo GH

Zusammenführen von Daten aus verschiedenen Stromkreisen

(Abschnitt: Ökosystem und Netzwerk)

1) Warum eine Fusion notwendig ist

Die Verschmelzung (Cross-Chain Merge) verbindet Ereignisse/Zustände aus verschiedenen Ketten, Brücken und Diensten zu einem einheitlichen konsistenten Datenmodell für Finanzberichterstattung, Analytik, Anti-Fraud, Beobachtbarkeit und Produktszenarien. Die Ziele sind:
  • Eine einzige Quelle der Wahrheit (canonical facts) in Gegenwart von bunten Protokollen.
  • Resistenz gegen Reorgs und Verzögerungen: Korrekte Finalisierung und Reübersetzung.
  • Vergleichbarkeit von Metriken zwischen Netzwerken und Assets.
  • Transparente Lineage und Qualitätskontrolle für Audits und Regulatoren.

2) Datenquellen und -klassen

1. Onchain: Blöcke, Transaktionen, Vertragsprotokolle, Titel, Status.
2. Brücken/Relays: Anträge, Quittungen, Nachweise, Abschlussstatus.
3. L2/DA Schichten: Batchi, Publikationen, Prufs, Fenster der Herausforderung.
4. PSP/KYC/KYB/AML: Zahlungsstatus, Prüfungen, Sanktionshits.
5. Produktevents: Onboarding, Einzahlungen/Auszahlungen, Spiel- und Verhaltensereignisse.
6. Verzeichnisse: Netzwerke, Assets, Decimals, chainId, Adressen, SDK-Versionen.

Für jede Quelle werden erfasst: Eigentümer, Schema, Update-Lag, Finalisierungsfenster, Beweisformat und SLO.

3) Fusionspipeline-Architektur

Ingest (Agenten/Indexer/Webhook) → Raw/Bronze (unveränderliche Rohstoffe) → Clean/Silver (Normalisierung und Dedup) → Merge/Core/Gold (kanonische Fakten und Zusammenhänge) → Marts (Finanzen/Produkt/Risiko/Betrieb) → Serve (OLAP/API/Suche).
Schlüsseleigenschaften: Idempotenz, Versionierung von Schaltungen, Replay/Backfill, Late Data Handling.

4) Kanonische Schemata (vereinfacht)

4. 1 Veranstaltungen (YAML)

yaml event:
id: uuid observed_at: timestamp # when saw event_at: timestamp # when happened (by source)
chain_id: string       # 'eth-mainnet'    'polygon'...
block_height: long tx_hash: string log_index: int type: string         # transfer    bridge. lock    bridge. mint...
status: string        # observed    confirmed    finalized    invalid src: string # address/peer-id/org _ id dst: string asset: string # canonical character (USDC)
amount: decimal usd_value: decimal # normalization at the rate on the meta observed_at: object # gas, fee, contract, sdk_version...
idempotency_key: string    # chainId    block    tx    logIndex    type proof_ref: string # proof/anchor reference

4. 2 Übersetzungen und Brücken (SQL)

sql
CREATE TABLE bridge_transfers (
id TEXT PRIMARY KEY,
src_chain TEXT, dst_chain TEXT,
asset TEXT, amount NUMERIC,
created_at TIMESTAMPTZ,
finalized_at TIMESTAMPTZ,
status TEXT,          -- requested    inflight    finalized    failed    reversed src_tx TEXT, dst_tx TEXT,
proof_ref TEXT, meta JSONB
);

4. 3 Asset/Network Directory (YAML)

yaml catalog:
assets:
- symbol: USDC decimals: { eth-mainnet: 6, polygon: 6 }
contracts: { eth-mainnet: "0xA0b8...", polygon: "0x2791..." }
networks:
- id: eth-mainnet k_confirmations: 12
- id: polygon k_confirmations: 256

5) Finalisierung, Rengs und Status

Состояния: `observed → confirmed(K) → finalized → invalidated(reorg)` (+ `challenged` для optimistic).

Politiker:
  • K-Bestätigungen per Netzwerk/Asset/Risiko.
  • Verzögerte Finalisierung für große Beträge.
  • Reorg Handhabung: automatische Behinderung und Wiederholung.
  • Proof Coverage: Anteil der Einträge mit Proofs/Ankern ≥ Ziel-SLO.

6) Normalisierung von Zeit und Währungen

Zeit: Alle Zeitstempel in UTC, speichern 'observed _ at' und 'event _ at'.
FX/Asset-Preise: Umrechnung von 'usd _ value' zum Kurs auf 'observed _ at' (oder 'event _ at' - für die Berichterstattung, definiert durch die Richtlinie).
Decimals/scale: strenge Kanonisierung der Mengen zur Vergleichbarkeit.
Zeitzonen in Berichten: werden bei der Auswahl (Schaufenster) angegeben, nicht im Kern.

7) Idempotenz und Deduplizierung

Deduplex-Basisschlüssel:
  • `idempotency_key = chainId|block_height|tx_hash|log_index|type`
Regeln:
  • Wiederholungen von mehreren Indexern - upsert nach idempotency_key.
  • Bei einem Payload-Konflikt wird die Policy of truth (Quellpriorität/Version/Zeit) ausgelöst.
  • Das Deduplex-Fenster wird ≥ 48-72 Stunden für „wandernde“ Wiederholungen gespeichert.

8) Entitätsauflösung (Entitätszuordnung)

Adressen → Akteure: Brieftasche/Vertrag → Benutzer/Organisation/Rolle.
Cross-Chain-Links: hard-link (Signatur/kyc), soft-link (Verhalten/graph).
Pseudonymisierung: stabiles PID/ORG_ID; Die PII wird beim Datenverantwortlichen gespeichert.

9) Fusionsregeln und Prioritäten (Politik)

1. Die Quelle der Wahrheit über die Tatsache der Übersetzung ist das Onchain-Ereignis „finalized“ + proof.
2. Die Quelle der Wahrheit über die Aggregate ist der Kern der Tabelle' transfers' bridge _ transfers', nicht der 'Rohstoff'.
3. Der Konflikt der Zeit (event_at vs observed_at) - nach der Politik des Berichtes (die Finanzen - event_at; Operational - observed_at).
4. Betrag/Vermögenskonflikt - Anhalten des Merge und Quarantäne bis zum Abgleich des Vermögenskatalogs.
5. Brückenbündel - Benötigt Quittungen von beiden Seiten (src/dst) + Empfang Paarung.

10) Pseudo-Abfragen und Algorithmen

10. 1 Reduktion der Ereignisse in eine kanonische „Operation“

sql
WITH base AS (
SELECT e.,
CONCAT(e. chain_id,'    ',e. block_height,'    ',e. tx_hash,'    ',e. log_index,'    ',e. type) AS idem
FROM raw_events e
)
INSERT INTO core_events AS c (id, observed_at, event_at, chain_id, block_height,
tx_hash, log_index, type, status, src, dst, asset, amount, usd_value, meta, idempotency_key, proof_ref)
SELECT gen_random_uuid(), observed_at, event_at, chain_id, block_height,
tx_hash, log_index, type, status, src, dst, asset, amount, usd_value, meta, idem, proof_ref
FROM base
ON CONFLICT (idempotency_key) DO UPDATE
SET status = EXCLUDED. status,
usd_value = COALESCE(EXCLUDED. usd_value, core_events. usd_value),
proof_ref = COALESCE(EXCLUDED. proof_ref, core_events. proof_ref),
meta   = core_events. meta          EXCLUDED. meta;

10. 2 Match Brückenpaare (istochnik↔tsel)

sql
INSERT INTO bridge_transfers (id, src_chain, dst_chain, asset, amount, created_at, status, src_tx, proof_ref)
SELECT
CONCAT('br:', e. tx_hash) AS id,
e. chain_id, b. dst_chain, e. asset, e. amount, e. event_at, 'inflight', e. tx_hash, e. proof_ref
FROM core_events e
JOIN bridge_book b ON e. type='bridge. lock' AND e. asset=b. asset AND e. chain_id=b. src_chain
ON CONFLICT (id) DO NOTHING;

UPDATE bridge_transfers bt
SET finalized_at = e. event_at,
dst_tx    = e. tx_hash,
status    = 'finalized'
FROM core_events e
WHERE e. type='bridge. mint'
AND bt. status='inflight'
AND bt. asset=e. asset
AND bt. src_chain=bridge_book. src_chain
AND bt. dst_chain=bridge_book. dst_chain
AND abs(e. amount - bt. amount) < 1e-9;

10. 3 Behandlung von Reorgs

sql
UPDATE core_events
SET status='invalidated'
WHERE chain_id=$1 AND block_height BETWEEN $2 AND $3
AND status IN ('observed','confirmed','finalized');

-- Reassembly of aggregates (example)
CALL recompute_materialized_views($1, $2, $3);

11) Schaltungs- und Evolutionsmanagement

Versionierung: 'schema _ version' im Dataset-Cap, Migrationen werden protokolliert.
Kompatibilitätsrichtlinie: 'BACKWARD' für Ereignisse (nur Hinzufügen von Feldern).
Datenverträge mit Quellen: Vertragstests in CI, Scheme Linters.

12) Datenqualität: SLI/SLO

SLI (Beispiel):
  • Freshness p95: lag ingest→Gold (min)
  • Completeness%: Anteil der Einträge, die innerhalb des Fensters „finalisiert“ wurden.
  • Korrektheit%: Gültige Schemata/Signaturen/Proofs.
  • Proof Coverage%: Anteil kanonischer Einträge mit Proofs/Ankern.
  • Dedup Efficiency: Anteil der idempotent aufgenommenen Takes.
  • Reorg Handling Erfolg%: Korrekte Behinderung und Replays.

SLO (Landmarken): Frische ≤ 3 Minuten (Stream )/15 Minuten (Batch); Completeness ≥ 99. 7%; Correctness ≥ 99. 9%; Proof Coverage ≥ 99. 0%; Reorg Success ≥ 99. 9%; Merge MTTR (Incident) ≤ 30 Min.

13) Dashboards (Layouts)

Merge Ops (реал-тайм/час): Freshness, Queue lag, Dedup rate, Finalized %, Reorg spikes, Error-budget burn.
Proof & Finality: proof coverage, p95 finality per chain, challenge/reorg события.
Katalog Gesundheit: Abweichungen von Asset-Mappings, Decimals, SDK-Versionen.
Quality & Drift: completeness/correctness, schema drift, late data.
Finance Lens: GTV, Net Flow, TVL auf Ketten/Brücken (nur „finalisiert“).

14) Konfigurationen (YAML)

Abschlussfenster

yaml finality:
eth-mainnet: { k: 12, delayed_for_usd_gt: 100000 }
polygon:   { k: 256 }
optimistic-L2:
k: 0 challenge_minutes: 20 delayed_for_usd_gt: 50000

Merge und Prioritätspolitik

yaml merge_policy:
source_priority: [onchain, bridge, psp, product]
conflict:
time: { prefer: "event_at" }
amount: { action: "quarantine" }
proof_required_for: ["bridge_transfers", "payouts"]
quarantine_topics: ["asset_mismatch", "decimals_mismatch", "time_skew_gt_5m"]

Idempotenz/Dedup

yaml dedup:
key_template: "${chain_id}    ${block_height}    ${tx_hash}    ${log_index}    ${type}"
ttl_hours: 72

15) Datenschutz und Compliance

PII-Minimierung: PID/ORG_ID, Verbot von PII in Metriken/Labels.
Datenresidenz: Segregation von Regionen (EU/ROW), Verschlüsselung „in Ruhe/unterwegs“.
Recht auf Löschung: Tombstone/Redaction Veranstaltung mit nachweisbarer Anwendung.
Audit: Unveränderliche Protokolle, Hash-Anker, rollenbasierte Zugriffsprüfung.

16) Betriebsvorschriften

Täglich: Proof-Coverage-Abstimmung, Kettenabschluss, Brückenregister und Config-Drift.
Wöchentlich: Überarbeitung des Asset-Katalogs/Decimals, Korrektheit der FX-Normalisierung.
Monatlich: Reorg-/Replay-Tests, SLO-Check und Performance-Stresstest.
Change Management: Timelock zu Merge-Policy-Änderungen, Entscheidungsprotokoll.

17) Playbook der Vorfälle

A. Rassynhron assets/decimals

Stoppen Sie auf relevante Vermögenswerte, Katalog Rollback, Schaufensterneuberechnung, Bericht ≤ 24 Stunden.

B. Rückgang der Proof-Abdeckung

Merkalisierung/Ankern neu starten, Logging-Level erhöhen, manuelles Sampling von 100 Fällen, Bericht.

C. Peaks Reorg/Challenge

Vergrößern Sie das'k '/Streitfenster, aktivieren Sie die verzögerte Finalisierung für große Beträge, benachrichtigen Sie die Betroffenen.

D. Explosion von Takes/Wiederholungen

Dedup TTL/Schlüssel verschärfen, „laute“ Quellen begrenzen, Quarantäne-Schleife aktivieren.

E. Zeitdrift (time skew)

NTP/PTP-Synchronisation, Windows-Neuberechnung, temporäre Richtlinienverschiebung 'prefer: observed_at'.

18) Checkliste Umsetzung

1. Erfassen Sie Quellen, Abschlussfenster und Beweise.
2. Implementieren Sie das kanonische Schema der Ereignisse und den Schlüssel der Idempotenz.
3. Konfigurieren Sie die Dedup- und Merge-Richtlinie mit einem Quarantine-Pfad.
4. Heben Sie das Asset/Network-Register und die FX-Normalisierung an.
5. Implementieren Sie Replay/Backfill und Late Data Processing.
6. Definieren Sie SLI/SLO und Quality Dashboards.
7. Führen Sie regelmäßige Anker- und Audit-Protokolle aus.
8. Führen Sie einen Piloten mit Reorg/Bridge Delay Simulationen durch und fixieren Sie die MTTR.

19) Glossar

Finalität - Irreversibilität des Zustands/Ereignisses.
Reorg - Neumontage der Kette mit der Annullierung eines Teils der Blöcke.
Idempotency - Widerstand gegen wiederholte Lieferung.
Proof Coverage - Anteil der Datensätze mit validen Nachweisen.
Entity Resolution - Zuordnung von Adressen/Konten einer einzigen Einheit.
Verzögerte Finalisierung - verzögerte Annahme in Aggregaten für risikoreiche Beträge.
Quarantine ist ein isolierter Thread für Konflikte/verdächtige Datensätze.

Fazit: Die korrekte Zusammenführung von Zwischenkettendaten ist eine überschaubare Disziplin: kanonisches Schema, Finalisierung und Prufs, strikte Idempotenz, transparente Fusionspolitik und Qualitätsbeobachtbarkeit. Nach diesem Framework erhält das Ökosystem eine einheitliche, überprüfbare und nachhaltige Datenschicht - die Grundlage für Audits, Analysen und die sichere Skalierung von Produkten.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.