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 Chaincodes definem o esquema de dados no razão, inicializam-no, concluem atualizações quando acionadas por aplicativos e respondem a consultas. Os Chaincodes também podem publicar eventos que permitem que os aplicativos sejam notificados e concluam operações downstream. Por exemplo, depois que ordens de compra, NFFs e registros de entrega tiverem sido correspondidos por um chaincode, ele poderá publicar um evento para que um aplicativo assinante possa processar pagamentos relacionados e atualizar um sistema ERP interno.
Recursos para o Chaincode Development
O Oracle Blockchain Platform usa o Hyperledger Fabric como sua base. Use a documentação do Hyperledger Fabric para ajudá-lo a escrever códigos de cadeia válidos.
-
Bem-vindo ao Hyperledger Fabric. Leia as seções Principais Conceitos e Tutoriais antes de escrever seu próprio chaincode.
-
Vá para a Linguagem de Programação. Os compiladores, ferramentas e bibliotecas Go fornecem uma variedade de recursos que simplificam a criação de códigos de cadeia.
-
Shim do pacote. O pacote shim fornece APIs para que o chaincode acesse suas variáveis de estado, obtenha contexto de transação e chame outros chaincodes. A documentação do pacote shim descreve a sintaxe real necessária para o seu chaincode.
O Oracle Blockchain Platform fornece amostras para download que ajudam você a entender como escrever chaincodes e aplicativos. Consulte O que São Amostras de Chaincode?
Você pode adicionar sintaxe rich-query aos seus códigos de cadeia para consultar o banco de dados de estado. Consulte Sintaxe de Consulta Rich em SQL e CouchDB Sintaxe de Consulta Rich.
Pacotes para Go Chaincode
Depois de escrever seu chaincode, compacte-o em um arquivo no formato 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 para você, conforme descrito em Workflow Típico para Implantar Chaincodes (Hyperledger Fabric v2.x).
Se o seu chaincode tiver dependências externas, você poderá colocá-las no diretório do fornecedor do seu arquivo ZIP.
Vender o Shim para Go Chaincodes
A dependência do shim do chaincode Go, que foi incluída anteriormente com versões anteriores do Hyperledger Fabric, não está incluída no Hyperledger Fabric v2.x. O shim agora deve ser vendored (importado) para códigos de cadeia Go antes de serem instalados em um par.
É possível usar os módulos Go ou uma ferramenta de terceiros, como a govendor, para fornecer o código de cadeia e atualizá-lo para a versão que funciona com o Hyperledger Fabric v2.x.
Para obter mais informações, consulte Chaincode shim changes (Go chaincode only) e Fazer Upgrade de Chaincodes com shim vendored na documentação do Hyperledger Fabric. Para obter mais informações sobre os módulos Go, consulte Referência de Módulos Go.
Empacotar um Chaincode Node.js
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"
}
}
- O arquivo
package.json
deve estar no diretório raiz. - O arquivo de entrada JavaScript pode ser localizado em qualquer lugar do pacote.
- Se
"start" : "node <start>.js"
não for especificado no arquivopackage.json
, o arquivoserver.js
deverá estar no diretório raiz.
Compacte o chaincode e o arquivo de pacote no formato ZIP para instalá-lo no Oracle Blockchain Platform.
Empacotar um Chaincode Java
Se você estiver escrevendo um chaincode Java, poderá escolher Gradle ou Maven para criar o 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
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
Teste seu chaincode depois de escrevê-lo. Consulte os tópicos a seguir:
Instalando e Implantando um Chaincode
Depois de testar seu chaincode, você poderá implantá-lo seguindo as informações em Typical Workflow to Deploy Chaincodes (Hyperledger Fabric v2.x).
Atualizando um Chaincode
Atualize um chaincode implantado seguindo as etapas em Upgrade a Chaincode (Hyperledger Fabric v2.x).