第10章:DeFi 入门:去中心化金融的核心组件(2025年10月最新版)
声明:仅供学习参考,不构成投资建议
国外可访问:rainweb3知识库
国内可访问:rainweb3知识库
⚠️ 免责声明:本文档旨在提供教育性、参考性的技术指导,基于当前(2025年)社区广泛认可的最佳实践。它不构成任何形式的投资、法律或专业建议。智能合约开发风险极高,任何部署前都应进行严格的自我审查、自动化扫描和第三方审计。
去中心化金融(DeFi)正在重塑全球金融基础设施,实现无需信任、无需许可、全天候运行的金融服务。本章系统讲解DeFi五大核心组件,结合2025年最新协议、数学模型与生产级代码示例,确保内容精准、无过时信息、可直接用于实战(参考)。
1. 去中心化交易所(DEX):Uniswap、SushiSwap(AMM 模型)
(1)DEX vs 传统交易所
| 特性 | 传统交易所(CEX) | DEX(如 Uniswap) |
|---|---|---|
| 托管方式 | 中心化托管资产 | 用户自托管(非托管) |
| 交易机制 | 订单簿(Order Book) | 自动做市商(AMM) |
| 上币门槛 | 高(需审核) | 低(任何人可创建交易对) |
| 交易时间 | 7×24,但可能宕机 | 7×24,由区块链保障 |
(2)AMM 模型:x * y = k
-
核心公式:
x * y = kx:代币A储备量y:代币B储备量k:常数(乘积不变)
-
价格发现:
当用户用Δx交换Δy,价格由储备比例决定:
P = y / x -
滑点(Slippage):
大额交易会显著改变储备比例,导致实际成交价偏离预期。
(3)Uniswap V3(2025年主流版本)
-
核心创新:集中流动性(Concentrated Liquidity)
- 流动性提供者(LP)可指定价格区间(如 2,200)提供流动性。
- 提高资本效率,减少无常损失。
-
手续费等级:
- 0.01%(稳定币对)
- 0.05%(主流资产,如 ETH/USDC)
- 0.3%(长尾代币)
- 1%(波动性极高资产)
(4)生产级交易示例(Ethers.js + Uniswap V3)
import { ethers } from 'ethers';
import { SwapRouter } from '@uniswap/v3-sdk';
import { Token, CurrencyAmount, TradeType } from '@uniswap/sdk-core';
import IUniswapV3PoolABI from '@uniswap/v3-core/artifacts/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.json';
// 定义代币(以 ETH/USDC 为例)
const USDC = new Token(
1, // chainId
'0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
6,
'USDC',
'USD Coin'
);
const WETH = new Token(
1,
'0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
18,
'WETH',
'Wrapped Ether'
);
// 估算交易(仅读取)
async function quoteSwap(fromAmount: string, provider: ethers.Provider) {
const poolAddress = '0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640'; // USDC/ETH pool (0.05%)
const poolContract = new ethers.Contract(poolAddress, IUniswapV3PoolABI.abi, provider);
const [liquidity, slot0] = await Promise.all([
poolContract.liquidity(),
poolContract.slot0()
]);
const sqrtPriceX96 = slot0[0];
// 实际交易需使用 @uniswap/v3-sdk 计算最优路径
// 此处简化为概念演示
}
// 实际交易(需用户签名)
async function executeSwap(signer: ethers.Signer) {
const routerAddress = '0xE592427A0AEce92De3Edee1F18E0157C0586a731'; // Uniswap V3 Router
const routerContract = new ethers.Contract(routerAddress, UNISWAP_V3_ROUTER_ABI, signer);
const params = {
tokenIn: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
tokenOut: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
fee: 500, // 0.05%
recipient: await signer.getAddress(),
amountIn: ethers.parseEther('0.1'),
amountOutMinimum: ethers.parseUnits('180', 6), // 最小接收(防滑点)
sqrtPriceLimitX96: 0
};
const tx = await routerContract.exactInputSingle(params, {
gasLimit: 300000
});
const receipt = await tx.wait();
console.log('Swap successful, TX:', receipt?.hash);
}
✅ 推荐工具:
- 使用 Uniswap Interface 在测试网体验。
- 查看 Uniswap SDK 获取最新交易逻辑。
2. 借贷协议:Aave、Compound
(1)核心机制
- 超额抵押:用户存入抵押品(如ETH),借出其他资产(如DAI),LTV(Loan-to-Value)通常 < 75%。
- 利率模型:基于供需动态调整(如 Aave 的 Stable + Variable Rate)。
- 清算机制:当抵押率低于阈值,任何人都可清算,获得奖励。
(2)Aave V3(2025年主流)
- 隔离模式(Isolation Mode):限制高风险资产的抵押能力。
- 跨链流动性:支持 Ethereum、Polygon、Arbitrum、Optimism 等。
- eMode(效率模式):同类资产(如稳定币)间提供更高LTV。
(3)代码示例:在 Aave 存入并借款(简化)
const AAVE_POOL_ADDR = '0x794a61358D6845594F94dc1DB02A252b5b4814aD'; // Aave V3 Ethereum
const aavePoolABI = [ /* 从 Aave 官方获取 */ ];
const pool = new ethers.Contract(AAVE_POOL_ADDR, aavePoolABI, signer);
// 存入 WETH 作为抵押
await pool.supply(
'0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // asset
ethers.parseEther('0.1'), // amount
await signer.getAddress(),
0
);
// 借出 DAI
await pool.borrow(
'0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI
ethers.parseUnits('100', 18),
2, // 利率模式(Variable)
0,
await signer.getAddress()
);
🔐 风险提示:
- 高波动性资产易被清算。
- 使用 Aave App 模拟计算健康因子。
3. 稳定币:DAI、USDC
| 稳定币 | 类型 | 发行方 | 背书机制 | 2025年状态 |
|---|---|---|---|---|
| DAI | 去中心化 | MakerDAO | 多资产超额抵押(ETH、LST等) | TVL > $5B,支持EIP-4626 |
| USDC | 中心化 | Circle | 现金+短期国债1:1储备 | 多链发行(20+链),年化合规审计 |
| USDT | 中心化 | Tether | 类似USDC | 市场份额最大,但透明度争议 |
✅ DeFi 推荐:优先使用 DAI(去中心化)和 USDC(高流动性)。
4. 收益耕作(Yield Farming)与流动性挖矿
(1)定义
- 流动性挖矿:用户向DEX提供流动性(如 ETH/USDC),获得协议代币奖励(如 UNI、SUSHI)。
- 收益耕作:将LP代币质押到其他协议,获取额外收益(“收益的收益”)。
(2)收益率来源
- 交易手续费分成
- 协议代币激励
- 跨协议复合收益(如 Yearn、Convex)
(3)风险
- 无常损失(Impermanent Loss):价格波动导致LP价值低于持有。
- 代币贬值:激励代币价格下跌,实际收益为负。
- 智能合约风险:协议被黑(2023年 $1.2B 损失)。
✅ 建议:
- 使用 Zapper.fi 或 DefiLlama Yield 查看真实APY。
- 优先选择TVL高、审计完善的协议。
5. 预言机(Oracle):Chainlink,提供链外数据
(1)为什么需要预言机?
- 智能合约无法主动获取链外数据(如 ETH/USD 价格)。
- 预言机是“链下数据 → 链上合约”的桥梁。
(2)Chainlink(2025年主导者)
- 去中心化网络:多个独立节点获取数据,聚合后上链。
- 数据源多样:交易所API、专业数据提供商。
- 混合型合约:支持链下报告(OCR)、DECO(隐私数据)、CCIP(跨链调用)。
(3)获取 ETH/USD 价格(生产级代码)
const AGGREGATOR_V3_INTERFACE = [
"function latestRoundData() view returns (uint80, int256, uint256, uint256, uint80)",
"function decimals() view returns (uint8)"
];
const priceFeed = new ethers.Contract(
'0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419', // ETH/USD Feed
AGGREGATOR_V3_INTERFACE,
provider
);
const roundData = await priceFeed.latestRoundData();
const price = Number(roundData.answer) / (10 ** await priceFeed.decimals());
console.log(`ETH/USD Price: $${price}`);
✅ 替代方案:
- Pyth Network:高频、低延迟,适合Solana、BNB Chain。
- API3:第一方预言机,减少中间商。
学习建议(2025年实操指南)
1. 在测试网体验 Uniswap 交易
- 步骤:
- 安装 MetaMask,切换至 Sepolia 测试网。
- 从 Sepolia Faucet 获取测试ETH。
- 访问 Uniswap Testnet。
- 交易 ETH ↔ DAI(测试代币)。
- 观察交易哈希、Gas、滑点。
2. 深入学习 AMM 数学模型
- 核心公式:
x * y = k - 推导滑点:
- 输入
Δx,输出Δy = y - (k / (x + Δx)) - 滑点率 =
(理想价格 - 实际价格) / 理想价格
- 输入
- 推荐资源:
- 《Mastering Ethereum》第8章
- Uniswap V2 Core Paper
本章小结
截至2025年10月,DeFi生态已高度成熟:
| 组件 | 主流协议 | 关键创新 | 风险提示 |
|---|---|---|---|
| DEX | Uniswap V3 | 集中流动性 | 滑点、无常损失 |
| 借贷 | Aave V3 | 跨链、eMode | 清算风险 |
| 稳定币 | DAI, USDC | 多链支持 | 中心化风险(USDC) |
| 收益 | Yearn, Convex | 收益聚合 | 智能合约漏洞 |
| 预言机 | Chainlink | OCR, CCIP | 数据源操纵 |
✅ 行动建议:
- 立即在测试网操作 Uniswap 和 Aave,建立直观认知。
- 理解
x * y = k,它是DeFi的“牛顿定律”。- 永远做DYOR(自主研究),避免FOMO(错失恐惧)导致亏损。