Перейти к содержанию

swapExactTokensForTokens создает кривую транзакцию


Шуравин Александр

Рекомендуемые сообщения

Коллеги, подскажите, пожалуйста, почему при автоматическом формировании транзакции вот таким кодом:

amountIn=w3.toWei(0.005, 'ether')

print("Создали фабрику и роутер")

tokenInChs = w3.toChecksumAddress(tokenWBNB)
tokenOutChs = w3.toChecksumAddress(tokenOut)
try:
    amounts = router.functions.getAmountsOut(amountIn, [tokenInChs, tokenOutChs]).call()
except Exception as ex:
    print(datetime.datetime.today(), "Amount getting error: ", ex)
    exit(-123)
amountOutMin = amounts[0] / amounts[1]
print("amountOutMin=",amountOutMin)

print(w3.eth.get_accounts())

time_tuple = datetime.datetime.today().timetuple()
timestamp = time.mktime(time_tuple)
unixTime=int(float(repr(timestamp)))+600

print("Сейчас буем вызывать swapExactTokensForTokens")
tx1 = router.functions.swapExactTokensForTokens(
    amountIn,
    w3.toWei(amountOutMin, 'ether'),
    [tokenInChs, tokenOutChs],
    myAccount,
    unixTime)

print(amountIn,w3.toWei(amountOutMin, 'ether'), [tokenInChs, tokenOutChs],myAccount,unixTime)

tx=tx1.buildTransaction({
        'gas': 100000, #81000,
        'gasPrice': w3.toWei('10', 'gwei'),
        'nonce':  w3.eth.get_transaction_count(myAccount),
    })

print("Результат работы роутера ",tx)

signed = w3.eth.account.sign_transaction(tx, key)
print("Сырая транзакция ",signed.rawTransaction)

# When you run send_raw_transaction, you get back the hash of the transaction:
print("Результат подписания транзакции ",w3.eth.send_raw_transaction(signed.rawTransaction))

 

Транзакция отвергается вот с такой ошибкой:

 

Безымянный.png

Ссылка на комментарий
Поделиться на другие сайты

у вас апрув задан? сколько можно перводить на роутер ваших монет?, поидее он пишет ошибку исполнения TransferFrom где он говорит что роутер неможет забрать с вашего кошелька.... 

Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, lamat777 сказал:

у вас апрув задан?

 

Скажите пожалуйста, а чем задать аппрув? Пробую делать так:

 

def approve(web3, token, spender_address, wallet_address, private_key):
    spender = spender_address
    max_amount = web3.toWei(2 ** 64 - 1, 'ether')
    nonce = web3.eth.getTransactionCount(wallet_address)

    tx = token.functions.approve(spender, max_amount).buildTransaction({
        'from': wallet_address,
        'nonce': nonce
    })

    signed_tx = web3.eth.account.signTransaction(tx, private_key)
    tx_hash = web3.eth.sendRawTransaction(signed_tx.rawTransaction)

    return web3.toHex(tx_hash)

 

В качестве token передаю роутер, в ответ сообщение:

 

Цитата

Traceback (most recent call last):
  File "D:/PythonProjects/Web3Demo/BuyToken.py", line 68, in <module>
    print(BotLib.approve(w3, router, tokenOutChs, myAccount, key))
  File "D:\PythonProjects\Web3Demo\BotLib.py", line 6, in approve
    tx = token.functions.approve(spender, max_amount).buildTransaction({
  File "C:\Users\Shuravin\Anaconda3\envs\Web3Demo\lib\site-packages\web3\contract.py", line 196, in __getattr__
    "Are you sure you provided the correct contract abi?"
web3.exceptions.ABIFunctionNotFound: ("The function 'approve' was not found in this contract's abi. ", 'Are you sure you provided the correct contract abi?')

 

Ссылка на комментарий
Поделиться на другие сайты

В 26.01.2022 в 07:46, Шуравин Александр сказал:

 

Скажите пожалуйста, а чем задать аппрув? Пробую делать так:

 

def approve(web3, token, spender_address, wallet_address, private_key):
    spender = spender_address
    max_amount = web3.toWei(2 ** 64 - 1, 'ether')
    nonce = web3.eth.getTransactionCount(wallet_address)

    tx = token.functions.approve(spender, max_amount).buildTransaction({
        'from': wallet_address,
        'nonce': nonce
    })

    signed_tx = web3.eth.account.signTransaction(tx, private_key)
    tx_hash = web3.eth.sendRawTransaction(signed_tx.rawTransaction)

    return web3.toHex(tx_hash)

 

В качестве token передаю роутер, в ответ сообщение:

 

 

вам нужно зайти на смартконтракт pairpancake и выполнить allowance между вашим и адресом смарта, типа ваш адрес разрешил перевод стольки средств.... transferFrom изучите, потому что перевод средств выполняется смартом с вашего кошелька

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Similar Topics

    • Бывший комиссар CFTC Брайан Квинтенц: «SEC создает путаницу в законодательстве»

      Бывший комиссар Комиссии по торговле товарными фьючерсами США (CFTC) Брайан Квинтенц раскритиковал позицию SEC по отношению к эфиру, заявив, что ведомство создает путаницу в законодательстве. Брайан Квинтенц (Brian Quintenz) назвал подход Комиссии по ценным бумагам и биржам США (SEC) к эфиру незаконным. Он пояснил, что ранее регулятор одобрил фьючерсные ETF на эфир, тем самым неявно признав, что эфир не является ценной бумагой. Поэтому ведомство не может распространять свои полномочия на эт

      в Новости криптовалют

    • Антон Горелкин: «Отсутствие регулирования криптовалют создает Центробанку душевный комфорт»

      Заместитель председателя комитета Государственной думы по информационной политике, информационным технологиям и связи Антон Горелкин раскритиковал слабую позицию Банка России в отношении регулирования криптовалют. Криптовалюты сейчас не являются «темой мейнстрима», вопрос регулирования не поднимается на уровне Минфина или Минцифры, его поднимают отдельные депутаты, что делает ситуацию вялотекущей, негодует народный избранник:   «Что сегодня происходит: без регулирования криптовалют

      в Новости криптовалют

    • Финансовый регулятор Тайваня создает отдел по работе с цифровыми активами

      Законодательное собрание Тайваня приняло поправки в законодательство, согласно которым Комиссия по финансовым услугам Тайваня (FSC) сможет сформировать новый отдел для работы с цифровыми активами. Отдел будет создан в дополнение к существующим четырем подразделениям, осуществляющим надзор за страхованием, ценными бумагами и фьючерсами, банковским бизнесом и аудиторскими компаниями.   Ведомство уже объявило, что измененная нормативно-правовая база подразумевает новые правила для крипт

      в Новости криптовалют

    • МВФ создает международную цифровую валюту для трансграничных расчетов

      Денежно-кредитное управление цифровой валюты (DCMA) Междунродного валютного фонда (МВФ) объявило, что собирается запустить универсальную денежную единицу Unicion (UMU), которая будет юридически законным платежным средством для трансграничных расчетов. Для соблюдения банковских правил и защиты финансовой целостности международной банковской системы, UMU признается всеми участниками расчетов в качестве денежного товара, который выпускается и функционирует в формате цифровой валюты международн

      в Новости криптовалют

    • Китай создает в Пекине исследовательский центр блокчейна

      Министерстве науки и технологий Китая одобрило создание центра блокчейн-технологий в столице стрнаы. В задачи центра будет входить исследование практик применения блокчейна в интересах промышленности и экономики в целом. За последние несколько лет Китай стал оказывать большую поддержку развитию блокчейна, и, одновременно, усиливать репрессии в отношении держателей криптовалют, которые правительство рассматривает как угрозу финансовой стабильности. С 2021 года в КНР полностью запрещена торго

      в Новости криптовалют

×
×
  • Создать...