名称: 构建块 描述: 在以太坊和 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 将收益资产拆分为本金和收益组件:
- SY(标准化收益): 包装任何收益资产。例如,wstETH → SY-wstETH。
- PT(本金代币): 本金。到期时可按 1:1 赎回。以折扣价交易(折扣 = 隐含收益)。
- YT(收益代币): 所有收益直到到期。价值在到期时衰减到 0。
- 核心不变量:
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)。
发现资源
- DeFi Llama: https://defillama.com —— TVL 排名、收益排名、所有链
- Dune Analytics: https://dune.com —— 查询链上数据
- ethereum.org/en/dapps/ —— 精选列表
组合性护栏
- 你组合的每个协议都是一个依赖。 如果 Aave 被黑客攻击,依赖 Aave 的金库会受到影响。
- 预言机操纵 = 漏洞利用。 验证预言机来源。
- 无常损失 对 AMM 流动性提供者是真实的。在提供流动性前量化它。
- 两个安全合约的交互可能产生不安全行为。 审计组合。
- 从小额开始。 在扩展前用最小价值测试。
- 闪电贷攻击 可以在单个交易内操纵价格。为此设计。