He estado usando la biblioteca bitcoin-python para realizar pagos desde Python. Esto funcionó bastante simple:
>>> import bitcoinrpc
>>> conn = bitcoinrpc.connect_to_local()
>>> conn.sendtoaddress('bitcoin_address_here', 0.5)
El Léame de esa biblioteca ahora dice que ya no se mantiene y se refiere a python-bitcoinlib como sucesor. Así que ahora estoy tratando de entender esa lib, pero parece ser un poco más difícil de lo que solía ser bitcoin-python. Ahora entiendo que puedo conectarme al bitcoind en ejecución usando el siguiente código:
>>> import bitcoin.rpc as rpc
>>> proxy = rpc.Proxy()
>>> proxy.getinfo()
{u'connections': 36, u'errors': u'', u'blocks': 295646, u'paytxfee': 0, u'keypoololdest': 1394108331, u'walletversion': 60000, u'difficulty': Decimal('6119726
089.12814713'), u'testnet': False, u'version': 90100, u'proxy': u'', u'protocolversion': 70002, u'timeoffset': -1, u'balance': 1856000, u'keypoolsize': 101}
Hasta aquí todo bien. El problema ahora es que no tengo idea de cómo puedo hacer un pago simple. Veo que hay una función llamada proxy.sendrawtransaction(self, tx)
, que aparentemente toma una transacción sin procesar como argumento. Sin embargo, no tengo idea de cómo crear una transacción sin procesar, además, esperaría que haya algún tipo send_to_address(address, amount)
disponible, pero no puedo encontrarlo en la biblioteca.
Entonces, ¿alguien sabe cómo puedo enviar una transacción simple a una dirección con python-bitcoinlib ? ¡Todos los consejos son bienvenidos!
Acabo de agregar sendtoaddress a bitcoin.rpc.Proxy:
from bitcoin.core import COIN, b2lx
import bitcoin.wallet
import bitcoin.rpc
try:
# This moved between versions
from bitcoin.base58 import CBitcoinAddress
except:
from bitcoin.wallet import CBitcoinAddress
rpc = bitcoin.rpc.Proxy()
addr = CBitcoinAddress('1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T')
txid = rpc.sendtoaddress(addr, 0.001 * COIN)
print(b2lx(txid))
Tenga en cuenta que es tan simple como bitcoinrpc, pero esa es la compensación por tener tipos adecuados, etc.
El ejemplo de código del 04/2014 no está actualizado con python-bitcoinlib actual. Ligera modificación aquí:
from bitcoin.core import COIN, b2lx
import bitcoin.wallet
import bitcoin.rpc
rpc = bitcoin.rpc.Proxy()
addr = bitcoin.wallet.CBitcoinAddress('1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T')
txid = rpc.sendtoaddress(addr, 0.001 * COIN)
print(b2lx(txid))
Probado en v0.3.0+
CBitcoinAddressError: Version 0 not a recognized Bitcoin Address
. ¿Puedes ayudarme a arreglarlo?
Juan T.
kramer65
sacerdotec
CBitcoinAddress
importa?