Web3实习残酷共学资源汇总

Day 3 - 2025年08月04日


今日学习目标

学习内容

学习笔记

首次添加流动性的特殊处理

代码逻辑 if (_totalSupply == 0) { liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY); _mint(address(0), MINIMUM_LIQUIDITY); // 永久锁定 } else { liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1); } 为什么这样设计是公平的?

  1. 首次添加者的”损失”是必要的 防止除零错误:如果没有最小流动性,后续计算会出现问题 建立价格基准:为池子建立初始价格比例 永久锁定:MINIMUM_LIQUIDITY 被发送到 address(0)(黑洞地址),永远无法赎回
  2. 实际影响分析 假设: 用户A首次添加:1000 USDC + 1 ETH MINIMUM_LIQUIDITY = 1000(实际是 10³) 用户A获得: 0 实际上用户A获得 0 LP 代币! 但是: 1000 个 LP 代币被永久锁定到黑洞地址 这确保了池子永远有最小流动性
  3. 后续添加者的公平性 当用户B添加相同比例:1000 USDC + 1 ETH 1000
  4. 关键理解 这不是”惩罚”首次添加者,而是建立池子的必要成本 首次添加者:承担建立池子的成本(永久锁定最小流动性) 后续添加者:享受已建立的池子,按比例获得 LP 代币 整体公平:所有人都按相同比例获得 LP 代币
  5. 实际应用中的考虑 首次添加者通常有动机: 可能是项目方或早期支持者 为了建立交易对而愿意承担这个成本 最小流动性很小: MINIMUM_LIQUIDITY = 10³ 相对于实际流动性很小 影响微乎其微 这是 AMM 设计的必要机制: 确保池子永远有流动性 防止数学计算错误 总结 你的观察是对的,首次添加者确实会”损失”一些 LP 代币,但这是: 必要的技术成本:建立池子的基础 影响很小:MINIMUM_LIQUIDITY 通常很小 整体公平:后续所有人都按相同比例获得 LP 代币 这种设计确保了 AMM 的数学正确性和长期稳定性。

问题与思考

总结