- Docker
- Python 3.8+
- MongoDB Compass
Para instalar o ambiente para rodar as aplicações Blockchain e BlockchainClient, instale os pacotes necessários usando o comando do pip.
pip install -r requirements.txt
Depois iremos subir o container da blockchain.
docker compose up -d
O banco está hospedado na nuvem, para ter acesso vá no MongoDB Compass e insira a mongo_uri disponivel no arquivo extras.txt que está no email.
Depois você pode rodar a aplicação da Blockchain primeiro.
- Nota 1: Você precisa executar com as variáveis de ambiente.
- Nota 2: Recomendo usar o vscode, para executar use a aba de debug do vscode para as envs serem carregadas.
Com a aplicação rodando, acesse a url:
http://localhost:8000/docs
Para conseguir minerar e fazer as operações bancárias, você precisa criar uma conta. É possivel criar via swagger ou via mensageria.
Depois, para fazer uma transação é precisa ter o número da conta que você vai enviar os tokens e a conta de onde vai sair eles.
As filas criadas no RabbitMQ podem ser visualizadas pela url:
http://localhost:15672/#/
- User: user
- Password: password
-
EVENTS: Recebe os dados das transações que ficaram salvas no cache e encaminha mensagem para iniciar o POW nos clientes.
-
ELECTIONS: Recebe a mensagem com quem ganhou o POW, envia mensagem para os outros clientes pararem o seu POW. Envia as informações do novo bloco para o ganhador, solicita aos outros clientes a validação da cadeia de blocos. Por fim, envia as recompensas para as contas.
-
BLOCKS: Recebe a mensagem para registrar um novo bloco.
-
REGISTER: Registra o novo cliente ativo.
-
TRANSACTIONS: Envia transações. Nota: Informações ficam salvas em cache por um determinado tempo e depois encaminhadas para a fila de ELECTIONS.
-
ACCOUNT_BALANCE: Fila que recebe as transações e valida os dados dela.
-
ACCOUNT_REGISTER: Cria uma nova conta.
-
TOKENS: Minera os tokens e envia para a conta indicada.
-
VALIDATE: Encaminha mensagens para os clientes com os blocos para eles validarem a cadeia de blocos.
Os payloads para enviar nas filas estão no arquivo eventos.txt