Estoy ejecutando un nodo de bitcoin en mi máquina, totalmente sincronizado con los comandos RPC habilitados, el servidor rpc en vivo y txindex=1.
En la línea de comandos, puedo ejecutar la siguiente llamada RPC y obtener la información sobre la transacción que necesito. Estoy usando la cli porque necesito procesar 2,5 millones de transacciones.
./bitcoin-cli decoderawtransaction $(./bitcoin-cli getrawtransaction b601fc820d66b6516f89557fba9b40943df962de96b914547dec72b0f047c2f3)
Lo que devuelve una salida JSON de la transacción.
Sin embargo, cuando se ejecuta con la biblioteca python-bitcoinlib, parece dar el siguiente mensaje de error
import bitcoin, bitcoin.rpc bitcoin.SelectParams("mainnet") rpc = bitcoin.rpc.Proxy() rpc.getrawtransaction("b601fc820d66b6516f89557fba9b40943df962de96b914547dec72b0f047c2f3")
InvalidParameterError: {u'message': u'parameter 1 debe tener una longitud de 64 (no 128)', u'code': -8}
¿Qué estoy haciendo mal, no es b601 ... la identificación de la transacción?
Editar: según el comentario, lo arreglé reemplazándolo rpc=bitcoin.rpc.Proxy()
con rpc=bitcoin.rpc.RawProxy()
. Pero igual me gustaria saber por que falla el anterior.
getrawtransaction
requiere el formato little endian del trxid, como:
import bitcoin.rpc
from bitcoin.core import lx
p = bitcoin.rpc.Proxy(service_url='http://usr:pa@ip:port')
trxid = lx('7e195aa3de827814f172c362fcf838d92ba10e3f9fdd9c3ecaf79522b311b22d')
rawtrx = p.getrawtransaction(trxid)
print(rawtrx)
Comentarios del Sr. Peter Todd al respecto:
https://github.com/petertodd/python-bitcoinlib/blob/master/examples/spend-p2pkh-txout.py#L41
Oona
rpc=bitcoin.rpc.Proxy()
conrpc=bitcoin.rpc.RawProxy()
. Pero igual me gustaria saber porque falla el anteriorrny