Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Blockchain Simples em Python

Este projeto é uma implementação simples de uma blockchain em Python, criada apenas para fins de estudo.

O objetivo é entender, de forma prática, conceitos básicos como:

  • Criação de blocos
  • Hash de blocos
  • Proof of Work
  • Validação da cadeia
  • Exposição de endpoints com Flask

Este projeto não representa uma blockchain real de produção. Ele não possui rede P2P, persistência em banco de dados, transações, carteiras, consenso distribuído ou segurança avançada.

Tecnologias utilizadas

  • Python
  • Flask
  • Hashlib
  • JSON
  • Datetime

Flask é usado neste projeto apenas para expor endpoints HTTP simples.

Estrutura principal

O projeto possui uma classe Blockchain, responsável por:

  • Criar o bloco gênesis
  • Criar novos blocos
  • Gerar o hash dos blocos
  • Executar o Proof of Work
  • Validar a cadeia de blocos

A aplicação Flask expõe rotas para minerar blocos, consultar a blockchain e validar a cadeia.

Instalação

1. Clone o repositório

git clone https://github.com/fmartns/blockchain_algorithm
cd <blockchain_algorithm

2. Crie um ambiente virtual e ative-o

pyhon -m venv venv

source venv/bin/activate (macOS ou Linux)

source venv/Scripts/activate (Windows com Git Bash)

.\venv\Scripts\Activate.ps1 (Windows com Power Shell)

3. Instale as dependências

pip install -r requirements.txt

Como rodar o projeto

Rodando pelo terminal

Execute:

python blockchain.py

A aplicação será iniciada em:

http://127.0.0.1:5001

Aviso sobre a porta no macOS

Este projeto utiliza a porta 5001 porque a porta 5000 pode causar conflito no macOS.

Por isso, o código está configurado assim:

app.run(host="0.0.0.0", port=5001)

Caso queira alterar a porta, modifique esse valor no final do arquivo.

Endpoints disponíveis

Minerar um novo bloco

GET /mine_block

Exemplo:

curl http://127.0.0.1:5001/mine_block

Retorna um novo bloco minerado com Proof of Work.

Consultar a blockchain

GET /get_chain

Exemplo:

curl http://127.0.0.1:5001/get_chain

Retorna todos os blocos da cadeia.

Validar a blockchain

GET /is_valid

Exemplo:

curl http://127.0.0.1:5001/is_valid

Retorna se a cadeia atual é válida ou não.

Exemplo de resposta ao minerar bloco

{
  "success": true,
  "index": 2,
  "timestamp": "2026-05-18 01:00:00.000000",
  "proof": 533,
  "previous_hash": "hash_do_bloco_anterior"
}

Finalidade

Este projeto foi criado para estudar os fundamentos de blockchain de forma simples.

About

Este projeto é uma implementação simples de uma blockchain em Python, criada apenas para fins de estudo.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages