
solidity
文章平均质量分 95
记录一些思考的智能合约
使坏者-Mallory
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
`removeLiquidity` vs `removeLiquidityWithPermit` 深度对比
Uniswap V2 中 removeLiquidity 和 removeLiquidityWithPermit 的核心区别在于授权机制和用户体验。前者需要预授权(2笔交易),后者通过签名一次完成(1笔交易)。removeLiquidityWithPermit 采用 EIP-712 签名授权,虽然增加了签名验证成本(约28,000 Gas),但减少了整体 Gas 消耗(约18,000 Gas)。高频操作适合传统方式配合无限授权,而单次操作推荐使用带签名的版本。签名方式通过 nonce 和 deadline原创 2025-07-18 13:30:46 · 808 阅读 · 0 评论 -
Flash Swap 与正常 Swap 的区别
特性正常 SwapFlash Swap资金要求需要预先持有代币无需预先持有,依赖原子性还款交易流程直接交换代币借款 → 操作 → 还款风险低(仅市场风险)高(操作失败则交易回滚)收益固定(代币兑换)潜在高收益(无本金套利)智能合约逻辑简单调用swap需要实现回调函数用户调用入口Router 合约的 Swap 函数(如直接调用 Pair 合约的swap函数,并传入非空data核心逻辑Router 计算路径 → 调用多个 Pair 合约的swaptestFlashSwap调用Pair 合约的。原创 2025-07-18 13:29:53 · 717 阅读 · 0 评论 -
Uniswap V2 移除流动性代码的解释(三)
Uniswap V2移除流动性的流程如下:用户需持有LP Token并授权合约转移,调用Router的removeLiquidity函数后,LP Token转移至Pair合约。Pair合约的burn函数计算应返还的代币比例(包含累积手续费),销毁LP Token并向用户转账两种代币。整个过程通过滑点控制(amountAMin/BMin)保障用户权益,并更新储备量等状态。V2的手续费实时计入储备池,用户退出时按当前份额比例(含历史累积手续费)获得对应代币。原创 2025-07-15 18:41:58 · 862 阅读 · 0 评论 -
computeProfitMaximizingTrade的迷思和思考
本文探讨了UniswapV2官方库中computeProfitMaximizingTrade函数的正确逻辑,指出常见认知误区。文章首先批判了认为套利会使两个池子价格完全一致的错误观点,强调套利者追求的是利润最大化而非价格趋同。通过数学推导,展示了正确的利润计算公式,并详细解释了官方代码的实现原理。原创 2025-07-15 18:40:57 · 493 阅读 · 0 评论 -
Uniswap V2 添加流动性代码的解释(二)
Uniswap V2添加流动性流程主要包括:1)选择交易对并查询是否存在;2)准备两种代币并确保余额充足;3)调用Router合约的addLiquidity函数,该函数会计算最优代币比例(使用恒定乘积公式),将代币转入交易对合约;4)通过mint函数铸造LP Token给流动性提供者。首次添加流动性时直接采用用户输入的代币数量,非首次则根据现有储备量按比例计算最优添加数量。整个过程确保了代币添加比例与当前池中比例一致,维持了x*y=k的恒定乘积关系。原创 2025-07-13 21:56:38 · 1524 阅读 · 0 评论 -
Uniswap V2 核心功能的合约解释和流程解释(一)
Uniswap V2由核心合约(core)和外围合约(periphery)组成。核心合约包括:UniswapV2Factory(创建管理交易对)、UniswapV2Pair(实现流动性池算法)、UniswapV2ERC20(LP Token)。外围合约UniswapV2Router02提供用户友好的接口,UniswapV2Library包含工具方法。 关键功能流程: 添加流动性:用户存入两种代币,获得代表份额的LP Token 移除流动性:销毁LP Token,取回对应比例;代币交换:通过恒定乘积公式x*y原创 2025-07-13 21:53:40 · 644 阅读 · 0 评论