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.
- Python
- Flask
- Hashlib
- JSON
- Datetime
Flask é usado neste projeto apenas para expor endpoints HTTP simples.
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.
git clone https://github.com/fmartns/blockchain_algorithm
cd <blockchain_algorithmpyhon -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)pip install -r requirements.txtExecute:
python blockchain.pyA aplicação será iniciada em:
http://127.0.0.1:5001Este 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.
GET /mine_blockExemplo:
curl http://127.0.0.1:5001/mine_blockRetorna um novo bloco minerado com Proof of Work.
GET /get_chainExemplo:
curl http://127.0.0.1:5001/get_chainRetorna todos os blocos da cadeia.
GET /is_validExemplo:
curl http://127.0.0.1:5001/is_validRetorna se a cadeia atual é válida ou não.
{
"success": true,
"index": 2,
"timestamp": "2026-05-18 01:00:00.000000",
"proof": 533,
"previous_hash": "hash_do_bloco_anterior"
}Este projeto foi criado para estudar os fundamentos de blockchain de forma simples.