/UniBlock

A generic and didatic implementation of Blockchain

Primary LanguagePythonApache License 2.0Apache-2.0

UniBlock - BlockChain Implementation

blockchain

UniBlock é uma implementação de uma estrutura de BlockChain realizada na disciplina de Sistemas Distribuídos do Sétimo Semestre da Universidade Federal do Pampa - Brasil.

O que é um BlockChain

O blockchain (também conhecido como “o protocolo da confiança”) é uma tecnologia de registro distribuído que visa a descentralização como medida de segurança. São bases de registros e dados distribuídos e compartilhados que têm a função de criar um índice global para todas as transações que ocorrem em um determinado mercado. Funciona como um livro-razão, só que de forma pública, compartilhada e universal, que cria consenso e confiança na comunicação direta entre duas partes, ou seja, sem o intermédio de terceiros. Está constantemente crescendo à medida que novos blocos completos são adicionados a ela por um novo conjunto de registros. Os blocos são adicionados à blockchain de modo linear e cronológico. Cada nó - qualquer computador que conectado a essa rede tem a tarefa de validar e repassar transações - obtém uma cópia da blockchain após o ingresso na rede. A blockchain possui informação completa sobre endereços e saldos diretamente do bloco gênese até o bloco mais recentemente concluído.

Fonte: Wikipédia, BlockChain


Instalação

Foi utilizado apenas pacotes nativos do Python3. Entretanto, em algumas distribuições os pacotes podem variar, neste caso instale as dependências utilizando:

$ pip3 install -r requirements.txt

Uso

O código possui 3 tipos de usuários:

Tipo de Usuário Como Funciona Como iniciar
Trader Usuário que adicionará dados no BlockChain $ python3 main.py -ki <keeperIP> -kp <keeperPORT> --trader
Miner Usuário que minera o Bloco $ python3 main.py -ki <keeperIP> -kp <keeperPORT> --miner
Keeper Usuário que coordena a entrada de novos usuários na BlockChain $ python3 main.py -ki <keeperIP> -kp <keeperPORT> --keeper

Nota: Quando o sistema for iniciado, inicializar apenas um Keeper e primeiro que os demais.

Maiores Informações sobre a implementação, consulte a página de documentação do projeto.


Desenvolvedores

Felipe Guilherme Lucas Rafael

Pull-Requests são bem-vindos e encorajados!


License

Copyright (C) Felipe Homrich Melchior (2019-), Guilherme Neri Bustamante Sá (2019-), Lucas Antunes de Almeida (2019-) and Rafael Fernandes da Silva (2019-), kd (2019-)

Licensed under the Apache License, Version 2.0