Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
# 🪙 SBB: Simulador Básico de Blockchain (Java)
## 📌 Status do Projeto
**Projeto Concluído**
## Visão Geral e Propósito
Este projeto é um simulador didático de uma Blockchain simples (Single-Node), desenvolvido em Java. Ele foi criado com foco em demonstrar e validar os princípios criptográficos fundamentais da tecnologia Blockchain:
1. **Imutabilidade** (Garantida pelo Hash SHA-256).
2. **Prova de Trabalho (PoW)**, através da mineração com o atributo `nonce`.
3. **Encadeamento Criptográfico** (`previousHash`).
A arquitetura utiliza o design de **dados estruturados** (`Transaction` imutável), preparando a base para futuras integrações (como Machine Learning ou APIs).
## 🛠 Arquitetura e Estrutura de Classes
O projeto é organizado nos pacotes `com.sbb.core` (lógica central) e `com.sbb.app` (execução).
| Classe | Pacote | Função Principal |
| :------ | :------ | :------ |
| **`Block.java`** | `core` | A unidade fundamental. Implementa o Hash SHA-256 e o método `mineBlock()`. |
| **`Transaction.java`** | `core` | A entidade de dados imutável. Define os campos estruturados (amount, sender, recipient). |
| **`Blockchain.java`** | `core` | Gerencia a lista de blocos, o Bloco Gênese e o mecanismo de segurança principal (`isChainValid`). |
| **`Main.java`** | `app` | Ponto de entrada e orquestrador. Roda os cenários de teste de Sucesso e Falha (RF07). |
## 🔒 Prova de Integridade (Cenários de Teste)
O projeto cumpre o **Requisito Funcional RF07** ao demonstrar que a cadeia é quebrada por qualquer adulteração:
* **Teste 1 (Sucesso):** Quando a cadeia está intacta, a validação retorna: `A Cadeia é Válida? true`
* **Teste 2 (Fraude):** Após adulterar o hash de um bloco, a validação retorna: `Cadeia Inválida: O Hash do Bloco #2 foi alterado.` e `A Cadeia é Válida? false`
## ⚙️ Como Executar o Projeto
### Pré-requisitos
* Java Development Kit (JDK) 11 ou superior.
* Uma IDE (IntelliJ IDEA ou VS Code com extensões Java).
### Passos
1. **Clone o repositório:**
`git clone https://github.com/RenanOliveira016/SBB-Java-BlockChain.git
2. **Abra na IDE:** Importe o projeto.
3. **Execute o `Main.java`:** A simulação será iniciada, minerando os blocos (o que pode levar alguns segundos, dependendo da dificuldade) e rodando os testes de validação automaticamente.