Farklı devrelerden verileri birleştirme
(Bölüm: Ekosistem ve Ağ)
1) Neden bir birleşmeye ihtiyacınız var
Çapraz zincir birleştirme, farklı zincirlerden, köprülerden ve hizmetlerden gelen olayları/durumları, finansal raporlama, analitik, sahtekarlık önleme, gözlemlenebilirlik ve ürün senaryoları için tek bir tutarlı veri modelinde birleştirir. Hedefler:- Rengarenk günlüklerin varlığında tek bir gerçek kaynağı (kanonik gerçekler).
- Reorg ve gecikmelere karşı direnç: doğru sonuçlandırma ve yeniden hesaplama.
- Ağlar ve varlıklar arasındaki metriklerin karşılaştırılabilirliği.
- Denetimler ve düzenleyiciler için şeffaf soy ve kalite kontrolü.
2) Veri kaynakları ve sınıfları
1. Onchain: bloklar, işlemler, sözleşme günlükleri, başlıklar, durumlar.
2. Köprüler/römorklar: uygulamalar, makbuzlar, kanıtlar, kesinleştirme durumları.
3. L2/DA katmanlar: gruplar, yayınlar, ispatlar, meydan okuma pencereleri.
4. PSP/KYC/KYB/AML: ödeme durumları, çekler, yaptırım isabetleri.
5. Ürün etkinlikleri: Onboarding, para yatırma/ödeme, oyun ve davranışsal olaylar.
6. Dizinler: ağlar, varlıklar, ondalık sayılar, chainId, adresler, SDK sürümleri.
Her kaynak için sahip, şema, güncelleme günlüğü, sonuçlandırma penceresi, kanıt formatı ve SLO kaydedilir.
3) Füzyon boru hattı mimarisi
Ingest (ajanlar/endeksleyiciler/webhook) - Ham/Bronz (değiştirilemez hammaddeler) - Temiz/Gümüş (normalleştirme ve tekilleştirme) - Birleştirme/Çekirdek/Altın (kanonik gerçekler ve bağlantılar) - Mart (finans/ürün/risk/işletim sistemi) - Hizmet (OLAP/API/arama).
Anahtar özellikler: idempotency, schema versioning, replay/backfill, late data handling.
4) Kanonik şemalar (basitleştirilmiş)
4. 1 Olaylar (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 Çeviriler ve Köprüler (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 Varlık/Ağ Dizini (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) Sonuçlandırma, yeniden sıralamalar ve durumlar
Состояния: 'observed> confirmed (K)> finalised> invalidated (reorg)' (+ 'challenged' для optimistic).
Politikacılar:- Ağ/varlık/risk ile K-onayları.
- Büyük miktarlar için Gecikmeli Sonuçlandırma.
- Reorg kullanımı: otomatik sakatlık ve tekrar oynatma.
- Prova kapsamı: Çubuklar/çapalar ≥ hedef SLO ile kayıtların yüzdesi.
6) Zaman ve para birimlerinin normalleştirilmesi
Zaman: UTC'deki tüm zaman damgaları, 'observed _ at've' event _ at 'depolayın.
FX/varlık fiyatları: 'usd _ value''nin 'observed _ at' (veya 'event _ at' - raporlama için, politika tarafından tanımlanan) oranında dönüştürülmesi.
Ondalık/ölçek: Karşılaştırılabilirlik için miktarların sıkı bir şekilde kanonlaştırılması.
Raporlardaki zaman dilimleri: seçim sırasında (vitrin) çözülür, çekirdekte çözülmez.
7) Kimlik ve veri tekilleştirme
Veri tekilleştirme temel anahtarı:- 'empotency _ key = chainId' block _ height 'tx _ hash' log _ index 'type'
- Birden fazla indeksleyiciden kopyalar - idempotency_key göre upsert.
- Bir yük çakışması durumunda, doğruluk politikası (kaynak önceliği/sürüm/zaman) tetiklenir.
- Veri tekilleştirme penceresi, "gezinme" tekrarları için 48-72 saat ≥ saklanır.
8) Varlık çözümü
Adresler - aktörler: cüzdan/sözleşme - kullanıcı/organizasyon/rol.
Çapraz zincir bağlantıları: sert bağlantı (imza/kyc), yumuşak bağlantı (davranış/grafik).
Takma ad: kararlı PID/ORG_ID; PII, veri denetleyicisi tarafından saklanır.
9) Birleşme kuralları ve öncelikleri (Politika)
1. Çeviri gerçeği hakkındaki gerçeğin kaynağı, 'kesinleşmiş' çevrimiçi olay + kanıtıdır.
2. Agregalar için gerçeğin kaynağı 'transferler' bridge _ transfers 'tablosunun çekirdeğidir,' hammadde'değil.
3. Zaman çatışması (event_at vs observed_at) - rapor politikasına göre (finans - event_at; İşletim sistemi - observed_at).
4. Tutar/Varlık Çatışması - Varlık kataloğu uzlaştırılana kadar bekletmeyi ve karantinayı durdurun.
5. Köprü demetleri - her iki yan makbuz (src/dst) + makbuz eşleştirmesi gereklidir.
10) Sahte sorgular ve algoritmalar
10. 1 Olayları kanonik bir "operasyona" dönüştürmek
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öprü çiftlerinin eşleşmesi (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 Reorg işleme
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) Devre ve evrim yönetimi
Sürüm oluşturma: Veri kümesi başlığında 'schema _ version', geçişler günlüğe kaydedilir.
Uyumluluk ilkesi olaylar için 'GERIYE DOĞRU'dur (yalnızca alanlar ekleyin).
Veri Kaynakları ile Sözleşmeler: CI sözleşmelerin testleri, şemaların linters.
12) Veri kalitesi: SLI/SLO
SLI (örnek):- Tazelik p95: lag yutmak - Altın (dk).
- Tamamlama yüzdesi, pencerede 'Sonlandırılmış'a ulaşan kayıtların yüzdesidir.
- Düzeltme %: geçerli şemalar/imzalar/ispatlar.
- Prova Kapsamı %: kanonik kayıtların prova/çapalarla paylaşımı.
- Dedup Verimliliği: Emilen almaların oranı idempotently.
- Reorg Handling Success %: doğru şekilde devre dışı bırakıldı ve tekrar oynatıldı.
SLO (yer işaretleri): Tazelik ≤ 3 dakika (akış )/15 dakika (toplu); Bütünlük ≥ 99. 7%; Doğruluk ≥ 99. 9%; Kanıt Kapsamı ≥ 99. 0%; Reorg Başarı ≥ 99. 9%; Birleştirme MTTR (olay) ≤ 30 dakika.
13) Panolar (düzenler)
Birleştirme Ops (реал - тайм/час): Tazelik, Kuyruk gecikme, Dedup oranı, Kesinleşmiş %, Reorg sivri, Hata bütçe yanık.
Proof & Finality: prova kapsamı, p95 zincir başına kesinlik, challenge/reorg события.
Katalog Sağlığı: varlık eşlemeleri, ondalık sayılar, SDK sürümleri arasındaki tutarsızlıklar.
Kalite ve Sürüklenme: eksiksizlik/doğruluk, şema sürüklenmesi, geç veriler.
Finans Lens: GTV, Net Flow, devre/köprü ile TVL ('sadece kesinleşmiş').
14) Konfigürasyonlar (YAML)
Kesinleştirme pencereleri
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
Birleştirme ve Öncelik Politikası
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"]
Idempotence/dedup
yaml dedup:
key_template: "${chain_id} ${block_height} ${tx_hash} ${log_index} ${type}"
ttl_hours: 72
15) Gizlilik ve uyumluluk
PII minimizasyonu: PID/ORG_ID, metriklerde/etiketlerde PII yasağı.
Veri ikametgahı: bölge ayrımı (EU/ROW), şifreleme "dinlenme/yolda".
Silme hakkı: kanıtlanabilir uygulama ile mezar taşı/redaksiyon olayları.
Denetim: değişmez günlükler, karma bağlantı, rol erişim kontrolü.
16) Çalışma Yönetmelikleri
Günlük: kanıt kapsamı uzlaştırması, zincir sonuçlandırması, köprü kaydı ve yapılandırma sürüklenmesi.
Haftalık: varlık kataloğunun/ondalıkların revizyonu, FX normalizasyonunun doğruluğu.
Aylık: reorg/replay testleri, SLO kontrolü ve performans stres testi.
Değişim Yönetimi: Birleştirme ilkesi değişiklikleri için zaman çizelgesi, karar günlüğü.
17) Playbook olayları
A. Desynchron varlıkları/ondalık sayıları
İlgili varlıklarda durun, kataloğu geri alın, pencereleri yeniden hesaplayın, 24 saat ≤ rapor verin.
B. Kanıt Kapsamının Düşüşü
Merclization/Anchoring, Log Up, 100 Cases Manuel Örnekleme, Rapor yeniden başlatın.
C. Reorg/Challenge Peaks
'k'/anlaşmazlık penceresini büyütün, büyük miktarlar için gecikmeli sonuçlandırmayı etkinleştirin, ilgili tarafları bilgilendirin.
D. Alma/tekrarlama patlaması
TTL dedup/anahtarını sıkın, "gürültülü" kaynakları sınırlayın, karantina devresini etkinleştirin.
E. Zaman eğriliği
NTP/PTP senkronizasyonu, pencere yeniden hesaplaması, geçici 'prefer: observed_at' politika kayması.
18) Uygulama kontrol listesi
1. Yakalama kaynakları, kesinleştirme pencereleri ve kanıtlar.
2. Kanonik olay şemasını ve idempotency anahtarını uygulayın.
3. Dedup ve birleştirme ilkesini karantina konturuyla yapılandırın.
4. Varlık/ağ kaydını ve FX normalleştirmesini yükseltin.
5. Yeniden oynatma/geri doldurma ve geç veri işleme uygulayın.
6. SLI/SLO ve kalite panolarını tanımlayın.
7. Düzenli bağlantı ve denetim günlükleri çalıştırın.
8. Reorg/köprü gecikme simülasyonları ile bir pilot uygulama yapın ve MTTR'yi yakalayın.
19) Sözlük
Kesinlik - devletin/olayın geri döndürülemezliği.
Reorg - blokların bir kısmının iptal edilmesiyle zincirin yeniden birleştirilmesi.
Idempotency - yeniden dağıtıma karşı direnç.
Kanıt Kapsamı - geçerli kanıtlara sahip kayıtların oranı.
Varlık Çözümü - tek varlık adresi/hesap eşlemesi.
Gecikmeli Sonuçlandırma - yüksek riskli miktarlar için agregalara ertelenmiş kabul.
Karantina, çatışma/şüpheli kayıtlar için izole edilmiş bir akıştır.
Alt satır: zincirler arası verilerin doğru bir şekilde birleştirilmesi yönetilebilir bir disiplindir: kanonik şema, sonuçlandırma ve kanıt, sıkı idempotans, şeffaf birleştirme politikası ve gözlemlenebilir kalite. Bu çerçeveyi izleyerek, ekosistem tek, doğrulanabilir ve sürdürülebilir bir veri katmanı alır - ürünlerin denetimi, analizi ve güvenli ölçeklendirilmesi için temel oluşturur.