mcpField
D
defi-protocols

defi-protocols

github.com/pluginagentmarketplace開発169 回インストール43 週間前に更新
リポジトリ

defi-protocols について

defi-protocols は、DeFi プロトコルを開発する人向けのスキルで、AMM、レンディング、利回り戦略、オラクル連携を扱います。実装例や数式に加え、セキュリティ確認項目とよくある問題への対処をまとめています。

主な機能

  1. 01AMMの仕組みとスワップ計算
  2. 02レンディング市場と清算ロジック
  3. 03利回り戦略と報酬分配
  4. 04オラクル連携と鮮度確認
  5. 05セキュリティ項目と一般的なリスク

活用シーン

  1. 01AMMのスワップ計算を実装
  2. 02レンディング金利と清算ロジックを設計
  3. 03オラクル価格データを連携・検証
  4. 04プロトコルの一般的なセキュリティリスクを確認

インストール

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

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-blockchain --skill defi-protocols

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
config.yaml
schema.json
references/
GUIDE.md
PATTERNS.md
scripts/
validate.py

詳細

DeFi プロトコルスキル

AMM の仕組み、貸付システム、利回り最適化、オラクル統合など、DeFi プロトコル開発を習得できます。

クイックスタート

# Invoke this skill for DeFi development
Skill("defi-protocols", protocol_type="amm", chain="ethereum")

対象トピック

1. AMM(自動マーケットメーカー)

分散型取引所を構築します。

  • 定積積:x * y = k(Uniswap V2)
  • 集中流動性:ティックベース(Uniswap V3)
  • ステーブルスワップ:Curve の不変式
  • TWAP:時間加重平均価格
2. 貸付プロトコル

貸付市場を作成します。

  • 過剰担保型:Aave/Compound モデル
  • 金利:利用率ベースの曲線
  • 清算:健全性係数、インセンティブ
  • 分離市場:リスクの区分
3. 利回り最適化

リターンを最大化します。

  • 自動複利運用:ボールト戦略
  • 流動性マイニング:報酬の分配
  • veTokens:投票ロック型ガバナンス
  • 賄賂:ゲージ投票のインセンティブ
4. オラクル統合

価格フィードを保護します。

  • Chainlink:分散型オラクル
  • TWAP:価格操作への耐性
  • 鮮度チェック:価格の鮮度
  • フォールバック:複数オラクルの構成

コード例

AMM スワップ計算
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

library SwapMath {
    uint256 constant FEE_NUMERATOR = 997;
    uint256 constant FEE_DENOMINATOR = 1000;

    /// @notice Calculate output amount for constant product AMM
    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) internal pure returns (uint256) {
        uint256 amountInWithFee = amountIn * FEE_NUMERATOR;
        uint256 numerator = amountInWithFee * reserveOut;
        uint256 denominator = reserveIn * FEE_DENOMINATOR + amountInWithFee;
        return numerator / denominator;
    }

    /// @notice Calculate price impact percentage (basis points)
    function getPriceImpact(
        uint256 amountIn,
        uint256 reserveIn
    ) internal pure returns (uint256) {
        return (amountIn * 10000) / (reserveIn + amountIn);
    }
}
Chainlink オラクル
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

contract PriceOracle {
    AggregatorV3Interface public immutable priceFeed;
    uint256 public constant STALENESS_THRESHOLD = 1 hours;

    error StalePrice();
    error InvalidPrice();

    constructor(address feed) {
        priceFeed = AggregatorV3Interface(feed);
    }

    function getPrice() external view returns (uint256) {
        (, int256 price,, uint256 updatedAt,) = priceFeed.latestRoundData();

        if (block.timestamp - updatedAt > STALENESS_THRESHOLD) {
            revert StalePrice();
        }
        if (price <= 0) revert InvalidPrice();

        return uint256(price);
    }
}
フラッシュローンのコールバック
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "@aave/v3-core/contracts/flashloan/base/FlashLoanSimpleReceiverBase.sol";

contract Arbitrage is FlashLoanSimpleReceiverBase {
    function executeOperation(
        address asset,
        uint256 amount,
        uint256 premium,
        address,
        bytes calldata
    ) external override returns (bool) {
        // Execute arbitrage logic here

        // Repay: amount + premium
        IERC20(asset).approve(address(POOL), amount + premium);
        return true;
    }
}

DeFi 数式

定積積 AMM
Invariant: x * y = k
Output: dy = y - k/(x + dx)
Price: p = y/x
Slippage: dx/(x + dx) * 100%
金利
Utilization: U = borrows / (deposits + borrows)
Borrow Rate: R = base + slope * U  (when U < optimal)
Supply Rate: R_supply = R_borrow * U * (1 - reserve_factor)
健全性係数
HF = (collateral * liquidation_threshold) / debt
Liquidation when HF < 1

よくある落とし穴

落とし穴リスク防止策
現物価格オラクルフラッシュローンによる操作TWAP を使用
スリッページチェックなしサンドイッチ攻撃最小出力を強制
古い価格誤った清算updatedAt をチェック
再入可能性資金の流出CEI + ガード

セキュリティチェックリスト

  • オラクルの鮮度を検証する
  • スリッページを保護する
  • フラッシュローン攻撃への耐性
  • 再入可能性ガード
  • 管理者のアクセス制御
  • 緊急停止メカニズム
  • パラメーターのタイムロック

トラブルシューティング

「オラクル価格の乖離」
# Compare oracle vs DEX price
cast call $ORACLE "latestRoundData()" --rpc-url $RPC
cast call $POOL "slot0()" --rpc-url $RPC
「サンドイッチ攻撃を検出しました」

最小出力の強制を追加します。

require(amountOut >= minAmountOut, "Slippage exceeded");

プロトコルアドレス(メインネット)

プロトコルコントラクト
Uniswap V3 Router0xE592427A0AEce92De3Edee1F18E0157C05861564
Aave V3 Pool0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2
Chainlink ETH/USD0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419

関連項目

  • Bonded Agent:04-defi-specialist
  • 関連スキル:solidity-development、smart-contract-security

バージョン履歴

バージョン日付変更内容
2.0.02025-01数式とセキュリティを含む本番品質のリリース
1.0.02024-12初回リリース

コメント