关于 building-blocks
面向 DeFi 开发者的协议组合技能,涵盖多链协议地址、Uniswap V4 hooks、各链 DEX 模式及组合风险。
主要功能
- 01多链协议地址核验
- 02Uniswap V4 hook 模式
- 03闪电贷与收益组合示例
- 04各链 DeFi 开发指引
- 05协议组合风险提示
适用场景
- 01为特定链查找 DEX 或借贷协议
- 02设计自定义 Uniswap V4 hook
- 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 Router | Router | 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D |
| Uniswap V2 Factory | Factory | 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f |
| Uniswap V3 Factory | Factory | 0x1F98431c8aD98523631AE4a59f267346ea31F984 |
| Uniswap V3 SwapRouter02 | Router | 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45 |
| Uniswap V4 PoolManager | PoolManager | 0x000000000004444c5dc75cB358380D2e3dE08A90 |
| Uniswap Universal Router (V4) | Router | 0x66a9893cc07d91d95644aedd05d03f95e1dba8af |
| Aave V3 Pool | Pool | 0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2 |
完整的多链地址列表(包含 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 将生息资产拆分为本金和收益部分:
- **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 条已上线)
所有已验证协议地址(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 面临的无常损失确实存在。提供流动性前请先量化评估。
- **两个安全合约交互后也可能产生不安全行为。**请审计组合方案。
- **从小额开始。**扩大规模前,先用最小金额测试。
- 闪电贷攻击可能在单笔交易中操纵价格。设计时应考虑这一点。