Heim >Backend-Entwicklung >Golang >Praktische Blockchain-Hyperledger Fabric (1) 10-minütige Einführung für Anfänger
Einführung
Hallo zusammen, ich bin Michael, ich arbeite jetzt für ein Internetunternehmen in Shanghai, da die Regierung großen Wert auf Blockchain-Projekte legt, sagen die Leute, dass 2020 Es ist das erste Jahr der Blockchain-Entwicklung. Ich habe viele Male mit meinen Freunden über Blockchain gesprochen und möchte es selbst üben. Nachdem ich viele Optionen wie Ethereum, EOS, NEO usw. recherchiert habe, habe ich mich für die Allianzkette entschieden , der unser heutiger Protagonist ist, ist Hyperledger Fabric.
Artikelstruktur
Diese Artikelserie ist in drei Teile gegliedert. Die drei Artikel helfen Ihnen beim Einstieg in die Hyperledger Fabric-Entwicklung und beim Aufbau Ihres eigenen Allianzkettenprojekts :
1. Grundlegende Einführung
2. Umgebungseinrichtung
3 Startup
Hyperledger Fabric – die neue Hoffnung der Blockchain-Welt
Dezember 2015 übernahm die Flaggschifforganisation der Open-Source-Welt, die Linux Foundation, die Führung und schloss sich mit 30 Gründungsmitgliedern zusammen (darunter IBM, Accenture, Intel, J.P. Morgan, R3, DAH, DTCC, FUJITSU, HITACHI, SWIFT, Cisco, usw.), um gemeinsam Super anzukündigen Die Gründung des gemeinsamen Projekts Hyperledger. Das Hyperledger-Projekt hat sich zum Ziel gesetzt, eine Open-Source-Referenzimplementierung für eine transparente, offene und dezentrale Distributed-Ledger-Technologie auf Unternehmensebene bereitzustellen und die Entwicklung von Blockchain- und Distributed-Ledger-bezogenen Protokollen, Spezifikationen und Standards zu fördern. Die offizielle Website des Projekts ist hyperledger.org und Hyperledger Fabric ist eines seiner wichtigen Projekte.
Viele neue Studenten wissen möglicherweise nicht viel über viele spezifische Begriffe der Blockchain, daher werde ich Ihnen im ersten Abschnitt die Begriffe vorstellen, die mit Hyperledger Fabric verbunden sind.
Substantiveinführung:
Anchor Peer – Ankerknoten Ein Ankerknoten ist ein Peer, der von allen Peer-Knoten im Kanal erkannt werden kann und mit ihm kommunizieren kann. Jedes Mitglied im Kanal verfügt über einen (oder mehrere, im Falle eines Single Point of Failure) Ankerknoten, sodass Knoten mit unterschiedlichen Mitgliedschaften andere im Kanal vorhandene Knoten erkennen können.
Block – Ein Block ist eine Reihe geordneter Transaktionen auf einem Kanal. Blöcke werden häufig durch kryptografische Mittel (Hashwerte) mit vorhergehenden Blöcken verbunden.
Zhu Jiang: Ein Block ist ein geordneter Satz von Transaktionen, die im Kanal verschlüsselt (Hash-verschlüsselt) und mit dem vorherigen Block verbunden sind.
Kette – Kette ist ein Transaktionsprotokoll, das mit Hash-Verbindungen zwischen Blöcken strukturiert ist. Der Peer empfängt den Transaktionsblock vom Bestelldienst, markiert anhand der Endorsement-Richtlinie und Parallelitätskonflikten, ob die Transaktion auf dem Block gültig ist, und hängt den Block dann an die Hash-Kette im Peer-Dateisystem an. Z
hu Jiang: Die Kette des Ledgers ist ein Transaktionsprotokoll, das durch „Hash-Verbindung“ von Transaktionsblöcken strukturiert ist. Der Peer-Knoten empfängt den Transaktionsblock vom Anordnungsdienst, markiert die Transaktion des Blocks basierend auf der Endorsement-Richtlinie und Parallelitätskonflikten als gültig oder ungültig und hängt den Block an die Hash-Kette des Dateisystems des Peer-Knotens an.
Chaincode – Chaincode Chaincode ist eine Software, die auf dem Hauptbuch läuft. Sie kann Vermögenswerte verschlüsseln und die Transaktionsanweisungen (oder Geschäftslogik) können auch zum Ändern von Vermögenswerten verwendet werden.
Channel – Channel ist eine private Blockchain, die auf dem „Fabric“-Netzwerk basiert und Datenisolation und Vertraulichkeit gewährleistet. Das kanalspezifische Ledger wird mit allen Peers im Kanal geteilt und die Transaktionsparteien müssen vom Kanal ordnungsgemäß authentifiziert werden, um mit dem Ledger interagieren zu können. Kanäle werden durch einen „Konfigurationsblock“ definiert.
Commitment – Commitment Jeder Peer in einem Kanal validiert einen geordneten Transaktionsblock und schreibt den Block dann an jede Kopie des Ledgers im Kanal fest (schreibt oder hängt ihn an). Peers markieren außerdem den Status jeder Transaktion in jedem Block als gültig oder ungültig.
Concurrency Control Version Check – Concurrency Control Version Check (CCVC) CCVC ist eine Methode, um den Status zwischen Peers in einem Kanal synchronisiert zu halten. Peer-Knoten führen Transaktionen parallel aus. Bevor die Transaktion an das Ledger übermittelt wird, prüft der Peer-Knoten, ob die während der Transaktionsausführung gelesenen Daten geändert wurden. Wenn sich die gelesenen Daten zwischen Ausführung und Festschreibung ändern, kommt es zu einem CCVC-Konflikt, die Transaktion wird im Ledger als ungültig markiert und der Wert wird in der Statusdatenbank nicht aktualisiert.
Konfigurationsblock – Der Konfigurationsblock enthält Konfigurationsdaten, die Mitglieder und Richtlinien für eine Systemkette (Bestelldienst) oder einen Kanal definieren. Konfigurationsänderungen an einem Kanal oder dem gesamten Netzwerk (z. B. Austritt oder Beitritt von Mitgliedern) führen dazu, dass ein neuer Konfigurationsblock generiert und an die entsprechende Kette angehängt wird. Dieser Konfigurationsblock enthält den Inhalt des Genesis-Blocks plus das Inkrement.
Konsens – Konsens ist ein weit gefasster Begriff, der während des gesamten Transaktionsprozesses verwendet wird, um eine vereinbarte Reihenfolge zu erstellen und die Richtigkeit der Reihe von Transaktionen zu bestätigen, die einen Block bilden.
Aktueller Status – Der aktuelle Status des Hauptbuchs stellt die neuesten Werte aller Schlüssel in seinem Kettentransaktionsprotokoll dar. Der Peer übermittelt den geänderten Wert, der jeder Transaktion im verarbeiteten Block entspricht, an den aktuellen Status des Hauptbuchs. Da der aktuelle Status alle dem Kanal bekannten aktuellen k-v-Werte darstellt, wird der aktuelle Status auch als Weltstatus bezeichnet. Chaincode führt den Transaktionsvorschlag anhand des aktuellen Status aus.
Dynamische Mitgliedschaft – Dynamic Member Fabric unterstützt das dynamische Hinzufügen und Entfernen von Mitgliedern, Peers und Bestelldienstknoten, ohne die Funktionsfähigkeit des gesamten Netzwerks zu beeinträchtigen. Die dynamische Mitgliedschaft ist von entscheidender Bedeutung, wenn Geschäftsbeziehungen angepasst werden oder aus verschiedenen Gründen Entitäten hinzugefügt oder entfernt werden müssen.
Bestätigung – Bestätigung bezieht sich auf den Prozess, bei dem ein Peer eine Transaktion ausführt und JA-NEIN an die Client-App zurückgibt, die den Transaktionsvorschlag generiert hat. Der Chaincode verfügt über entsprechende Endorsement-Richtlinien, in denen die Endorsement-Peers angegeben werden.
Befürwortungsrichtlinie – Die Befürwortungsrichtlinie definiert die notwendige Kombination aus Peer- und Antwortergebnissen (Befürwortungen) auf dem Kanal, der auf einem bestimmten Kettencode zur Ausführung der Transaktion basiert (d. h. die Bedingungen für die Rückgabe von „Ja“ oder „Nein“). .
Die Endorsement-Richtlinie kann die Mindestanzahl von Endorsement-Knoten oder den Mindestprozentsatz von Endorsement-Knoten festlegen, die eine Transaktion für einen bestimmten Chaincode unterstützen können. Endorsement-Richtlinien werden von Endorsement-Knoten basierend auf der Anwendung und dem gewünschten Schutzniveau gegen schlechtes Verhalten organisiert und verwaltet. Die Endorsement-Richtlinie muss bei der Installation und Instanziierung von Chaincode (Bereitstellung von TX) angegeben werden.
Fabric-caFabric-ca ist die standardmäßige Zertifikatverwaltungskomponente, die PKI-basierte Zertifikate an Netzwerkmitglieder und deren Benutzer ausstellt. Die CA stellt für jedes Mitglied ein Stammzertifikat (rootCert), für jeden autorisierten Benutzer ein Registrierungszertifikat (eCert) und für jedes Registrierungszertifikat eine große Anzahl von Transaktionszertifikaten (tCerts) aus.
Genesis Block – Der Anfangsblock Genesis Block ist der Konfigurationsblock, der das Blockchain-Netzwerk oder den Blockchain-Kanal initialisiert, und ist auch der erste Block in der Kette.
Gossip-Protokoll – Gossip-Protokoll Das Gossip-Datenübertragungsprotokoll hat drei Funktionen:
1) Peer-Discovery und Kanalmitglieder verwalten
2) Alle Inter-Peer-Broadcast-Ledger auf die Kanaldaten;
3) Synchronisieren Sie die Ledger-Daten zwischen allen Peers auf dem Kanal.
Initialisieren – Initialisieren Sie eine Methode, um das Chaincode-Programm zu initialisieren.
Installieren – Der Prozess der Installation von Chaincode im Dateisystem des Peers. (Anmerkung: Die ChaincodeDeploymentSpec-Informationen werden in der Datei chaincodeInstallPath-chaincodeName.chainVersion gespeichert)
Instantiate – der Prozess der Instanziierung und des Startens des Chaincode-Containers. (Anmerkung: Speichern Sie ChaincodeData im Status in lccc, stellen Sie dann Chaincode bereit und führen Sie die Init-Methode aus.) Invoke – Rufen Sie auf, um die Funktion im Chaincode aufzurufen.
Chaincode-Aufruf ist ein Transaktionsvorschlag und führt dann einen modularen Prozess aus (Bestätigung, Konsens, Verifizierung, Einreichung). Die Struktur von invoke besteht aus einer Funktion und einem Parameterarray.
Führender Peer – Jedes Mitglied kann mehrere Peers auf dem Kanal haben, den es abonniert hat. Einer der Peers fungiert als führender Peer des Kanals, der im Namen des Mitglieds mit dem Bestelldienst kommuniziert. Der Bestelldienst liefert den Block an den führenden Peer, der ihn dann an andere Peers unter demselben Mitglied verteilt.
Ledger – Ledger Ein Ledger ist die Kette eines Kanals und die aktuellen Statusdaten, die von jedem Peer im Kanal verwaltet werden. Ledger ist die Kette und der Weltstatus, die von jedem Peer im Kanal verwaltet werden. (Diese Erklärung ist etwas seltsam)
Mitglied – eine rechtlich unabhängige Einheit, deren Mitglieder das einzigartige Stammzertifikat des Netzwerks besitzen. Netzwerkkomponenten wie Peer-Knoten und App-Clients sind mit einem Mitglied verknüpft.
Membership Service Provider – MSPMSP bezieht sich auf die abstrakte Systemkomponente, die Zertifikate für Clients und Peers bereitstellt.
Kunden verwenden Zertifikate, um ihre Transaktionen zu authentifizieren; Peers verwenden Zertifikate, um ihre Transaktionsbestätigungen zu authentifizieren. Diese Schnittstelle steht in engem Zusammenhang mit der Transaktionsverarbeitungskomponente des Systems und ist so konzipiert, dass definierte Mitgliedschaftsdienstkomponenten auf diese Weise reibungslos angeschlossen werden können, ohne den Kern der Transaktionsverarbeitungskomponente des Systems zu ändern.
Mitgliedschaftsdienste – Mitgliedschaftsdienste authentifizieren, autorisieren und verwalten Identitäten in einem autorisierten Blockchain-Netzwerk.
Der Mitgliedsdienstcode, der in Peer and Order ausgeführt wird, authentifiziert und autorisiert Blockchain-Vorgänge. Es handelt sich um eine MSP-Implementierung basierend auf PKI. Die Fabric-CA-Komponente implementiert Mitgliedschaftsdienste zur Verwaltung von Identitäten. Sie kümmert sich insbesondere um die Ausstellung und den Widerruf von ECerts und TCerts. ECert ist ein langfristiger Identitätsnachweis; TCert ist ein kurzfristiger Identitätsnachweis, der anonym und nicht verknüpfbar ist.
Bestelldienst – Der Bestelldienst oder Konsensdienst sortiert Transaktionen in eine Sammlung von Knoten im Block.
Der Bestellservice ist unabhängig vom Peer-Prozess und sortiert Transaktionen für alle Kanäle im Netzwerk nach dem Prinzip „Wer zuerst kommt, mahlt zuerst“. Der Bestelldienst unterstützt die steckbare Implementierung, und derzeit sind SOLO und Kafka standardmäßig implementiert. Der Bestelldienst ist eine gemeinsame Bindung für das gesamte Netzwerk und enthält kryptografische Materialien für jedes Mitglied. Peer – Eine Netzwerkeinheit, die das Ledger verwaltet und den Chaincode-Container ausführt, um Lese-/Schreibvorgänge für das Ledger auszuführen. Peers sind Eigentum der Mitglieder und werden von ihnen verwaltet.
Richtlinie – Zu den Strategien gehören eine Empfehlungsstrategie, eine Verifizierungsstrategie, eine Blockübermittlungsstrategie, eine Chaincode-Verwaltungsstrategie und eine Netzwerkkanal-Verwaltungsstrategie.
Vorschlag – Schlagen Sie eine Empfehlungsanfrage für einen Kollegen im Kanal vor. Bei jedem Vorschlag handelt es sich entweder um eine Chaincode-Instanziierung oder einen Chaincode-Aufruf.
Abfrage – Abfrageanforderung für den Wert eines Schlüssels im aktuellen Zustand.
Software Development Kit – SDK SDK bietet Entwicklern eine strukturierte Bibliotheksumgebung zum Schreiben und Testen von Chaincode-Anwendungen.
Das SDK kann über Standardschnittstellen vollständig konfiguriert und erweitert werden, und Komponenten wie signierte Verschlüsselungsalgorithmen, Protokollierungsframeworks und Zustandsspeicher können einfach ausgetauscht werden. Die SDK-API verwendet gRPC für die Transaktionsverarbeitung, und Mitgliedsdienste, Knotendurchquerung und Ereignisverarbeitung werden alle für die Kommunikation mit der Fabric verwendet. Derzeit unterstützt das SDK Node.js, Java und Python.
Zustandsdatenbank – stateDB Um Chaincode effizient lesen und schreiben zu können, werden aktuelle Zustandsdaten in stateDB gespeichert, einschließlich levelDB und couchDB.
Systemkette – Die Systemkette enthält die Konfigurationsblöcke, die das Netzwerk auf Systemebene definieren.
Die Systemkette existiert im Bestelldienst, ähnlich dem Kanal, mit einer Anfangskonfiguration, die die folgenden Informationen enthält: MSP-Informationen, Richtlinie und Informationskonfiguration. Alle Änderungen am gesamten Netzwerk (z. B. der Beitritt einer neuen Organisation oder das Hinzufügen neuer Bestellknoten) führen dazu, dass der Systemkette neue Konfigurationsblöcke hinzugefügt werden.
Die Systemkette kann als gemeinsame Bindung eines Kanals oder einer Gruppe von Kanälen betrachtet werden. Beispielsweise kann eine Ansammlung von Finanzinstituten ein Konsortium bilden (dargestellt durch eine Systemkette) und dann Kanäle basierend auf denselben oder unterschiedlichen Unternehmen erstellen.
Transaktion – der Aufruf- oder Instanziierungsvorgang des Transaktions-Chaincodes. Invoke fordert den Lese-/Schreibsatz vom Ledger an; Instantiate fordert den Start des Chaincode-Containers auf dem Peer an.
Zusammenfassung:
Das Obige ist das Grundwissen über Blockchain, das wir Ihnen im ersten Abschnitt vorgestellt haben. Diese mögen langweilig sein, aber wir müssen diese Begriffe verstehen und Inhalt Ein vorläufiges Verständnis ist genau wie beim Schreiben von Code: Wir müssen die Funktionsnamen und Schlüsselwörter kennen. Nur wenn wir diese beherrschen, können wir unsere Arbeit besser beginnen.
Das obige ist der detaillierte Inhalt vonPraktische Blockchain-Hyperledger Fabric (1) 10-minütige Einführung für Anfänger. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!