DeFi构建块Skill building-blocks

这个技能专注于在以太坊和二层网络上使用DeFi协议如Uniswap V4、Aave、Aero等构建和组合去中心化金融应用。它包括智能合约开发、协议集成、量化交易策略设计和区块链技术应用,适用于开发者、量化分析师和DeFi爱好者。关键词:DeFi, 智能合约, Uniswap, Aave, 区块链, 协议组合, 量化交易, SEO

DeFi 0 次安装 0 次浏览 更新于 3/25/2026

名称: 构建块 描述: 在以太坊和 L2 上的 DeFi 乐高和协议组合性。每个链的主要协议 —— Base 上的 Aerodrome、Arbitrum 上的 GMX/Pendle、Optimism 上的 Velodrome —— 以及主网原语(Uniswap、Aave、Compound、Curve)。它们如何工作、如何在其上构建以及如何组合它们。用于构建 DeFi 集成、在特定 L2 上选择协议、设计收益策略或将现有协议组合成新事物。

构建块(DeFi 乐高)

你可能搞错的地方

DeFi TVL: 以太坊 DeFi TVL 为 500 亿美元以上(2026 年 2 月)。如果你引用 2023-2024 年的数字,它们已经过时了。

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

成本改变了一切: 现在在主网上进行一次闪电贷套利的 gas 成本约为 0.05-0.50 美元(以前是 5-50 美元)。这开启了以前不经济的组合模式。

每个 L2 上的主导 DEX 不是 Uniswap。 Aerodrome 和 Velodrome 合并为 Aero(2025 年 11 月,Dromos Labs)—— 统一的 DEX 主导 Base 和 Optimism。Camelot 是 Arbitrum 上的主要本地 DEX。不要在每个链上默认使用 Uniswap。

关键协议地址(已验证 2026 年 2 月)

协议 合约 主网地址
Uniswap V2 路由器 Router 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Uniswap V2 工厂 Factory 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
Uniswap V3 工厂 Factory 0x1F98431c8aD98523631AE4a59f267346ea31F984
Uniswap V3 SwapRouter02 Router 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
Uniswap V4 PoolManager PoolManager 0x000000000004444c5dc75cB358380D2e3dE08A90
Uniswap 通用路由器(V4) Router 0x66a9893cc07d91d95644aedd05d03f95e1dba8af
Aave V3 池 Pool 0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2

查看 addresses/SKILL.md 获取完整多链地址列表,包括 L2 原生协议(Aerodrome、GMX、Pendle、Velodrome、Camelot、SyncSwap、Morpho)。

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,           // ← 我们在这里钩入
            afterSwap: false,
            beforeDonate: false,
            afterDonate: false,
            beforeSwapReturnDelta: false,
            afterSwapReturnDelta: false,
            afterAddLiquidityReturnDelta: false,
            afterRemoveLiquidityReturnDelta: false
        });
    }

    // 动态费用:高交易量时期提高费用
    function beforeSwap(
        address,
        PoolKey calldata key,
        IPoolManager.SwapParams calldata params,
        bytes calldata
    ) external override returns (bytes4, BeforeSwapDelta, uint24) {
        // 返回动态费用覆盖(例如,通常 0.05%,波动时期 0.30%)
        uint24 fee = _isHighVolatility() ? 3000 : 500;
        return (this.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO_DELTA, fee | 0x800000);
    }
}

钩子用例及实际代码模式:

  • 动态费用 —— 基于波动性、时间或预言机数据调整
  • TWAMM —— 将大订单拆分以降低价格影响
  • 限价订单 —— 当价格超过阈值时执行
  • MEV 保护 —— 将交换顺序权拍卖给搜索者
  • 自定义预言机 —— 每次交换更新 TWAP

组合模式(针对 2026 年 gas 更新)

由于亚美元级 gas,这些模式现在 经济上可行,即使对于小额交易:

闪电贷套利

从 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() 驱动份额价格
    // 随着收益累积,totalAssets 增长 → 份额价值增加
    function totalAssets() public view override returns (uint256) {
        return IERC20(asset()).balanceOf(address(this)) + _getAccruedYield();
    }
}

// 用法:存款/取款是标准化的
// vault.deposit(1000e6, msg.sender);  // 存入 1000 USDC,获取份额
// vault.redeem(shares, msg.sender, msg.sender);  // 销毁份额,取回 USDC
// vault.convertToAssets(shares);  // 我的份额值多少 USDC?

为什么 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 {
        // 借入 `amount` 的 `token` —— 必须在同一交易中偿还 + 0.05% 费用
        POOL.flashLoanSimple(address(this), token, amount, "", 0);
    }

    function executeOperation(
        address asset,
        uint256 amount,
        uint256 premium,  // 0.05% 费用
        address,
        bytes calldata
    ) external override returns (bool) {
        // --- 你的套利逻辑在这里 ---
        // 在 DEX A 上低价买入,在 DEX B 上高价卖出
        // 结束时必须有至少 `amount + premium` 的 `asset`
        
        uint256 owed = amount + premium;
        IERC20(asset).approve(address(POOL), owed);
        return true;  // 如果无利可图,在这里回退 —— 仅损失 gas(约 0.05-0.50 美元)
    }
}

Aave V3 池(主网): 0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2 闪电贷费用: 0.05%(5 个基点)。如果偿还到 Aave 债务头寸,则免费。

在 Base 上构建

主导 DEX:Aero(原 Aerodrome,约 5-6 亿美元 TVL)—— 不是 Uniswap。2025 年 11 月,Dromos Labs 将 Aerodrome(Base)和 Velodrome(Optimism)合并为一个统一的跨链 DEX,称为 Aero。相同合约,相同的 ve(3,3) 模型,新品牌。

Aero 如何工作(与 Uniswap 的关键区别)

  • 流动性提供者存入代币 到池 → 赚取 AERO 排放(不是交易费用!)
  • veAERO 投票者 锁定 AERO → 投票哪些池获得排放 → 赚取 100% 交易费用 + 贿赂
  • 这与 Uniswap 相反,在 Uniswap 中流动性提供者直接赚取费用
  • 飞轮效应: 产生最多费用的池 → 吸引最多投票 → 获得最多排放 → 吸引更多流动性提供者 → 更深流动性 → 更多费用

Aerodrome 交换(路由器接口)

// Aerodrome 路由器: 0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43 (Base)
struct Route {
    address from;
    address to;
    bool stable;       // true = 稳定对(如 Curve),false = 波动对(如 Uni V2)
    address factory;   // 0x420DD381b31aEf6683db6B902084cB0FFECe40Da
}

// 通过路由器交换
function swapExactTokensForTokens(
    uint256 amountIn,
    uint256 amountOutMin,
    Route[] calldata routes,
    address to,
    uint256 deadline
) external returns (uint256[] memory amounts);

Base 特定模式

  • Coinbase 智能钱包 —— ERC-4337 钱包,密码认证,通过 Coinbase 支付主控进行无 gas 交易
  • OnchainKit —— npm create onchain 使用 React 组件引导 Base 应用
  • Farcaster Frames v2 —— 嵌入社交帖子中触发链上操作的小应用
  • AgentKit —— Coinbase 的框架,用于 AI 代理在链上交互

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

GMX V2 —— GM 池如何工作

  • 每个市场有自己的隔离池(不同于 V1 的单一 GLP 池)
  • 流动性提供者存入 GM(流动性)池 → 接收 GM 代币
  • 完全支持市场: ETH/USD 由 ETH + USDC 支持。支持代币与交易资产匹配。
  • 合成市场: DOGE/USD 由 ETH + USDC 支持。当达到阈值时使用 ADL(自动去杠杆化)。
  • 流动性提供者赚取:交易费用、清算费用、借款费用、交换费用。但承担交易者盈亏的风险。

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 个活跃链)

查看 addresses/SKILL.md 获取所有已验证协议地址(GMX、Pendle、Camelot、Aerodrome、Velodrome、SyncSwap、Morpho)。

发现资源

组合性护栏

  • 你组合的每个协议都是一个依赖。 如果 Aave 被黑客攻击,依赖 Aave 的金库会受到影响。
  • 预言机操纵 = 漏洞利用。 验证预言机来源。
  • 无常损失 对 AMM 流动性提供者是真实的。在提供流动性前量化它。
  • 两个安全合约的交互可能产生不安全行为。 审计组合。
  • 从小额开始。 在扩展前用最小价值测试。
  • 闪电贷攻击 可以在单个交易内操纵价格。为此设计。