mcpField
B
building-blocks

building-blocks

github.com/austintgriffith开发30241 次安装4 天前更新
代码仓库

关于 building-blocks

面向 DeFi 开发者的协议组合技能,涵盖多链协议地址、Uniswap V4 hooks、各链 DEX 模式及组合风险。

主要功能

  1. 01多链协议地址核验
  2. 02Uniswap V4 hook 模式
  3. 03闪电贷与收益组合示例
  4. 04各链 DeFi 开发指引
  5. 05协议组合风险提示

适用场景

  1. 01为特定链查找 DEX 或借贷协议
  2. 02设计自定义 Uniswap V4 hook
  3. 03组合协议前评估风险

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/building-blocks确认已加载。

详细介绍

构建模块(DeFi 乐高)

你可能弄错的地方

DeFi TVL: 请查看 DeFi Llama 获取 Ethereum 当前的 DeFi TVL。如果你引用的是 2023—2024 年的数据,那已经过时了。

Uniswap V4 已上线。 已于 2025 年 1 月 31 日在 10 多条链上启动主网。V4 引入了钩子系统——附加到池的自定义逻辑(动态费用、TWAMM、限价订单、自定义预言机)。这是自闪电贷以来最大的可组合性升级。各链的 PoolManager 地址各不相同(不像 V3 那样具有确定性)。

成本改变了一切: 现在,在主网上进行一次闪电贷套利的 Gas 费用约为 0.05—0.50 美元(过去是 5—50 美元)。这让此前不具备经济可行性的可组合模式成为可能。

各 L2 上占主导地位的 DEX 并非 Uniswap。 Aerodrome 和 Velodrome 于 2025 年 11 月在 Dromos Labs 的推动下合并为 Aero——这个统一的 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 年 Gas 更新)

由于 Gas 费用低于 1 美元,这些模式如今即使对小额交易也具有经济可行性:

闪电贷套利

从 Aave 借款 → 在 Uniswap 上交换获利 → 偿还 Aave。所有操作都在一笔交易中完成。如果无利可图,则回滚(仅损失 Gas 费用:约 0.05—0.50 美元)。

杠杆收益耕作

在 Aave 存入 ETH → 借入稳定币 → 兑换成更多 ETH → 再次存入 → 重复操作。每轮 Gas 费用:主网上约 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 约 5 亿—6 亿美元)——而非 Uniswap。2025 年 11 月,Dromos Labs 将 Aerodrome(Base)和 Velodrome(Optimism)合并为名为 Aero 的统一跨链 DEX。合约相同,ve(3,3) 模型相同,品牌焕新。

Aero 的运作方式(与 Uniswap 的关键区别)
  • LP 向池中存入代币 → 获得 AERO 排放奖励(不是交易手续费!)
  • veAERO 投票者锁定 AERO → 投票决定哪些池获得排放奖励 → 获得 100% 的交易手续费 + 贿赂奖励
  • 这与 Uniswap 正好相反,Uniswap 中 LP 直接赚取手续费
  • **飞轮效应:**产生最多手续费的池 → 吸引最多投票 → 获得最多排放奖励 → 吸引更多 LP → 流动性更深 → 产生更多手续费
Aerodrome 兑换(路由器接口)
// 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 实现免 Gas 交易
  • Farcaster Frames v2 — 嵌入社交帖子、可触发链上操作的迷你应用
  • AgentKit — Coinbase 为 AI Agent 与链上交互提供的框架

在 Arbitrum 上构建(DeFi 流动性最高)

GMX V2 — GM 池的运作方式
  • 每个市场都有独立的池(不同于 V1 的单一 GLP 池)
  • LP 向 GM(流动性)池存入资产 → 获得 GM 代币
  • **完全背书市场:**ETH/USD 由 ETH + USDC 背书。背书代币与交易资产相匹配。
  • **合成市场:**DOGE/USD 由 ETH + USDC 背书。达到阈值时会使用 ADL(自动减仓)。
  • LP 可赚取交易手续费、清算手续费、借款手续费和兑换手续费,但也要承担交易者盈亏带来的风险。
Pendle — 收益代币化

Pendle 将生息资产拆分为本金和收益部分:

  1. **SY(标准化收益):**封装任意生息资产。例如,wstETH → SY-wstETH。
  2. **PT(本金代币):**代表本金。到期时可按 1:1 赎回。以折价交易(折价 = 隐含收益率)。
  3. **YT(收益代币):**代表直至到期的全部收益。其价值会在到期时衰减至 0。
  4. 核心恒等式:SY_value = PT_value + YT_value

用例:

  • 折价买入 PT = 锁定固定收益(类似零息债券)
  • 买入 YT = 放大收益敞口(押注收益率上升)
  • 在 Pendle 池中提供流动性 = 赚取交易手续费 + PENDLE 激励
Arbitrum 特有技术
  • **Stylus:**可使用 Rust/C++/WASM 编写智能合约,并与 EVM 并行运行(计算密集型操作可节省 10-100 倍 Gas)
  • **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 面临的无常损失确实存在。提供流动性前请先量化评估。
  • **两个安全合约交互后也可能产生不安全行为。**请审计组合方案。
  • **从小额开始。**扩大规模前,先用最小金额测试。
  • 闪电贷攻击可能在单笔交易中操纵价格。设计时应考虑这一点。

评论

支持 Markdown