GH GambleHub

Łączenie danych z różnych obwodów

(Sekcja: Ekosystem i sieć)

1) Dlaczego potrzebujesz połączenia

Połączenie międzysieciowe łączy wydarzenia/państwa z różnych łańcuchów, mostów i usług w jeden spójny model danych w zakresie sprawozdawczości finansowej, analiz, zwalczania nadużyć finansowych, obserwowalności i scenariuszy produktów. Cele:
  • Pojedyncze źródło prawdy (fakty kanoniczne) w obecności kłód motley.
  • Odporność na reorg i opóźnienia: prawidłowe zakończenie i ponowne obliczenie.
  • Porównywalność wskaźników między sieciami a aktywami.
  • Przejrzysty rodowód i kontrola jakości dla audytów i regulatorów.

2) Źródła i klasy danych

1. Onchain: bloki, transakcje, dzienniki umów, nagłówki, stany.
2. Mosty/przyczepy: aplikacje, paragony, dowody, statusy finalizacji.
3. L2/DA warstwy: partie, publikacje, dowody, okna wyzwań.
4. PSP/KYC/KYB/AML: statusy płatności, kontrole, trafienia sankcji.
5. Imprezy produktowe: wejście na pokład, wpłaty/płatności, gry i wydarzenia behawioralne.
6. Katalogi: sieci, aktywa, liczby dziesiętne, Id, adresy, wersje SDK.

Dla każdego źródła, właściciel, schemat, dziennik aktualizacji, okno finalizacji, format dowodu i SLO są rejestrowane.

3) Architektura rurociągu termojądrowego

Połknięcie (agenci/indeksery/webhook) → Surowy/Brąz (niezmienne surowce) → Czysty/srebrny (normalizacja i dedup) → Połączenie/Rdzeń/Złoto (kanoniczne fakty i połączenia) → Marty (finanse/produkt/ryzyko/system operacyjny) → Obsługa (OLAP/API/search).
Kluczowe właściwości: idempotencja, wersioning schematu, powtórka/zasypka, późna obsługa danych.

4) Systemy kanoniczne (uproszczone)

4. 1 Zdarzenia (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 Tłumaczenia i mosty (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 Katalog aktywów/sieci (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) Finalizacja, reorgia i statusy

Состовний: 'observed → confirmed (K) → finalized → invalidined (reorg)' (+ 'challenged' дла optimistic).

Politycy:
  • K-potwierdzenia według sieci/aktywów/ryzyka.
  • Opóźnione zakończenie za duże kwoty.
  • Obsługa Reorg: automatyczna niepełnosprawność i powtórka.
  • Zasięg dowodu: odsetek rekordów z prętami/kotwicami ≥ docelowe SLO.

6) Normalizacja czasu i walut

Czas: wszystkie znaczniki czasu w UTC, przechowywać 'observed _ at' i 'event _ at'.
Ceny FX/aktywa: konwersja „usd _ value” według kursu „observed _ at” (lub „event _ at” - dla sprawozdawczości, zdefiniowanej przez politykę).
Dziesiętne/skala: Rygorystyczna kanonizacja ilości dla porównywalności.
Strefy czasowe w raportach: rozwiązane podczas wyboru (prezentacja), a nie w rdzeniu.

7) Tożsamość i deduplikowanie

Klucz podstawy deduplikacji:
  • 'idempotence _ key = Id' block _ height' tx _ hash 'log _ index' type '
Zasady:
  • Duplikaty z wielu indekserów - upsert przez idempotency_key.
  • W przypadku konfliktu ładunku wyzwalana jest polityka prawdy (źródło priorytet/wersja/czas).
  • Okno deduplikacji jest przechowywane ≥ 48-72 godziny dla powtórzeń „wędrujących”.

8) Restrukturyzacja i uporządkowana likwidacja jednostek

Adresy → aktorzy: portfel/kontrakt → użytkownik/organizacja/rola.
Linki poprzeczne: hard-link (podpis/kyc), soft-link (zachowanie/wykres).
Pseudonimizacja: stabilna PID/ORG_ID; PII jest przechowywany przez administratora danych.

9) Zasady i priorytety łączenia przedsiębiorstw (polityka)

1. Źródłem prawdy na temat faktu tłumaczenia jest wydarzenie online „sfinalizowane” + dowód.
2. Źródłem prawdy dla agregatów jest rdzeń tabeli 'transfers' bridge _ transfers ', a nie "surowiec'.
3. Konflikt czasowy (event_at vs observed_at) - według polityki raportowania (finanse - event_at; system operacyjny - observed_at).
4. Kwota/konflikt aktywów - Wstrzymać przechowywanie i kwarantannę do czasu uzgodnienia katalogu aktywów.
5. Pakiety mostowe - wymagane są pokwitowania boczne (src/dst) + parowanie odbioru.

10) Zapytania pseudo i algorytmy

10. 1 Zwijanie wydarzeń w kanoniczną „operację”

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 Mecz par mostowych (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 Przetwarzanie Reorg

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) Zarządzanie obwodem i ewolucją

Wersioning: 'schema _ version' w nagłówku zbioru danych, migracje są rejestrowane.
Polityka kompatybilności jest 'BACKWARD' dla zdarzeń (dodaj tylko pola).
Umowy o dane ze źródłami: testy umów w CI, linery programów.

12) Jakość danych: SLI/SLO

SLI (przykład):
  • Świeżość p95: lag ingest → Złoto (min).
  • Ukończenie% jest procentem rekordów, które osiągnęły 'sfinalizowane' w oknie.
  • Korekta%: ważne schematy/podpisy/dowody.
  • Pokrycie dowodowe%: udział rekordów kanonicznych z dowodami/kotwicami.
  • Wydajność Dedup: Odsetek pobrań wchłanianych idempotently.
  • Reorg Handling Sukces%: poprawnie wyłączony i powtarza.

SLO (punkty orientacyjne): świeżość ≤ 3 min (strumień )/15 min (partia); Kompletność ≥ 99. 7%; Prawidłowość ≥ 99. 9%; Zasięg dowodu ≥ 99. 0%; Reorg Sukces ≥ 99. 9%; Połączenie MTTR (incydent) ≤ 30 min.

13) Deski rozdzielcze (układy)

Merge Ops (реач-таса/сАВ): Świeżość, Queue lag, Dedup rate, Finalized%, Reorg spikes, Error-budget burn.
Dowód i finalność: zasięg dowodu, finalność p95 na łańcuch, wyzwanie/reorg сова тиа.
Katalog zdrowia: rozbieżności między mapami aktywów, przecinkami, wersjami SDK.
Jakość i dryfowanie: kompletność/poprawność, dryf schematu, późne dane.
Obiektywy finansowe: GTV, Net Flow, TVL przez obwód/most (tylko „sfinalizowane”).

14) Konfiguracje (YAML)

Okna finalizacji

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

Polityka scalania i polityki priorytetowej

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"]

Idempotencja/dedup

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

15) Prywatność i zgodność

Minimalizacja PII: PID/ORG_ID, zakaz PII w metrykach/etykietach.
Miejsce zamieszkania danych: segregacja regionalna (EU/ROW), szyfrowanie „rest/on the road”.
Prawo do usunięcia: nagrobek/zdarzenia redakcyjne z udowodnioną aplikacją.
Audyt: niezmienne dzienniki, kotwiczenie hash, sprawdzanie dostępu do ról.

16) Regulamin operacyjny

Codziennie: uzgadnianie pokrycia dowodowego, finalizacja łańcucha, rejestr mostów i dryf konfig.
Co tydzień: przegląd katalogu aktywów/przecinków, poprawność normalizacji FX.
Miesięcznie: testy reorg/replay, sprawdzenie SLO i test wytrzymałościowy.
Zarządzanie zmianami: timelock dla zmian zasad scalania, dziennik decyzji.

17) Incydenty playbook

A. Aktywa/przecinki desynchronu

Zatrzymać się przy odpowiednich aktywach, cofnąć katalog, przeliczyć okna, zgłosić ≤ 24 godziny.

B. Upadek pokrycia dowodowego

Relaunch Merklizacja/kotwiczenie, logowanie, ręczne pobieranie próbek 100 przypadków, raport.

C. Reorg/Challenge Peaks

Powiększyć 'k '/okno sporu, włączyć opóźnione zakończenie dla dużych kwot, powiadomić zainteresowane strony.

D. Eksplozja zabierania/powtarzania

Dokręcić TTL dedup/key, ograniczyć „hałaśliwe” źródła, włączyć obwód kwarantanny.

E. Skew czasowy

Synchronizacja NTP/PTP, ponowne obliczenie okna, tymczasowe 'prefer: zmiana zasad observed_at'.

18) Lista kontrolna wdrażania

1. Przechwytywanie źródeł, okien finalizacyjnych i dowodów.
2. Wdrożenie kanonicznego schematu wydarzeń i klucza idempotencji.
3. Konfiguruj politykę dedup i scalania z konturem kwarantanny.
4. Podnieś rejestr aktywów/sieci i normalizację FX.
5. Wdrożenie powtórki/zasypki i późnego przetwarzania danych.
6. Zdefiniuj deski rozdzielcze SLI/SLO i jakości.
7. Uruchom regularne dzienniki kotwiczenia i audytu.
8. Przeprowadzić symulacje opóźnienia reorg/mostu i przechwycić MTTR.

19) Słownik

Finalność - nieodwracalność stanu/zdarzenia.
Reorg - ponowna instalacja łańcucha z anulowaniem części bloków.
Idempotencja - odporność na redelivery.
Pokrycie dowodu - odsetek zapisów z ważnymi dowodami.
Restrukturyzacja i uporządkowana likwidacja podmiotu - pojedynczy adres podmiotu/mapowanie rachunku.
Opóźniona finalizacja - odroczona akceptacja do kruszyw dla kwot wysokiego ryzyka.
Kwarantanna jest odosobnionym strumieniem konfliktów/podejrzanych danych.

Najważniejsze: prawidłowe łączenie danych między łańcuchami jest dyscypliną możliwą do zarządzania: kanoniczny schemat, finalizacja i dowód, ścisła idempotencja, przejrzysta polityka łączenia i obserwowalna jakość. Stosując się do tych ram, ekosystem otrzymuje jedną, weryfikowalną i zrównoważoną warstwę danych - podstawę audytu, analizy i bezpiecznego skalowania produktów.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.