レッスン3 — Chainlink CCIP(Tempo が使うクロスチェーンレール)
問い
Tempo で merchant が USDC で決済を受け取る。裏側で treasury 用に Ethereum、DeFi yield 用に Solana に決済必要 — 3 chain にまたがり 2 つは直接通信不可。Tempo が今日まさに本番で動かしているクロスチェーン決済のレールが Chainlink CCIP — light client でも Wormhole fork でもない、任意 chain ペア向け本番 bridge。
原理(最小モデル)
- 2 ネットワーク + RMN. Committing DON(source イベント → Merkle commitment)+ Executing DON(destination で実行)+ Risk Management Network(悪意 / 制裁メッセージ veto、別 validator)。
- CCIP は技術的には multisig. 専用設計(大 validator + RMN + トークンプール + chain ごとリスクパラメータ)= 「洗練された multisig」。
- Trust 仮定: DON 共謀 + RMN. DON 共謀でメッセージ偽造可、RMN がバックアップ(特定レーン停止)。暗号 trustless ではなく信頼ベース。
- メッセージ 3 形態. Data-only(任意 calldata) / Token(asset 転送) / Programmable(両方、Soltempo の主用途)。
- トークンプールモデルで wrapping カオス回避. Burn-mint(USDC.e ではなく canonical USDC)/ Lock-release(プール保持)。
- レーンモデル. 向きのある chain ペア、Ethereum→Tempo と Tempo→Ethereum は別。30+ chain × ~900 レーン構成可能。
- 手数料. Native gas または LINK(~20% 割引)、$0.50-$2/msg = 決済 $100+ で許容。
- CCIP vs 代替. Wormhole(19/N multisig、最安 multisig リスク)/ LayerZero(DVN モデル、柔軟)/ OP Standard(L2 専用 7 日)。Tempo は trust + 規制で CCIP 勝ち。
具体例
CCIP アーキテクチャ:
flowchart LR
Source["Source chain<br/>(Ethereum)"] -->|user tx| Router["CCIP Router"]
Router -->|emit| OnRamp["OnRamp contract"]
OnRamp -->|message| DON["Decentralized Oracle Network<br/>(commit + execute)"]
DON -->|verify + relay| OffRamp["OffRamp contract"]
OffRamp -->|deliver| Dest["Destination chain<br/>(Tempo)"]
RMN["Risk Management<br/>Network"] -.->|cursing| DON
3 ネットワーク:
| ネットワーク | 役割 | Trust モデル |
|---|---|---|
| Committing DON | Source イベントを Merkle commitment に集約 | M-of-N の PoS validator |
| Executing DON | Destination でメッセージ実行 | 同じ / 別の N-of-M |
| Risk Management Network | 悪意 / 制裁メッセージ veto | 別 validator、off-chain monitoring |
メッセージフォーマット:
struct Any2EVMMessage {
bytes32 messageId; // 一意 ID
uint64 sourceChainSelector;
bytes sender; // Source 上の ABI エンコード sender
bytes data; // 任意の calldata
EVMTokenAmount[] destTokenAmounts; // Destination で release するトークン
}
メッセージ 3 形態:
| ユースケース | 何を送るか | 例 |
|---|---|---|
| Data-only | data(任意 calldata) | 汎用クロスチェーン呼び出し |
| Token | destTokenAmounts | Asset 転送 |
| Programmable | 両方 | クロスチェーン swap、settle-and-call、Soltempo |
CCIP vs 代替(merchant 規模支払い):
| Bridge | Trust モデル | 手数料 | レイテンシ | Tempo にとって |
|---|---|---|---|---|
| CCIP | PoS DON + RMN | $0.50-$2 | ~10 分 | 本番準備済、Solana サポート |
| LayerZero | DVN モデル | $0.30-$1 | ~5 分 | Solana サポート、柔軟 |
| Wormhole | 19-of-N guardian multisig | $0.20-$1 | ~2 分 | 最安だが multisig リスク |
| OP Standard | Rollup コンセンサス | ~$0.10 + L1 gas | 7 日 | L2 専用、Tempo 用途に不適 |
Solidity Receiver(Tempo 上の Soltempo Vault):
contract SoltempoVault is CCIPReceiver {
function _ccipReceive(Any2EVMMessage memory message) internal override {
// Sender をデコード (認可された soltempo source contract であるべき)
address sourceContract = abi.decode(message.sender, (address));
require(sourceContract == authorizedSource, "unauthorized");
// 支払いメタデータデコード
PaymentReceipt memory receipt = abi.decode(message.data, (PaymentReceipt));
// 受信した USDC で merchant 状態を更新
_processSettlement(message.destTokenAmounts, receipt);
}
}
Rust Receiver(Tempo→Solana、Anchor):
#[program]
mod soltempo_vault {
use ccip_solana::CcipReceiver;
pub fn ccip_receive(ctx: Context<CcipReceive>, message: Any2SVMMessage) -> Result<()> {
// Sender 検証
require!(message.sender == authorized_source, ErrorCode::Unauthorized);
// 決済処理
process_settlement(ctx, message)
}
}
mppsol アーキテクチャ:
Merchant 支払い ──[CCIP]── Solana DeFi ──[CCIP]── Tempo merchant 残高
↑ ↓ ↑
Ethereum USDC Yield earn オンデマンド引出し
失敗例(誤解)
「CCIP は trustless」— 間違い。技術的には multisig(committing + executing DON)+ RMN(バックアップ)。洗練された保護機構を備えた multisig であって暗号 trustless ではない。DON 共謀でメッセージ偽造可、RMN がそれを止めるが信頼ベース。
「Wormhole の方が安いから choose Wormhole」— 半分間違い。確かに $0.20-$1 で最安、$0.50-$2 の CCIP より安い。しかし multisig リスク(過去 $325M ハック)+ 規制統合の弱さ。Tempo は trust + 規制 + 本番成熟度で CCIP。
「トークンプール = wrapping」— 間違い。Wrapping は USDC.e のような偽 USDC を作る、トークンプールは canonical USDC のまま burn-mint(source で burn、destination で同 total supply から mint)。「USDC.e」は存在せず、別 chain 上の同じ USDC。
🛑 予測。 CCIP は「Risk Management Network」がメッセージを ブロックする 権限を備えている。なぜ? 純粋暗号で防げない何の攻撃を防ぐ?(答え: ① DON 共謀メッセージ偽造(committing + executing DON が共謀すれば不正メッセージ通せる)、② 特定アドレスの悪意活動(北朝鮮制裁アドレスからの bridge を停止)、③ 緊急時の規制対応(裁判所命令でレーン停止)、④ 新興バグ発覚時の影響限定(DON ソフトウェアバグ判明時にレーンを pause)。暗号は数学的に正しい結果を保証するが、人間社会の例外を扱えない → RMN が「数学が正しくても社会的に正しくない」ケースの安全弁。第二防衛層。)
ステップで組み立てる
Step 1: 3 ネットワークを即答
Committing DON / Executing DON / RMN。
Step 2: メッセージ 3 形態
Data-only / Token / Programmable。Soltempo は Programmable(USDC + 決済メタデータ)。
Step 3: トークンプールの burn-mint vs lock-release
USDC = burn-mint(canonical 維持)/ wrapped token = lock-release(pool 保持)。wrapping カオス回避。
Step 4: CCIP vs 代替を判断
Trust + 規制成熟度 = CCIP。最安 = Wormhole(multisig リスク)。柔軟性 = LayerZero。L2 専用 = OP Standard。
Step 5: Solidity / Rust Receiver パターン
CCIPReceiver 継承 + _ccipReceive override + sender 検証 + メッセージ処理。EVM = Solidity / Solana = Anchor Rust。同じパターン、言語差。
Step 6: 手数料モデル
Native gas または LINK(20% 割引)、$0.50-$2/msg。$100+ の決済で許容(0.5% 以下)。
Step 7: スケール検証
レーンあたり 10-100 msg/sec、1000 同時決済はキュー積み。即時性必須なら問題、非即時なら許容。
答え合わせ
- CCIP の真の trust 仮定: DON 共謀でメッセージ偽造可 + RMN がバックアップ(特定レーン停止可能)+ 規制対応で外部介入可能。「multisig + 第二防衛層」。暗号 trustless ではないが、本番運用 + 規制統合 + RMN 安全弁で機関投資家向きの trust モデル。
- Soltempo が CCIP 専用の理由: ① Solana サポートが成熟(CCIP は 2026 で対応)、② RMN による on-chain リスク管理(規制対応で重要)、③ 機関統合実績 + 保険、④ Chainlink の最も確立されたクロスチェーンインフラ。規制された決済レール = 速度より trust + 制度。
- $1M 決済 $0.50 手数料の妥当性: 0.005% = 極低い。クレジットカード 2-3% / 国際送金 5-10% と比較で圧倒的。スループット限界(レーン 10-100 msg/s)= 1000 同時決済キューイングで非即時用途には許容、merchant リアルタイム UX 要求では問題。
合格基準
- 3 ネットワーク(Committing / Executing DON + RMN)を即答できる。
- メッセージ 3 形態と Soltempo の使い分けを言える。
- トークンプール(burn-mint vs lock-release)を説明できる。
- CCIP vs Wormhole / LayerZero / OP Standard を 4 軸で比較できる。
- Solidity / Rust Receiver パターンを書ける。
まとめ(3行)
- CCIP = 「洗練された multisig」(Committing + Executing DON + RMN)、技術的 trustless ではないが本番運用 + 規制統合 + RMN 安全弁で機関投資家向き trust モデル。
- トークンプール burn-mint で wrapping カオス回避(USDC.e 不要)、メッセージ 3 形態(Data / Token / Programmable)、$0.50-$2/msg で決済 $100+ に許容。
- Tempo(Soltempo + mppsol)が本番採用 = trust + 規制 + Solana サポート成熟度の組み合わせで Wormhole / LayerZero を上回る、Solidity
CCIPReceiver+ Rust Anchor で両 VM 対応。