Implante seu Chaincode usando o Visual Studio Code
Depois de criar um projeto de chaincode, você pode implantá-lo localmente na rede Hyperledger Fabric gerada automaticamente ou remotamente no Oracle Blockchain Platform Cloud ou Enterprise Edition. Você também pode empacotar o projeto chaincode para implantação manual no Oracle Blockchain Platform.
Implante o Chaincode em uma rede local do Hyperledger Fabric
Depois de criar seu projeto chaincode, você pode testá-lo em uma rede básica local do Hyperledger Fabric.
Quando você instala a extensão Blockchain App Builder para Visual Studio Code, ela cria automaticamente uma rede Hyperledger Fabric com um único canal. Ele está listado como Local Environment
no painel Ambientes. Não é possível excluir ou modificar este ambiente; você pode apenas implantar chaincodes nele e recriá-lo se ele parar de funcionar corretamente.
A rede de teste criada quando você instala o Blockchain App Builder executa o Hyperledger Fabric v2.5.7 e o Hyperledger Fabric CA v1.5.9.
A implantação do chaincode do Blockchain App Builder inicia a rede básica do Hyperledger Fabric, outros serviços e instala e implanta o chaincode para você.
- No painel Detalhes do Código de Cadeia, selecione Implantar.
- No assistente de implantação:
- Verifique se o nome do chaincode correto está selecionado.
- Selecione seu ambiente de destino. Para implantação local, escolha Ambiente Local.
- Selecione o canal no qual deseja implantar. Um canal chamado "
mychannel
" é criado por padrão quando a extensão é instalada e pode ser usado para teste. - Opcionalmente, informe qualquer parâmetro inicial necessário.
- Para projetos de token, na primeira vez que você implantar, deverá informar uma lista de administradores de token como parâmetro. A lista é um array de informações do
{user_id, org_id}
que especifica os administradores de token. Para a rede local do Hyperledger Fabric, use o valorOrg1MSP
para o campoorg_id
. Para códigos de cadeia NFT, as chaves do parâmetroadminList
sãouserId
eorgId
para TypeScript eUserId
eOrgId
para Go. Após a primeira vez que você implantar, poderá fornecer um array vazio para o parâmetroadminList
ou poderá usar o parâmetroadminList
para adicionar administradores de token. Outros implantadores que não são o primeiro implantador devem fornecer um array vazio para o parâmetroadminList
. Para fazer isso, abra a lista de parâmetrosInit
no painel de implantação e clique no botão de sinal de menos (–) ao lado do parâmetroadminList
, que selecionará um array vazio.
- Clique em Disponibilizar.
Quando a implantação do chaincode terminar, a console Saída mostrará que o chaincode foi instalado e implantado com sucesso no canal fornecido.
Diagnosticando e Solucionando Problemas
Você pode encontrar os problemas a seguir ao executar seu projeto chaincode em uma rede local.
- Permissões de Ir ausentes
- Ao instalar o projeto Go chaincode na rede local, você poderá ver um erro semelhante ao seguinte texto na console Saída:
INFO (Runtime): 2020/06/22 22:57:09 build started INFO (Runtime): Building .... INFO (Runtime): go build runtime/cgo: copying /Users/myname/Library/Caches/go-build/f8/.….….d: open /usr/local/go/pkg/darwin_amd64/runtine/ cgo.a: permission denied ERROR (Runtime): go build runtine/cgo: copying /Users/myname/Library/Caches/go-build/f8/.….….d: open /usr/local/go/pkg/darwin_amd64/runtime/ cgo.a: permission denied INFO (Runtime): An error occurred while building: exit status 1
- Falha na implantação
- Em decorrência de falha na implantação, implantação corrompida, um contêiner de mesmo nível do Docker estar cheio ou um par do Docker que foi interrompido na rede local, você poderá ver um erro semelhante ao seguinte texto:
============ Started instantiate Chaincode ============ [2028-19-01T19:25:lO.372] [ERROR] default - Error instantiating Chaincode GollGl on channel mychannel, detailed error: Error: error starting container: error starting container: Failed to generate platform-specific docker build: Failed to pull hyperledger/fabric-ccenv:latest : API error (404): manifest for hyperledger/ fabric-ccenv:latest not found: manifest unknown: manifest unknown [2020-19-01T19:25:10.372] (INFO) default - ============ Finished instantiate Chaincode ============ [2020-19-01119:25:10.372] [ERROR] default - Error: Error instantiating Chaincode Goll01 on channel mychannel, detailed error: Error: error starting container: error starting container: Failed to generate platfom-specific docker build: Failed to pull hyperledger/fabric-ccenv: latest : API error (404): manifest for hyperledger/ fabric-ccenv:lalest not found: manifest unknown: manifest unknown exited: signal: terminated INFO: exited: signal: terminated ERROR: Error in Chaincode deployment
- Reconstrução de Ambiente Obrigatória
- Talvez você veja um erro semelhante ao seguinte texto:
Starting ca.example.com ... Starting orderer.example.com ... Starting orderer.example.com ... error ERROR: for orderer.example.com Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted Starting ca.example.com... error ERROR: for ca.example.com Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted ERROR: for orderer.example.com Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted ERROR: for ca.example.com Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted Encountered errors while bringing up the project. ERROR: Starting ca.example.com ... Starting orderer.example.com ... Starting orderer.example.com ... error ERROR: for orderer.example.com Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted Starting ca.example.com ... error ERROR: for ca.example.com Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted ERROR: for orderer.example.com Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted ERROR: for ca.example.com Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted Encountered errors while bringing up the project. ERROR: Error in Chaincode deployment
Implante seu Chaincode em uma Rede Remota do Oracle Blockchain Platform
Depois de implantar e testar seu projeto de chaincode em uma rede local para garantir que ele esteja funcionando conforme projetado, você poderá implantá-lo no Oracle Blockchain Platform.
Criar uma Configuração de Conexão com uma Instância do Oracle Blockchain Platform
Você deve ter uma instância do Oracle Blockchain Platform ativa e em execução para concluir esta etapa.
- No painel Ambientes do Visual Studio Code, clique no ícone Criar Ambiente.
- No assistente Detalhes dos Ambientes:
- Informe o nome do seu ambiente remoto.
- Digite uma descrição.
- Em URL do Proxy REST, informe o URL do proxy REST da instância remota do Oracle Blockchain Platform.
- Informe o nome de usuário e a senha do Oracle Identity Cloud Service para um usuário do Oracle Blockchain Platform com as atribuições
ADMIN
ouREST_CLIENT
. Para chamar o chaincode, é necessário apenas a atribuiçãoREST_CLIENT
. Para implantar ou fazer upgrade do chaincode, o usuário do Identity Cloud Service também deve receber a atribuiçãoADMIN
. Para obter mais informações sobre usuários e atribuições, consulte Configurar Usuários e Atribuições de Aplicativo em Administrando o Oracle Blockchain Platform.
- Clique em Criar para salvar o ambiente. O nome de usuário e a senha são salvos temporariamente na sessão local do Visual Studio Code. Se você fechar o Visual Studio Code e, em seguida, iniciar uma nova sessão do Visual Studio Code, deverá informar o nome de usuário e a senha novamente.
Implante seu Chaincode
- Selecione o projeto chaincode que você deseja implantar no painel Chaincodes.
- No painel Detalhes do Código de Cadeia, selecione Implantar.
- No assistente de implantação, o nome do projeto chaincode já foi especificado.
- Selecione seu ambiente de destino. Para implantação remota, escolha o ambiente do Oracle Blockchain Platform que você configurou anteriormente.
- Informe o nome do canal no qual deseja implantar.
- Opcionalmente, defina quaisquer parâmetros iniciais obrigatórios.
- Clique em Disponibilizar.
- Os detalhes do Oracle Blockchain Platform foram extraídos com sucesso.
- A lista de pares foi extraída com sucesso.
- O projeto chaincode foi instalado com sucesso.
- O projeto chaincode foi aprovado e confirmado com êxito.
- O chaincode foi implantado com sucesso em cada par e canal.
Em um ambiente com várias organizações, para implantar o chaincode novamente no mesmo canal por meio de uma instância do participante, use o console para implantar o chaincode.
Atualizando o Projeto Chaincode
O upgrade do chaincode é tratado automaticamente pelo Blockchain App Builder. Depois de fazer alterações em seu chaincode, quando você implanta novamente, o projeto é atualizado automaticamente. Ao executar o processo de upgrade, você pode especificar um array vazio para o parâmetro adminList
ou usar o parâmetro adminList
para adicionar administradores de token. Se você não for o primeiro implantador, deverá fornecer um array vazio para o parâmetro adminList
. Para especificar um array vazio para o parâmetro adminList
, abra a lista de parâmetros Init
no painel de implantação e clique no botão de sinal de menos (–) ao lado do parâmetro adminList
, que selecionará um array vazio.
- Os detalhes do Oracle Blockchain Platform foram extraídos com sucesso.
- A lista de pares foi extraída com sucesso.
- Foi feita uma verificação para determinar se o projeto chaincode já está instalado e, em caso afirmativo, a versão foi extraída.
- A versão do chaincode foi atualizada com sucesso (por exemplo, da versão 1.0 para a 2.0).
Em um ambiente com várias organizações, para atualizar o chaincode, use o console e aprove manualmente o chaincode dos participantes.
Empacote seu Projeto Chaincode para Implantação Manual no Oracle Blockchain Platform
Você pode empacotar seus projetos de chaincode para implantação manual no Oracle Blockchain Platform Cloud ou Enterprise Edition.
A função Pacote cria um arquivo compactado que contém somente os arquivos de compilação e distribuição. As pastas binary
, libs
, node_modules
e test
do seu projeto de chaincode não são incluídas. Este arquivo compactado pode ser submetido a upload manualmente no Oracle Blockchain Platform para implantação.
- Selecione seu projeto chaincode no painel Chaincodes.
- Clicar com o botão direito do mouse e selecionar Pacote.
- Selecione um local para salvar o pacote e clique em Selecionar Pasta de Saída.
Devido a alterações nos pré-requisitos do software, ao executar a função Pacote para o chaincode TypeScript, você será solicitado a informar a data de provisionamento da instância do Oracle Blockchain Platform para a qual deseja criar o pacote. O código de cadeia TypeScript criado no Blockchain App Builder não é compatível com as versões anteriores do Oracle Blockchain Platform sem alterações na infraestrutura subjacente. O Blockchain App Builder embala a infraestrutura chaincode de acordo com sua seleção.
Quando o comando é concluído com êxito, o local do pacote é retornado.