You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Uniswap分叉移除流动性后储备金残留代币,如何清空全部储备?

Uniswap分叉项目储备金残币清除解决方案

残币产生原因

Uniswap V2的核心计算逻辑采用整数截断规则,销毁LP时按LP持有比例计算可提取资产时,向下取整会遗留极小额的资产在储备金中;此外首次添加流动性时默认销毁的1000 wei LP锁死在零地址,也会导致对应比例的资产永远无法通过常规移除流动性操作提取。

可行解决方案

  • 方案1:新增残币紧急提取函数(推荐)
    在配对合约或路由合约中新增仅所有者可调用的残币提取接口,添加严格的阈值校验避免被滥用,参考代码如下:
function rescueDust(address token, address recipient) external onlyOwner {
    uint256 currentBalance = IERC20(token).balanceOf(address(this));
    // 校验规则可按需调整:要么总LP供应量为0,要么余额低于1000 wei的残币阈值
    require(IUniswapV2Pair(address(this)).totalSupply() == 0 || currentBalance < 1000, "Cannot withdraw non-dust assets");
    TransferHelper.safeTransfer(token, recipient, currentBalance);
}

注意:该函数必须添加严格的权限控制和余额校验,上线前需完成安全审计,避免被恶意调用抽走正常储备金。

  • 方案2:修改销毁逻辑从根源避免残币
    修改配对合约的burn方法逻辑,当检测到本次销毁后LP总供应量归0时,直接将合约内全部代币余额分配给提取者,而非按比例计算,从根源避免截断产生残币。

  • 方案3:无合约修改的临时解决方案
    如果合约已上线无法修改,可先按照当前储备金比例添加和残币量级匹配的极小额流动性,再一次性销毁所有持有的LP,操作时将滑点阈值调到最低即可,不会产生大额额外损失。

注意:任何涉及核心资金逻辑的修改都需要完成全覆盖的单元测试,避免引入整数溢出、权限泄露等致命安全问题。

内容的提问来源于stack exchange,提问作者Maximilian O

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:45:05