GH GambleHub

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!

Telegram
@Gamble_GC
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.