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

BSC测试网Pancakeswap合约STF回滚问题求助

自动LP手续费智能合约跨链测试问题

我正在测试一款带有自动LP手续费功能的智能合约,该合约每完成5次卖出操作时,会在_transfer函数内调用以下两个私有函数:

function swapTokensForETH(uint256 tokenAmount) private {
    address[] memory path = new address[](2);
    path[0] = address(this);
    path[1] = uniswapV2Router.WETH();
    _approve(address(this), address(uniswapV2Router), tokenAmount);
    uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
        tokenAmount,
        0, 
        path,
        address(this),
        block.timestamp
    );
}

function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
    // approve token transfer to cover all possible scenarios
    _approve(address(this), address(uniswapV2Router), tokenAmount);

    // add the liquidity
    uniswapV2Router.addLiquidityETH{value: ethAmount}(
        address(this),
        tokenAmount,
        0, // slippage is unavoidable
        0, // slippage is unavoidable
        address(0), // send LP token to burn address
        block.timestamp
    );
}

我已在两个测试网部署该合约,结果如下:

  • Goerli测试网运行正常,手续费分配无异常;
  • BSC测试网Pancakeswap上,手续费能正常累积,但无法卖出代币,报错:Unknown error: "Execution reverted with reason: STF.". Try increasing your slippage tolerance.,提高滑点容忍度也无法解决问题。

排查发现

通过调用Router的getPair函数查询交易对时返回0,说明交易对未被Router正确识别:

  • Router地址:0xb7926c0430afb07aa7defde6da862ae0bde767bc
  • 交易对地址:0xe0c59ff1482ba0768188fb82357b7187a74d0aac

查询交易对合约的token0和token1视图函数,确认两个地址分别为BNB和我的ERC20代币,但无法通过Router的getPair函数获取交易对地址。

疑问

我认为这是合约无法正常调用上述两个函数的原因,但为何Goerli测试网能正常运行?主网会出现同样问题吗?

注:流动性添加在V2版本,支持转账手续费。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:14:52