导语:没有银行,如何完成金融
DeFi(Decentralized Finance)将传统金融的核心功能——交易、借贷、衍生品、保险——搬到了区块链上。它不依赖任何中介机构,而是通过智能合约自动执行金融规则。
截止到 2026 年,DeFi 协议的总锁仓价值(TVL)已超过 500 亿美元,每日在链上结算数十亿美元的交易量。
一句话总结:DeFi 用"可组合的乐高积木"替代了传统金融的中介机构——每一行代码都是透明的,每个人都可以审计和参与。
1. DEX 与自动做市商(AMM)
1.1 为什么传统订单簿不适合链上
中心化交易所(CEX)使用订单簿:买方挂买单,卖方挂卖单,撮合引擎匹配成交。
链上订单簿的问题:
- gas 成本:每挂一个订单都要上链存储,修改或取消也要付 gas
- 流动性碎片化:每个交易对独立做市,滑点巨大
- MEV 攻击:订单簿的深度信息暴露,套利者可提前交易
1.2 Uniswap AMM 模型
Uniswap v2 发明了 x × y = k 恒定乘积做市商模型:
// 核心公式:x * y = k
// x = 代币 A 的储备量
// y = 代币 B 的储备量
// k = 常数(仅在添加/移除流动性时变化)
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
internal pure returns (uint amountOut)
{
require(amountIn > 0, "INSUFFICIENT_INPUT_AMOUNT");
require(reserveIn > 0 && reserveOut > 0, "INSUFFICIENT_LIQUIDITY");
uint amountInWithFee = amountIn * 997; // 0.3% 手续费
uint numerator = amountInWithFee * reserveOut;
uint denominator = reserveIn * 1000 + amountInWithFee;
amountOut = numerator / denominator;
}
价格形成机制:
- 交易前储备:(1000 ETH, 2000 USDC),价格 = 2 USDC/ETH
- 用 100 ETH 买入 USDC:
x' = 1000 + 100 = 1100 ETH y' = k / x' = (1000 * 2000) / 1100 = 1818.18 USDC 得到 USDC = 2000 - 1818.18 = 181.82 USDC 实际价格 ≈ 181.82 / 100 = 1.818 USDC/ETH - 价格波动越大,滑点越大
1.3 无常损失(Impermanent Loss)
无常损失是 LP(流动性提供者)面临的核心风险:
def impermanent_loss(price_ratio):
"""
price_ratio = 新价格 / 原始价格
返回无常损失百分比
"""
r = price_ratio
il = 2 * (r ** 0.5) / (1 + r) - 1
return il * 100
# 价格变化 vs 无常损失
# 价格 ×1.5 → IL = -2.0%
# 价格 ×2 → IL = -5.7%
# 价格 ×3 → IL = -13.4%
# 价格 ×5 → IL = -25.5%
关键理解:无常损失只在提取流动性时实现。如果价格回到初始水平,损失消失。
| 策略 | 优点 | 缺点 |
|---|---|---|
| 主动做市 | 赚取手续费 + 挖矿奖励 | 无常损失风险 |
| 稳定币对 LP | 无常损失极小 | 收益率较低 |
| 单边质押 | 无无常损失 | 无交易手续费 |
一句话总结:AMM 用数学公式替代订单撮合,
x*y=k确保流动性始终可用,但 LP 承受价格波动导致的"无常损失"。
2. 借贷协议
2.1 Compound/Aave 核心机制
用户存入资产(Supply)
│
├─ 获得 cToken/aToken(代表存款份额的可转让凭证)
├─ 存入资产进入资金池,供借款人使用
└─ 开始按区块累计利息
用户借出资产(Borrow)
│
├─ 必须有超额抵押(Collateral Factor 70%)
├─ 借款利率 = f(资金利用率) = 基准利率 + 斜率 × 利用率
└─ 利息按每秒复利计算
2.2 利率模型
// Compound 的跳跃利率模型
function getBorrowRate(uint cash, uint borrows, uint reserves) public view returns (uint) {
uint ur = utilizationRate(cash, borrows, reserves); // 资金利用率
if (ur <= kink) {
// 低利用率:线性增长
return multiplierPerBlock * ur / BASE + baseRatePerBlock;
} else {
// 高利用率:跳跃增长,激励还款
uint normalRate = multiplierPerBlock * kink / BASE + baseRatePerBlock;
uint excessUtil = ur - kink;
return excessUtil * jumpMultiplierPerBlock / BASE + normalRate;
}
}
| 参数 | 含义 |
|---|---|
| 资金利用率 | borrows / (cash + borrows) |
| kink | 利用率拐点,通常 80% |
| baseRate | 基础利率 |
| multiplier | 利率斜率 |
| jumpMultiplier | 拐点后斜率(大幅提升) |
2.3 清算机制
function liquidate(address borrower, address repayToken, address seizeToken) external {
// 1. 检查借款人的健康因子 < 1
// 健康因子 = (抵押品价值 × 折扣) / 借款总额
require(healthFactor(borrower) < 1e18, "Account is healthy");
// 2. 清算人偿还借款人的债务
uint repayAmount = min(borrowBalance, maxCloseFactor);
// 3. 清算人获得抵押品(通常有 5-10% 折扣激励)
uint seizeTokens = repayAmount * liquidationIncentive / priceOfSeizeToken;
// 4. 执行转移
transferCollateral(borrower, msg.sender, seizeTokens);
}
一句话总结:DeFi 借贷通过超额抵押 + 动态利率 + 清算机制,实现了无需信用评级的"无信任借贷"。
3. 流动性挖矿(Yield Farming)
3.1 收益来源拆解
流动性挖矿的收益来自三层叠加:
总 APY = 交易手续费分成 (APR)
+ 治理代币奖励 (APR)
+ 底层存款利息 (APR)
- gas 成本摊销
- 无常损失
3.2 挖矿策略对比
| 策略 | 操作 | 风险 | 预期 APY |
|---|---|---|---|
| 稳定币质押 | USDC/USDT LP | 低无常损失 | 3-8% |
| ETH/wstETH | 相关资产 LP | 极低无常损失 | 2-5% |
| 商品对 LP | 高波动资产对 | 正常无常损失 | 10-50% |
| 杠杆挖矿 | 借入资产循环投入 | 清算风险 | 不确定 |
| 治理代币挖矿 | 质押获得治理权 | 代币价格波动 | 高波动 |
3.3 收益计算合约
contract YieldCalculator {
function calculateAPY(
uint dailyRewardPerLP, // 每日代币奖励 / LP 总量
uint tokenPrice, // 奖励代币价格(USD)
uint lpTokenPrice, // LP token 价格(USD)
uint tradingFeeAPR, // 年交易手续费率
uint daysPerYear // 365
) public pure returns (uint totalAPY) {
uint rewardAPR = dailyRewardPerLP * tokenPrice * daysPerYear / lpTokenPrice;
totalAPY = rewardAPR + tradingFeeAPR;
}
// 考虑复利的精确计算
function calculateAPYCompounded(
uint rewardPerBlock, // 每区块奖励代币数
uint blocksPerYear, // 年区块数(ETH: ~2.6M)
uint tokenPrice,
uint lpValue
) public pure returns (uint apy) {
uint yearlyRewardUSD = rewardPerBlock * blocksPerYear * tokenPrice;
// 简单 APR
apy = yearlyRewardUSD * 10000 / lpValue; // 基点,10000=100%
}
}
一句话总结:流动性挖矿的收益 = 协议手续费 + 治理代币补贴,风险 = 无常损失 + 智能合约漏洞 + gas 成本。
4. DeFi 风险
| 风险类型 | 说明 | 防护 |
|---|---|---|
| 智能合约漏洞 | 代码被攻击(重入、溢出、逻辑错误) | 多重审计、Bug Bounty、保险(Nexus Mutual) |
| 预言机操纵 | 喂价被闪电贷攻击 | Chainlink 去中心化预言机、TWAP |
| 治理攻击 | 恶意提案通过代币投票 | 时间锁(Timelock)、否决权 |
| 无常损失 | 价格波动导致 LP 亏损 | 稳定币对、对冲策略 |
| MEV | 三明治攻击、抢跑 | 私有交易池、MEV Blocker |
| 跨链桥风险 | 多签/私钥被盗导致资产丢失 | 多重验证、ZK 桥 |
一句话总结:DeFi 的高收益伴随着高风险——智能合约漏洞和预言机操纵是历史上造成数十亿美元损失的主要原因。
5. 总结
DeFi 协议的三大支柱:
- DEX + AMM — Uniswap 的
x*y=k让任何人都可以成为做市商 - 借贷协议 — 超额抵押 + 动态利率模型实现了无信任借贷
- 流动性挖矿 — 治理代币激励机制吸引初始流动性
阅读延伸:
- Solidity 智能合约开发入门 — 合约开发基础
- 智能合约安全审计与常见漏洞 — DeFi 安全必读
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。