異なる回路からデータをマージする
(セクション: エコシステムとネットワーク)
1)なぜ合併が必要なのか
クロスチェーン・マージは、異なるチェーン、ブリッジ、サービスのイベント/ステートを、財務報告、分析、不正防止、オブザビリティ、製品シナリオのための単一の一貫したデータモデルに統合します。目的:- モトリーログの存在下での真実(正規の事実)の単一のソース。
- 再構成と遅延に対する抵抗:正しい最終化と再計算。
- ネットワークとアセット間のメトリクスの比較可能性。
- 監査と規制当局の透明な血統と品質管理。
2)データソースとクラス
1.Onchain:ブロック、トランザクション、契約ログ、ヘッダー、状態。
2.ブリッジ/トレーラー:アプリケーション、領収書、証拠、確定ステータス。
3.L2/DAレイヤー:バッチ、出版物、証明、チャレンジウィンドウ。
4.PSP/KYC/KYB/AML:支払いステータス、チェック、制裁ヒット。
5.製品イベント:オンボーディング、預金/支払い、ゲームおよび行動イベント。
6.ディレクトリ:ネットワーク、アセット、小数点、chainId、アドレス、SDKバージョン。
各ソースでは、所有者、スキーム、更新ログ、最終化ウィンドウ、証拠フォーマット、SLOが記録されます。
3)融合パイプラインアーキテクチャ
Ingest (agent/indexers/webhook)→Raw/Bronze(変更不可の原材料)→Clean/Silver (normalization and dedup)→Merge/Core/Gold (canonical facts and connections)→Marts (finance/product/risk/operating system)→Serve (out system)→Serve (out (out) Serve (out (out)) (out (out (out)) out (out (out))) (out (out (out (out)) out (out (out (o).
主なプロパティ:idempotency、スキーマバージョニング、リプレイ/バックフィル、遅延データ処理。
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)確定、再編、ステータス
Сосссоo overmental: 'observed→confirmated (K)→finalized→invalidated (reorg)'(+'challenged'-楽観的)。
政治家:- ネットワーク/資産/リスクによるK確認。
- 大量のための遅延ファイナライゼーション。
- 再組織の処理:自動障害と再生。
- 証拠の適用範囲:ターゲットSLO ≥の棒/アンカーが付いている記録のパーセンテージ。
6)時間と通貨の正常化
時間:UTC内のすべてのタイムスタンプは、'observed_at'と'event_at'を格納します。
FX/資産価格:'observed_at'(または'event_at'のレートでの'usd_value'の変換-ポリシーで定義されたレポート用)。
小数/スケール:比較可能量の厳密な正規化。
レポートのタイムゾーン:選択中に解決(ショーケース)、コアではありません。
7)アイデンティティと重複除外
重複排除の基盤キー:- 'idempotency_key=chainId' block_height 'tx_hash' log_index 'type'
- 複数のインデックスからの重複-idempotency_keyでupsert。
- ペイロードが競合した場合、真実のポリシー(source priority/version/time)がトリガーされます。
- 重複排除ウィンドウは、「さまよう」繰り返しのために48〜72時間≥に保存されます。
8)エンティティ解決
Addresses→actors: wallet/contract→user/organization/role。
クロスチェーンリンク:ハードリンク(signature/kyc)、ソフトリンク(behavior/graph)。
仮名化:安定したPID/ORG_ID;PIIはデータコントローラによって保存されます。
9)合併規則と優先事項(方針)
1.翻訳の事実に関する真実の源は、オンラインイベント「確定」+証明です。
2.集計の真実の源は"transfers" bridge_transfers"テーブルのコアであり"、原材料"ではありません。
3.タイムコンフリクト(event_at対observed_at)-レポートポリシー(金融-event_at;オペレーティングシステム-observed_at)。
4.「金額/資産の競合」(Amount/Asset Conflict)-資産カタログが調整されるまで保留および隔離を停止します。
5.ブリッジバンドル-両サイドレシート(src/dst)+レシートのペアリングが必要です。
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再編成処理
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での契約のテスト、スキームのリンク。
12)データ品質: SLI/SLO
SLI(例):- Freshness p95: lag ingest→Gold (min)。
- 完了%は、ウィンドウ内で「ファイナライズ」に達したレコードの割合です。
- 修正%:有効なスキーム/署名/証明。
- 証拠の適用範囲%:証拠/アンカーが付いている正規の記録の共有。
- Dedup Efficiency:吸収されたテイクの割合。
- Reorg Handling Success%:正しく無効にしてリプレイします。
SLO(ランドマーク):鮮度≤ 3分(ストリーム)/15分(バッチ);完全性≥ 99。7%;正しさ≥ 99。9%;証拠の適用範囲≥ 99。0%;Reorg Success ≥ 99。9%;MTTRをマージ(インシデント)≤ 30分。
13)ダッシュボード(レイアウト)
Merge Ops: Freshness、 Queue Lag、 Dedup rate、 Finalized%、 Reorg spikes、 Error-budget burn。
Proof&Finality:証拠のカバレッジ、チェーンごとのP95のfinality、 challenge/reorg соссииa。
カタログ健全性:資産マッピング、小数点以下、SDKバージョン間の不一致。
品質とドリフト:完全性/正確性、スキーマドリフト、遅延データ。
ファイナンスレンズ:GTV、 Net Flow、 TVL by circuit/bridge ('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"]
Idemotence/dedup
yaml dedup:
key_template: "${chain_id} ${block_height} ${tx_hash} ${log_index} ${type}"
ttl_hours: 72
15)プライバシーとコンプライアンス
PII最小化:PID/ORG_ID、メトリック/ラベルのPII禁止。
データ居住:地域分離(EU/ROW)、暗号化「at rest/on the road」。
削除する権利:証明可能なアプリケーションを使用した墓石/redactionイベント。
監査:不変ログ、ハッシュアンカー、ロールアクセスチェック。
16)運営規程
毎日:証拠の適用範囲の和解、鎖の最終化、橋のレジストリおよび構成のドリフト。
ウィークリー:アセットカタログ/小数点の改訂、FX正規化の正しさ。
毎月:reorg/replayテスト、SLOチェックとパフォーマンス応力テスト。
変更管理:マージポリシーの変更、意思決定ログのタイムロック。
17) Playbookインシデント
A。 Desynchronアセット/小数
対応する資産で停止し、カタログをロールバックし、窓を再計算し、24時間≤に報告します。
B。証拠のカバレッジの秋
Merclization/Anchoringの再起動、ログアップ、100ケースの手動サンプリング、レポート。
C。 Reorg/チャレンジピーク
「k」/紛争ウィンドウを拡大し、大量の遅延確定を可能にし、利害関係者に通知します。
テイク/リピートの爆発
TTLのdedup/keyをきつく締めて下さい、「騒々しい」源を限って下さい、検疫回路を可能にして下さい。
E。タイムスキュー
NTP/PTP同期、ウィンドウ再計算、temporary 'prefer: observed_at' policy shift。
18)実装チェックリスト
1.ソース、ファイナライゼーションウィンドウ、エビデンスをキャプチャします。
2.正規イベントスキーマとidempotencyキーを実装します。
3.デッドアップを構成し、隔離輪郭を持つポリシーをマージします。
4.資産/ネットワークレジスタとFX正規化を上げます。
5.リプレイ/バックフィルと遅延データ処理を実装します。
6.SLI/SLOと品質ダッシュボードを定義します。
7.定期的なアンカーと監査ログを実行します。
8.reorg/bridge delayシミュレーションを使用してパイロットを実行し、MTTRをキャプチャします。
19)用語集
Finality-状態/イベントの不可逆性。
Reorg-ブロックの一部をキャンセルしてチェーンを再構成します。
Idempotency-再配達への抵抗。
証拠カバレッジ-有効な証拠を持つレコードの割合。
エンティティ解決-単一のエンティティアドレス/アカウントマッピング。
Delayed Finalization-高リスク量の集計への遅延受理。
検疫は、紛争/疑わしい記録のための孤立した流れです。
ボトムライン:チェーンデータの正しいマージは管理可能な規律です。正規のスキーム、最終化と証明、厳格なアイデンポテンス、透明なマージングポリシー、観察可能な品質。このフレームワークに従うことで、エコシステムは単一の検証可能で持続可能なデータ層を受け取ります。これは、監査、分析、製品の安全なスケーリングの基礎です。