Eine vollständige Bitcoin-Implementierung in Python?

Mir wurde kürzlich bewusst, dass python-bitcoinlib keine vollständige Implementierung von Bitcoin-Knoten ist, sondern eine Reihe von Tools für die Arbeit mit bitcoin-core cpp. Ich würde gerne wissen, ob es einige grundlegende Probleme bei der Implementierung eines vollständigen Bitcoin-Knotens mit Python gibt? Auch wenn es als Code-Golf-Übung versucht werden sollte (der kürzeste Code, um den vollständigen Knoten zum Laufen zu bringen), wie viele Codezeilen wird es in Python ausmachen?

In Bezug auf die Leistung wäre dies eine schlechte Idee, da die dynamische Programmiersprache Python dazu neigt, mehr RAM für Datenstrukturen zu verwenden. Es könnte jedoch eine interessante Übung sein.
@MikkoOhtamaa: Python ist perfekt in der Lage, die Leistungsanforderungen eines Bitcoin-Knotens zu erfüllen. Die bisherigen Antworten weisen auf mehrere Projekte hin, die dies tun.
@GregHewgill: Aber keiner davon kann als vollständiger Ersatz für Bitcoin-Core dienen, oder?
@ user2277550: Ich verstehe nicht, warum nicht. Es gibt keinen Grund, warum Python für diesen Zweck ungeeignet wäre. Es ist sicherlich mehr als fähig genug. Es klingt, als wollten Sie fragen, ob jemand anderes bereits genau das in Python geschrieben hat, was Sie im Sinn haben. Vielleicht, vielleicht nicht. Aber es ist möglich, dies zu tun.
@GregHewgill: Links oder ist nicht passiert :)
@MikkoOhtamaa: Die vorhandenen Antworten haben bereits mehrere Links. Ich bin mir nicht sicher, was Sie mehr verlangen.
@GregHewgill: Ok danke - sehe jetzt die Antwort.

Antworten (4)

AFAIK, es gibt keine grundlegenden Probleme bei der Implementierung eines vollständigen Bitcoin-Knotens mit Python, es gibt sogar einige coole Projekte von Bitcoin-Vollknoten in Python

Das hängt stark von Ihrer Definition von complete ab . Es gibt eine Reihe von Implementierungen, die Teile der Bitcoin-Node-Funktionalität implementieren. Zum Beispiel hat cdecker/pycoin eine solide Netzwerkimplementierung, enthält aber keinen Wallet-Verwaltungscode und keine Validierungslogik. richardkiss/pycoin hingegen hat etwas von der Wallet-Logik, aber es fehlt die Vernetzung. Andere Bibliotheken umfassen:

Aber soweit ich weiß, gibt es keinen eigenständigen Client, der eine Brieftasche sowie den Netzwerkcode enthält.

Schauen Sie sich Tinychain an .

Es ist nicht vollständig und wird niemals mit dem echten Bitcoin-Netzwerk zusammenarbeiten, aber es ist ein „Code-Golf“-Ansatz zur Umsetzung aller Bitcoin-Kernideen (Validierung, POW-Mining, Peer-to-Peer-Architektur, Datenstrukturen wie TxIn /TxOut/Block usw.) in Python.

Es gibt ein Projekt, das eine vollständige Bitcoin-Implementierung in Python ist. Der Quellcode unter https://github.com/csunny/py-bitcoin