Escrever um Chaincode

Um chaincode é gravado em Go, Node.js ou Java e, em seguida, empacotado em um arquivo ZIP instalado na rede do Oracle Blockchain Platform.

Os códigos de cadeia definem o esquema de dados no razão, inicializam-no, executam atualizações quando acionadas por aplicativos e respondem a consultas. Os Chaincodes também podem postar eventos que permitem que os aplicativos sejam notificados e executem operações downstream. Por exemplo, depois que ordens de compra, faturas e registros de entrega tiverem sido correspondidos por um chaincode, ele poderá contabilizar um evento para que um aplicativo assinante possa processar pagamentos relacionados e atualizar um sistema ERP interno.

Recursos para Desenvolvimento de Chaincode

O Oracle Blockchain Platform usa o Hyperledger Fabric como base. Use a documentação do Hyperledger Fabric para ajudá-lo a gravar códigos de cadeia válidos.

  • Bem-vindo ao Hyperledger Fabric. As seções Principais Conceitos e Tutoriais devem ser lidas antes de você escrever seu próprio chaincode.

  • Go Programming Language. Os compiladores, ferramentas e bibliotecas Go fornecem uma variedade de recursos que simplificam a gravação de chaincodes.

  • Shim do pacote. O pacote shim fornece APIs para que o chaincode acesse suas variáveis de estado, contexto de transação e chame outros chaincodes. Isso documenta a sintaxe real necessária para o seu chaincode.

O Oracle Blockchain Platform fornece amostras para download que ajudam a entender como gravar códigos de cadeia e aplicativos. Consulte O Que São Amostras de Chaincode?

Você pode adicionar uma sintaxe de rich-query aos seus chaincodes para consultar o banco de dados de estado. Consulte Sintaxe de Consulta Avançada SQL e Sintaxe de Consulta Avançada CouchDB.

Embalar e Compactar um Chaincode Go

Depois de escrever seu chaincode, coloque-o em um arquivo ZIP. Não é necessário criar um pacote para o chaincode Go ou assiná-lo - o processo de instalação e implantação do Oracle Blockchain Platform faz isso por você, conforme descrito em Workflow Típico para Implantar Chaincodes (Hyperledger Fabric v2.x) ou Workflow Típico para Implantar Chaincodes (Hyperledger Fabric v1.4.7).

Se o seu chaincode tiver dependências externas, você poderá colocá-las no diretório de fornecedores do seu arquivo ZIP.

Forneça os Chaincodes Shim for Go (Hyperledger Fabric v2.x)

A dependência de shim do chaincode Go, que foi incluída anteriormente com versões anteriores do Hyperledger Fabric, não foi incluída no Hyperledger Fabric v2.x. Agora o shim deverá ser vendido (importado) para códigos de cadeia Go antes de ser instalado em um sistema remoto que execute o Hyperledger Fabric v2.x.

Você pode usar módulos Go ou uma ferramenta de terceiros, como govendor para fornecer o shim do chaincode e atualizá-lo para a versão que funciona com o Hyperledger Fabric v2.x.

Para obter mais informações, consulte Alterações de shim do Chaincode (apenas código de cadeia Go) e Fazer Upgrade de Chaincodes com shim vendido na documentação do Hyperledger Fabric. Para obter mais informações sobre os módulos Go, consulte Referência de Módulos Go.

Pacote e Compactar um Código de Chaincode Node.js

Se você estiver gravando um chaincode Node.js, será necessário criar um arquivo package.json com duas seções:
  • A seção scripts declara como iniciar o chaincode.

  • A seção dependencies especifica as dependências.

Veja a seguir um exemplo de package.json para um chaincode Node.js:

{
	"name": "chaincode_example02",
	"version": "1.0.0",
	"description": "chaincode_example02 chaincode implemented in Node.js",
	"engines": {
		"node": ">=8.4.0",
		"npm": ">=5.3.0"
	},
	"scripts": { "start" : "node chaincode_example02.js" },
	"engine-strict": true,
	"license": "Apache-2.0",
	"dependencies": {
		"fabric-shim": "~1.3.0"
	}
}
As regras de empacotamento para um código de cadeia Node.js são:
  • package.json deve estar no diretório raiz.
  • O arquivo de entrada JavaScript pode estar localizado em qualquer lugar do pacote.
  • Se "start" : "node <start>.js" não for especificado em package.json, server.js deverá estar no diretório raiz.

Coloque o chaincode e o arquivo de pacote em um arquivo ZIP para instalá-lo no Oracle Blockchain Platform.

Empacotar e Compactar um Chaincode Java

Se você estiver escrevendo um chaincode Java, poderá escolher Gradle ou Maven para criar o chaincode.

Se você estiver usando o Gradle, coloque o chaincode, build.gradle e settings.gradle em um arquivo ZIP para instalá-lo no Oracle Blockchain Platform. Veja a seguir uma lista de arquivos de exemplo de um pacote de chaincode:
Archive:  example_gradle.zip 
 Length      Date    Time    Name
---------  ---------- -----   ---- 
      610  02-14-2019 01:36   build.gradle
       54  02-14-2019 01:28   settings.gradle
        0  02-14-2019 01:28   src/
        0  02-14-2019 01:28   src/main/
        0  02-14-2019 01:28   src/main/java/
        0  02-14-2019 01:28   src/main/java/org/
        0  02-14-2019 01:28   src/main/java/org/hyperledger/
        0  02-14-2019 01:28   src/main/java/org/hyperledger/fabric/
        0  02-14-2019 01:28   src/main/java/org/hyperledger/fabric/example/
     5357  02-14-2019 01:28   src/main/java/org/hyperledger/fabric/example/SimpleChaincode.java
---------                     -------
     6021                     10 files
Se você estiver usando o Maven, coloque o chaincode e o pom.xml em um arquivo ZIP para instalá-lo no Oracle Blockchain Platform. Veja a seguir uma lista de arquivos de exemplo de um pacote de chaincode:
Archive:  example_maven.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
     3313  02-14-2019 01:52   pom.xml
        0  02-14-2019 01:28   src/
        0  02-14-2019 01:28   src/chaincode/
        0  02-14-2019 01:28   src/chaincode/example/
     4281  02-14-2019 01:28   src/chaincode/example/SimpleChaincode.java
---------                     -------
     7594                     5 files

Testando um Chaincode

Depois de escrever seu chaincode, você precisa testá-lo. Consulte:

Instalando e Implantando um Chaincode

Depois de testar seu chaincode, você poderá implantá-lo seguindo as informações em Workflow Típico para Implantar Chaincodes (Hyperledger Fabric v2.x) ou Workflow Típico para Implantar Chaincodes (Hyperledger Fabric v1.4.7).

Atualizando um Chaincode

Você pode fazer upgrade de um chaincode implantado seguindo as etapas em Fazer Upgrade de um Chaincode (Hyperledger Fabric v2.x) ou Fazer Upgrade de um Chaincode (Hyperledger Fabric v1.4.7).