Ao recarregar uma exchange ou ao usar o sistema de pagamentos, uma das interpretações mais perigosas é considerar que a resposta do nó “202 Accepted” seja um comprovante de crédito.
Eu reorganizei o ciclo de vida da transação de @Dusk . Depois que a transação é enviada ao nó, o “202” apenas indica que o nó aceitou esses dados e está preparando o encaminhamento; não significa que ela já entrou no mempool real, nem que foi incluída em um bloco, executada com sucesso ou atingiu a confirmação final.
Uma transação Dusk L1 precisa passar por, no mínimo, estas etapas: submissão, pré-validação, entrada no mempool local, propagação pela rede, seleção do bloco, execução do contrato e finalização do bloco. Mesmo que a transação já tenha entrado no bloco aceito, é necessário verificar se o campo Error no evento Executed está vazio; quando ocorre um erro no contrato, o Nonce ou o Phoenix Notes ainda podem ser consumidos, e o Gas também precisa ser pago. Só quando o estado do bloco se tornar Finalized é que podemos tratar essa transação como um resultado irreversível.
Isso é como o sistema de correios mostrar “recebido”. Ele só prova que o entregador pegou o pacote; não prova que o pacote já chegou à mão do destinatário.
Portanto, se a exchange credita antecipadamente ao ver o hash da transação, ela pode tratar como depósito real uma transação que foi substituída, que falhou na execução ou que ainda não foi finalizada. O que vale mais a pena observar em seguida é como a carteira exibe a etapa da transação, quais critérios de confirmação final a exchange adota e a proporção de casos em que a execução falha, mas o Gas já foi pago.
Receber uma transação não é a mesma coisa que executar a transação; executar a transação também não é a mesma coisa que o acerto final. O que o sistema financeiro realmente precisa confirmar é o último passo.#dusk $DUSK
Eu reorganizei o ciclo de vida da transação de @Dusk . Depois que a transação é enviada ao nó, o “202” apenas indica que o nó aceitou esses dados e está preparando o encaminhamento; não significa que ela já entrou no mempool real, nem que foi incluída em um bloco, executada com sucesso ou atingiu a confirmação final.
Uma transação Dusk L1 precisa passar por, no mínimo, estas etapas: submissão, pré-validação, entrada no mempool local, propagação pela rede, seleção do bloco, execução do contrato e finalização do bloco. Mesmo que a transação já tenha entrado no bloco aceito, é necessário verificar se o campo Error no evento Executed está vazio; quando ocorre um erro no contrato, o Nonce ou o Phoenix Notes ainda podem ser consumidos, e o Gas também precisa ser pago. Só quando o estado do bloco se tornar Finalized é que podemos tratar essa transação como um resultado irreversível.
Isso é como o sistema de correios mostrar “recebido”. Ele só prova que o entregador pegou o pacote; não prova que o pacote já chegou à mão do destinatário.
Portanto, se a exchange credita antecipadamente ao ver o hash da transação, ela pode tratar como depósito real uma transação que foi substituída, que falhou na execução ou que ainda não foi finalizada. O que vale mais a pena observar em seguida é como a carteira exibe a etapa da transação, quais critérios de confirmação final a exchange adota e a proporção de casos em que a execução falha, mas o Gas já foi pago.
Receber uma transação não é a mesma coisa que executar a transação; executar a transação também não é a mesma coisa que o acerto final. O que o sistema financeiro realmente precisa confirmar é o último passo.#dusk $DUSK