mcpField
B
building-blocks

building-blocks

github.com/austintgriffith開発30242 回インストール4 日前に更新
リポジトリ

building-blocks について

DeFi 開発者向けのプロトコル組み合わせガイドです。マルチチェーンのアドレス、Uniswap V4 のフック、チェーン別の DEX パターン、構成上のリスクを扱います。

主な機能

  1. 01マルチチェーンのプロトコルアドレス
  2. 02Uniswap V4 のフックパターン
  3. 03フラッシュローンと利回り構成の例
  4. 04チェーン別 DeFi 開発ガイド
  5. 05プロトコル構成のリスク指針

活用シーン

  1. 01対象チェーンの DEX やレンディングの調査
  2. 02独自の Uniswap V4 フックの設計
  3. 03プロトコル構成前のリスク評価

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/austintgriffith/ethskills --skill building-blocks

インストール後、Claude Code で/building-blocksを入力して読み込まれたか確認します。

詳細

ビルディングブロック(DeFiレゴ)

よくある誤解

DeFi TVL: 現在のEthereumのDeFi TVLは、DeFi Llamaで確認してください。2023〜2024年の数値を引用している場合、すでに古くなっています。

Uniswap V4は稼働中です。 2025年1月31日に10以上のチェーンでメインネットローンチしました。V4ではフックシステムが導入されました。これはプールにカスタムロジック(動的手数料、TWAMM、指値注文、カスタムオラクル)を追加するものです。フラッシュローン以来、最も大きなコンポーザビリティの向上です。PoolManagerのアドレスはチェーンごとに異なります(V3のように決定論的ではありません)。

コストがすべてを変えました: メインネットでのフラッシュローン・アービトラージにかかるガス代は、現在約$0.05-0.50です(以前は$5-50でした)。これにより、以前は採算が合わなかったコンポーザビリティのパターンが実現可能になります。

各L2で優勢なDEXはUniswapではありません。 AerodromeとVelodromeはAeroに統合され(2025年11月、Dromos Labs)、統合されたDEXがBaseとOptimismの両方で優勢です。CamelotはArbitrumを代表するネイティブDEXです。どのチェーンでもUniswapを前提にしないでください。

主要プロトコルのアドレス(2026年3月確認済み)

プロトコルコントラクトメインネットアドレス
Uniswap V2 RouterRouter0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Uniswap V2 FactoryFactory0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
Uniswap V3 FactoryFactory0x1F98431c8aD98523631AE4a59f267346ea31F984
Uniswap V3 SwapRouter02Router0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
Uniswap V4 PoolManagerPoolManager0x000000000004444c5dc75cB358380D2e3dE08A90
Uniswap Universal Router (V4)Router0x66a9893cc07d91d95644aedd05d03f95e1dba8af
Aave V3 PoolPool0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2

L2ネイティブプロトコル(Aerodrome、GMX、Pendle、Velodrome、Camelot、SyncSwap、Morpho)を含む、全チェーンのアドレス一覧についてはaddresses/SKILL.mdを参照してください。

Uniswap V4フック(新機能)

フックを使うと、スワップ、流動性の変更、寄付の前後に実行されるカスタムロジックを追加できます。フラッシュローン以来、最も大きなコンポーザビリティの向上です。

フックインターフェース(Solidity)
import {BaseHook} from "v4-periphery/src/utils/BaseHook.sol";
import {IPoolManager} from "v4-core/interfaces/IPoolManager.sol";
import {PoolKey} from "v4-core/types/PoolKey.sol";
import {BeforeSwapDelta, BeforeSwapDeltaLibrary} from "v4-core/types/BeforeSwapDelta.sol";

contract DynamicFeeHook is BaseHook {
    constructor(IPoolManager _manager) BaseHook(_manager) {}

    function getHookPermissions() public pure override returns (Hooks.Permissions memory) {
        return Hooks.Permissions({
            beforeInitialize: false,
            afterInitialize: false,
            beforeAddLiquidity: false,
            afterAddLiquidity: false,
            beforeRemoveLiquidity: false,
            afterRemoveLiquidity: false,
            beforeSwap: true,           // ← We hook here
            afterSwap: false,
            beforeDonate: false,
            afterDonate: false,
            beforeSwapReturnDelta: false,
            afterSwapReturnDelta: false,
            afterAddLiquidityReturnDelta: false,
            afterRemoveLiquidityReturnDelta: false
        });
    }

    // Dynamic fee: higher fee during high-volume periods
    function beforeSwap(
        address,
        PoolKey calldata key,
        IPoolManager.SwapParams calldata params,
        bytes calldata
    ) external override returns (bytes4, BeforeSwapDelta, uint24) {
        // Return dynamic fee override (e.g., 0.05% normally, 0.30% during volatility)
        uint24 fee = _isHighVolatility() ? 3000 : 500;
        return (this.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO_DELTA, fee | 0x800000);
    }
}

実際のコードパターンで実現できるフックの用途:

  • 動的手数料 — ボラティリティ、時刻、オラクルデータに応じて調整します
  • TWAMM — 大口注文を時間をかけて分割し、価格への影響を抑えます
  • 指値注文 — 価格がしきい値を超えたときに実行します
  • MEV保護 — サーチャーにスワップの順序決定権をオークションで販売します
  • カスタムオラクル — スワップごとにTWAPを更新します

コンポーザビリティのパターン(2026年のガス代に対応)

ガス代が1ドル未満になったことで、これらのパターンは少額でも採算が取れるようになりました。

フラッシュローン・アービトラージ

Aaveから借り入れ → Uniswapで利益が出るようにスワップ → Aaveに返済します。すべて1つのトランザクションで実行されます。利益が出ない場合はリバートし、失うのはガス代のみです:約$0.05-0.50。

レバレッジド・イールドファーミング

AaveにETHを預け入れ → ステーブルコインを借り入れ → 追加のETHと交換 → 再度預け入れ → 繰り返します。1ループあたりのガス代は、メインネットで約$0.02、L2では無視できる程度です。

メタアグリゲーション

最適な約定を実現するため、複数のDEXを経由してスワップをルーティングします。1inchとParaswapはUniswap、Curve、Sushiを同時に確認します。

ERC-4626イールドボールト

標準化されたボールトインターフェース、つまり「イールド版のERC-20」です。戦略に関係なく、すべてのボールトが同じ関数を公開します。

import {ERC4626} from "@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol";
import {ERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract SimpleYieldVault is ERC4626 {
    constructor(IERC20 asset_) 
        ERC4626(asset_) 
        ERC20("Vault Shares", "vSHARE") 
    {}

    // totalAssets() drives the share price
    // As yield accrues, totalAssets grows → shares worth more
    function totalAssets() public view override returns (uint256) {
        return IERC20(asset()).balanceOf(address(this)) + _getAccruedYield();
    }
}

// Usage: deposit/withdraw are standardized
// vault.deposit(1000e6, msg.sender);  // deposit 1000 USDC, get shares
// vault.redeem(shares, msg.sender, msg.sender);  // burn shares, get USDC back
// vault.convertToAssets(shares);  // how much USDC are my shares worth?

ERC-4626が重要な理由: コンポーザビリティです。どのプロトコルでも、カスタムアダプターなしで任意のボールトを統合できます。Yearn V3、Aaveのラップドトークン、Morphoのボールト、Pendleのイールドトークンは、すべてERC-4626です。

フラッシュローン(Aave V3 — 完全なパターン)
import {FlashLoanSimpleReceiverBase} from 
    "@aave/v3-core/contracts/flashloan-v3/base/FlashLoanSimpleReceiverBase.sol";
import {IPoolAddressesProvider} from 
    "@aave/v3-core/contracts/interfaces/IPoolAddressesProvider.sol";

contract FlashLoanArb is FlashLoanSimpleReceiverBase {
    constructor(IPoolAddressesProvider provider) 
        FlashLoanSimpleReceiverBase(provider) {}

    function executeArb(address token, uint256 amount) external {
        // Borrow `amount` of `token` — must repay + 0.05% fee in same tx
        POOL.flashLoanSimple(address(this), token, amount, "", 0);
    }

    function executeOperation(
        address asset,
        uint256 amount,
        uint256 premium,  // 0.05% fee
        address,
        bytes calldata
    ) external override returns (bool) {
        // --- Your arbitrage logic here ---
        // Buy cheap on DEX A, sell expensive on DEX B
        // Must end with at least `amount + premium` of `asset`
        
        uint256 owed = amount + premium;
        IERC20(asset).approve(address(POOL), owed);
        return true;  // If unprofitable, revert here — lose only gas (~$0.05-0.50)
    }
}

Aave V3 Pool(メインネット): 0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2 フラッシュローン手数料: 0.05%(5ベーシスポイント)。Aaveの債務ポジションに返済する場合は無料です。

Baseでの構築

優勢なDEX:Aero(旧Aerodrome、TVL約$500-600M)です。Uniswapではありません。2025年11月、Dromos LabsはAerodrome(Base)とVelodrome(Optimism)を統合し、Aeroという統合クロスチェーンDEXにしました。コントラクトとve(3,3)モデルはそのままで、ブランドが新しくなりました。

Aerodromeの仕組み(Uniswapとの重要な違い)
  • LPはトークンをプールに預け入れ、AEROのエミッションを獲得します(取引手数料ではありません!)
  • veAEROの投票者はAEROをロックし、どのプールにエミッションを配分するか投票して、取引手数料の100%と賄賂を獲得します
  • LPが直接手数料を獲得するUniswapとは逆の仕組みです
  • フライホイール: 最も多くの手数料を生むプール → 最も多くの票を集める → 最も多くのエミッションを獲得する → より多くのLPを集める → 流動性が深まる → 手数料が増える
Aerodrome Swap(ルーターインターフェース)
// Aerodrome Router: 0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43 (Base)
struct Route {
    address from;
    address to;
    bool stable;       // true = stable pair (like Curve), false = volatile (like Uni V2)
    address factory;   // 0x420DD381b31aEf6683db6B902084cB0FFECe40Da
}

// Swap via Router
function swapExactTokensForTokens(
    uint256 amountIn,
    uint256 amountOutMin,
    Route[] calldata routes,
    address to,
    uint256 deadline
) external returns (uint256[] memory amounts);
Base固有のパターン
  • Coinbase Smart Wallet — ERC-4337ウォレット、パスキー認証、Coinbase paymasterによるガスレス取引
  • Farcaster Frames v2 — ソーシャル投稿に埋め込まれ、オンチェーン操作を実行するミニアプリ
  • AgentKit — AIエージェントがオンチェーンで操作するためのCoinbaseのフレームワーク

Arbitrumでの構築(DeFi流動性が最も高いチェーン)

GMX V2 — GMプールの仕組み
  • 各市場には、それぞれ独立したプールがあります(V1の単一GLPプールとは異なります)
  • LPはGM(流動性)プールに預け入れ、GMトークンを受け取ります
  • 完全担保市場: ETH/USDはETHとUSDCで担保されます。担保トークンは取引対象の資産と一致します。
  • 合成市場: DOGE/USDはETHとUSDCで担保されます。しきい値に達すると、ADL(自動デレバレッジ)が使用されます。
  • LPは取引手数料、清算手数料、借入手数料、スワップ手数料を獲得します。ただし、トレーダーの損益によるリスクも負います。
Pendle — 利回りのトークン化

Pendleは、利回りを生む資産を元本と利回りの要素に分割します。

  1. SY(Standardized Yield): 利回りを生むあらゆる資産をラップします。例:wstETH → SY-wstETH。
  2. PT(Principal Token): 元本です。満期時に1:1で償還できます。割引価格で取引されます(割引率=インプライド利回り)。
  3. YT(Yield Token): 満期までのすべての利回りです。満期時に価値は0になります。
  4. 基本不変条件: SY_value = PT_value + YT_value

ユースケース:

  • 割引価格でPTを購入する=固定利回りを確定する(ゼロクーポン債のようなもの)
  • YTを購入する=利回りへのエクスポージャーをレバレッジする(利回りの上昇に賭ける)
  • PendleプールにLPとして参加する=取引手数料とPENDLEインセンティブを獲得する
Arbitrum固有のテクノロジー
  • Stylus: EVMと並行して、Rust/C++/WASMでスマートコントラクトを記述できます(計算負荷の高い処理でガスを10~100倍節約)
  • Orbit: カスタムL3チェーンを立ち上げます(メインネットで47件稼働中)

検証済みプロトコルアドレス(GMX、Pendle、Camelot、Aerodrome、Velodrome、SyncSwap、Morpho)については、addresses/SKILL.mdを参照してください。

発見に役立つリソース

  • DeFi Llama: https://defillama.com — TVLランキング、利回りランキング、全チェーン
  • Dune Analytics: https://dune.com — オンチェーンデータをクエリする
  • ethereum.org/en/dapps/ — 厳選された一覧

コンポーザビリティのためのガードレール

  • 組み合わせるすべてのプロトコルは依存関係になります。 Aaveがハッキングされると、Aaveに依存するボールトにも影響します。
  • オラクルの操作はエクスプロイトにつながります。 オラクルの情報源を確認してください。
  • AMMのLPにはインパーマネントロスが実際に発生します。流動性を提供する前に、その影響を定量化してください。
  • 安全な2つのコントラクトを組み合わせても、安全でない挙動が生じることがあります。 組み合わせを監査してください。
  • 少額から始めてください。 規模を拡大する前に、最小限の金額でテストしてください。
  • フラッシュローン攻撃は、単一のトランザクション内で価格を操作できます。これを考慮して設計してください。

コメント