Usar os SDKs do Hyperledger Fabric para Desenvolver Aplicativos

Os aplicativos usam um kit de desenvolvimento de software (SDK) para acessar as APIs que permitem consultas e atualizações no razão.Você pode instalar e usar os SDKs do Hyperledger Fabric para desenvolver aplicativos para o Oracle Blockchain Platform.

As APIs REST fornecidas pelo Oracle Blockchain Platform foram criadas com a máxima flexibilidade em mente; você pode chamar uma transação, chamar uma consulta ou exibir o status de uma transação. Consulte API REST para o Oracle Blockchain Platform.

No entanto, essa flexibilidade significa que você provavelmente desejará encapsular os pontos finais de API existentes em um aplicativo para fornecer controle no nível do objeto. Os aplicativos podem conter operações muito mais refinadas.

Versões do SDK

Várias versões dos SDKs do Hyperledger Fabric estão disponíveis. Use a versão do SDK que corresponde à versão do Hyperledger Fabric na qual sua instância se baseia.

Instalando o SDK do Hyperledger Fabric para Node.js

Informações sobre como usar o Fabric SDK para Node.js podem ser encontradas aqui: Documentação do Hyperledger Fabric SDK para Node.js

Na guia Ferramentas do Desenvolvedor, abra o painel Desenvolvimento de Aplicativos. Você pode instalar o SDK Node.js do Hyperledger Fabric usando o link nesta guia.

Instalando o SDK do Hyperledger Fabric para Java

Informações sobre como usar o Fabric SDK para Java podem ser encontradas aqui: Documentação do Hyperledger Fabric SDK para Java

Na guia Ferramentas do Desenvolvedor, abra o painel Desenvolvimento de Aplicativos.

Instale uma ferramenta de compilação, como Apache Maven.

Estruturando seu Aplicativo

Estruture seu aplicativo Java de forma semelhante ao seguinte exemplo:

/Application
  /artifacts
    /cypto
      /orderer
        Contains the certificates required for the application to act on the orderer node
        In participant instances only contains TLS certificates
      /peer
        Contains the certificates required for the application to act on the peer node
    /src
      chaincode.go if installing and deploying chaincode to the blockchain
  /java
    pom.xml or other build configuration files
    /resources
      Any resources used by the Java code, including artifacts such as the endorsement policy yaml file and blockchain configuration properties
    /src
      Java source files

Estruture seu aplicativo Node.js de forma semelhante ao seguinte exemplo:

/Application
  /artifacts
    /cypto
      /orderer
        Contains the certificates required for the application to act on the orderer node
        In participant instances only contains TLS certificates
      /peer
        Contains the certificates required for the application to act on the peer node
    /src
      chaincode.go if installing and deploying chaincode to the blockchain
  /node
    package.json file
    application.js
    /app
      Any javascript files called by the application
      /tools

Executando o aplicativo

Agora você está pronto para executar e testar o aplicativo. Além de quaisquer mensagens de status retornadas pelo seu aplicativo, você pode verificar o razão na console do Oracle Blockchain Platform para ver suas alterações:

  1. Vá para a guia Canais na console e localize e clique no nome do canal que está executando o chaincode.
  2. No painel Razão do canal, exiba o resumo do razão do chaincode.

Atualize os SDKs do Hyperledger Fabric v2.x para Trabalhar com o Oracle Blockchain Platform

Há uma incompatibilidade entre um componente de infraestrutura do OCI e o SDK Java fornecido com o Hyperledger Fabric v2.x. Siga as etapas deste tópico para corrigir esse problema.

Métodos de atualização do SDK do Hyperledger Fabric

Há duas maneiras de atualizar o SDK:

  • Faça download do pacote modificado a partir do console. Criamos um arquivo grpc-netty-shaded-1.38.0.jar atualizado, que é o módulo referenciado pelo Java SDK que requer modificações.
  • Crie o pacote manualmente, conforme descrito neste tópico.

Para fazer download do arquivo grpc-netty-shaded-1.38.0.jar, clique na guia Ferramentas do Desenvolvedor da console e selecione o painel Desenvolvimento de Aplicativos.

Construindo manualmente o pacote

Para o projeto fabric-sdk-java, conclua as etapas a seguir para reconstruir o pacote grpc-netty-shaded para conectar os pares e os solicitantes ao cliente grpcs (via TLS). O pacote grpc-netty-shaded é um subprojeto de grpc-java.

  1. Instalar dependências do projeto:
    mvn install
  2. Faça download do código-fonte grpc-java:

    git clone https://github.com/grpc/grpc-java.git
  3. Localize a versão grpc que seu fabric-sdk-java usa e verifique o código.
    No diretório grpc-java, verifique a versão do grpc que o fabric-sdk-java usa:
    cd grpc-java && git checkout v1.38.0
  4. Altere o código para evitar um erro alpn do lado do servidor. Crie um arquivo de patch grpc-java-patch com o seguinte conteúdo:
    diff --git a/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java b/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
    index 19d3e01b7..ebc4786a3 100644
    — a/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
    +++ b/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
    @@ -611,7 +611,8 @@ final class ProtocolNegotiators {
    SslHandshakeCompletionEvent handshakeEvent = (SslHandshakeCompletionEvent) evt;
    if (handshakeEvent.isSuccess()) {
    SslHandler handler = ctx.pipeline().get(SslHandler.class);
    
        if (sslContext.applicationProtocolNegotiator().protocols()
        + if (handler.applicationProtocol() == null
        + || sslContext.applicationProtocolNegotiator().protocols()
        .contains(handler.applicationProtocol())) {
        // Successfully negotiated the protocol.
        logSslEngineDetails(Level.FINER, ctx, "TLS negotiation succeeded.", null);
  5. Aplicar o patch:

    git apply grpc-java.patch
  6. Crie o projeto para gerar o pacote com patch de destino. Use o gradle para criar o projeto grpc-java-shaded:

    cd netty/shaded
    gradle build -PskipAndroid=true -PskipCodegen=true

    Depois que a compilação for concluída, o pacote .jar de destino com patch estará disponível em grpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar.

  7. Adicione o pacote com patch ao seu repositório local do Maven.

    Substitua o pacote grpc-netty-shaded .jar original pelo pacote com patch em uma das duas formas a seguir:
    • Use o Maven para instalar o pacote por arquivo local:
      mvn install:install-file -Dfile=grpc-netty-shaded-build/grpc-netty-shaded-1.38.0.jar -DgroupId=io.grpc -DartifactId=grpc-netty-shaded -Dversion=1.38.0 -Dpackaging=jar
      Você deve manter o destino groupid, artifactid e version igual ao pacote que deseja substituir.
    • Substitua manualmente o pacote. Vá para o repositório Maven local, localize o diretório onde o pacote de destino está localizado e substitua o pacote pelo pacote com patch.

  8. Execute o projeto.