«Web3.py: 'buildTransaction' не работает для функции swapExactETHForTokens Uniswap V2»Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 «Web3.py: 'buildTransaction' не работает для функции swapExactETHForTokens Uniswap V2»

Сообщение Anonymous »

Я новичок в DeFi и пишу функцию для использования Uniswap V2 для инициации транзакции, но у меня возникают ошибки. Я получаю следующую ошибку: объект swapExactETHForTokens(uint256,address[],address,uint256) не имеет атрибута buildTransaction. Я знаю, что swapExactETHForTokens поддерживает buildTransaction, поэтому я предполагаю, что, возможно, это проблема с моим ABI? Любая помощь очень ценится. Я прикрепил функцию ниже:

Код: Выделить всё

from web3 import Web3
import json
from dotenv import load_dotenv
import os
import time
from datetime import datetime, timedelta, timezone

# -----------------------FUNCTIONS--------------------

def swap_tokens_v2(token_in, token_out, amount_in, amount_out_min, to, deadline):
uniswap_v2_router_address = "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D"  # Uniswap V2 Router
# Load the ABI from the file
with open('abi.json', 'r') as abi_file:
uniswap_v2_abi = json.load(abi_file) #The ABI file was taken from the etherscan V2 contract under contract ABI: https://etherscan.io/address/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D#code

# Create contract instance
uniswap_v2_router = web3.eth.contract(address=uniswap_v2_router_address, abi=uniswap_v2_abi)

# Calculate deadline (current time + 5 minutes)
deadline = int(time.time()) + 300  # 5 minutes from now

# Build the transaction
transaction = uniswap_v2_router.functions.swapExactETHForTokens(
amount_out_min,
path,
wallet_address,
deadline
).buildTransaction({
'from': wallet_address,
'value': amount_in_wei,
'gas': max_gas_price,
'gasPrice': gas_price_in_wei,
'nonce': web3.eth.getTransactionCount(wallet_address),
})

# Sign and send the transaction
signed_tx = web3.eth.account.sign_transaction(transaction, private_key)
tx_hash = web3.eth.send_raw_transaction(signed_tx.rawTransaction)

print(f"Swap initiated, transaction hash: {tx_hash.hex()}")
Я пытался заменить buildTransaction на Transact, но не смог этого сделать, поскольку использую Infura, а у Infura нет доступа к закрытым ключам.

Подробнее здесь: https://stackoverflow.com/questions/793 ... rtokens-fu
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»