/TCC-Blockchain-Licitacoes

Este é o trabalho de conclusão de curso de Sistemas de Informação na Universidade Estadual do Tocantins (UNITINS), e tem como objetivo a criação de uma rede blockchain privada, permissionada e gas free com Hyperledger Besu, para a realização de licitações públicas.

Primary LanguageTypeScript

TCC - Blockchain Licitações

Este é o trabalho de conclusão de curso, este trabalho de conclusão de curso tem como objetivo a criação de uma rede blockchain privada, permissionada e gas free com Hyperledger Besu, para a realização de licitações públicas.

Tecnologias

  • Hyperledger Besu
  • Docker
  • Docker Compose
  • Hardhat
  • Solidity
  • IPFS
  • .Net Core
  • C#

Requisitos

  • Docker
  • Docker Compose
  • .Net Core
  • NPM
  • Hardhat
  • Curl
  • jq
  • Git
  • Besu (versão 24.3.0)

Autores

Roadmap

Implementação

  • Implementar a rede blockchain privada, permissionada e gas free com Hyperledger Besu
  • Utilizar o Netherium para realizar a comunicação entre a API C# e a blockchain
  • Subir um nó IPFS
  • Subir grafana e prometheus via docker
  • Implementar os contratos inteligentes
  • Implementar a aplicação web para a realização das licitações
  • Melhorar os scripts para facilitar a execução da rede

Dissertação

  • Revisar o cronograma, como um todo, possuindo o que foi produzido em TCC1 e o que será produzido em TCC2

Artefatos de Software

  • Arquitetura do Sistema
  • Casos de Uso
  • Diagrama de Atividades
  • Diagrama de Classe
  • Diagrama de Entidade Relacional
  • Prototipação

Executando localmente

  1. Clone o projeto

        git clone
  2. Vá para o diretório do projeto

        cd blockchain-licitacoes
  3. Execute o arquivo init.sh

        ./init.sh
  4. Inicie cada nó

    cd Node-1
    start_besu.sh
    cd Node-2
    start_besu.sh
    cd Node-3
    start_besu.sh
    cd Node-4
    start_besu.sh
    
  5. Copie os links de enodes de cada nó nas saídas dos comandos acima

  6. Edite o arquivo add_enodes.sh e adicione os enodes de cada nó

  7. Adicione os enodes de cada nó

    ./add_enodes

Tip

Para adicionar uma conta à rede (pode ser o endereço de algum nó)

curl -X POST --data '{"jsonrpc":"2.0","method":"perm_addAccountsToWhitelist","params":[["0x<Endereço_da_conta>"]],"id":1}' http://localhost:8545

Tip

Para verificar se a conta foi adicionada

curl -X POST --data '{"jsonrpc":"2.0","method":"perm_getAccountsWhitelist","params":[],"id":1}' http://localhost:8545

Tip

Verificar se os nós estão conectados

curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' http://localhost:8545

Deploy do contrato

  1. Vá para o diretório do contrato

    cd contracts
  2. Instale as dependências

    npm install
  3. Compile o contrato

    npx hardhat compile
  4. Alterar o arquivo hardhat.config.js

    module.exports = {
    solidity: "0.8.0",
    networks: {
        besu: {
        url: "http://localhost:8545",
        accounts: ["0x<Endereço_da_conta>"],
        },
    },
    };
  5. Deploy do contrato

    npx hardhat ignition deploy ./ignition/modules/<Contrato>.js --network besuPrivate

Documentação

Abaixo estão os links para a documentação do projeto, onde é possível encontrar mais informações sobre o projeto.