Chaincode-Lebenszyklus

(Hyperledger Fabric v2.x) Im Chaincode-Lebenszyklus wird der Prozess der Installation von Chaincode auf Peers und der Bereitstellung auf einem Kanal beschrieben.

Der Chaincode-Lebenszyklus basiert auf den Funktionen der Hyperledger Fabric v2.x-Plattform, die eine dezentrale Governance von Chaincodes ermöglicht. Mehrere Organisationen können sich auf Chaincode-Parameter einigen, einschließlich der Chaincode-Bestätigungs-Policy, bevor ein Chaincode mit dem Ledger interagieren kann. Diese Funktionen werden in der neuen Schnellbereitstellung und den erweiterten Deployment-Optionen sowie in der REST-API implementiert. Weitere Informationen zum neuen Lebenszyklus finden Sie unter Fabric Chaincode-Lebenszyklus in der Dokumentation zu Hyperledger Fabric v2.2.4.

Um einen installierten Chaincode bereitzustellen, verwenden Sie in der Regel ein schnelles Deployment oder ein erweitertes Deployment in der Konsole. Der Deployment-Prozess umfasst das Verpacken und Installieren des Chaincodes sowie das Genehmigen und Festschreiben der Chaincode-Definition. Sie können die Genehmigungs- und Verpflichtungsvorgänge auch separat mit der REST-API abschließen.

Chaincode verpacken und installieren

Wenn Sie Chaincode in Oracle Blockchain Platform installieren, wird der Chaincode in einem Package integriert, installiert und automatisch eine Package-ID generiert. Die Paket-ID wird auf der Registerkarte Chaincodes der Konsole angezeigt.

Chaincode-Definition genehmigen

Bevor ein Chaincode in einem Kanal bereitgestellt werden kann, muss die Chaincode-Definition von genügend Organisationen genehmigt werden, um die LifecycleEndorsement-Policy des Kanals zu erfüllen. Mit der Standard-Policy LifecycleEndorsement in Oracle Blockchain Platform kann jede Organisation die Chaincode-Definition genehmigen (im Gegensatz zu einer Mehrheit der Organisationen). Die Chaincode-Definition enthält die folgenden Parameter, die für alle Organisationen identisch sein müssen: Chaincode Name, Version, Sequence, Endorsement Policy, Private Data Collection und Init-required. Eine Chaincode-Definition kann auch eine Package ID enthalten. Diese muss nicht für alle Organisationen identisch sein.

Nachdem eine Chaincode-Definition genehmigt wurde, kann eine Organisation Bestätigungen von Kollegen der genehmigenden Organisationen erfassen und die Chaincode-Definition dann im Kanal festschreiben.

Informationen zum Genehmigen einer Chaincode-Definition mit der REST-API finden Sie unter Chaincode-Definition in einem Kanal genehmigen.

Wenn Sie in der Konsole ein schnelles Deployment oder ein erweitertes Deployment verwenden, werden die Genehmigungs- und Verpflichtungsschritte versucht.

Chaincode-Definition speichern

Informationen zum Festschreiben einer genehmigten Chaincode-Definition mit der REST-API finden Sie unter Chaincode-Definition in einem Kanal festschreiben.

In der Konsole werden Chaincode-Definitionen angezeigt, die genehmigt, aber nicht festgeschrieben wurden, auf der Seite Bereitgestellte Chaincodes für den Kanal. Über das Menü Weitere Aktionen können Sie den genehmigten Chaincode festschreiben.

Chaincode-Lebenszyklus-Szenarios

Scenario Beschreibung
Kanal beitreten

Normalerweise genehmigen Sie in der Konsole eine Chaincode-Definition nicht, ohne sie dann festzuschreiben. Wenn Sie einem gemeinsamen Kanal beitreten, in dem eine Chaincode-Definition von einer anderen Organisation festgeschrieben wurde, wird die Chaincode-Definition auf der Seite Bereitgestellte Chaincodes für den Kanal als festgeschrieben, aber nicht genehmigt angezeigt. Sie können das Menü Weitere Aktionen verwenden, um die Chaincode-Definition zu genehmigen und eine Package-ID zuzuordnen. Sie müssen die Packagedefinition nicht erneut festschreiben.

Bestätigungs-Policy aktualisieren

Sie können die Bestätigungs-Policy in der Chaincode-Definition aktualisieren, ohne den Chaincode erneut zu installieren. Verwenden Sie auf der Seite "Bereitgestellte Chaincodes" für den Kanal das Menü "Weitere Aktionen", um die Chaincode-Definition zu aktualisieren. Blenden Sie Endorsement Policy ein, und geben Sie eine neue Policy an. Klicken Sie dann auf Upgrade.

Definition genehmigen, ohne sie zu installieren

Geben Sie in einem Szenario mit mehreren Organisationen keine Paketkennung an, wenn Sie eine Chaincode-Definition genehmigen möchten, ohne das Chaincode-Paket zu installieren. Sie bestätigen die Definition des Chaincodes, der für den Kanal festgeschrieben ist, aber der Chaincode ist nicht auf Peers in Ihrer Organisation installiert. Sie können den Chaincode nicht verwenden, um Transaktionen zu bestätigen oder das Buch abzufragen.

Meinungsverschiedenheiten über Definitionen

In einem Szenario mit mehreren Organisationen kann eine Organisation, die keine Chaincode-Definition genehmigt oder eine andere Chaincode-Definition genehmigt, den Chaincode nicht für ihre Kollegen ausführen. Wenn andere Organisationen genügend Bestätigungen erhalten, um die Definition für den Kanal festzuschreiben, können diese Organisationen den Chaincode verwenden. Transaktionen werden weiterhin dem Buch für die Gleichgestellten aller Organisationen hinzugefügt.

Wenn Organisationen sich nicht auf eine Chaincode-Definition einigen und keine Organisationen genügend Bestätigungen erhalten, um die Definition im Kanal festzuschreiben, kann die Definition nicht festgeschrieben werden. Daher kann der Chaincode nicht ausgeführt werden.

Mehrere Organisationen installieren verschiedene Pakete

Sie können eine andere Paket-ID angeben, wenn Sie eine Chaincode-Definition für einen Kanal mit mehreren Organisationen genehmigen. Wenn der Definitionsname und die Bestätigungs-Policy identisch sind, können Channel-Member Chaincode installieren, der für ihre Organisation spezifisch ist, jedoch Daten in denselben Chaincode-Namespace liest und schreibt.

Erstellen Sie mehrere Chaincodes aus einem Paket

Ebenso können Sie dasselbe Chaincode-Package mehrmals genehmigen und festschreiben, indem Sie für jede Definition einen anderen Namen angeben. Mehrere Instanzen des Chaincodes werden auf dem Kanal ausgeführt. Wenn Sie auch eine andere Bestätigungs-Policy für jede Definition angeben, unterliegt jede Chaincode-Instanz einer anderen Bestätigungs-Policy.