Müxtəlif zəncirlərdən məlumatların birləşməsi
(Bölmə: Ekosistem və Şəbəkə)
1) Niyə birləşmək lazımdır
Birləşmə (cross-chain merge) müxtəlif zəncirlərdən, körpülərdən və xidmətlərdən olan hadisələri/halları maliyyə hesabatları, analitika, anti-frod, müşahidə və ərzaq ssenariləri üçün vahid konsistent məlumat modelinə birləşdirir. Məqsədlər:- Həqiqətin vahid mənbəyi (canonical facts).
- Reorglara və gecikmələrə qarşı müqavimət: düzgün finalı və yenidən təyin edilməsi.
- Şəbəkələr və aktivlər arasındakı metriklərin müqayisəsi.
- Audit və tənzimləyicilər üçün şəffaf xətt və keyfiyyət nəzarəti.
2) Məlumat mənbələri və sinifləri
1. Onchain: bloklar, əməliyyatlar, müqavilə qeydləri, başlıqlar, hallar.
2. Körpülər/yayımlayıcılar: müraciətlər, qəbzlər, sübutlar, son statuslar.
3. L2/DA təbəqələr: batches, nəşrlər, prufs, mübahisəli pəncərələr.
4. PSP/KYC/KYB/AML: ödəniş statusları, yoxlamalar, sanksiya hitləri.
5. Məhsul hadisələri: onbording, depozitlər/ödənişlər, oyun və davranış hadisələri.
6. Məlumat kitabçaları: şəbəkələr, aktivlər, decimals, chainId, ünvanlar, SDK versiyaları.
Hər bir mənbə üçün qeyd olunur: sahibi, sxem, yeniləmə gecikməsi, final pəncərəsi, sübut formatı və SLO.
3) Paypline birləşmə arxitekturası
Ingest (agentlər/indekserlər/webhook) → Raw/Bronze (dəyişməz xammal) → Clean/Silver (normallaşma və dedup) → Merge/Core/Gold (kanonik faktlar və əlaqələr) → Marts (maliyyə/məhsul/risk/əməliyyat) → Serve (OLAP/API/axtarış).
Əsas xüsusiyyətlər: idempotentlik, sxem versiyası, replay/backfill, late data handling.
4) Kanonik sxemlər (sadələşdirilmiş)
4. 1 Hadisələr (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ərcümə və körpülər (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 Aktivlər/Şəbəkələr Kataloqu (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) Final, reorglər və statuslar
Состояния: `observed → confirmed(K) → finalized → invalidated(reorg)` (+ `challenged` для optimistic).
Siyasətçilər:- Şəbəkə/aktiv/risk üzrə K-təsdiqləri.
- Böyük məbləğlər üçün Delayed Finalization.
- Reorg handling: avtomatik əlillik və replay.
- Proof coverage: hədəf SLO ≥ prufs/ankers ilə qeydlərin payı.
6) Vaxt və valyutaların normallaşdırılması
Vaxt: UTC bütün timestampts, saxlamaq 'observed _ at' və 'event _ at'.
FX/aktivlərin qiymətləri: 'observed _ at' məzənnəsi ilə 'usd _ value' yenidən hesablanması (və ya 'event _ at' - hesabat üçün, siyasət ilə müəyyən edilmişdir).
Decimals/scale: müqayisə üçün ciddi miqdarda kanonizasiya.
Hesabatlardakı saat qurşaqları: seçildikdə (vitrin), core-də deyil.
7) İdempotentlik və duplikasiya
Babanın əsas açarı:- `idempotency_key = chainId|block_height|tx_hash|log_index|type`
- Bir neçə indeksçidən təkrar - idempotency_key upsert.
- Münaqişə zamanı payload - policy of truth (prioritet mənbə/versiya/vaxt) işləyir.
- Babanın pəncərəsi «gəzən» təkrarlamalar üçün 48-72 saat ≥ saxlanılır.
8) Entity Resolution (varlıqların müqayisəsi)
Ünvanlar → aktorlar: cüzdan/müqavilə → istifadəçi/təşkilat/rol.
Kros-zəncir əlaqələri: hard-link (imza/kyc), yumşaq-link (davranış/qrafik).
Təxəllüs: sabit PID/ORG_ID; PII məlumat nəzarətçisində saxlanılır.
9) Birləşmə qaydaları və prioritetlər (Policy)
1. Tərcümə həqiqətinin mənbəyi - son hadisə 'finalized' + pruf.
2. Aqreqatlar üzrə həqiqət mənbəyi «xammal» deyil, «transfers 'bridge _ transfers» cədvəlinin nüvəsidir.
3. Zaman toqquşması (event_at vs observed_at) - hesabat siyasəti (maliyyə - event_at; əməliyyat - observed_at).
4. Məbləğlər/aktivlər münaqişəsi - aktivlər kataloqunun yoxlanılmasına qədər merjenin dayandırılması və karantin.
5. Körpü bağları - hər iki tərəfin qəbzləri (src/dst) + receipt pairing tələb olunur.
10) Psevdo sorğular və alqoritmlər
10. 1 Hadisələrin kanonik «əməliyyata» endirilməsi
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 Körpü cütlərinin matçı (mənbə, məqsəd)
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 Reorgların emalı
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) Sxemlərin və təkamülün idarə edilməsi
Version: 'schema _ version' məlumat dəsti papağında, miqrasiyalar jurnala yazılır.
Uyğunluq siyasəti: Hadisələr üçün 'BACKWARD' (yalnız sahə əlavə etmək).
Mənbələrlə Data Contracts: CI-də müqavilə testləri, sxem linterləri.
12) Məlumat keyfiyyəti: SLI/SLO
SLI (nümunə):- Freshness p95: lag ingest → Gold (min).
- Completeness%: pəncərə daxilində 'finalized' çatan qeydlərin payı.
- Correctness%: valid sxemlər/imzalar/pruflar.
- Proof Coverage%: Prufs/Ankers ilə kanonik qeydlərin payı.
- Dedup Efficiency: İdempotent udulmuş dublların payı.
- Reorg Handling Success%: düzgün əlillər və replays.
SLO (istinad): Freshness ≤ 3 dəq (axın )/15 dəq (batch); Completeness ≥ 99. 7%; Correctness ≥ 99. 9%; Proof Coverage ≥ 99. 0%; Reorg Success ≥ 99. 9%; Merge MTTR (insident) ≤ 30 dəq.
13) Daşbordlar (maketlər)
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: aktiv mappinqləri, decimals, SDK versiyaları arasındakı uyğunsuzluqlar.
Quality & Drift: completeness/correctness, schema drift, late data.
Finance Lens: GTV, Net Flow, TVL (yalnız 'finalized').
14) Konfiqurasiya (YAML)
Final pəncərələri
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
Merj və prioritetlər siyasəti
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"]
İdempotentlik/Dedup
yaml dedup:
key_template: "${chain_id} ${block_height} ${tx_hash} ${log_index} ${type}"
ttl_hours: 72
15) Gizlilik və uyğunluq
PII-minimallaşdırma: PID/ORG_ID, metrik/etiketlərdə PII qadağası.
Data residency: regionların bölünməsi (EU/ROW), «rahat/yolda» şifrələmə.
Silinmə hüququ: sübut olunan tətbiqi ilə tombstone/redaction hadisə.
Audit: dəyişməz jurnallar, hash ankrajı, rollara görə giriş yoxlaması.
16) Əməliyyat qaydaları
Gündəlik: proof coverage, zəncir finalı, körpü reyestri və sürüklənmə.
Həftəlik: aktivlər/decimals kataloqunun təftişi, FX normallaşmasının düzgünlüyü.
Aylıq: reorg/replay testləri, SLO testi və stress performans testi.
Change Management: merge siyasətinin dəyişdirilməsi üçün timelock, həll jurnalı.
17) Playbook hadisələr
A.Rasinxron aktivləri/decimals
Müvafiq aktivlərin dayandırılması, kataloqun geri qaytarılması, vitrinlərin yenidən hesablanması, hesabat ≤ 24 saat.
B. düşmüş Proof Coverage
Merklizləşdirmə/ankerinqin yenidən başlaması, login səviyyəsinin yüksəldilməsi, əl ilə 100 iş nümunəsi, hesabat.
C. Piki Reorg/Challenge
'k '/mübahisə pəncərəsi artırmaq, böyük məbləğlər üçün delayed finalization daxil, maraqlı bildirin.
D. Dubl/təkrarların partlaması
TTL/açar dedupunu sərtləşdirin, «səs-küylü» mənbələri məhdudlaşdırın, karantin dövrünü yandırın.
E. Vaxt sürüklənməsi (time skew)
NTP/PTP sinxronizasiyası, pəncərələrin yenidən hesablanması, müvəqqəti keçid siyasəti 'prefer: observed_at'.
18) Giriş çek siyahısı
1. Mənbələri, son pəncərələri və sübutları qeyd edin.
2. Hadisələrin kanonik sxemini və idempotentlik açarını tətbiq edin.
3. Quarantine kontur ilə dedup və merge siyasətini konfiqurasiya edin.
4. Aktivlərin/şəbəkələrin reyestrini və FX normallaşmasını artırın.
5. replay/backfill və late data emalını həyata keçirin.
6. Keyfiyyət SLI/SLO və dashboard müəyyən.
7. Müntəzəm anker və audit jurnallarını işə salın.
8. Reorg/körpü gecikmələrinin simulyasiyaları ilə pilotu idarə edin və MTTR-ni düzəldin.
19) Lüğət
Finality - vəziyyətin/hadisənin dönməzliyi.
Reorg - blokların bir hissəsinin ləğvi ilə zəncirin yenidən yığılması.
Idempotency - təkrar çatdırılma müqaviməti.
Proof Coverage - etibarlı dəlillərlə yazıların payı.
Entity Resolution - vahid mahiyyət ünvanlarının/hesablarının müqayisəsi.
Delayed Finalization - yüksək riskli məbləğlər üçün aqreqatlara gecikmiş qəbul.
Quarantine - münaqişə/şübhəli qeydlər üçün təcrid olunmuş axın.
Nəticə: zəncirlərarası məlumatların düzgün birləşməsi idarə olunan nizam-intizamdır: kanonik sxem, finalizasiya və pruflar, ciddi idempotentlik, şəffaf birləşmə siyasəti və keyfiyyət müşahidə. Bu çərçivədən sonra ekosistem vahid, yoxlanıla bilən və davamlı bir məlumat təbəqəsi alır - audit, analitika və məhsulların təhlükəsiz ölçülməsi üçün əsas.