Der Beitrag Eine Schritt-für-Schritt-Anleitung zum Erstellen einer Blockchain-Anwendung mit Python erschien zuerst auf Coinpedia Fintech News

Einführung

Blockchain

Blockchain ist der Pionier im Finanz- und Programmierbereich. Es handelt sich um eine neue, aufstrebende Technologie, die aufgrund ihrer Hauptmerkmale wie dem dezentralen Mechanismus, bei dem es keine zentrale Autorität gibt, die die Transaktionen und die Datenbank verwaltet, weltweit Aufmerksamkeit erregt. In Bezug auf Transparenz und Sicherheit hat sie viel zu bieten.

Man könnte sich fragen, was Blockchain genau ist.

Einfach ausgedrückt bezieht sich Blockchain auf Blöcke oder Dateien, die durch Verschlüsselung miteinander verknüpft sind. Dies ist wie eine digitale Kette, die hinten und hinten durch Kryptographieregeln verbunden ist. Dadurch zirkulieren und verteilen sich die Transaktionen in der Community, wobei die Teilnehmerknoten kryptografische Mechanismen verwenden, um die Integrität zu vereinbaren und aufrechtzuerhalten.

Die Blockchain-Technologie ist robust genug, um jeder digitalen Bedrohung und jedem Ausfall standzuhalten, und eignet sich daher besser für den Umgang mit Cybersicherheitsrisiken.

Python in Blockchain

Python ist die dynamischste und am besten angepasste Sprache. Nennen Sie jeden Bereich der Softwareentwicklung und Python ist aufgrund seiner Funktionalitäten immer die erste Wahl. Es hat eine saubere Syntax, bei der Sie im Vergleich zu jeder anderen Sprache weniger Zeilen benötigen, um eine Funktion auszuführen. Die einfache Syntax von Python ist hilfreich beim Umgang mit Fehlern und Bugs.

Python verfügt über ein reichhaltiges Ökosystem und multifunktionale Bibliotheken, die Ihren Entwicklungsvorgang beschleunigen. Beispielsweise bieten Bibliotheken wie PyCryptodome und Hashlib kryptografische und rechnerische Funktionen, und Frameworks wie Flask und Django sind für APIs und Webanwendungsschnittstellen nützlich. Bibliotheken wie Brownie und Vyper werden hingegen für die Bereitstellung von Smart Contracts verwendet.

Python kann verschiedene Sprachen wie C++, Java und Javascript integrieren und unterstützt auch die Integration mehrerer APIs. Die API-Integration ist für die Zusammenarbeit mit anderer Software, Plattformen und Frameworks nützlich. Hinter Python steht eine große Community und ein lobenswertes, reaktionsschnelles Supportsystem der Community. Es gibt sehr hilfreiche Open-Source-Beiträge und eine Datenwissenschafts- und Analyseplattform, die Python einzigartig macht.

Publikum

Nun stellt sich die eigentliche Frage, wie sich Python bei der Entwicklung von Blockchain-Anwendungen einsetzen lässt.

Machen Sie sich weniger Sorgen! Dieser Artikel ist Ihre Hilfe. Hier konzentrieren wir uns auf die Verwendung und Integration von Python in Blockchain. Alle angehenden Entwickler können ihre Reise mit diesem Artikel beginnen.

Machen Sie sich Sorgen um ein perfektes Setup und Konfigurationsmanagement? Wir haben das Richtige für Sie! Tauchen Sie ein in die faszinierende Welt des Erstellens einer Blockchain-Anwendung mit Python.

Einrichten der Entwicklungsumgebung

Bevor Sie mit der Entwicklung beginnen, müssen alle Voraussetzungen erfüllt sein. In diesem Abschnitt führen wir Sie durch den gesamten Prozess.

Wenn es um die Konfiguration geht, bietet Python den einfachsten Einrichtungsprozess.

Schauen wir es uns im Detail an:

Python installieren

  • Besuchen Sie die offizielle Website und laden Sie die neueste Python-Version herunter: https://www.python.org/downloads/

  • Laden Sie es entsprechend Ihrem Betriebssystem herunter (Windows, MacOS, Linux).

  • Es wird mit dem Python-Launcher geliefert. Lesen Sie daher die Installationsanleitung. Dadurch wird Python auf Ihrem System installiert.

Überprüfen Sie die Installation mit „python –version“ oder „python3 –version“ in der Befehlszeile (Eingabeaufforderung oder Terminal).

Hinweis: Stellen Sie sicher, dass Sie die neueste Version von Python installieren – 3.12. Verwenden Sie derzeit nur dann niedrigere Versionen, wenn Sie bestimmte Dienstprogramme benötigen.

Auswählen einer IDE

Sobald Sie mit der Installation von Python auf Ihrem System fertig sind, müssen Sie als Nächstes nach der richtigen Entwicklungsumgebung suchen. Dies ist ein sehr wichtiger Schritt, da die Wahl einer geeigneten IDE ohne Konfigurationsdiskrepanzen die Grundlage für alle Ihre zukünftigen Projekte ist.

Es gibt zwei Haupt-IDEs:

PyCharm: Pycharm wurde von JetBrains entwickelt und ist die beliebteste IDE für Python. Pycharm bietet eine breite Palette an Tools, um Ihre Produktivität als Entwickler zu steigern.

Es bietet verschiedene Funktionen wie intelligente Codevervollständigung, die die Codevorlage basierend auf den Funktionen in Echtzeit vervollständigt. Pycharm hat in Bezug auf Debugging-Tools wirklich einen Charme. Es bietet Ihnen Optionen wie das Überspringen des Codes, das Herunterstufen des gesamten Codes, das Hinzufügen mehrerer Haltepunkte, um zu sehen, welcher Teil des Codes Fehler verursacht, und eine Konsole zum Ausführen kleinerer Teile des Codes zusammen mit der Variablenprüfung.

Schritte zum Einrichten von Pycharm:

  • Besuchen Sie die offizielle Website und laden Sie PyCharm herunter:

  • https://www.jetbrains.com/pycharm/download/?section=mac

  • Folgen Sie nun den Popup-Anweisungen.

  • Sobald die Installation abgeschlossen ist, starten Sie Pycharm und konfigurieren Sie Ihr Projekt und Ihren Python-Interpreter wie folgt:

Dateien→Einstellungen→Projekt→Ihr Projekt→Projektinterpreter und wählen Sie die entsprechende Python-Version aus, die Sie zuvor installiert hatten.

Jupyter Notebook: Jupyter Notebook ist eine Online-IDE (Webanwendung). Neben Python wird es auch zur Textbearbeitung verwendet. Jupyter Notebook kann zusammen mit seinen Erweiterungen remote auf VSCode ausgeführt werden.

Schritte zum Einrichten von Jupyter Notebook:

  • Öffnen Sie Ihre Befehlszeilenschnittstelle: Führen Sie den Befehl „pip install notebook“ aus

  • Starten Sie das Jupyter-Notebook mit dem Befehl: jupyter notebook

Installieren der erforderlichen Bibliotheken

Hier sind einige Bibliotheken, die Ihre Erfahrung bei der Blockchain-Entwicklung verbessern:

  • Flask: Flask ist ein Python-Framework, das zum Erstellen von Webanwendungen und RESTful-APIs verwendet wird. In der Blockchain kann es zum Erstellen von Webschnittstellen wie Dashboards und DApps-Schnittstellen verwendet werden.

    • Flask installieren: pip install Flask

  • Requests: Requests ist eine HTTP-Bibliothek zum Verarbeiten und Senden von HTTP-Anfragen und -Antworten. In der Blockchain können Requests beim Verbinden mit Blockchain-Netzwerken und beim Abfragen nützlich sein.

    • Installationsanforderungen: Pip-Installationsanforderungen

  • Pysha3: Pysha3 ist die wichtigste Bibliothek, die für SHA-3-Hashing-Algorithmen wie SHA3-256 und SHA3-512 verwendet wird. Hashing ist ein unschätzbarer Aspekt der Blockchain-Technologie und trägt zu ihrer Integrität und Sicherheit bei.

    • Installieren Sie pysha3: pip install pysha3

  • Web3.py: Web3.py – die Einzelgänger-Bibliothek, die häufig verwendet wird und über zahlreiche Funktionen verfügt, wie die Interaktion mit Smart Contracts, das Abfragen von Blockchain-Daten und das Senden von Transaktionen. Web3 ist eine Ethereum-basierte Bibliothek, die für die Verwaltung von Transaktionen nützlich ist.

    • Installieren Sie web3.py: pip install web3

  • Pycryptodome: Pycryptodome ist ein vollwertiges Python-Paket mit einfachen kryptografischen Funktionen. Diese Bibliothek bietet Funktionen für Sicherheit und Datenintegrität wie Hashing, Verschlüsselung, Entschlüsselung und andere kryptografische Operationen.

    • Installieren Sie pycryptodome:  pip install pycryptodome

  • Pandas: Pandas ist eine robuste Bibliothek zur Datenanalyse und -manipulation, die über ein Paket von Datenstrukturen und Funktionen verfügt, die für die Analyse und Visualisierung von Blockchain- und Transaktionsaufzeichnungen nützlich sind.

    • Installieren Sie Pandas:  pip install pandas

  • SQLAlchemy: SQL ist eine Datenbank und SQLAlchemy ist ein SQL-Toolkit mit objektrelationaler Zuordnung für Python. Es unterstützt den Datenbankbetrieb und die Interaktion mit hochrangigen Abstraktionen. Da Blockchain selbst eine verteilte Datenbank ist, würde diese Bibliothek verwendet, um die relationale Datenbank zu verwalten und abzufragen und die Transaktionsdatensätze zusammen mit Benutzeranmeldeinformationen zu speichern.

    • Installieren Sie SQLAlacemy:  pip install SQLAlchemy

  • Numpy: Numoy ist die weit verbreitete Python-Bibliothek und eignet sich gut für verschiedene Anwendungen. Sie wird für alle numerischen Operationen verwendet und unterstützt mathematische Einheiten wie Arrays, Matrizen und eine Reihe von Funktionen und Operationen darauf. In Blockchain kann Numpy zum Verarbeiten und Simulieren der Transaktionsdatensätze und zum Berechnen der logischen Algorithmen verwendet werden.

    • Installieren Sie Numpy:  pip install numpy

Blockchain-Konzepte verstehen

Wenn wir zum Verständnis von Blockchain eine Analogie ziehen sollten, wäre diese wie die historische Datenbank, die an mehreren Orten gespeichert ist, wobei alle Orte gleich wichtig sind und keine einzelne Entität das Netzwerk dominiert.

Wenn Sie tiefer eintauchen und die Blockchain-Struktur verstehen, sieht sie folgendermaßen aus:

Blöcke (Transaktionen)——–***Ketten***——-Blöcke.

Es besteht aus drei Komponenten:

  • Blöcke: Blöcke sind die Zellen, die Informationen oder Transaktionen enthalten. Blöcke speichern die Liste bestimmter Transaktionen. Blöcke können mithilfe verschiedener Konsensmechanismen erstellt oder, wie man sagen kann, abgebaut werden. Jeder Block hat seinen eigenen Satz eindeutiger Kennungen, die auch als Hashing bezeichnet werden. Die Hashing-Technik ist nützlich, um die Daten in den Blöcken zu verschlüsseln.

  • Transaktion: Transaktionen sind der Austausch von Datenwährungen innerhalb des Blockchain-Netzwerks, der über verschiedene Noten hinweg erfolgt. Transaktionsdetails werden in einem Block im Einklang mit einer Reihe von Protokollen gespeichert, die als Konsens bezeichnet werden.

  • Ketten: Wie wir bereits wissen, haben Blockchains eine Analogie zu verknüpften Listen, die Verbindungen zwischen ihren Blöcken aufweisen. Diese Verbindungen werden auch als Ketten bezeichnet. Da jeder Zeiger in der verknüpften Liste durch alle Verbindungen verbunden ist, gilt das Gleiche für die Blöcke. Dies sind eine Reihe von Blöcken, die durch den Hash des vorherigen Blocks verbunden sind, wodurch sichergestellt wird, dass die Datenintegrität und Sicherheit der Blockchain gewahrt bleiben. Der Zweck der Änderungen besteht nicht nur darin, als Verbindung zwischen dem vorherigen und dem nächsten Block zu dienen, sondern auch darin, die Verbindungen zusammen mit Hashing- und kryptografischen Prinzipien bereitzustellen.

Bedeutung von Dezentralisierung, Unveränderlichkeit und Konsensmechanismen:

  • Dezentralisierung: Dezentralisierung ist die wichtigste Eigenschaft der Blockchain. Bei diesem Mechanismus hat keine einzelne Entität die Kontrolle über die gesamte Datenbank, was den Ausfall des Blockchain-Systems aufgrund von Unstimmigkeiten verhindert. Aufgrund der Dezentralisierung ist ein voreingenommenes System nahezu unmöglich. Jeder Teilnehmer am Gerät verwaltet eine Kopie der Blockchain. Dies gewährleistet Transparenz und verhindert zentralisierte Fehler oder Manipulationen.

  • Unveränderlichkeit: Sobald die Daten in die Blockchain geschrieben sind, können sie nicht mehr geändert werden, ohne alle nachfolgenden Blöcke zu ändern. Das Ändern aller nachfolgenden Blöcke in der Blockchain ist rechenintensiv und sehr ineffizient, was zu Fehlern führt. Eine Änderung an einem Block muss durch kryptografisches Hashing erfolgen. Daher können alle einmal vorgenommenen Änderungen nicht rückgängig gemacht werden, was die Blockchain unveränderlich macht.

  • Konsensmechanismen: Eine Reihe von Protokollen, die alle Notwendigkeiten der Blockchain regeln. Alle Knoten im Netzwerk müssen sich auf die Methoden einigen. Konsensmechanismen werden verwendet, um die Knoten zu optimieren und sicherzustellen, dass alle Knoten im Netzwerk auf dem gleichen Stand sind.

Erstellen einer einfachen Blockchain

Erstellen der Blockklasse

Im obigen Code haben wir für alle Attribute eine Blockklasse definiert.

Blockstruktur:

  • Index: Ein Index ist eine Ganzzahl, die die Position des Blocks innerhalb der Blockchain darstellt. Durch die Indizierung lässt sich die Reihenfolge der Blockchain ermitteln.

  • Der Genesis-Block ist der Anfangsblock mit Index=0.

  • Zeitstempel: Der Zeitstempel speichert den Zeitpunkt, zu dem der Block erstellt wurde, in Form einer Zeichenfolge. Dies hilft dabei, die Aufzeichnung des Blocks beizubehalten, z. B. wann der Block abgebaut oder zur Blockchain hinzugefügt wurde.

  • Transaktionen: Diese werden als Vektoren von Transaktionsobjekten dargestellt, wobei jede Transaktion eine Daten- oder Wertübertragung zwischen Teilnehmern darstellt. Speichert alle im Block enthaltenen Transaktionen.

  • Vorheriger Hash und Hash: Der vorherige Hash speichert den kryptografischen Hash des vorherigen Blocks, während der Hash eine durcheinandergewürfelte oder gehashte Zeichenfolge kryptografischer Informationen ist.

Wir haben die SHA3-256-Methode verwendet, um den Hash des Blocks zu berechnen.

Erstellen der Blockchain-Klasse

Definieren Sie eine Blockchain-Klasse zur Verwaltung der Kette und Methoden zum Hinzufügen neuer Blöcke.

Im obigen Codebeispiel ist Genesis-Block – der erste Block in der Blockchain, get_latest_block- gibt den neuesten Block zurück und add_block- fügt einen neuen Block hinzu.

Implementierung von Proof of Work

Konsensalgorithmen sind die Regeln, auf die sich die Teilnehmer beim Hinzufügen von Blöcken und Erstellen neuer Blöcke im Netzwerk einigen müssen. Es gibt verschiedene Mechanismen, wie folgt:

Proof-of-Stake: Dies basiert auf dem Einsatz, den die Validierer bereit sind zu haben. Je höher der Einsatz im Austausch für die Erstellung oder Validierung des Blocks ist, desto größer ist die Wahrscheinlichkeit, dass der Validierer ausgewählt wird.

Proof of Work: Proof of Work wurde erstmals in Bitcoin eingeführt und ist seitdem weithin als einer der Sicherheitsmechanismen übernommen worden. Bei PoW konkurrieren die Teilnehmer gegeneinander, um ein schwieriges kryptografisches Rätsel zu lösen. Proof of Work funktioniert in mehreren Schritten:

  • Erstellen eines Blocks: Miner sammeln die durchzuführenden Transaktionen und fügen sie zu einem Block zusammen

  • Hashen des Blocks: Zuerst gibt der Miner einen Nonce an, der dann durch eine kryptografische Funktion geleitet wird, und der Block wird mit einer eindeutigen Kennung gehasht.

  • Mining: Beim Mining wird der Nonce wiederholt geändert, um den perfekten Hash zu finden, der die Schwierigkeitsanforderungen des Netzwerks erfüllt.

  • Senden des Blocks: Sobald Sie einen gültigen Hash erhalten, sendet der Miner den Block in das Netzwerk und die anderen Teilnehmer überprüfen ihn.

  • Hinzufügen des Blocks zur Blockchain: Wenn der Block als gültig befunden wird, wird er zur Blockchain hinzugefügt und der Miner wird belohnt.

  • Anpassen des Schwierigkeitsgrades: Das Netzwerk passt den Schwierigkeitsgrad des PoW-Puzzles regelmäßig an, um sicherzustellen, dass Blöcke trotz Änderungen der gesamten Rechenleistung mit einer gleichbleibenden Rate abgebaut werden.

Andere: Es gibt andere Algorithmen wie DPos, bekannt als Delegated Proof of Stake, bei denen die Delegierten gewählt werden, und einen anderen, die Byzantine Fault Tolerance (PBFT).

Hinzufügen eines Proof of Work zur Blockchain

Ändern Sie die Blockklasse, um ein Proof-Attribut und eine Proof_of_Work-Methode einzuschließen:

Die Blockchain-Klasse wurde aktualisiert, um den Beweis über die Funktion add_block zu validieren.

Erstellen einer einfachen Blockchain-API mit Flask

1. Einrichten des Flask

Installieren Sie Flask: pip install Flask

2. Erstellen der API

Erstellen Sie eine Flask-App und definieren Sie Endpunkte zum Hinzufügen von Blöcken und Anzeigen der Blockchain.

Ausführen und Testen der Anwendung

1. Ausführen der Flask-App

Führen Sie die Flask-App aus: (in Ihrer Befehlszeile) python app.py

2. Testen mit Postman

Fügen Sie einen Block hinzu: curl -X POST -H „Content-Type: application/json“ -d ‚{„data“: „Some data“}‘ http://localhost:5000/mine

Sehen Sie sich die Blockchain an: curl http://localhost:5000/chain

Aus den obigen Kommentaren geht hervor, dass die Anwendung auf localhost:5000/chain gehostet werden würde.

Live-Beispiel für die Erstellung einer Blockchain-Anwendung

1. Schrittweise Ausführung

Nachfolgend finden Sie einen Live- und vollständigen Stapel aller Vorgänge, die für die Entwicklung der Blockchain-Anwendung erforderlich sind: