GH GambleHub

Деректерді түрлі тізбектерден біріктіру

(Бөлім: Экожүйе және Желі)

1) Біріктіру не үшін қажет

Біріктіру (cross-chain merge) қаржылық есептілік, талдау, анти-фрод, бақылау және азық-түлік сценарийлері үшін әртүрлі тізбектерден, көпірлерден және сервистерден алынған оқиғаларды/жағдайларды деректердің бірыңғай консистенттік моделіне біріктіреді. Мақсаттары:
  • Бірыңғай шындық көзі (canonical facts).
  • Реоргалар мен кідірістерге төзімділік: дұрыс аяқтау және қайта есептеу.
  • Желілер мен активтер арасындағы өлшемдердің салыстырмалылығы.
  • Аудит және реттегіштер үшін мөлдір сызық және сапаны бақылау.

2) Деректер көздері мен кластары

1. Ончейн: блоктар, транзакциялар, келісімшарттардың логтары, тақырыптар, жай-күйлер.
2. Көпірлер/релеерлер: өтінімдер, түбіртектер, дәлелдер, аяқтау мәртебелері.
3. L2/DA қабаттар: батчилер, жарияланымдар, пруфтар, дауласу терезелері.
4. PSP/KYC/KYB/AML: төлем мәртебелері, тексерулер, санкциялық хиттер.
5. Өнімдік оқиғалар: онбординг, депозиттер/төлемдер, ойын және мінез-құлық оқиғалары.
6. Анықтамалықтар: желілер, активтер, decimals, chainId, мекенжайлар, SDK нұсқалары.

Әрбір дереккөз үшін мыналар тіркеледі: иесі, схемасы, жаңарту артта қалуы, аяқтау терезесі, дәлелдемелер форматы және SLO.

3) Біріктіру пайплайнының архитектурасы

Ingest (агенттер/индексерлер/webhook) → Raw/Bronze (өзгермейтін шикізат) → Clean/Silver (қалыпқа келтіру және дедуп) → Merge/Core/Gold (канондық фактілер және байланыстар) → Marts (қаржы/өнім/тәуекел/операциялық) → Serve (OLAP/API/іздеу).
Негізгі қасиеттері: теңсіздік, схемаларды нұсқалау, replay/backfill, late data handling.

4) Каноникалық схемалар (оңайлатылған)

4. 1 оқиғалар (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 Аудармалар мен көпірлер (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 Активтер/желілер анықтамалығы (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) Аяқтау, реоргалар және мәртебелер

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

Саясат:
  • желі/актив/тәуекел бойынша K-растаулар.
  • Ірі сомалар үшін Delayed Finalization.
  • Reorg handling: автоматты мүгедектік және replay.
  • Proof coverage: мақсатты SLO ≥ пруфтары/анкерлері бар жазбалардың үлесі.

6) Уақыт пен валютаны қалыпқа келтіру

Уақыт: барлық timestampts UTC, сақтау 'observed _ at' және 'event _ at'.
FX/активтер бағасы: 'observed _ at' бағамы бойынша 'usd _ value' қайта есептеу (немесе 'event _ at' - есептілік үшін, саясатта айқындалған).
Decimals/scale: салыстыруға арналған сандарды қатаң канонизациялау.
Есептердегі сағат белдеулері: іріктеу кезінде (витрина), core емес.

7) Идемпотенттілік және дедупликация

Дедуптың негізгі кілті:
  • `idempotency_key = chainId|block_height|tx_hash|log_index|type`
Ережелер:
  • Бірнеше индекстерден қайталау - upsert idempotency_key бойынша.
  • payload қайшылығы кезінде - policy of truth (көздің басымдығы/нұсқа/уақыт) іске қосылады.
  • Дедуп терезесі «кезбе» қайталаулар үшін 48-72 сағ ≥ сақталады.

8) Entity Resolution (мәнін салыстыру)

Мекенжайлар → акторлар: әмиян/келісімшарт → пайдаланушы/ұйым/рөлі.
Кросс-тізбектің байланыстары: hard-link (қолы/kyc), soft-link (мінез-құлық/баған).
Бүркеншік атау: тұрақты PID/ORG_ID; PII деректер контроллерінде сақталады.

9) Бірігу қағидалары мен басымдықтары (Policy)

1. Аударма дереккөзі - ончейн оқиғасы 'finalized' + пруф.
2. Агрегаттар бойынша ақиқат көзі - «шикізат» емес, «transfers 'bridge _ transfers» кестесінің core.
3. Уақыт қақтығысы (event_at vs observed_at) - есеп саясаты бойынша (қаржы - event_at; операциялық - observed_at).
4. Сомалар/активтер қақтығысы - мерджді тоқтату және активтер каталогын салыстырғанға дейін карантин.
5. Көпір байламдары - екі жақтың түбіртектері (src/dst) + receipt pairing талап етіледі.

10) Жалған сұрау салулар мен алгоритмдер

10. 1 Оқиғаларды канондық «операцияға» енгізу

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 Көпір жұптарының матчингі (дереккөз, мақсат)

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 Реоргтарды өңдеу

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) Схемалар мен эволюцияны басқару

Нұсқалау: 'schema _ version' деректер жиынтығы, көшіру журналына жазылады.
Үйлесімділік саясаты: Оқиғалар үшін 'BACKWARD' (тек өрістерді қосу).
Дереккөздері бар Data Contracts: CI-дегі келісім-шарттар тестілері, схемалар линтерлері.

12) Деректер сапасы: SLI/SLO

SLI (мысал):
  • Freshness p95: лаг ingest → Gold (мин).
  • Completeness%: терезе ішінде 'finalized' жеткен жазбалар үлесі.
  • Correctness%: валидті схемалар/қолтаңбалар/пруфтар.
  • Proof Coverage%: пруфтары/анкерлері бар каноникалық жазбалардың үлесі.
  • Dedup Efficiency: демпотенттiк жұтылған дубльдердiң үлесi.
  • Reorg Handling Success%: дұрыс мүгедектік және replays.

SLO (бағдарлар): Freshness ≤ 3 мин (стрим )/15 мин (батч); Completeness ≥ 99. 7%; Correctness ≥ 99. 9%; Proof Coverage ≥ 99. 0%; Reorg Success ≥ 99. 9%; Merge MTTR (инцидент) ≤ 30 мин.

13) Дашбордтар (макеттер)

Merge Ops (реал-тайм/час): Freshness, Queue lag, Dedup rate, Finalized %, Reorg spikes, Error-budget burn.
Proof & Finality: proof coverage, p95 finality per chain, challenge/reorg события.
Catalog Health: активтер мэппингтерінің, decimals, SDK нұсқаларының айырмашылықтары.
Quality & Drift: completeness/correctness, schema drift, late data.
Finance Lens: GTV, Net Flow, TVL тізбектер/көпірлер бойынша (тек 'finalized').

14) Конфигурациялар (YAML)

Аяқтау терезелері

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

Мерджа және басымдықтар саясаты

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

Сәйкессіздік/дедуп

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

15) Құпиялылық және комплаенс

PII-барынша азайту: PID/ORG_ID, PII-ге тыйым салу.
Data residency: өңірлерді сегрегациялау (EU/ROW), «тыныштықта/жолда» шифрлау.
Жою құқығы: дәлелденетін қолданумен оқиғаның tombstone/redaction.
Аудит: өзгермейтін журналдар, хэш анкерингі, рөлдер бойынша қолжетімділікті тексеру.

16) Операциялық регламенттер

Күн сайын: proof coverage салыстыру, шынжыр бойынша аяқтау, көпірлер тізілімі және -дрейф.
Апта сайын: активтер/decimals каталогын тексеру, FX-нормалаудың дұрыстығы.
Ай сайын: reorg/replay тесттер, SLO тексеру және стресс-тест өнімділігі.
Change Management: merge саясаты өзгерістеріне арналған timelock, шешімдер журналы.

17) Playbook оқиғалар

A. активтер/decimals рассинхроны

Тиісті активтерге тоқта, каталогты қайтару, витриналарды қайта есептеу, есеп ≤ 24 сағ.

B. Proof Coverage құлауы

Мерклизацияны/анкерингті қайта іске қосу, логин деңгейін арттыру, 100 кейсті қолмен іріктеу, есеп беру.

Reorg/Challenge шыңдары

'k '/дау терезесін ұлғайту, ірі сомалар үшін delayed finalization қосу, мүдделі адамдарға хабарлау.

D. қайталау/қайталау жарылысы

TTL/кілт дедупын қатайту, «шулы» көздерді шектеу, карантин-контурды қосу.

E. уақыт дрейфі (time skew)

NTP/PTP үндестіру, терезелерді қайта есептеу, 'prefer: observed_at' саясатының уақытша ауысуы.

18) Енгізу чек-парағы

1. Көздерді, аяқтау терезелерін және дәлелдемелерді бекітіңіз.
2. Оқиғалардың канондық схемасын және теңсіздік кілтін енгізіңіз.
3. Дедуп пен merge саясатын quarantine контурымен теңшеңіз.
4. Активтер/желілер тізілімін және FX-қалыпқа келтіруді көтеріңіз.
5. replay/backfill және late data өңдеуін іске асырыңыз.
6. SLI/SLO және сапа дашбордтарын анықтаңыз.
7. Тұрақты анкеринг және аудит журналдарын іске қосыңыз.
8. Реорг/көпір кідірістерінің симуляцияларымен ұшқышты жүргізіңіз және MTTR белгілеңіз.

19) Глоссарий

Finality - күй/оқиғаның қайтымсыздығы.
Reorg - блоктардың бір бөлігін аннуляциялау тізбегін қайта жинау.
Idempotency - қайта жеткізуге төзімділік.
Proof Coverage - валидті дәлелдемелері бар жазбалардың үлесі.
Entity Resolution - бірыңғай мәні бар мекенжайларды/аккаунттарды салыстыру.
Delayed Finalization - жоғары тәуекелді сомалар үшін агрегаттарға кейінге қалдырылған қабылдау.
Quarantine - қайшылықты/күмәнді жазбалар үшін оқшауланған ағын.

Қорытынды: тізбекаралық деректерді дұрыс біріктіру - бұл басқарылатын тәртіп: каноникалық схема, ақырғы және пруфтар, қатаң демпотенттілік, біріктірудің ашық саясаты және сапаны байқау. Осы фреймворкқа сүйене отырып, экожүйе бірыңғай, тексерілетін және тұрақты деректер қабатын - аудит, талдау және өнімдерді қауіпсіз масштабтау үшін негіз алады.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Telegram
@Gamble_GC
Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.