https://github.com/bulletdev/bullet-blockchain
Java Blockchain com springboot e JWT auth
https://github.com/bulletdev/bullet-blockchain
blockchain java
Last synced: 8 months ago
JSON representation
Java Blockchain com springboot e JWT auth
- Host: GitHub
- URL: https://github.com/bulletdev/bullet-blockchain
- Owner: Bulletdev
- License: mit
- Created: 2024-11-04T20:09:50.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-06T17:48:15.000Z (about 1 year ago)
- Last Synced: 2025-04-15T02:53:33.488Z (8 months ago)
- Topics: blockchain, java
- Language: Java
- Homepage:
- Size: 25.4 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Blockchain com Autenticação JWT em Java
Este projeto implementa uma blockchain básica com autenticação JWT, usando Spring Boot e Java. A aplicação permite autenticação de usuários, criação e verificação de transações, mineração de blocos e sincronização P2P. O sistema é persistido em um banco de dados e garante a integridade dos dados com Proof of Work e assinaturas digitais.
## ✨ Funcionalidades
- **Autenticação JWT**: Protege endpoints com JSON Web Tokens.
- **Mineração de Blocos**: Realiza mineração usando Proof of Work com ajuste de dificuldade.
- **Assinaturas Digitais**: Garante a autenticidade das transações com criptografia assimétrica.
- **Persistência em Banco de Dados**: Blockchain salva no banco H2 para durabilidade.
- **Rede P2P**: Suporte inicial para rede peer-to-peer com comunicação de novos blocos.
## 🛠 Tecnologias Utilizadas
- **Java 11**
- **Spring Boot 2.5.4**
- **JWT (Json Web Token)**
- **Bouncy Castle** (para assinaturas digitais)
- **H2 Database**
- **Spring Data JPA**
## ⚙️ Configuração e Instalação
### Pré-requisitos
Certifique-se de ter o [Java 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html) e o [Maven](https://maven.apache.org/) instalados em sua máquina.
### Passo a Passo
1. **Clone o Repositório**
```bash
git clone https://github.com/BulletDEV/BulletBlockchain.git
cd blockchain-jwt-java
```
2. **Configuração do Banco de Dados**
O projeto está configurado para usar um banco de dados em memória (H2). Verifique as configurações em `src/main/resources/application.properties`:
```properties
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
Instale as Dependências
Execute o Maven para baixar todas as dependências:
mvn install
Execute a Aplicação
Inicie o servidor:
mvn spring-boot:run
Acesse o Console H2 (opcional)
URL: http://localhost:8080/h2-console
JDBC URL: jdbc:h2:mem:testdb
Username: sa
Password: (deixe vazio)
🌐 Endpoints da API
Autenticação
Registro de Usuário
POST /auth/register
Body: { "username": "user1", "password": "senha123" }
Login
POST /auth/login
Body: { "username": "user1", "password": "senha123" }
Retorno: { "token": "jwt_token" }
Blockchain
Ver Blockchain Completa
GET /blockchain/chain
Headers: Authorization: Bearer {token}
Criar Nova Transação
POST /blockchain/transaction
Headers: Authorization: Bearer {token}
Body: { "sender": "public_key", "recipient": "public_key", "value": 10 }
Minerar Bloco
POST /blockchain/mine
Headers: Authorization: Bearer {token}
Retorno: Bloco recém-minerado
🗂 Estrutura do Projeto
src
├── main
│ ├── java
│ │ └── com.example.blockchain
│ │ ├── model # Classes de modelo (Block, Transaction, Wallet)
│ │ ├── repository # Repositórios JPA
│ │ ├── service # Lógica de mineração e blockchain
│ │ ├── controller # Controladores de API para Blockchain e Auth
│ │ └── config # Configuração de segurança JWT
│ └── resources
│ └── application.properties # Configuração do Spring Boot
📝 Licença
BulletDEV all rights reserved ♥ !