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
相关产品推荐
相关产品推荐

