EuroToken.transfer sem assinatura e o device comprador assina localmente com sua carteira Besu.
EuroToken é um ERC-20 privado com nome Euro Token, símbolo EURT e 18 decimais. O nome amount_eurc aparece nos payloads internos por compatibilidade com o fluxo de bridge.
Fluxo de pagamento
Preparação da transação
O Market envia para o Transactions Service:
O Transactions Service cria um registro
BlockchainTransaction com:
A transação sem assinatura inclui
from, to, data, nonce, gas, gasPrice, chainId e value.
Fila local do device
O Gateway devolvepending_payments junto com a resposta de medição. O simulador grava esses itens em MariaDB local e o payment_worker processa a fila.
Comportamento do worker:
- ignora pagamentos cujo comprador não seja a carteira local;
- assina a transação com
SIM_WALLET_PRIVATE_KEY; - transmite pela RPC Besu configurada;
- salva o
tx_hashlocalmente; - envia o recibo para
POST /transactions/receipts; - remove o item da fila apenas após sucesso;
- mantém na fila em caso de saldo insuficiente, erro temporário ou falha no recibo.
tx_hash salvo.
Validação do recibo
Ao receberpayment_id e tx_hash, o Transactions Service valida:
- existe preparação em
PREPAREDpara aquelepayment_id; - a transação foi confirmada com status on-chain
1; - o emissor da transação é a carteira do comprador esperado;
- o recibo contém evento
Transferno contratoEuroToken; from,toevaluebatem com comprador, vendedor e valor preparados.
- o registro muda para
CONFIRMED; tx_hasheconfirmed_atsão gravados;- o Market recebe confirmação e marca o trade como
PAID.
- o registro fica
FAILED; - o Market pode marcar o trade como
ERROR; - o erro é devolvido ao device.
Status de transação
Códigos comuns
Bridge
Como o usuário credita valor na rede privada
