Um atalho comum em checkouts de cripto é esperar um tempo fixo e então considerar o pagamento “concluído”. O tempo é um indicador ruim. Os blocos chegam em intervalos irregulares, as redes têm propriedades de finalidade diferentes e uma transferência que estava visível há um minuto pode desaparecer quando um bloco concorrente vence.
O FeitPay trata cada confirmação como uma evidência e registra de onde ela veio.
O que o mecanismo de finalidade realmente verifica
Para cada transferência observada, o mecanismo armazena a rede, o hash da transação, o índice da saída ou do log, o hash do bloco e a altura do bloco. As confirmações são calculadas a partir do topo atual da cadeia daquela rede, não a partir de um relógio:
- uma transferência vista apenas na mempool está
detected, nuncaconfirmed; - uma transferência dentro de um bloco conta confirmações a partir da altura desse bloco;
- o número exigido vem da política de confirmações da rede, que pode ficar mais rigorosa à medida que o valor aumenta.
O pagamento só passa a confirmed quando todas as transferências feitas dentro do prazo que compõem o valor esperado atingem o limite.
Reorganizações são esperadas, por isso são modeladas
Se o bloco que contém uma transferência for substituído, a observação é marcada como removida em vez de apagada. O pagamento passa para reorged — um estado explícito com seu próprio webhook, payment.reorged — e só volta para confirming quando a transferência é vista novamente na cadeia vencedora.
Duas regras decorrem disso:
- Um pagamento confirmado nunca é revertido silenciosamente. Qualquer mudança após a confirmação gera um evento compensatório ao qual seus sistemas podem reagir.
- As observações originais permanecem na linha do tempo, para que as equipes de suporte vejam exatamente o que aconteceu e quando.
Por que isso importa para os lojistas
Decisões de entrega devem se apoiar em fatos que você pode mostrar a outra pessoa: o bloco, a contagem, a política aplicada. É isso que a linha do tempo do pagamento no painel expõe, e é isso que todo webhook referencia.
Os pagamentos processados pela conta Bitcart do FeitPay seguem o mesmo princípio: um pagamento só passa a confirmed quando o Bitcart informa que a fatura está completa, e cada mudança de status é registrada com o seu motivo.