O AcadChain é um ecossistema completo e integrado de blockchain acadêmica, sistema monetário local descentralizado e banco digital de alto desempenho. O projeto combina um backend robusto e criptograficamente seguro desenvolvido puramente em Node.js (ES6+) com um frontend ultra-premium em Next.js (App Router), Tailwind CSS e TypeScript, inspirado no design fluido e minimalista de bancos digitais como o Banco Inter.
Esta plataforma foi customizada para o IFB (Instituto Federal de Brasília), unindo conceitos de sistemas distribuídos, criptografia assimétrica por curvas elípticas, precificação algorítmica de ativos, halving dinâmico e uma experiência de usuário bancária impecável e de alto impacto visual.
O frontend do AcadChain (localizado no diretório /dashboard) oferece duas experiências integradas e cinematográficas para o usuário:
Uma réplica de um aplicativo bancário moderno em Orange Dark Mode premium, com as seguintes seções funcionais:
- Login Criptográfico sem Senhas: Login Zero-Knowledge provando a posse da chave privada PEM através de um protocolo de desafio-resposta.
- Wallet Generator HUD: Permite gerar carteiras na hora, baixar credenciais em formato
.jsone preencher os dados de autenticação com um único clique. - Painel de Cotação e Saldo: Exibe o saldo da carteira em NEXUS e faz a conversão em tempo real para a moeda estável simulada BRL_SIM, com base no preço algorítmico da bolsa interna.
- Extrato Inteligente: Linha do tempo vertical animada filtrando transações recebidas (Entradas), enviadas (Saídas) e blocos minerados (Coinbase).
- Área PIX (Transferências): Interface rápida para transferência de valores assinados digitalmente.
- Console de Mineração (CPU Miner PoW): Painel interativo que simula Proof of Work em tempo real diretamente da interface, atualizando saldos ao concluir o cálculo do nonce.
- Área de Deflação (Burn): Interface para queima voluntária de moedas para redução instantânea da oferta e valorização do tokenomics.
Uma tela de controle no estilo cyberpunk industrial com animações fluidas (via GSAP & Lenis Scroll) que permite ativar/desativar módulos em tempo real:
- Mempool: Visualização dinâmica em cartões flutuantes das transações pendentes.
- Ledger: Cadeia horizontal de blocos minerados interconectados com SVGs auto-desenháveis.
- Terminal: Logs de rede e eventos criptográficos simulando o processamento do ledger.
- Carteira: Gerador e gerenciador futurista de curvas elípticas
secp256k1.
- Zero Senhas: O usuário se identifica apenas por seu endereço público (
acad_...). - Desafio de Uso Único: O servidor emite um desafio aleatório contendo um carimbo de data/hora (timestamp), válido por 5 minutos para neutralizar Ataques de Repetição (Replay Attacks).
- Assinatura Local: O cliente assina o desafio localmente usando sua chave privada. O servidor valida se a assinatura é legítima (
createVerify('SHA256')) e se a chave pública de fato gera o endereço público fornecido. - Sessão Deslizante (
Sliding Session): Uma vez aprovado, o servidor gera um token estável (x-auth-token) válido por 30 minutos em memória, cuja expiração é renovada automaticamente a cada chamada de rota sensível.
- A recompensa de mineração (Coinbase) diminui geometricamente ao longo do tempo para emular a escassez matemática dos criptoativos:
$$\text{Recompensa} = \frac{50}{2^{\lfloor (\text{index_bloco_atual} - 1) / 5 \rfloor}}$$ - A recompensa inicial é de
50 NEXUS, caindo pela metade a cada 5 blocos minerados (50 -> 25 -> 12.5 -> 6.25...).
- A cotação oficial da moeda NEXUS pareada com BRL_SIM é recalculada dinamicamente:
$$\text{Preço} = \frac{2^{\text{dificuldade}} \times 1000}{\text{Supply_Circulante}}$$ - Supply Circulante: Quantidade total de moedas emitidas por Coinbase menos as moedas destruídas por queimas.
- Custo Computacional: Quanto maior a dificuldade da rede (mais computação exigida), maior é o valor de cotação intrínseca do token (pressão de alta).
- O tempo de bloco alvo é de
15 segundos. - Ajuste: Se o bloco for minerado em menos de
7.5 segundos(alto hashpower), a dificuldade sobe. Se demorar mais de30 segundos, a dificuldade cai (regulada dinamicamente entre2e6para fins didáticos).
blockchain/
├── package.json # Dependências do backend
├── src/
│ ├── app.js # Inicialização do servidor backend (porta 3001)
│ ├── api/
│ │ └── server.js # Servidor REST API, CORS e endpoints
│ └── blockchain/
│ ├── Block.js # Lógica de blocos e Proof of Work
│ ├── Transaction.js # Transações e assinaturas assimétricas
│ ├── Wallet.js # Carteiras secp256k1 baseadas em curvas elípticas
│ ├── AuthChallenge.js # Logins criptográficos ZK e controle de sessões
│ └── Blockchain.js # Core do Ledger e regras econômicas
├── scratch/
│ └── simulate.js # Simulador automatizado de transações e tokenomics
└── dashboard/ # Frontend Next.js (App Router, Tailwind, TypeScript)
├── package.json # Dependências do dashboard
├── src/
│ ├── app/
│ │ ├── page.tsx # Dashboard Cyberpunk modular
│ │ ├── banco/
│ │ │ └── page.tsx # Interface do banco digital InterAcad
│ │ └── components/ # Componentes visuais do HUD e animações
│ │ └── modules/ # Módulos interativos (Ledger, Mempool, Terminal, etc.)
Certifique-se de ter o Node.js (LTS) instalado no computador.
- Acesse o diretório raiz do projeto e instale as dependências:
npm install
- Inicie o servidor Express (que roda por padrão na porta 3001 para evitar conflitos):
npm start
- O console mostrará:
🎓 [AcadChain API v2.0] Servidor da Blockchain Acadêmica Online na Porta 3001!
- Em outro terminal, acesse o diretório
/dashboarde instale as dependências:cd dashboard npm install - Inicialize o servidor de desenvolvimento na porta 3000:
npm run dev
- Abra o seu navegador no endereço: http://localhost:3000/banco
A API REST do backend comunica-se puramente por meio de payloads em JSON:
POST /wallet— Gera um par de chaves assimétricassecp256k1e endereço público.POST /wallet/sign— Rota auxiliar segura para assinar dados (desafios/transações) no frontend usando sua chave privada PEM.POST /auth/challenge— Emite um desafio criptográfico temporário de uso único baseado em timestamp.POST /auth/verify— Valida a assinatura digital do desafio e retorna o token de acesso deslizante de 30 minutos.POST /transaction— [PROTEGIDO] Submete uma nova transação assinada para a Mempool.GET /mine— [PROTEGIDO] Executa o Proof of Work e consolida os blocos da mempool, creditando a recompensa Coinbase.GET /market/ticker— Retorna os dados oficiais de cotação (NEXUS/BRL_SIM), dificuldade e oferta circulante da corretora.POST /market/burn— [PROTEGIDO] Destrói moedas enviando-as para a carteira nula, valorizando unitariamente os ativos ativos.GET /dashboard/:address— Panorama completo e histórico de transações estruturado de uma carteira específica.
Se quiser rodar uma auditoria completa de lógica de backend de forma automatizada no terminal:
npm run simulateEste comando inicializa um servidor temporário na porta 3001, gera carteiras para Alice e Bob, realiza login criptográfico, executa minerações consecutivas para demonstrar a curva de Halving, queima moedas para verificar a valorização deflacionária imediata na corretora e audita o histórico detalhado em JSON de forma 100% autônoma!