行业知识
Solidity Uniswap V2 Pair中移除流动性
2026-11-10 23:05:09
来源:互联网转载
�� 移除流动性与提供流动性是截然相反的一个动作。从Pool中移除流动性意味着烧销毁LP-Token,以换取pair中相应数量的Token。返回的token数量与提供的流动性是这样计算的:
简而言之,返回的Token数量,与持有的LP-Token数量与LP-Token总供应量成正比。你的LP-Token份额越大,你在burn后从reserve获得的份额就越大。
这就是我们实现burn函数所需要知道的:
当有人向池提供流动性时,他们会得到 LP-token作为回报。当流动性被移除时,这些 LP-token会被兑换成池流动性并被销毁。让用户向合约发送一定数量的 LP-token,在合约中计算出用户可以获取的token后,销毁 LP-token。
function burn(address to) public returns (uint256 amount0, uint256 amount1) { uint256 balance0 = IERC20(token0).balanceOf(address(this)); uint256 balance1 = IERC20(token1).balanceOf(address(this)); uint256 liquidity = balanceOf[address(this)]; uint256 amount0 = (liquidity * balance0) / totalSupply; uint256 amount1 = (liquidity * balance1) / totalSupply; if (amount0
下一篇:c++ list详解