Wie mache ich eine einfache Zahlung mit der python-bitcoinlib?

Ich habe die Bitcoin-Python-Bibliothek verwendet, um Zahlungen aus Python heraus zu tätigen. Das hat ziemlich einfach funktioniert:

>>> import bitcoinrpc
>>> conn = bitcoinrpc.connect_to_local()
>>> conn.sendtoaddress('bitcoin_address_here', 0.5)

Die Readme dieser Bibliothek sagt nun, dass sie nicht mehr gepflegt wird und verweist auf die python-bitcoinlib als Nachfolger. Also versuche ich jetzt, mich um diese Bibliothek zu kümmern, aber es scheint ein bisschen schwieriger zu sein, als es Bitcoin-Python früher war. Ich verstehe jetzt, dass ich mit dem folgenden Code eine Verbindung zum laufenden Bitcoin herstellen kann:

>>> 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}

So weit, ist es gut. Das Problem ist jetzt, dass ich keine Ahnung habe, wie ich eine einfache Zahlung durchführen kann. Ich sehe, dass es eine Funktion namens gibt proxy.sendrawtransaction(self, tx), die anscheinend eine Rohtransaktion als Argument verwendet. Ich habe jedoch keine Ahnung, wie man eine Rohtransaktion erstellt, und ich würde erwarten, dass eine Art send_to_address(address, amount)verfügbar ist, aber ich kann sie in der Bibliothek nicht finden.

Weiß jemand, wie ich mit der python-bitcoinlib eine einfache Transaktion an eine Adresse senden kann ? Alle Tipps sind willkommen!

Antworten (2)

Ich habe gerade sendtoaddress zu bitcoin.rpc.Proxy hinzugefügt:

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))

Beachten Sie, dass es so einfach wie bitcoinrpc ist, aber das ist der Kompromiss für die richtigen Typen und so weiter.

Könnten Sie Ihre Antwort erweitern, um sich auf die Frage zu beziehen?
Danke für deine gute Arbeit und Antwort! Ich habe eine andere Frage. Vielleicht hast du auch darauf eine Antwort?: bitcoin.stackexchange.com/questions/24802/…
woher wird CBitcoinAddressimportiert?

Codebeispiel von 04/2014 ist mit aktueller python-bitcoinlib veraltet. Hier leichte Modifikation:

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))

Getestet auf v0.3.0+

ab Version 0.5.1 CBitcoinAddressError: Version 0 not a recognized Bitcoin Address. Können Sie mir helfen, es zu beheben?