mcpField
D
defi-protocols

defi-protocols

github.com/pluginagentmarketplace开发169 次安装43 周前更新
代码仓库

关于 defi-protocols

defi-protocols 是面向 DeFi 协议开发者的 Skill,涵盖 AMM、借贷、收益策略和预言机集成。它结合代码示例、公式、安全检查清单与常见问题说明。

主要功能

  1. 01AMM 机制与兑换计算
  2. 02借贷市场与清算逻辑
  3. 03收益策略与奖励分配
  4. 04预言机集成与时效检查
  5. 05安全清单与常见风险

适用场景

  1. 01实现 AMM 兑换计算
  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 协议技能

掌握 DeFi 协议开发,包括 AMM 机制、借贷系统、收益优化和预言机集成。

快速入门

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

涵盖主题

1. AMM(自动做市商)

构建去中心化交易所:

  • 恒定乘积:x * y = k(Uniswap V2)
  • 集中流动性:基于 Tick(Uniswap V3)
  • 稳定币互换:Curve 不变量
  • TWAP:时间加权平均价格
2. 借贷协议

创建借贷市场:

  • 超额抵押:Aave/Compound 模型
  • 利率:基于资金利用率的曲线
  • 清算:健康因子、激励机制
  • 隔离市场:风险分层
3. 收益优化

最大化回报:

  • 自动复利:Vault 策略
  • 流动性挖矿:奖励分配
  • veTokens:投票托管型治理
  • 贿赂:Gauge 投票激励
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

交叉引用

  • 绑定的 Agent:04-defi-specialist
  • 相关技能:solidity-development、smart-contract-security

版本历史

版本日期变更
2.0.02025-01达到生产级质量,包含数学公式和安全内容
1.0.02024-12首次发布

评论

支持 Markdown