EuroToken.
Política de preço
Cada sensor pode ter uma política:
Regras:
- valores de preço precisam ser positivos;
- os preços usam 6 casas decimais;
- sem política ativa, a medição é ignorada pelo mercado.
Como o Market avalia uma medição
Excedente: criação de oferta
Quandonet_kwh > 0, o Market cria uma oferta se:
- existe política para o sensor;
- a política está ativa;
min_sell_price_euré maior que zero;- a medição de origem ainda está livre para criação de oferta.
Déficit: criação de ordem
Quandonet_kwh < 0, o Market cria uma ordem se:
- existe política para o sensor;
- a política está ativa;
max_buy_price_euré maior que zero;- a medição de origem ainda está livre para criação de ordem.
needed_kwh é o módulo de net_kwh.
Matching
Uma oferta é compatível quando:- está
OPEN; price_per_kwhé menor ou igual ao teto do comprador;kwhé maior ou igual à necessidade da ordem.
Regra de concorrência
Quando vários participantes competem no mesmo ciclo (ou contra o book aberto):
No ciclo de matching, as medições de excedente correm primeiro (para publicar asks), depois as de déficit ordenadas pelo maior bid. Uma oferta nova também tenta preencher ordens
OPEN à espera, com a mesma prioridade de compradores.
Não há compra parcial no fluxo atual: a oferta precisa cobrir toda a necessidade da ordem.
Trade
Quando há matching:- a oferta muda de
OPENparaRESERVED; - o Market cria um trade em
PENDING_PAYMENT; - o total é calculado como
needed_kwh * price_per_kwhda oferta; - o total é quantizado para 6 casas;
- o valor é convertido para unidades mínimas do token;
- o Transactions Service prepara uma transação
EuroToken.transfer; - a oferta muda para
SOLD; - a ordem muda para
FILLED.
Status
Motivos de medição ignorada
Ciclo de matching
O matching off-chain não corre no POST de medições. Em develop/produção o ciclo é agendado por Celery Beat no Market Service (MATCHING_CYCLE_MINUTES, default 15), com worker + Redis dedicado do market.
core.tasks.run_matching_cycle_task.
Por padrão, o serviço processa a janela fixa de 15 minutos imediatamente anterior, alinhada à cadência de envio dos dados pelo device. Para execução manual ou laboratório:
--from e --to precisam ser informados juntos. A data final precisa ser posterior à inicial. Em produção use Celery, não CronJob.Pagamentos
O que acontece depois que um trade fica pendente de pagamento
