Skip to content

databasets públicos das pesquisas com envolvimento dos pesquisadores do Creathus

License

Notifications You must be signed in to change notification settings

creathus/pesquisa_creathus

Repository files navigation

amazon-tracing

Framework para rastreamento de geolocalização de espécimes de fauna e flora utiliznado tecnologia de livro-razão distribuído (Distributed Ledger Technology).

Pré-requisitos

  • Visual Studio Code (versão ^1.55.0);
  • Extensão IBM Blockchain Platform para o Visual Studio Code [1] (versão 1.0.40);
  • Dokcer versão v.17.06.2-ce ou superior;

Dependências opcionais

  • Node v10 (v10.15.3 ou superior) ou v12 (v12.13.1 ou superior) e npm v6.x ou superior.

Criação e inicialização da rede Fabric

  • Abrir a extensão IBM Blockchain Platform no editor Visual Studio Code; drawing

  • Clicar sobre o botão Adicionar Ambiente (Add Environment), situado no canto superior direito da aba Fabric Environments; drawing

  • Selecionar a primeira opção - Criar uma nova a partir de modelo (Create new from template); drawing

  • Selecionar a segunda opção - 2 Org template (2 CAs, 2 peers, 1 channel); drawing

  • Digite um nome para o ambiente (guarde este, pois deverá ser usado futuramente); drawing

Gerenciamento do contrato inteligente

Encapsulamento do contrato inteligente

Se ainda não existe um pacote do contrato inteligente gerado, proceder da seguinte forma:

  • Abra o Visual Studio Code da pasta *Chaincode;

  • Clicar sobre o botão More Actions, no canto superior da aba Smart Contracts; drawing

  • Clicar sobre o botão Package Open Project na caixa de diálogo que surgirá. drawing

Obs.: Para o correto funcionamento do processo, deve-se gerar o pacote com uma versão ainda não existente na aba Smart Contracts, caso contrário, resultará em erro. Tal parâmetro é definido no arquivo package.json, situado na raiz do projeto.

Instalação do contrato inteligente

Assegure que a extensão esteja conectada ao ambiente TwoOrgEnv. Caso não esteja, faça-o segundo seguinte instrução:

  • Clique sobre o nome do ambiente TwoOrgEnv na aba Fabric Environments. Isso solicitará a conexão da extensão ao ambiente automaticamente.

Com o ambiente conectado:

  • Clique sobre o botão + Install;

  • drawing

  • Selecione os peers nos quais será instalado o contrato inteligente (no caso, todos os peers da rede); drawing

  • Selecione o pacote do contrato inteligente gerado na seção anterior. drawing

Instanciação do contrato inteligente no canal

Na aba Fabric Environments:

  • Clique sobre o botão + Instantiate, situado dentro da guia Instantiated, para instanciar um novo contrato inteligente; drawing

  • Caso já exista um contrato inteligente instanciado com o mesmo nome, clique sobre o já instanciado com o botão direito (dentro da guia Instantiated) e em Upgrade Smart Contract, que aparecerá numa caixa de diálogo; drawing

  • Selecione o pacote gerado na etapa Encapsulamento do contrato inteligente; drawing

  • No caso deste projeto, não foram programados métodos para serem acionados no momento da instanciação do contrato inteligente. Portanto, deixe em branco e aperte Enter; drawing

  • Na caixa de diálogo que surgir, selecione Yes (nela, a extensão pergunta se será utilizado um arquivo de configuração para coleções privadas); drawing

  • Clique em Browse na caixa de diálogo subsequente; drawing

  • Selecione o arquivo de coleções privadas collections.json; drawing

  • Selecioned como política de endosso Default (single endorser, any org), a padrão oferecida pela extensão. drawing

Execução do serviço REST

  • No diretório Backend, crie um arquivo denominado env.js utilizando como modelo env_template.js. Ele contém os atributos;
    • envName: nome do ambiente Fabric inicializado. No caso deste tutorial, TwoOrgEnv;
    • orgName: nome de uma organização da rede. Neste tutorial, foram criadas Org1 e Org2;
    • identityName: identidade presente na carteira da organização anteriormente configurada. Neste exemplo, por padrão, as duas organizações possuem as identidades admin e OrgXAdmin;
    • ccName: nome do contrato inteligente, definido no arquivo package.json do diretório Chaincode. Neste tutorial, por padrão, o nome escolhido é amazon-tracing.
    • channelName: canal no qual foi instanciado o contrato inteligente. Neste exemplo, foi utilizado mychannel.
  • Através do terminal, entre no diretório Backend;
  • Execute o comando npm run start.

Obs.: Os nomes dos parâmetros utilizados no exemplo podem ser modificados segundo a preferência do usuário.

Execução do script de inserção de dados

Após a iniciação do servidor REST, execute o script read_data.py para inserir registros dos datasets (situados no diretório Datasets) na rede Fabric. É possível alterar o arquivo fonte dos registros na linha 13 do script, dentro do argumento do método read_csv(). Além disso, pode-se controlar a quantidade de registros inseridos na linha 18 do mesmo.

Execução do benchmark com Hyperledger Caliper

Para a realização da avalição de performance da rede Fabric, entre no diretório Chaincode/caliper_workspace e siga as instruções de [2]

Simulação do experimento com The One

  • Altere os dados de entrada como dataset no arquivo default_settings.txt.
  • Todos os datasets avaliados estão no diretório data (bufalo_evaluation_otimized_, lobo_cinza_evaluation_otimized_, sabia_evaluation_otimized_ e tangara_evaluation_otimized_).
  • Execute o arquivo binário one.bat.
  • Após a execução da simulação, na pasta reports serão gerados os relatórios como de Entrega de Pacotes ou Estado da Mensagem.

Referências

[1] IBM Blockchain Platform Extension for VS Code. Disponível em: https://marketplace.visualstudio.com/items?itemName=IBMBlockchain.ibm-blockchain-platform.

[2] Performance testing smart contracts developed within VS Code using Hyperledger Caliper. Disponível em: https://developer.ibm.com/technologies/blockchain/tutorials/blockchain-performance-testing-smart-contracts-vscode-caliper/.

About

databasets públicos das pesquisas com envolvimento dos pesquisadores do Creathus

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published