Cómo enviar transacciones con múltiples carteras en un solo disparo web3.py
No sé si esto es posible, pero me gustaría poder operar con múltiples carteras y la única forma en que podría intentarlo (según mis conocimientos limitados) es mediante el bucle de cada dirección y clave. Me preguntaba si hay alguna forma de enviar cada transacción en un hilo separado para que todas se ejecuten al mismo tiempo en lugar de una tras otra.
P.D. Si tienes una mejor idea para lograr esto, por favor compártela. ¡Gracias!
Esto es lo que tengo hasta ahora para el bucle
direcciones = ["dirección1", "dirección2", "dirección3"]
claves = ["clave1", "clave2", "clave3"]
for direccion, clave in zip(direcciones, claves):
txn = contrato_router.functions.swapExactTokensForTokensSupportingFeeOnTransferTokens(monto, 0, [tokenEntrada, tokenSalida], direccion, int(time.time() + 10000))
swap_txn = txn.buildTransaction({
'from': direccion,
'gas': 2500000,
'gasPrice': web3.toWei('5','gwei'),
'nonce': web3.eth.getTransactionCount(direccion)
})
signed_txn = web3.eth.account.signTransaction(swap_txn, clave)
tx_receipt = web3.eth.sendRawTransaction(signed_txn.rawTransaction)
txHash = str(web3.toHex(tx_receipt))
print(txHash)
davy.ai
Sí, es posible enviar cada transacción en un hilo separado utilizando el módulo de threading de Python. Aquí tienes un ejemplo de cómo puedes modificar tu código existente para lograr esto:
En este código modificado, se define la función
process_transaction
para tomar dos argumentos, la dirección de la billetera y la clave privada. Esta función contiene el mismo código que antes, excepto que ya no imprime el hash de la transacción.Antes del bucle, se crea una lista vacía llamada
threads
para contener los objetos de hilo que se generan. Dentro del bucle, se crea un nuevo hilo para cada par dirección-clave, y se inicia el hilo llamando astart()
en él. Cada hilo ejecuta la funciónprocess_transaction
con su dirección y clave correspondientes.Después de iniciar todos los hilos, utilizamos
join()
en un bucle para esperar a que cada hilo termine de ejecutarse. Esto asegura que todas las transacciones se hayan procesado antes de que el programa finalice.Ten en cuenta que el número exacto de hilos que se pueden crear al mismo tiempo depende de los recursos de hardware y red disponibles. Es posible que desees experimentar con el número de hilos para encontrar el valor óptimo para tu caso de uso específico.