Función 'sendTransaction': ¿puede ocurrir algún error antes del evento 'transactionHash'?

La función web3.eth.sendTransactionpuede arrojar un error.

Por ejemplo:

  • Transaction gas is too low
  • Transaction execution error

Pero, ¿puede arrojar un error antes de emitir el transactionHashevento?

Estoy bastante seguro de que los dos errores anteriores no pueden ocurrir en este momento.

¿Tengo razón?

¿Qué pasa con otros errores?

Por ejemplo, ¿qué sucede si hay un problema de red o un problema con el cliente de Ethereum?

Aquí hay un ejemplo de codificación (tomado directamente de los documentos ), con la pregunta incrustada:

web3.eth.sendTransaction({
    from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe',
    to: '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe',
    value: '1000000000000000'
})
.on('transactionHash', function(hash){
    // Can it possibly throw an error before reaching here?
})
.on('receipt', function(receipt){
    ...
})
.on('confirmation', function(confirmationNumber, receipt){ ... })
.on('error', console.error); // If a out of gas error, the second parameter is the receipt.

¡Gracias!

Respuestas (1)

Sí, por supuesto, pueden ocurrir muchos errores antes de la emisión del transactionHashevento. Ejemplo siendo:

  • validaciones básicas como dirección del remitente no válida, dirección del receptor, cantidad, gas, etc.
  • Cuando la cantidad que uno está tratando de enviar es más que su saldo

Básicamente, hay una serie de validaciones por parte del cliente antes de enviar una transacción a la cadena de bloques y la falla de dicha validación resultará en una falla de tx incluso antes de obtener el hash.

Leí en alguna parte una lista de validaciones que ocurren antes del envío de tx. Trataré de traer eso. Entonces, todos esos casos pueden causar fallas incluso antes de obtener hash.