オンチェーンDEX比較 — Uniswap・Jupiter・Raydium・Curve・PancakeSwap
はじめに
分散型取引所(DEX)はDeFiエコシステムの中核を担い、中央集権型取引所(CEX)を介さずにトークンの交換を可能にします。2026年現在、DEXの取引高はCEXの15-20%に到達し、特にオンチェーンでのアルゴリズム取引やMEV戦略の舞台として重要性を増しています。
本記事では、主要なスポットDEXをアーキテクチャ・手数料・流動性・裁定取引機会の観点から徹底比較します。
DEXのアーキテクチャ分類
AMM(自動マーケットメイカー)型
スマートコントラクト上の数式で価格を決定する方式です。
【定積マーケットメイカー(Uniswap v2型)】
x × y = k
x: トークンAのリザーブ量
y: トークンBのリザーブ量
k: 定数(流動性追加/削除時のみ変化)
価格 = y / x
CLMM(集中流動性)型
流動性提供者が価格範囲を指定し、資本効率を高める方式です。Uniswap v3で導入されました。
【集中流動性の概念】
価格レンジ: [Pa, Pb]
仮想リザーブ: x_virtual = x + L / √Pb
y_virtual = y + L × √Pa
L: 流動性の深さ
効率倍率: √(Pb/Pa) / (√(Pb/Pa) - 1)
例: ETH/USDC で ±5%のレンジ → 約10倍の資本効率
オーダーブック型
CEXと同様の指値注文方式をオンチェーンまたはハイブリッドで実現する方式です。
| 方式 | メリット | デメリット | 代表例 |
|---|---|---|---|
| AMM(定積) | シンプル、常に流動性あり | 資本効率が低い、IL大 | Uniswap v2, PancakeSwap v2 |
| CLMM(集中流動性) | 高資本効率 | 管理が複雑、IL管理必要 | Uniswap v3/v4, Raydium CLMM |
| StableSwap | ペッグ資産で低スリッページ | 非ペッグ資産に不向き | Curve |
| オーダーブック | 価格発見が効率的 | オンチェーンではコスト高 | Serum後継, Phoenix |
| アグリゲーター | 最良価格を自動ルーティング | 自身は流動性を持たない | Jupiter, 1inch |
主要DEX詳細比較
1. Uniswap v4
2025年にローンチされたUniswapの最新版。Hooks(フック)の導入が最大の革新です。
基本データ
| 項目 | 値 |
|---|---|
| チェーン | Ethereum, Arbitrum, Optimism, Polygon, Base, BSC |
| TVL | 約$12B(全チェーン合計) |
| 日次取引高 | $2-5B |
| 手数料 | 動的(Hooks依存)、デフォルト0.3% |
| トークン | UNI |
Hooks(フック)の仕組み
Uniswap v4最大の特徴は、プールの動作をカスタマイズできるHooksです。
// Uniswap v4 Hook の基本構造
interface IHooks {
// スワップ実行前に呼ばれる
function beforeSwap(
address sender,
PoolKey calldata key,
IPoolManager.SwapParams calldata params,
bytes calldata hookData
) external returns (bytes4, BeforeSwapDelta, uint24);
// スワップ実行後に呼ばれる
function afterSwap(
address sender,
PoolKey calldata key,
IPoolManager.SwapParams calldata params,
BalanceDelta delta,
bytes calldata hookData
) external returns (bytes4, int128);
// 流動性追加前/後
function beforeAddLiquidity(...) external returns (bytes4);
function afterAddLiquidity(...) external returns (bytes4);
}
主要なHookユースケース
| Hook種別 | 説明 | 効果 |
|---|---|---|
| 動的手数料 | ボラティリティに応じて手数料を調整 | LP収益最大化 |
| TWAMM | 大口注文を時間分割で実行 | 価格インパクト低減 |
| リミットオーダー | 指値注文をAMMプール上で実現 | オーダーブック機能追加 |
| オラクル統合 | Chainlink等の外部価格参照 | MEV保護 |
| KYC/ホワイトリスト | 許可されたアドレスのみ取引可能 | コンプライアンス対応 |
Singleton アーキテクチャ
【v3】プールごとに個別コントラクト
Pool A: 0x1234... ETH/USDC
Pool B: 0x5678... ETH/DAI
Pool C: 0x9abc... WBTC/ETH
→ マルチホップスワップで複数コントラクトをまたぐ
【v4】すべてのプールが1つのコントラクト内
PoolManager: 0xUNIFIED...
├─ Pool A: ETH/USDC
├─ Pool B: ETH/DAI
└─ Pool C: WBTC/ETH
→ Flash Accounting でガス大幅削減(約50%減)
2. Jupiter(Solana)
Solanaエコシステム最大のDEXアグリゲーターであり、単なるルーティングを超えた総合取引プラットフォームです。
基本データ
| 項目 | 値 |
|---|---|
| チェーン | Solana |
| 統合DEX数 | 20+ |
| 日次取引高 | $1-3B |
| 手数料 | ルーティング手数料0%(DEX手数料のみ) |
| トークン | JUP |
アグリゲーションの仕組み
ユーザー: SOL → USDC (1000 SOL)
Jupiter のルーティング最適化:
┌─ 40% → Raydium (SOL/USDC) ─────────────────┐
├─ 30% → Orca (SOL/USDC) ───────────────────── ├→ 最終出力: USDC
├─ 20% → Raydium (SOL/mSOL → mSOL/USDC) ──── │
└─ 10% → Lifinity (SOL/USDC) ─────────────────┘
結果: 単一DEX利用時より 0.5-2% 良い約定価格
Jupiter API(ボット開発向け)
import httpx
async def get_jupiter_quote(
input_mint: str,
output_mint: str,
amount: int, # lamports単位
slippage_bps: int = 50 # 0.5%
) -> dict:
"""Jupiter Quote APIで最適ルートを取得"""
url = "https://quote-api.jup.ag/v6/quote"
params = {
"inputMint": input_mint,
"outputMint": output_mint,
"amount": str(amount),
"slippageBps": slippage_bps,
"onlyDirectRoutes": False,
"asLegacyTransaction": False,
}
async with httpx.AsyncClient() as client:
resp = await client.get(url, params=params)
return resp.json()
# SOL → USDC の見積もり取得
SOL_MINT = "So11111111111111111111111111111111111111112"
USDC_MINT = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
quote = await get_jupiter_quote(SOL_MINT, USDC_MINT, 1_000_000_000)
# amount: 1 SOL = 1,000,000,000 lamports
print(f"出力: {int(quote['outAmount']) / 1e6} USDC")
print(f"価格インパクト: {quote['priceImpactPct']}%")
print(f"ルート数: {len(quote['routePlan'])}")
DCA(ドルコスト平均法)とリミットオーダー
Jupiterはアグリゲーション以外にも、DCA機能やリミットオーダー機能をオンチェーンで提供しています。
| 機能 | 説明 | ユースケース |
|---|---|---|
| DCA | 指定間隔で自動分割購入 | 長期積立 |
| Limit Order | 指定価格での指値注文 | テイクプロフィット |
| Perpetual | Jupiter Perps(デリバティブ) | レバレッジ取引 |
| Launch Pad | 新規トークンローンチ | 初期投資 |
3. Raydium(Solana)
Solanaネイティブの主要DEXで、CLMMとAMMの両方を提供します。
基本データ
| 項目 | 値 |
|---|---|
| チェーン | Solana |
| TVL | 約$2B |
| プールタイプ | CLMM, Standard AMM, Constant Product |
| 手数料 | 0.01% - 1%(プールごと) |
| トークン | RAY |
CLMM(Concentrated Liquidity Market Maker)
【Raydium CLMMの価格レンジ設定例】
SOL/USDC プール:
現在価格: $150
戦略A(狭いレンジ):
レンジ: $140 - $160 (±6.7%)
資本効率: 約15倍
手数料収入: 高い
リバランス頻度: 高い
戦略B(広いレンジ):
レンジ: $100 - $200 (±33%)
資本効率: 約3倍
手数料収入: 低い
リバランス頻度: 低い
戦略C(片側流動性):
レンジ: $120 - $150 (現在価格以下)
→ SOLのみ預入、価格下落時にUSDCに変換
実質的な指値買い注文として機能
4. Curve Finance
ステーブルコイン・ペッグ資産のスワップに特化したDEXです。
基本データ
| 項目 | 値 |
|---|---|
| チェーン | Ethereum, Arbitrum, Optimism, Polygon, Base等 |
| TVL | 約$4B |
| 特徴 | StableSwap不変量によるペッグ資産の低スリッページ交換 |
| 手数料 | 0.01% - 0.04% |
| トークン | CRV |
StableSwap不変量
【Curve StableSwap の数式】
通常のAMM(定積):
x × y = k
→ 1:1ペッグ資産でも大きなスリッページ
Curve StableSwap:
A × n^n × Σxi + D = A × D × n^n + D^(n+1) / (n^n × Πxi)
A: 増幅係数(Amplification coefficient)
n: トークン数
xi: 各トークンのリザーブ
D: プール全体の「理想的な」総量
A が大きい → 定和曲線(x + y = k)に近づく → 低スリッページ
A が小さい → 定積曲線(x × y = k)に近づく → 通常のAMM
【スリッページ比較($1M スワップ時)】
USDC → USDT:
Uniswap v3: 0.05-0.1%
Curve: 0.01-0.02% ← 2-5倍優れている
veCRV / Curve War
CRV トークノミクス:
CRV → ロック → veCRV(最大4年ロック)
├─ ガバナンス投票権
├─ ゲージ投票(報酬配分を決定)
└─ プロトコル手数料の分配
Curve War:
Convex Finance: CRVを集約してveCRVに変換
→ cvxCRV 保有者に投票権を委任
→ vlCVX(Vote-Locked CVX)でゲージ投票を制御
Aura Finance: Balancer版のConvex
→ BAL/auraBALエコシステム
5. PancakeSwap
BSC(BNB Smart Chain)を中心とするマルチチェーンDEXです。
基本データ
| 項目 | 値 |
|---|---|
| チェーン | BSC, Ethereum, Arbitrum, Base, zkSync等 |
| TVL | 約$3B |
| 特徴 | Uniswap v3 fork + GameFi要素 |
| 手数料 | 0.01% - 0.25% |
| トークン | CAKE |
総合比較表
| DEX | チェーン | TVL | 手数料 | AMM方式 | 最適ユースケース |
|---|---|---|---|---|---|
| Uniswap v4 | マルチチェーン | $12B | 動的/0.3% | CLMM + Hooks | EVM系汎用、大口取引 |
| Jupiter | Solana | N/A※ | 0% | アグリゲーター | Solana上の最適ルーティング |
| Raydium | Solana | $2B | 0.01-1% | CLMM + AMM | Solanaネイティブ流動性提供 |
| Curve | マルチチェーン | $4B | 0.01-0.04% | StableSwap | ステーブルコイン交換 |
| PancakeSwap | BSC中心 | $3B | 0.01-0.25% | CLMM | BSCエコシステム |
※Jupiterはアグリゲーターのため、TVLは統合先DEXに帰属
インパーマネントロス(IL)の理解
流動性提供者が理解すべき最重要リスクがインパーマネントロスです。
IL計算式
import numpy as np
def impermanent_loss(price_ratio: float) -> float:
"""
インパーマネントロスを計算
Args:
price_ratio: 預入時からの価格変動率
(例: 2.0 = 価格が2倍, 0.5 = 価格が半分)
Returns:
IL(負の値 = 損失)
"""
return 2 * np.sqrt(price_ratio) / (1 + price_ratio) - 1
# 価格変動とILの関係
print("価格変動 | IL")
print("-" * 25)
for change in [0.5, 0.75, 0.9, 1.0, 1.1, 1.25, 1.5, 2.0, 3.0, 5.0]:
il = impermanent_loss(change)
print(f" {change:5.2f}x | {il:7.2%}")
価格変動 | IL
-------------------------
0.50x | -5.72%
0.75x | -1.03%
0.90x | -0.14%
1.00x | 0.00%
1.10x | -0.11%
1.25x | -0.62%
1.50x | -2.02%
2.00x | -5.72%
3.00x | -13.40%
5.00x | -25.46%
CLMM での IL 増幅
集中流動性ではレンジ外に価格が動いた場合、IL が大幅に増幅されます。
【レンジ幅とIL増幅の関係】
フルレンジLP(Uniswap v2相当):
ETH価格 2倍 → IL = -5.72%
集中流動性LP(±10%レンジ):
ETH価格 2倍 → レンジ外 → 実質IL = -100%
(全ポジションが片方のトークンに変換される)
集中流動性LP(±50%レンジ):
ETH価格 2倍 → IL ≈ -11.4%(約2倍のIL)
アービトラージ(裁定取引)機会
DEX間アービトラージ
from dataclasses import dataclass
from typing import Optional
@dataclass
class ArbitrageOpportunity:
token_pair: str
buy_dex: str
sell_dex: str
buy_price: float
sell_price: float
spread_pct: float
estimated_profit_usd: float
gas_cost_usd: float
net_profit_usd: float
def find_arbitrage(
prices: dict[str, dict[str, float]],
trade_size_usd: float = 10000,
gas_cost: float = 5.0,
) -> list[ArbitrageOpportunity]:
"""
DEX間の価格差から裁定機会を検出
Args:
prices: {token_pair: {dex_name: price}}
trade_size_usd: 取引サイズ(USD)
gas_cost: ガス代見積もり(USD)
"""
opportunities = []
for pair, dex_prices in prices.items():
dex_list = list(dex_prices.items())
for i in range(len(dex_list)):
for j in range(len(dex_list)):
if i == j:
continue
buy_dex, buy_price = dex_list[i]
sell_dex, sell_price = dex_list[j]
spread = (sell_price - buy_price) / buy_price
if spread > 0:
gross_profit = trade_size_usd * spread
net_profit = gross_profit - gas_cost
if net_profit > 0:
opportunities.append(ArbitrageOpportunity(
token_pair=pair,
buy_dex=buy_dex,
sell_dex=sell_dex,
buy_price=buy_price,
sell_price=sell_price,
spread_pct=spread * 100,
estimated_profit_usd=gross_profit,
gas_cost_usd=gas_cost,
net_profit_usd=net_profit,
))
return sorted(opportunities, key=lambda x: x.net_profit_usd, reverse=True)
CEX-DEX アービトラージ
CEXとDEXの価格差を利用する戦略は、最も一般的なMEV戦略の一つです。
| 戦略 | 説明 | 必要なもの | 利益幅 |
|---|---|---|---|
| 単純アービトラージ | DEXで安く買いCEXで高く売る | CEX API + DEXコントラクト | 0.1-0.5% |
| フラッシュローン裁定 | 借入→スワップ→返済を1トランザクション | Aave/Balancer Flash Loan | 0.05-0.3% |
| サンドイッチ | 大口注文の前後で取引 | MEVインフラ | 0.1-1% |
| JIT流動性 | スワップ直前に流動性追加/直後に削除 | MEVインフラ + 大量資本 | 変動的 |
フラッシュローンを利用した裁定
// Aave V3 Flash Loan を利用した裁定取引の概念コード
contract FlashLoanArbitrage is IFlashLoanSimpleReceiver {
IPoolAddressesProvider public immutable ADDRESSES_PROVIDER;
IPool public immutable POOL;
function executeArbitrage(
address token,
uint256 amount,
address buyDex,
address sellDex,
bytes calldata buyData,
bytes calldata sellData
) external {
// Flash Loan リクエスト
POOL.flashLoanSimple(
address(this),
token,
amount,
abi.encode(buyDex, sellDex, buyData, sellData),
0 // referralCode
);
}
function executeOperation(
address asset,
uint256 amount,
uint256 premium,
address initiator,
bytes calldata params
) external override returns (bool) {
// 1. DEX Aで安く購入
// 2. DEX Bで高く売却
// 3. Flash Loan + 手数料を返済
// 4. 残りが利益
uint256 amountOwed = amount + premium;
IERC20(asset).approve(address(POOL), amountOwed);
return true;
}
}
スリッページと価格インパクト
プール深度による比較
【$100,000 スワップ時のスリッページ比較(概算)】
ETH/USDC:
Uniswap v4 (Ethereum): 0.02-0.05%
Raydium CLMM (Solana): 0.05-0.15%
PancakeSwap (BSC): 0.1-0.3%
ステーブルコイン(USDC/USDT):
Curve (Ethereum): 0.005-0.01% ← 最良
Uniswap v4: 0.02-0.05%
PancakeSwap: 0.05-0.15%
ロングテールトークン:
Jupiter (集約): 0.5-2%
個別DEX: 1-5%+
ボット開発のためのAPI/SDK比較
| DEX | API種別 | レート制限 | SDK | 特記事項 |
|---|---|---|---|---|
| Uniswap v4 | Subgraph + コントラクト直接 | Subgraph依存 | @uniswap/v4-sdk | Hooks対応SDK |
| Jupiter | REST API | 600 req/min | @jup-ag/api | V6 API、高速 |
| Raydium | REST + コントラクト | 制限緩い | @raydium-io/raydium-sdk-v2 | CLMM SDK充実 |
| Curve | コントラクト直接 | N/A | curve-js | Registry経由 |
| PancakeSwap | Subgraph + SDK | Subgraph依存 | @pancakeswap/sdk | Uniswap forkベース |
まとめ — DEX選択の指針
ユースケース別推奨
| ユースケース | 推奨DEX | 理由 |
|---|---|---|
| EVM大口スワップ | Uniswap v4 | 最大流動性、Hooks による高度な執行 |
| Solanaスワップ | Jupiter | 最適ルーティング、手数料0% |
| ステーブルコイン交換 | Curve | StableSwapで最小スリッページ |
| LP運用(初心者) | PancakeSwap | シンプルUI、低ガス |
| LP運用(上級者) | Uniswap v4 / Raydium CLMM | 集中流動性で高収益 |
| アービトラージボット | Jupiter + Uniswap v4 | クロスチェーン裁定 |
| MEV戦略 | Uniswap v4 | Hooks + 高流動性 |
2026年のDEXトレンド
- インテント(Intent)ベース取引: ユーザーが「何をしたいか」を宣言し、ソルバーが最適な執行を競うモデル(UniswapX, CowSwap等)
- クロスチェーンDEX: ブリッジを統合したシームレスなクロスチェーンスワップ
- RWA(実物資産)トークン: 国債やMMFのトークン化資産がDEX上で取引可能に
- Hook エコシステム: Uniswap v4 Hooksによるカスタムロジックの爆発的増加
- MEV保護: プライベートメモリプール、バッチオークション等のMEV対策強化
DEX選択は、取引対象のチェーン・アセットタイプ・取引サイズ・自動化の必要性に基づいて判断することが重要です。アルゴリズム取引を行う場合は、API/SDKの充実度とレイテンシーも重要な選択基準となります。