Cycle de vie du code de chaîne

(Hyperledger Fabric v2.x) Le cycle de vie du code de chaîne décrit le processus d'installation du code de chaîne sur les pairs et de son déploiement sur un canal.

Le cycle de vie du code de chaîne est basé sur les capacités de la plate-forme Hyperledger Fabric v2.x, qui permet la gouvernance décentralisée des codes de chaîne. Plusieurs organisations peuvent convenir des paramètres de chaîne de code, y compris la politique d'endossement du code de chaîne, avant qu'un code de chaîne puisse interagir avec le livre. Ces fonctions sont mises en oeuvre dans les nouvelles options de déploiement rapide et avancé, ainsi que dans l'API REST. Pour plus d'informations sur le nouveau cycle de vie, voir Cycle de vie du code de chaîne de tissu dans la documentation sur Hyperledger Fabric v2.2.4.

En général, pour déployer un code de chaîne installé, vous utilisez un déploiement rapide ou un déploiement avancé dans la console. Le processus de déploiement inclut l'assemblage et l'installation du code de chaîne, ainsi que l'approbation et la validation de la définition de code de chaîne. Vous pouvez également utiliser l'API REST pour effectuer les opérations d'approbation et d'engagement séparément.

Coller et installer un code de chaîne

Lorsque vous installez le code de chaîne dans Oracle Blockchain Platform, le code de chaîne est emballé, installé et un ID ensemble est généré automatiquement. L'ID ensemble est affiché dans l'onglet Code de chaîne de la console.

Approuver une définition de code de chaîne

Pour qu'un code de chaîne puisse être déployé sur un canal, la définition du code de chaîne doit être approuvée par suffisamment d'organisations pour satisfaire à la politique LifecycleEndorsement du canal. La politique LifecycleEndorsement par défaut dans Oracle Blockchain Platform permet à toute organisation d'approuver la définition du code de chaîne (par opposition à la majorité des organisations). La définition du code de chaîne inclut les paramètres suivants, qui doivent être identiques pour toutes les organisations : Chaincode Name, Version, Sequence, Endorsement Policy, Private Data Collection et Init-required. Une définition de code de chaîne peut également inclure une chaîne Package ID, qui n'a pas besoin d'être la même pour toutes les organisations.

Une fois qu'une définition de code de chaîne est approuvée, une organisation peut recueillir les endossements de ses pairs dans les organisations d'approbation, puis valider la définition de code de chaîne sur le canal.

Pour approuver une définition de code de chaîne à l'aide de l'API REST, voir Approuver une définition de code de chaîne dans un canal.

Dans la console, lorsque vous utilisez un déploiement rapide ou un déploiement avancé, les étapes d'approbation et d'engagement sont toutes deux tentées.

Valider une définition de code de chaîne

Pour valider une définition de code de chaîne approuvée à l'aide de l'API REST, voir Valider une définition de code de chaîne dans un canal.

Dans la console, vous pouvez voir les définitions de code de chaîne approuvées, mais non validées dans la page Codes de chaîne déployés pour le canal. Vous pouvez utiliser le menu Actions supplémentaires pour valider le code de chaîne approuvé.

Scénarios de cycle de vie du code de chaîne

Scenario Description
Joindre un canal

En général, dans la console, vous n'approuvez pas une définition de code de chaîne sans la valider. Si vous rejoignez un canal partagé où une définition de code de chaîne a été validée par une autre organisation, la définition de code de chaîne apparaîtra comme validée mais non approuvée dans la page Code de chaîne déployé pour le canal. Vous pouvez utiliser le menu Actions supplémentaires pour approuver la définition du code de chaîne et pour associer un ID ensemble. Vous n'avez pas besoin de valider à nouveau la définition du package.

Mettre à jour une politique d'endossement

Vous pouvez mettre à jour la politique d'endossement dans la définition du code de chaîne sans réinstaller le code de chaîne. Dans la page Codes de chaîne déployés pour le canal, utilisez le menu Plus d'actions pour mettre à niveau la définition de code de chaîne. Développez Politique d'endossement et spécifiez une nouvelle politique, puis cliquez sur Mettre à niveau.

Approuver une définition sans l'installer

Dans un scénario impliquant plusieurs organisations, pour approuver une définition de code de chaîne sans installer le paquetage de code de chaîne, ne spécifiez pas d'ID paquetage. Vous approuvez la définition du code de chaîne validé sur le canal, mais le code de chaîne n'est pas installé sur les pairs de votre organisation. Vous ne pourrez pas utiliser le code de chaîne pour endosser des transactions ou interroger le livre.

Désaccord sur les définitions

Dans un scénario impliquant plusieurs organisations, une organisation qui n'approuve pas une définition de code de chaîne ou qui n'approuve pas une autre définition de code de chaîne ne peut pas exécuter le code de chaîne sur ses pairs. Si d'autres organisations obtiennent suffisamment d'endossements pour valider la définition sur le canal, elles peuvent utiliser le code de chaîne. Les transactions sont toujours ajoutées au livre sur les pairs de toutes les organisations.

Si les organisations ne sont pas d'accord sur une définition de code de chaîne et qu'aucune organisation n'obtient suffisamment d'endossements pour valider la définition sur le canal, la définition ne peut pas être validée et, par conséquent, le code de chaîne ne peut pas s'exécuter.

Plusieurs organisations installent différents ensembles

Vous pouvez spécifier un ID ensemble différent lorsque vous approuvez une définition de code de chaîne pour un canal comportant plusieurs organisations. Si le nom de définition et la politique d'endossement sont identiques, les membres du canal peuvent installer du code de chaîne propre à leur organisation, mais qui lit et écrit des données dans le même espace de noms de code de chaîne.

Créer plusieurs codes de chaîne à partir d'un même ensemble

De même, vous pouvez approuver et valider le même paquetage de code de chaîne plusieurs fois, en spécifiant un nom différent pour chaque définition. Plusieurs instances du code de chaîne sont exécutées sur le canal. Si vous spécifiez également une politique d'endossement différente pour chaque définition, chaque instance de code de chaîne est soumise à une politique d'endossement différente.