我正在尝试调用路由器合约的 swapExactTokensForTokens,我需要将 USDT 交换为 tokenB。这是交易的代码:
router = '0x0000000'
abi = '[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},.... {"stateMutability":"payable","type":"receive"}]'
router_contract = w3.eth.contract(router, abi=abi)
USDTAdress = "0x55d398326f99059fF775485246999027B3197955"
tokenB = '0x000...'
path = [USDTAdress , tokenB]
balanceUSD = 100
miniumGet = 1000
nonce = self.web3.eth.get_transaction_count(myWalletAddress)
pancakeswap2_txn = self.router.functions.swapExactTokensForTokens(
balanceUSD,
miniumGet,
[USDTAdress , tokenB],
myWalletAddress,
(time.time() + 30)
).buildTransaction({
'from': myWalletAddress,
'gas': 250000,
'gasPrice': self.web3.toWei("5", 'gwei'),
'nonce': nonce,
})
signed_txn = self.web3.eth.account.sign_transaction(pancakeswap2_txn, private_key=mySecretKey)
tx_token = self.web3.eth.send_raw_transaction(signed_txn.rawTransaction)
但我总是收到错误“失败并出现错误'PancakeRouter:INSUFFICIENT_B_AMOUNT'”。在使用 BNB 时,此代码可以与 swapExactETHForTokens 一起使用。
谢谢你的建议