A plataforma atual combina microsserviços Django, comunicação interna HTTP ou gRPC, InfluxDB, MongoDB, PostgreSQL e contratos na BrightCity Chain.

Visão geral

Serviços

Rotinas periódicas (Celery)

Market, Indexer e Oracle usam Celery worker + Beat com Redis dedicado por serviço (não compartilhar broker entre microsserviços). Variáveis comuns: CELERY_BROKER_URL, CELERY_RESULT_BACKEND. Deploy: containers Redis + celery worker + celery beat por serviço.

Contratos MVP em uso

O runtime atual usa estes contratos pelos ABIs versionados nos serviços Transactions e Indexer: Deploy local Besu registrado: O arquivo de deploy também registra chainId: 20260520.
A bridge externa usa EURC na rede principal configurada. Na BrightCity Chain privada, o contrato EuroToken representa o saldo interno com nome Euro Token, símbolo EURT e 18 decimais.

Papéis on-chain

Funções chamadas pelo backend

sensor_id é convertido para bytes32 antes de ir para contratos MVP. Por isso, identificadores usados on-chain precisam caber em 32 bytes quando codificados em UTF-8.
O fluxo automático do Market prepara EuroToken.transfer para assinatura pelo device comprador. A função purchaseOffer fica disponível para operações on-chain com allowance via transferFrom.

Estados on-chain

O Market Service também mantém status operacionais nos modelos off-chain: RESERVED, FILLED, PENDING_PAYMENT, PAID e ERROR.

Eventos indexados

O Indexer lê estes eventos: Cada evento indexado é salvo com contract_name, event_name, block_number, tx_hash, log_index e payload_json. A chave única é tx_hash + log_index.

gRPC interno

Os serviços mantêm rotas HTTP internas durante a migração, mas os protos já cobrem os principais fluxos: Autorização interna usa metadata x-internal-token, equivalente ao header HTTP X-Internal-Token.