Giter Site home page Giter Site logo

projeto-sd's Introduction

Projeto-SD

Protótipo que simula a blockchain, apresentado como trabalho prático para a disciplina de SD

Guia de instalação

  1. Na pasta ./projeto-SD/ inicie a API da blockchain
python  app.py
  1. Registre todos os nós da rede manualmente no arquivo registrar_nos.py e inicie o arquivo:
python registrar_nos.py
  1. O programa já esta pronto para receber requisições, como exemplo, digite no seu browser:
http://{ip_da_máquina}:5000/
  1. (opcional) Inicie a aplicação web para mineração e listagem de transações verificadas, indo para a pasta /chain_explorer e utilize os seguintes comandos (NPM 8.6+):
npm install
npm start

Descrição

Nesse trabalho prático, foi proposto a criação de um sistema de transações financeiras baseado no funcionamento da blockchain, que se compõem como um registro de transações totalmente descentralizado, que configura a base do funcionamento da famosa moeda virtual bitcoin. Nesse contexto, objetivamos a criação da nossa própria moeda virtual, a llibertatem (do latim liberdade), através da criação de um sistema completo de transações em uma rede P2P, ao qual é eliminada a entidade central, responsável por validar e armazenar as transações , presente em sistemas tradicionais como TEDS, Paypal, cartões de crédito, etc. em que a responsabilidade desta entidade é transferida para cada nó na rede, formalizando um sistema descentralizado de transações.

Contudo, devido a complexidade de conhecimento apresentadas pela blockchain e limitações impostas de tempo a apresentação do projeto a disciplina, foi determinada a criação de um protótipo mais simples que se comporta de maneira semelhante, mas não igual, a uma implementação real da blockchain, de forma a lançar os primeiros passos para construção e publicação de uma moeda virtual totalmente funcional.

O que foi feito

  • Implementação da simulação da blockchain em python
  • Implementação da API em flask, que disponibiliza os serviços e recursos da blockchain na rede.
  • Implementaçao em python de um pequeno programa auxiliar para registro de nós de uma rede, armazenado por um nó.
  • Implemntação do front-end para realizar transações válidas utilizando Javacsript, Css e React.
  • Implementação do front-end, em React, para visualização das transações validadas seus respectivos blocos, além de ser utilizada para acionar o algoritmo de mineração.

O que faltou fazer

  • Determinar um meio mais inteligente de cadastro de nós conhecidos na rede, bem como seu gerenciamento.
  • Criação de um algoritmo de distribuição de transações para todos os nós, atualmente ele é apenas local.
  • Desenvolvimento de apenas uma aplicação front-end responsavel por todas as interfaces já criadas e com capacidade de explorar novas funcionalidades.
  • Melhoria do algoritmo de mineração e consenso de nós em uma rede, é ncessario um estudo mais profundo sobre como a blockchain delega tais funções, já que o protótipo possui algumas disparidades em relação ao ideal.
  • Utilização do protótipo em redes maiores. (testado apenas com dois nodos)

Arquitetura geral do sistema

Arquitetura do projeto

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.