# 📌 Projeto DEJO Node — Roadmap de Desenvolvimento

Este documento organiza as etapas do projeto em formato de roadmap, com granularidade suficiente para priorização em sprints.

---

## ✅ ENTREGUE / COMPLETO

### 🔁 Engine de Consenso
- [x] Ciclo de consenso: Proposal → Prevote → Precommit
- [x] Round e timeout por fase
- [x] Quórum BFT ponderado por stake (PoS)
- [x] Proposer rotativo por altura

### 🔐 Módulo de Staking
- [x] Registro de stake e unstake via API REST
- [x] Cálculo de bloqueio por duração (Unix time)
- [x] Persistência em `staking.db`

### 🗳️ Módulo DAO (Governança)
- [x] Criação de propostas via API
- [x] Voto com peso proporcional ao stake
- [x] Fechamento automático por tempo e quorum
- [x] Execução de `PARAM_CHANGE` (altera minStake)

### 💾 Blocos e Transações
- [x] Estrutura de bloco e transação
- [x] Geração de bloco no consenso
- [x] Hash de bloco e persistência

### 📊 Monitoramento
- [x] Métricas Prometheus em `/metrics`
- [x] Logs por fase de consenso

---

## 🟡 EM PROGRESSO / PRÓXIMO

### 🧠 Execução de Blocos e Estado
- [ ] Estrutura de contas (ex: `map[address]Balance`)
- [ ] Aplicar transações que movimentam tokens
- [ ] Atualização de estado no commit do bloco

### 📚 State Machine (abstração de estado)
- [ ] Criar módulo `internal/state`
- [ ] Interface para aplicar, reverter e consultar estado
- [ ] Encapsular lógica de staking, saldo e DAO

### 💸 Recompensas e Penalidades
- [ ] Distribuir reward por bloco finalizado (ex: 10 tokens)
- [ ] Atualizar saldo dos validadores automaticamente
- [ ] Penalizar (slash) quem não votar ou agir de forma inválida

### 🌐 API Avançada
- [ ] `/validators` — status atual dos validadores
- [ ] `/accounts/{addr}` — saldo e staking
- [ ] `/dao/status` — propostas abertas e stats

### 🧪 Testes e Validação
- [ ] Mocks de múltiplos nós rodando em paralelo
- [ ] Testes unitários de staking e DAO
- [ ] Teste de ciclo completo de proposta → execução

---

## 🔴 A DESENVOLVER

### 🔗 Rede P2P entre nós
- [ ] Protocolo de descoberta (peer discovery)
- [ ] Broadcast de blocos e votos
- [ ] Sincronismo de blocos (sync/fast-sync)
- [ ] Comunicação TCP/gRPC entre nós

### 🔐 Assinaturas Criptográficas
- [ ] Geração de chave pública/privada para cada node
- [ ] Assinatura de transações e mensagens
- [ ] Validação de assinaturas nos blocos e mensagens

### 🧬 Genesis e Bootstrap
- [ ] Arquivo `genesis.json` com config inicial
- [ ] Carga automática de blocos iniciais e parâmetros

### 🧰 CLI (Interface de Linha de Comando)
- [ ] `dejo stake ...` — registrar stake via terminal
- [ ] `dejo tx send ...` — enviar transação manual
- [ ] `dejo query dao ...` — consultar propostas

---

## 💡 EXTRAS / FUTURO
- [ ] Delegação de voto (liquid democracy)
- [ ] Propostas DAO tipo `UPGRADE`
- [ ] Inflação e distribuição periódica
- [ ] Snapshots de estado + sync otimizado
- [ ] Compose com múltiplos nós simulando rede