Ciclo de Vida do Chaincode

(Hyperledger Fabric v2.x) O ciclo de vida do chaincode descreve o processo de instalação do chaincode em pares e sua implantação em um canal.

O ciclo de vida do chaincode se baseia nos recursos da plataforma Hyperledger Fabric v2.x, que permite a governança descentralizada dos chaincodes. Várias organizações podem concordar com os parâmetros do chaincode, incluindo a política de endosso do chaincode, antes que um chaincode possa interagir com o ledger. Essas funções são implementadas nas novas opções de implantação rápida e implantação avançada, bem como na API REST. Para obter mais informações sobre o novo ciclo de vida, consulte Ciclo de vida do chaincode do Fabric na documentação do Hyperledger Fabric v2.2.4.

Normalmente, para implantar um chaincode instalado, você usa implantação rápida ou implantação avançada na console. O processo de implantação inclui empacotar e instalar o chaincode, bem como aprovar e confirmar a definição do chaincode. Você também pode usar a API REST para concluir as operações de aprovação e compromisso separadamente.

Empacotar e Instalar um Chaincode

Quando você instala o chaincode no Oracle Blockchain Platform, o chaincode é empacotado, instalado e um ID de pacote é gerado automaticamente. O ID do pacote é exibido na guia Chaincodes do console.

Aprovar uma Definição de Chaincode

Para que um chaincode possa ser implantado em um canal, a definição do chaincode deve ser aprovada por organizações suficientes para atender à política LifecycleEndorsement do canal. A política LifecycleEndorsement padrão no Oracle Blockchain Platform permite que qualquer organização aprove a definição de chaincode (em oposição à maioria das organizações). A definição de chaincode inclui os seguintes parâmetros, que devem ser os mesmos para todas as organizações: Chaincode Name, Version, Sequence, Endorsement Policy, Private Data Collection e Init-required. Uma definição de chaincode também pode incluir um Package ID, que não precisa ser o mesmo para todas as organizações.

Depois que uma definição de chaincode é aprovada, uma organização pode coletar endossos de colegas das organizações de aprovação e, em seguida, confirmar a definição de chaincode para o canal.

Para aprovar uma definição de chaincode usando a API REST, consulte Aprovar uma Definição de Chaincode em um Canal.

Na console, quando você usa implantação rápida ou implantação avançada, as etapas de aprovação e compromisso são tentadas.

Confirmar uma Definição de Chaincode

Para confirmar uma definição de chaincode aprovada usando a API REST, consulte Confirmar uma Definição de Chaincode em um Canal.

Na console, você pode ver definições de chaincode aprovadas, mas não confirmadas, na página Chaincodes Implantados do canal. Você pode usar o menu Mais Ações para confirmar o chaincode aprovado.

Cenários do Ciclo de Vida do Chaincode

Cenário Descrição
Entrar em um canal

Normalmente, na console, você não aprova uma definição de chaincode sem submetê-la a commit. Se você ingressar em um canal compartilhado em que uma definição de chaincode foi confirmada por outra organização, verá a definição de chaincode listada como confirmada, mas não aprovada na página Chaincodes Implantados do canal. Você pode usar o menu Mais Ações para aprovar a definição de chaincode e também para associar um ID de pacote. Não é necessário confirmar a definição do pacote novamente.

Atualizar uma política de endosso

É possível atualizar a política de endosso na definição de chaincode sem reinstalar o chaincode. Na página Chaincodes Implantados do canal, use o menu Mais Ações para fazer upgrade da definição de chaincode. Expanda Política de Endosso e especifique uma nova política. Em seguida, clique em Fazer Upgrade.

Aprovar uma definição sem instalar

Em um cenário de várias organizações, para aprovar uma definição de chaincode sem instalar o pacote de chaincode, não especifique um ID de pacote. Você endossa a definição do chaincode que está comprometido com o canal, mas o chaincode não está instalado nos pares da sua organização. Você não poderá usar o chaincode para endossar transações ou consultar o razão.

Discordo sobre definições

Em um cenário de várias organizações, uma organização que não aprova uma definição de chaincode ou aprova uma definição de chaincode diferente não pode executar o chaincode em seus pares. Se outras organizações obtiverem endossos suficientes para confirmar a definição no canal, elas poderão usar o chaincode. As transações ainda são adicionadas ao razão nos pares de todas as organizações.

Se as organizações não concordarem com uma definição de chaincode e nenhuma organização receber endossos suficientes para confirmar a definição no canal, a definição não poderá ser confirmada e, portanto, o chaincode não poderá ser executado.

Várias organizações instalam pacotes diferentes

É possível especificar um ID pacote diferente ao aprovar uma definição de chaincode para um canal com várias organizações. Se o nome da definição e a política de endosso forem iguais, os membros do canal poderão instalar o chaincode específico de sua organização, mas que lê e grava dados no mesmo chaincode namespace.

Criar vários chaincodes de um pacote

Da mesma forma, é possível aprovar e confirmar o mesmo pacote de chaincode várias vezes, especificando um nome diferente para cada definição. Várias instâncias do chaincode são executadas no canal. Se você também especificar uma política de endosso diferente para cada definição, cada instância do chaincode estará sujeita a uma política de endosso diferente.