Python - web3

 
Vista:
sin imagen de perfil

web3

Publicado por Yusniel (5 intervenciones) el 26/12/2021 17:45:21
oy un fanático de la automatización de los trabajos diarios y un aprendiz de lo que puedo aprender, estoy empezando queriendo que me sea más fácil cambiar o comprar de una moneda a otra y aquí está mi situación, lo he logrado con un poco de investigación. para lograr el cambio de BNB a cualquier otro token (que sea líquido con BNB) con el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from web3 import Web3
import config
import time
from configparser import ConfigParser
import os
import os.path as path
 
#archivo de configuracion
archivo='config.ini'
 
#leyendo archivo de aconfiguracion
config = ConfigParser()
config.read(archivo)
 
#conectando a la bsc
bsc = "https://bsc-dataseed.binance.org/"
web3 = Web3(Web3.HTTPProvider(bsc))
 
print('Conexion establecida: ',web3.isConnected())
 
#pancakeswap router
panRouterContractAddress = '0x10ED43C718714eb63d5aA57B78B54704E256024E'
 
#pancakeswap router abi
panabi = '[{"inputs":[{"internalType":………:"payable","type":"receive"}]'
 
sender_address =  config.get('CONFIGURACION', 'WALLET_BSC') #wallet
#print(sender_address)
 
#DIRECCION DE CONTRATO DEL TOKEN A COMPRAR
tokenToBuy = web3.toChecksumAddress(input("Enter Token Address: "))
 
spend = web3.toChecksumAddress(config.get('CONFIGURACION', 'MONEDA_PAGO'))  #CONTRATO MONEDA A PAGAR
 
#SETUP contrato PancakeSwap
contract = web3.eth.contract(address=panRouterContractAddress, abi=panabi)
 
 
nonce = web3.eth.get_transaction_count(sender_address)
 
def buy():
    pancakeswap2_txn = contract.functions.swapExactETHForTokens(
    00000000000, # poner 0 o especificar la cantidad minima de tokens a recibir
    [spend,tokenToBuy],
    sender_address,
    (int(time.time()) + 10000)
    ).buildTransaction({
    'from': sender_address,
    'value': web3.toWei(config.get('CONFIGURACION', 'SPEND'),'ether'),#tamaño de compra en la moneda de pago
    'gas': 250000,
    'gasPrice': web3.toWei(config.get('CONFIGURACION', 'GAS'),'gwei'), #nivel del gas
    'nonce': nonce,
    })
 
    signed_txn = web3.eth.account.sign_transaction(pancakeswap2_txn, private_key=config.get('CONFIGURACION', 'PRIVATE_KEY'))
    tx_token = web3.eth.send_raw_transaction(signed_txn.rawTransaction)
    print('Transaccion completada!!')
    print('Hash de transaccion: ', web3.toHex(tx_token))
 
buy()


1

He estado tratando de que funcione con otro token en el que si es líquido, usando la función:

1
2
3
4
5
6
7
function swapExactTokensForTokens(
  uint amountIn,
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external returns (uint[] memory amounts);

He intentado modificar solo un poco la función de esta manera pero me sale el siguiente error, repito, no sé mucho de programación, pero creo que entiendo que los argumentos están mal posicionados, ¿puede ser?


2

A lo que pruebo de esta otra forma un poco más rústica:


3

Si es así, ¿cómo construiría la transacción?

Siempre encuentro un error, perdón pregunté así, llevo una semana, quizás más probando diferentes formularios y siempre me da un error, ¿podrías darme un ejemplo de cómo llenar los datos de esa función? Estaría muy agradecido si pudieras guiarme.

Gracias por tomarse el tiempo de leer mi situación y les agradezco de antemano la solución, si pueden ayudarme sepan que sabré agradecerles correctamente.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder