Путь контрактов к токенам обмена Web3py
Пытаюсь поменять местами токены с web3py с помощью функции swapExactETHForTokensSupportingFeeOnTransferTokens , с некоторыми токенами работает отлично, с другими получаю ошибку " execution reverted: PancakeRouter: INSUFFICIENT_OUTPUT_AMOUNT " Сообщаю параметр " amountOutMin (uint256) " для управления проскальзывание . то, что я видел по-разному в токенах, которые работают и что не работают, — это путь контрактов, используемых для свопа.
На веб-сайте poocoin, когда я совершаю сделку, а путь контракта « WBNB > TOKEN », то есть от BNB напрямую к TOKEN, он также работает с использованием функции « swapExactETHForTokensSupportingFeeOnTransferTokens », когда есть какой-то другой контракт посередине, например « WBNB ». > WUSD > TOKEN » не работает, и эти пути меняются на один и тот же токен, см. изображения ниже:
Как poocoin определяет, какие контракты использовать для обмена BNB на TOKEN? как определить контакты, которые я должен использовать в параметре « путь (адрес []) »
swapExactETHForTokensSupportingFeeOnTransferTokens(
amountOutMin,
[WBNB, ????, ???? TOKEN_BUY], # path (address[])
sender_address,
(int(time.time()) + 10000)
Благодарность!
1 ответ
Я ищу то же самое, на данный момент ответ находится в этом https://cryptomarketpool.com/use-web3-py-in-python-to-call-uniswap/
Более точно: вы локально получаете все перечисленные пары
...
allPairsLength = factory_contract.functions.allPairsLength().call()
...
затем вы найдете свой маршрут вручную. Собрав локально все торговые пары, вы можете найти, как именно добраться из X в Y, потому что у вас есть все пары X (X/X1, X/X2 ... X/Xn) и все пары Y (Y/Y1, Y/X3, ... Y/Yn).
Вы можете получить одну пару по ее идентификатору
for i in range(1, PUTTHECOUNTOFTRADINGPAIRSHERE):
allPairs_address = factory_contract.functions.allPairs(i).call()
contract = web3.eth.contract(address=allPairs_address, abi=pairs_abi)
symbol = contract.functions.name().call()
supply = contract.functions.totalSupply().call()
print(allPairs_address, supply)
Например