Îmbinarea datelor din diferite circuite
(Secțiunea: Ecosistem și rețea)
1) De ce aveți nevoie de o fuziune
Fuziunea între lanțuri combină evenimente/state din diferite lanțuri, punți și servicii într-un singur model de date coerent pentru raportarea financiară, analiză, antifraudă, observabilitate și scenarii de produse. Obiective:- O singură sursă de adevăr (fapte canonice) în prezența buștenilor pestriței.
- Rezistența la reorg și întârzieri: finalizarea corectă și recalcularea.
- Comparabilitatea măsurătorilor între rețele și active.
- Descendență transparentă și control al calității pentru audituri și autoritățile de reglementare.
2) Surse de date și clase
1. Onchain: blocuri, tranzacții, jurnale de contract, antete, state.
2. Poduri/remorci: aplicații, chitanțe, dovezi, statusuri de finalizare.
3. straturi L2/DA: loturi, publicații, dovezi, ferestre provocare.
4. PSP/KYC/KYB/AML: statusuri de plată, controale, sancțiuni.
5. Evenimente de produs: onboarding, depozite/plăți, jocuri de noroc și evenimente comportamentale.
6. Directoare: rețele, active, zecimale, chainId, adrese, versiuni SDK.
Pentru fiecare sursă, proprietarul, schema, jurnalul de actualizare, fereastra de finalizare, formatul probelor și SLO sunt înregistrate.
3) Arhitectura conductei de fuziune
Ingerează (agenți/indexatori/webhook) Raw/Bronze (materii prime neschimbabile) Clean/Silver (normalizare și dedup) Merge/Core/Gold (fapte și conexiuni canonice) Marts (finanțe/produs/risc/sistem de operare).
Proprietăți cheie: idempotență, versioning schema, reluare/rambursare, manipulare întârziată a datelor.
4) Scheme canonice (simplificate)
4. 1 Evenimente (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 Traduceri și poduri (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 Active/Director de rețea (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) Finalizare, reorgs și statusuri
Состояния: „observat → confirmat (K) → finalizat → invalidat (reorg)” (+ „contestat” для optimist).
Politicieni:- K-confirmări prin rețea/activ/risc.
- Finalizare întârziată pentru sume mari.
- Reorg manipulare: handicap automat și reluare.
- Dovada de acoperire: procentul de înregistrări cu tije/ancore ≥ țintă SLO.
6) Normalizarea timpului și a valutelor
Timp: toate marcajele de timp din UTC, stocați 'observed _ at' și' event _ at'.
Prețuri FX/active: conversia „usd _ value” la rata de „observed _ at' (sau” event _ at' - pentru raportare, definită prin politică).
Zecimale/scară: canonizarea strictă a cantităților pentru comparabilitate.
Fusuri orare în rapoarte: rezolvate în timpul selecției (vitrină), nu în miez.
7) Identitate și eliminare a duplicatelor
Cheie de bază pentru eliminare a duplicatelor:- 'idempotency _ key = chainId' block _ height' tx _ hash' log _ index 'type'
- Duplicate de la mai mulți indexatori - upsert de idempotency_key.
- În cazul unui conflict de sarcină utilă, se declanșează politica adevărului (prioritate sursă/versiune/timp).
- Fereastra de eliminare a duplicatelor este stocată ≥ 48-72 de ore pentru repetări „rătăcitoare”.
8) Rezoluția entității
Adrese → actori: portofel/contract → utilizator/organizare/rol.
Legături încrucișate: hard-link (semnătură/kyc), soft-link (comportament/grafic).
Pseudonimizare: PID/ORG_ID stabilă; PII este stocat de operatorul de date.
9) Regulile și prioritățile concentrărilor economice (Politică)
1. Sursa adevărului pe faptul traducerii este evenimentul online „finalizat” + dovada.
2. Sursa adevărului pentru agregate este nucleul tabelului 'transfers' bridge _ transfers', nu „materia primă”.
3. Conflictul temporal (event_at vs observed_at) - prin politica raportului (finanțe - event_at; sistem de operare - observed_at).
4. Suma/Conflictul activelor - Oprirea reținerii și carantinei până la reconcilierea catalogului de active.
5. Pachete de punte - sunt necesare ambele chitanțe laterale (src/dst) + asocierea chitanțelor.
10) interogări pseudo și algoritmi
10. 1 Rularea evenimentelor într-o „operație” canonică
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 Meci de perechi de poduri (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 procesare
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) Managementul circuitelor și al evoluției
Versioning: 'schema _ version' în antetul setului de date, migrațiile sunt înregistrate.
Politica de compatibilitate este 'BACKWARD' pentru evenimente (adăugați doar câmpuri).
Contracte de date cu surse: teste de contracte în CI, lintere de scheme.
12) Calitatea datelor: SLI/SLO
SLI (exemplu):- Prospețime p95: lag ingest→Gold (min).
- Finalizarea% este procentul de înregistrări care au atins 'Finalizat' în fereastra.
- Corecție%: scheme/semnături/dovezi valabile.
- Dovada Acoperire%: ponderea înregistrărilor canonice cu dovezi/ancore.
- Dedup Eficiență: Proporția de ia absorbit idempotent.
- Reorg de manipulare de succes%: corect dezactivat și reluări.
SLO (repere): Prospețime ≤ 3 min (flux )/15 min (lot); Integralitatea ≥ 99. 7%; Corectitudinea ≥ 99. 9%; Dovada acoperirii ≥ 99. 0%; Succesul Reorg ≥ 99. 9%; Fuzionează MTTR (incident) ≤ 30 min.
13) Tablouri de bord (machete)
Merge Ops (реал - тайм/час): prospețime, coadă lag, rata Dedup,% finalizat, piroane Reorg, Error-buget arde.
Dovada & Finalitate: acoperire dovada, finalitate p95 pe lanț, provocare/reorg события.
Catalog Sănătate: discrepanțe între cartografieri de active, zecimale, versiuni SDK.
Calitate și derivă: completitudine/corectitudine, derivă schemă, date târzii.
Finance Lens: GTV, Net Flow, TVL de circuit/pod („finalizat” numai).
14) Configurații (YAML)
Ferestre de finalizare
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
Fuziunea și politica prioritară
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) Confidențialitate și conformitate
Minimizare PII: PID/ORG_ID, interdicție PII în metrică/etichete.
Rezidența datelor: segregarea regiunii (EU/ROW), criptarea „în repaus/pe drum”.
Dreptul de a șterge: evenimente de piatră funerară/redactare cu aplicație dovedibilă.
Audit: jurnale imuabile, ancorare hash, verificarea accesului la rol.
16) Regulamentele de funcționare
Zilnic: dovada reconcilierii acoperirii, finalizarea lanțului, registrul de punți și deriva de configurare.
Săptămânal: revizuirea catalogului de active/zecimale, corectitudinea normalizării FX.
Lunar: teste de reorg/reluare, verificare SLO și test de stres de performanță.
Change Management: timelock pentru modificări de politică fuzionare, jurnal de decizii.
17) Incidente Playbook
A. Active/zecimale Desynchron
Opriți-vă la activele corespunzătoare, întoarceți catalogul, recalculați ferestrele, raportați ≤ 24 de ore.
B. Căderea acoperirii dovezii
Relansarea Merclization/Ancorare, Log Up, eșantionare manuală a 100 de cazuri, Raport.
C. Reorg/Challenge Peaks
Extindeți 'k '/fereastra de litigii, permiteți finalizarea întârziată pentru sume mari, notificați părțile interesate.
D. Explozia takes/repetă
Strângeți TTL dedup/cheie, limitați sursele „zgomotoase”, activați circuitul de carantină.
E. Înclinarea timpului
Sincronizarea NTP/PTP, recalcularea ferestrei, temporar 'prefer: schimbare politică observed_at'.
18) Lista de verificare a implementării
1. Captura surse, ferestre de finalizare și dovezi.
2. Implementați schema de evenimente canonice și cheia de idempotență.
3. Configurați politica de eliminare și îmbinare cu conturul de carantină.
4. Ridicați registrul de active/rețea și normalizarea FX.
5. Implementați reluarea/rambursarea și procesarea târzie a datelor.
6. Definiți tablourile de bord SLI/SLO și de calitate.
7. Rulați jurnalele regulate de ancorare și audit.
8. Efectuați un pilot cu simulări de întârziere reorg/pod și capturați MTTR.
19) Glosar
Finalitatea - ireversibilitatea statului/evenimentului.
Reorg - reasamblarea lanțului cu anularea unei părți a blocurilor.
Idempotența - rezistența la redelivery.
Dovada acoperirii - proporția de înregistrări cu dovezi valabile.
Entity Resolution - adresă unică entitate/cartografiere cont.
Finalizare întârziată - acceptarea amânată în agregate pentru sume cu risc ridicat.
Carantina este un flux izolat pentru conflicte/înregistrări suspecte.
Linia de fund: fuzionarea corectă a datelor între lanțuri este o disciplină care poate fi gestionată: schema canonică, finalizarea și dovada, idempotența strictă, politica de fuzionare transparentă și calitatea observabilă. Urmând acest cadru, ecosistemul primește un singur strat de date, verificabil și durabil - baza pentru auditarea, analiza și scalarea în condiții de siguranță a produselor.