Back to projects
TypeScriptPython

VerificaJus Sigilo

A full-stack dApp built with UFCG and the Paraíba State Court (TJPB) to validate confidential juvenile court documents. Institutions sign in with an Ethereum wallet and get access through on-chain profiles, while anyone can check a document's status on a public QR code page. Built with FastAPI, Solidity and Web3.py on the back end and a TypeScript front end.

Last updated:October 10, 2026
Project Preview VerificaJus Sigilo
Python 90.6%Solidity 7.3%Shell 2.0%JavaScript 0.1%

Documentation

⛓️ DApp Controle de Acesso - Blockchain Lab 4

API REST desenvolvida em FastAPI para gerenciamento de perfis de acesso integrados a um Smart Contract na Blockchain Ethereum local (Anvil) via Web3.py.

🔗 Repositório do frontend: blockchain-lab4-dapp-frontend


🏗️ Arquitetura do Projeto

blockchain-lab4-dapp/
├── backend/
│   ├── abi/
│   │   └── ControleAcesso.json   # ABI gerada após o build do Solidity
│   ├── api/                      # Routers/Controllers do FastAPI
│   ├── schemas/                  # Modelos Pydantic (Request/Response)
│   ├── services/                 # Regras de Negócio e integração Web3
│   ├── config.py                 # Configurações e leitura do .env
│   ├── main.py                   # Ponto de entrada da API
│   └── requirements.txt          # Dependências Python
├── contracts/
│   └── ControleAcesso.sol        # Smart Contract em Solidity
├── deploy-contratos.sh            # Script de build, deploy e geração do .env
└── README.md

🛠️ 1. Pré-requisitos (Instalação Global)

Caso ainda não tenha o ambiente configurado na sua máquina, instale os pacotes do sistema e o Foundry (necessário para o anvil e forge): Bash

1. Atualizar sistema e instalar pacotes do Python/Build

sudo apt update && sudo apt install -y build-essential python3-venv python3-pip curl git

2. Instalar o Foundry (Anvil + Forge)

curl -L [https://foundry.paradigm.xyz](https://foundry.paradigm.xyz) | bash
source ~/.bashrc
foundryup

Verificação: Certifique-se de que anvil --version e forge --version respondem corretamente no terminal.

🚀 2. Como Executar o Projeto

Para rodar a aplicação em desenvolvimento, você precisará de 2 terminais abertos simultaneamente.

📱 Terminal 1: Nó Blockchain Local (Anvil)

Inicie a rede Ethereum local simulada:

anvil

Mantenha este terminal rodando em segundo plano. Ele ficará aguardando o envio de transações.

📱 Terminal 2: Deploy dos Contratos + Servidor FastAPI

A. Configurar o Ambiente Virtual e Dependências Python

Na raiz do projeto, crie e ative seu venv:

# Criar e ativar ambiente virtual
python3 -m venv venv
source venv/bin/activate

Instalar pacotes Python

pip install -r backend/requirements.txt

B. Compilar, Fazer Deploy e Gerar o .env

Execute o script automatizado para compilar o contrato em Solidity, copiar a ABI gerada e gravar o endereço implantado no .env:

chmod +x deploy-contratos.sh
./deploy-contratos.sh

C. Iniciar a API FastAPI

Com a Anvil rodando e o .env atualizado pelo script, inicie a API:

fastapi dev backend/main.py

O comando fastapi dev depende do fastapi-cli, já incluído via fastapi[standard] em backend/requirements.txt.

🧪 3. Testando a Aplicação

Abra o navegador e acesse a documentação interativa do Swagger UI: 👉 http://127.0.0.1:8000/docs

Endpoints Disponíveis:

POST /acessos/definir-perfil: Atribui ou altera o perfil de uma carteira Ethereum na Blockchain.

GET /acessos/consultar-perfil/{conta}: Consulta na Blockchain o perfil registrado para o endereço fornecido.

🙏 Agradecimentos

Agradecemos à nossa cliente Ana Talita Ferreira Marinho (ana.talita@tjpb.jus.br) por validar a aplicação.