Chaincode-Lebenszyklus
(Hyperledger Fabric v2.x) Der Chaincode-Lebenszyklus beschreibt den Prozess der Installation von Chaincode auf Peers und der Bereitstellung auf einem Kanal.
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 Chaincode-Parameter, einschließlich der Chaincode-Bestätigungsrichtlinie, vereinbaren, bevor ein Chaincode mit dem Buch interagieren kann. Diese Funktionen werden in den neuen Optionen für schnelles Deployment und erweitertes Deployment sowie in der REST-API implementiert. Weitere Informationen zum neuen Lebenszyklus finden Sie in der Hyperledger Fabric v2.2.4-Dokumentation unter Fabric chaincode Lifecycle.
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 Packen und Installieren des Chaincodes sowie das Genehmigen und Festschreiben der Chaincode-Definition. Sie können die REST-API auch verwenden, um die Genehmigungs- und Verpflichtungsvorgänge separat abzuschließen.
Chaincode verpacken und installieren
Wenn Sie Chaincode in Oracle Blockchain Platform installieren, wird der Chaincode verpackt, 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 den meisten 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, die nicht für alle Organisationen identisch sein muss.
Nachdem eine Chaincode-Definition genehmigt wurde, kann eine Organisation Bestätigungen von gleichgestellten Mitarbeitern der genehmigenden Organisationen erfassen und dann die Chaincode-Definition 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 eine schnelle Bereitstellung oder ein erweitertes Deployment verwenden, werden beide 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 sind, auf der Seite Bereitgestellte Chaincodes für den Kanal. Über das Menü Weitere Aktionen können Sie den genehmigten Chaincode festschreiben.
Szenarios für Chaincode-Lebenszyklus
Scenario | Beschreibung |
---|---|
Einem Kanal beitreten |
Normalerweise genehmigen Sie in der Konsole eine Chaincode-Definition nicht, ohne sie anschließend festzuschreiben. Wenn Sie einem freigegebenen 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. Im Menü Weitere Aktionen können Sie die Chaincode-Definition genehmigen und eine Package-ID zuordnen. Sie müssen die Paketdefinition nicht erneut festschreiben. |
Bestätigungs-Policy aktualisieren |
Sie können die Bestätigungsrichtlinie in der Chaincode-Definition aktualisieren, ohne den Chaincode neu 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 die Empfehlungs-Policy ein, und geben Sie eine neue Policy an. Klicken Sie dann auf Upgrade durchführen. |
Definition ohne Installation genehmigen |
Wenn Sie in einem Szenario mit mehreren Organisationen eine Chaincode-Definition genehmigen möchten, ohne das Chaincode-Paket zu installieren, geben Sie keine Paketkennung an. Sie bestätigen die Definition des Chaincodes, der für den Kanal festgeschrieben wird, 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 gleichgestellte Mitarbeiter aller Organisationen hinzugefügt. Wenn Organisationen sich nicht auf eine Chaincode-Definition einigen und keine Organisationen genügend Bestätigungen erhalten, um die Definition für den Kanal festzuschreiben, kann die Definition nicht festgeschrieben werden, und daher kann der Chaincode nicht ausgeführt werden. |
Mehrere Organisationen installieren verschiedene Pakete |
Sie können eine andere Package-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, aber Daten in denselben Chaincode-Namespace liest und schreibt. |
Mehrere Chaincodes aus einem Paket erstellen |
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 für jede Definition auch eine andere Bestätigungs-Policy angeben, unterliegt jede Chaincode-Instanz einer anderen Bestätigungs-Policy. |