來自不同電路的數據融合
(部分: 生態系統和網絡)
1)為什麼需要合並
合並(跨鏈merge)將來自不同鏈,橋梁和服務的事件/狀態合並為一個一致的數據模型,用於財務報告,分析,反欺詐行為,可觀察性和產品場景。目標是:- 當存在雜項日誌時,單一的真相來源(canonical事實)。
- 對流變和延遲的抵抗力:正確的壓制和翻轉。
- 網絡與資產之間指標的可比性。
- 為審計和監管機構提供透明的線性和質量控制。
2)數據源和類別
1.Onchein:塊、交易、合同日誌、標題、狀態。
2.橋梁/接收者:申請,收據,證據,最終狀態。
3.L2/DA層:batchi,出版物,prufs,挑戰窗口。
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確認。
- 大額的延遲最終化。
- Reorg handling:自動殘疾和重播。
- 證明覆蓋:具有目標SLO的普魯士/錨≥記錄的比例。
6)時間和貨幣正常化
時間:UTC中的所有時間表,存儲「observed_at」和「event_at」。
FX/資產價格:以「observed_at」(或「event_at」)的匯率重新計算「usd_value」,用於報告,由政策決定)。
Decimals/Scale:可比性的嚴格量化。
報告中的時區:在選擇(店面)時反射,不在核心。
7)相似性和重復數據消除
基本重復數據消除密鑰:- `idempotency_key = chainId|block_height|tx_hash|log_index|type`
- 多個索引的重播是idempotency_key的upsert。
- 當發生沖突時,payload-觸發真相策略(源優先級/版本/時間)。
- 對於「流浪」重復,重復數據消除窗口存儲≥ 48-72小時。
8)企業解決(實體匹配)
地址→演員:錢包/合同→用戶/組織/角色。
跨鏈鏈接:硬鏈接(簽名/kyc),軟鏈接(行為/圖形)。
別名:穩定的PID/ORG_ID;PII存儲在數據控制器上。
9)合並規則和優先事項(政策)
1.關於翻譯事實的真相來源是「最終化」+虛假事件。
2.按集合劃分的真相來源是"轉移者"bridge_transfers"表的核心而不是"原材料"。
3.時間沖突(event_at vs observed_at)-根據報告政策(財務-event_at;操作員是observed_at)。
4.金額/資產沖突-在對資產目錄進行對賬之前停止行駛和隔離。
5.橋接-需要雙方的收據(src/dst)+receipt配對。
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橋對對對決(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 Reorgas處理
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」(僅添加字段)。
數據合同與來源: 合同測試在CI, linters.
12)數據質量: SLI/SLO
SLI(示例):- Freshness p95:l ingest→Gold ag(min)。
- 完成%:在窗口內達到「最終化」的條目的比例。
- Correctness%:有效電路/簽名/prufs。
- Proof Coverage%:具有普魯士/錨點的規範記錄的比例。
- Dedup Efficiency:偶數吸收的倍數比例。
- Reorg Handling Success%:正確的殘疾和重播。
SLO(地標):Freshness ≤ 3分鐘(流)/15分鐘(蹦床);Completeness ≥ 99.7%;Correctness ≥ 99.9%;Proof Coverage ≥ 99.0%;Reorg Success ≥ 99.9%;Merge MTTR(事件)≤ 30分鐘。
13)Dashbords(布局)
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在鏈條/橋上(僅限於「最終化」)。
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。
數據駐留:區域隔離(EU/ROW),靜止/途中加密。
刪除權:tombstone/redaction事件,具有可證明的應用。
審計:不變的日誌,哈希錨定,按角色檢查訪問。
16)運營法規
每天:驗證覆蓋,鏈條決賽,橋梁註冊和config漂移。
每周:修訂資產/衰減目錄,正確的FX正常化。
每月:reorg/replay測試、SLO檢查和性能壓力測試。
更改管理: 時間表對更改的交易策略,決策日誌.
17)事件劇本
A. Rassinchron資產/資產
停止相關資產,回滾目錄,重新計算店面,報告24小時≤。
B. Proof Coverage的下降
重新啟動mercilization/Ankering,提高拼寫水平,手動采樣100個案例,報告。
C. Peaky Reorg/挑戰賽
增加「k」/爭議窗口,為大筆款項啟用延遲最終化,通知感興趣的人。
D.爆炸
收緊TTL/Key的前提,限制「嘈雜」的來源,啟用檢疫回路。
E. Drafe時間(時間跳躍)
NTP/PTP同步,窗口重新計票,臨時策略'prefer: observed_at'移位。
18)實施支票
1.記錄來源、最終窗口和證據。
2.引入規範事件模式和冪等鍵。
3.使用quarantine輪廓配置dedup和merge策略。
4.提高資產/網絡註冊和FX正常化。
5.實現replay/backfill和處理延遲數據。
6.確定SLI/SLO和質量碼。
7.運行定期的錨定和審計日誌。
8.對飛行員進行重播/橋延誤模擬,並記錄MTTR。
19)詞匯表
最終狀態-狀態/事件的不可逆性。
Reorg是電路的重組,其中部分塊被取消。
Idempotency-對重新交付的抵抗力。
Proof Coverage-具有有效證據的條目比例。
Entity Resolution-映射單個實體的地址/帳戶。
Delayed Finalization-延遲接受高風險金額的聚合。
Quarantine是沖突/可疑記錄的孤立流。
總而言之:正確的鏈間數據融合是一門可管理的學科:規範方案,最終化和prufs,嚴格的冪等,透明的融合政策和質量可觀察性。遵循此框架,生態系統將獲得一個單一、可驗證和可持續的數據層-審計、分析和安全產品擴展的基礎。