[PYTHON] Ich habe eine einfache Brieftasche aus Bitcoin mit Pycoin gemacht

Überblick

Es ist eine GUI-Anwendung, die die Grundfunktionen der Bitcoin-Brieftasche implementiert. Mit dieser App ist es auch möglich, Bitmünzen umzutauschen. (Wir können den Betrieb nicht garantieren, daher empfehlen wir ihn nicht. Wenn Sie dies tun, ist es eine kleine Menge ...)

Code

https://github.com/momosuke4989/pycoin-demo

Grund für die Herstellung

In Mastering Bitcoin, einer Bitcoin-Bibel, wurde eine Bibliothek namens pycoin eingeführt. Ich habe sie nach dem Studium von Python und Bitcoin erstellt. Auf der Open Source Konferenz 2016 in Tokio / Herbst demonstrierte ich mit einem Raspberry Pi mit einem 3,2-Zoll-LCD. Aus diesem Grund ist die Spezifikation der Fenstergröße merkwürdig klein.

Wie benutzt man

Siehe LESEN SIE MICH key-generate.py dient zur Generierung von Bitcoin-Adressen und create-tx.py zur Generierung von Transaktionen.

Kommentar

Was ist eine Bitcoin-Brieftasche überhaupt?

Eine App für allgemeine Benutzer zum Verwalten von Bitcoin wird als Brieftasche bezeichnet. Die Hauptfunktionen sind das Speichern und Senden / Empfangen von Bitmünzen, die aus den folgenden Elementen bestehen.

Privater Schlüssel und Adresse

In der Welt des Bitcoin werden Benutzer durch die Einheit des privaten Schlüssels und der Bitcoin-Adresse (im Folgenden als Adresse bezeichnet) identifiziert. Wenn Sie es durch die Welt der Banken ersetzen, ist der private Schlüssel das Passwort und die Adresse die Kontonummer. Kryptografie mit öffentlichem Schlüssel (genauer gesagt Kryptografie mit elliptischen Kurven) und Hash-Funktionen werden zum Generieren von Adressen verwendet. Interessanterweise steuert jedoch keine Organisation oder Stelle diese Aufgabe. Der Wertebereich, den der private Schlüssel annehmen kann, ist groß genug (10 ^ 77), sodass es praktisch sicher ist, die Möglichkeit von Adresskonflikten zu ignorieren. Aus diesem Grund ist es in der Welt von Bitcoin üblich, mehrere Adressen von einer Person zu haben, und es wird gesagt, dass es aus Sicherheitsgründen wünschenswert ist, für jede Transaktion eine Adresse zu generieren, jedoch jedes Mal den privaten Schlüssel und die Adresse. Es ist viel Arbeit zu generieren und es wird auch kompliziert zu verwalten.

Hierarchical Deterministic Wallet Ein Mechanismus namens Hierarchical Deterministic Wallet, allgemein bekannt als HD Wallet, wurde vorgeschlagen, um dieses Problem zu lösen. Die HD-Brieftasche ist sehr praktisch, da Sie aus einem Hauptschlüssel mehrere private Schlüssel / Adressen hierarchisch generieren können. Wenn Sie über den Hauptschlüssel verfügen, können Sie auch den Saldo aller Adressen in der Hierarchie ermitteln.

Obwohl die Einführung ziemlich lang geworden ist, ist key-generate.py eine Anwendung, die basierend auf diesem Mechanismus einen privaten Schlüssel und eine Adresse generiert.

Transaktionen und elektronische Signaturen

Um Bitcoin an jemanden zu senden, müssen die Übertragungsinformationen in Form einer Transaktion an das Bitcoin-Netzwerk gesendet und genehmigt werden. In der Welt von Bitcoin sind jedoch alle Informationen darüber, welche Adresse wie viel hat und wie viel für die Öffentlichkeit zugänglich ist, so dass es einfach ist, eine Transaktion zu erstellen, z. B. Geld von der Adresse einer anderen Person in Rot an sich selbst zu senden. Es wäre unwiderstehlich, wenn so etwas genehmigt würde. Um eine solche Situation zu verhindern, ist es nur erforderlich, einen legitimen Eigentümer zu haben, um Bitcoin zu verschieben. Hier ist jedoch eine elektronische Signatur mit einem privaten Schlüssel. Bitcoin nutzt die Eigenschaften der Verschlüsselung mit öffentlichen Schlüsseln und verwendet elektronische Signaturen, um den Besitz nachzuweisen. Der private Schlüssel wird als WIF-Format (Wallet Import Format) behandelt. Es gibt auch ein komprimiertes WIF-Format, Details werden jedoch weggelassen. (Übrigens verwendet die obige App das komprimierte WIF-Format)

create-tx.py ist eine App, die eine signierte Transaktion erstellt und an das Netzwerk sendet.

Verschiedene Gefühle

Als ich tatsächlich etwas gemacht habe, das so funktioniert, habe ich sinnlich gelernt, dass der private Schlüssel und die Adresse separat verwaltet werden können. Da die App, die ich dieses Mal gemacht habe, nicht auf diese Weise veröffentlicht werden sollte, denke ich, dass es verschiedene Punkte gibt, wie zum Beispiel die nicht eindeutige Angabe der Lizenz. (Kann ich es später hinzufügen oder ändern?) Wenn Sie Ratschläge haben, wie zum Beispiel etwas Seltsames hier oder ähnliches, kommentieren Sie bitte.

Referenz

Beherrschung des nationalen Übersetzungs-PDF-Speichers von Bitcoin https://www.bitcoinbook.info/translations-of-mastering-bitcoin/

Pycoin Github Repository https://github.com/richardkiss/pycoin

Recommended Posts

Ich habe eine einfache Brieftasche aus Bitcoin mit Pycoin gemacht
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe mit Python einen Daemon erstellt
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
Ich habe eine einfache Buch-App mit Python + Flask ~ Introduction ~ erstellt
Einfacher RSS-Reader mit Django
Ich habe mit Python einen Zeichenzähler erstellt
Ich habe mit Python eine Hex-Map erstellt
Ich habe ein Lebensspiel mit Numpy gemacht
Ich habe einen Hanko-Generator mit GAN gemacht
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe eine WEB-Bewerbung bei Django gemacht
Ich habe mit Python einen Neuronensimulator erstellt
Ich habe eine einfache Schaltung mit Python gemacht (AND, OR, NOR, etc.)
[Python] Ich habe einen Bildbetrachter mit einer einfachen Sortierfunktion erstellt.
Ich habe einen Stempelersatzbot mit Linie gemacht
Ich habe mit Python eine Bot-Wettervorhersage gemacht.
〇✕ Ich habe ein Spiel gemacht
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Ich habe mit Numpy eine Grafik mit Zufallszahlen erstellt
Ich habe einen einfachen RSS-Reader ~ C Edition ~ gemacht
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Mattermost Bot mit Python gemacht (+ Flask)
[AWS] Ich habe BOT mit LINE WORKS daran erinnert
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Ich habe mit LINE Bot ein Haushaltsbuch für Bot erstellt
Ich habe mit Play with Docker einen gebrauchsfertigen Syslog-Server erstellt
Ich habe mit Tkinter ein Fenster für die Protokollausgabe erstellt
Ich habe mit Python eine App für die Benachrichtigung über Netznachrichten erstellt
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Ich habe einen einfachen RPA für die Anmeldung mit Selen ausprobiert
Ich habe mit Sense HAT ein gefallenes Monospiel gemacht
Ich habe einen Blackjack mit Python gemacht!
Ich habe einen Python-Text gemacht
Ich habe einen Zwietrachtbot gemacht
Ich habe COVID19_simulator mit JupyterLab erstellt
Ich habe Word2Vec mit Pytorch gemacht
Ich habe mit Python einen Blackjack gemacht.
Ich habe Wordcloud mit Python gemacht.
Eine Geschichte, die stolperte, als ich mit Transformer einen Chat-Chat-Bot erstellte
Ein einfacher interaktiver Musikplayer mit Chuck und OpenPose
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich habe einen Ressourcenmonitor für Raspberry Pi mit einer Tabelle erstellt
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht
Ich habe einen harten Pomodoro-Timer entwickelt, der mit CUI funktioniert
Ich habe zum ersten Mal eine Überwachungskamera mit Raspberry PI gemacht.
Ich habe ein Plug-In erstellt, das "Daruma-san Fell" mit Minecraft ausführen kann
[AWS] Ich habe BOT mit LINE WORKS (Implementierung) in Erinnerung gerufen.
Ich habe eine C ++ - Lernseite erstellt
Ich habe einen Line-Bot mit Python gemacht!
Ich habe ein CUI-basiertes Übersetzungsskript erstellt (2)
Ich habe einen Wikipedia Gacha Bot gemacht