Cycle de vie du code chaîne

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

Le cycle de vie du code chaîne est basé sur les fonctionnalités de la plate-forme Hyperledger Fabric v2.x, qui permet la gouvernance décentralisée des codes chaîne. Plusieurs organisations peuvent s'accorder sur les paramètres de code chaîne, y compris la stratégie d'approbation de code chaîne, pour qu'un code chaîne puisse interagir avec le registre. Ces fonctions sont implémentées 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, reportez-vous à la section Fabric chaincode lifecycle dans la documentation Hyperledger Fabric v2.2.4.

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

Package et installation d'un code de chaîne

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

Approbation d'une définition de code chaîne

Pour qu'un code chaîne puisse être déployé sur un canal, la définition de code chaîne doit être approuvée par suffisamment d'organisations pour respecter la stratégie LifecycleEndorsement du canal. La stratégie LifecycleEndorsement par défaut dans Oracle Blockchain Platform permet à toute organisation d'approuver la définition de code chaîne (par opposition à la majorité des entreprises). La définition du code 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 chaîne peut également inclure Package ID, ce qui n'a pas besoin d'être le même pour toutes les organisations.

Une fois qu'une définition de code chaîne est approuvée, une organisation peut collecter les approbations auprès des pairs des organisations approbatrices, puis valider la définition de code chaîne dans le canal.

Pour approuver une définition de code chaîne à l'aide de l'API REST, reportez-vous à Approbation d'une définition de code chaîne dans un canal.

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

Valider une définition de code chaîne

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

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

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

Scenario Description
Rejoindre un canal

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

Mettre à jour une stratégie d'approbation

Vous pouvez mettre à jour la stratégie d'approbation dans la définition de code chaîne sans réinstaller le code chaîne. Sur la page Codes chaîne déployés pour le canal, utilisez le menu Actions supplémentaires pour mettre à niveau la définition de code chaîne. Développez Stratégie d'approbation et indiquez une nouvelle stratégie, puis cliquez sur Mettre à niveau.

Approuver une définition sans l'installer

Dans un scénario multiorganisation, pour approuver une définition de code chaîne sans installer le package de code chaîne, ne spécifiez pas d'ID de package. Vous approuvez la définition du code chaîne validé pour le canal, mais le code chaîne n'est pas installé sur les pairs de votre organisation. Vous ne pourrez pas utiliser le code chaîne pour approuver les transactions ni interroger le registre.

Désaccord sur les définitions

Dans un scénario impliquant plusieurs organisations, une organisation qui n'approuve pas la définition de code chaîne ou qui n'approuve pas une définition de code chaîne différente ne peut pas exécuter le code 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 chaîne. Les transactions sont toujours ajoutées au livre sur les homologues de toutes les organisations.

Si les entreprises ne sont pas d'accord sur une définition de code chaîne et qu'aucune organisation n'obtient suffisamment d'approbation pour valider la définition dans le canal, celle-ci ne peut pas être validée (commit). Par conséquent, le code chaîne ne peut pas être exécuté.

Plusieurs organisations installent différents packages

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

Créer plusieurs codes chaîne à partir d'un package

De même, vous pouvez approuver et valider le même package de code chaîne plusieurs fois, en indiquant un nom différent pour chaque définition. Plusieurs instances du code chaîne sont exécutées sur le canal. Si vous indiquez également une stratégie d'approbation différente pour chaque définition, chaque instance de code chaîne est soumise à une stratégie d'approbation différente.