手把手实现 Uniswap v2:创建交易对、从 ETH 换 Dai 再到 Compound 收息

·

核心关键词:Uniswap v2 实现、DeFi 流动性、WETH 原理、Impermanent Loss、智能合约、交易对、去中心化交易所

代码结构速览:一份了解就去开撸

在开始动手之前,先把官方仓库的结构拆给你看,找人找函数都省时间:

把架构放进脑子里,就能在调试时精准定位 流动性价格计算 的 bug。


1 秒懂 WETH:为什么必须「包一层」

以太坊原生币 ETH 并非 ERC-20,而 DeFi 协议(包括 Uniswap)又只认 ERC-20,于是出现了 Wrapped Ether(WETH):把 ETH 打进合约,合约给你 1:1 的 WETH;想换回原币,执行 withdraw() 即可。
一句话总结:ETH → 合约 → WETH → DeFi;再反向赎回,流程干净、无需额外授权,体验跟选钱包转账差不多。


Impermanent Loss:你必须面对的幽灵

当你同时为交易对提供 流动性,却遭遇两种资产价格波动,就会产生 暂时性损失(Impermanent Loss)。一旦你选择撤池,它就正式变成 永久性亏损

举个人话例子:

因此,考虑是否提供日元稳定币/ETH 这类 波动大 的组合时,一定要把 潜在损失手续费收益 一起算。


实战:三步把 ETH 换成 Dai,再投入 Compound 赚息

下方示例基于 Remix & Etherscan,无需本地节点。

1. 创建交易对

  1. 打开 Remix,导入 UniswapV2Factory.sol 部署者地址。
  2. 传入 DaiWETH 地址,调用 createPair(tokenA, tokenB)
  3. 工厂会自动返回新的 Pair 合约地址并记录 PairCreated 事件。
event PairCreated(
    address indexed token0,
    address indexed token1,
    address pair,
    uint allPairsLength
);

2. 路由兑换:ETH → Dai

具体操作举例:
👉 零基础也能看懂的单页交互教程

3. 把 Dai 投入 Compound 生息

  1. 在 Etherscan 找到 cDai 合约地址,调用 mint(uint mintAmount)
  2. 签名后 Dai → cDai,供应利率按区块实时调整。
  3. 收益可在 Compound Dashboard 查看,也可随时 redeem 提取本息。

这在概念上即形成 “三部曲”映射Uniswap 提供流动性 → 赚取手续费;套利者拉高波动 → 无损退出后,折现自由 Dai 再投 Compound 收息,实现 一级流动性二级收益 的叠加策略。


维护流动性时常见问题速解

Q1: 没有足够 ETH 启动双币做市怎么办?

A: 可以先在 少量测试网 锻造小面额 WETH 与测试 Dai,完成全链路验证;主网部署时,用闪电贷一次性配平。

Q2: 如何减少 Impermanent Loss?

A: 优选 相关资产比例超低波动 的池子,如 USDT/USDC;再者,仅在择高手续费时期做市,收益可对冲部分损失。

Q3: Router02 和 Router01 区别大吗?

A: Router02 修复少量回调安全检查,功能保持一致,建议新项目直接用 Router02。

Q4: 如何查看实时手续费收入?

A: 监听 Mint/Burn/Swap 事件的 Pair 地址,链下累加流动性份额即可计算 手续费分成

Q5: Compound 利息可否立即复利?

A: 可以手动通过 reinvest() 循环铸造,或者用 第三方协议 全自动复投。需注意 gas > 利息时反而不划算。


小结:把碎片拼成收益闭环

下一步想要深挖?
👉 探索 Layer2 下的超低滑点战术指南