Estoy viendo más y más formas a medida que aprendo dónde se pueden ejecutar funciones en el lado del cliente. Estoy viendo eventos. ¿El cliente de Ethereum (digamos, Metamask) carga todos los eventos de un contrato cuando abro la aplicación en una página web? ¿Para eso son principalmente los eventos?
Esto depende de la aplicación de la que esté hablando, pero probablemente no esté cargando todos los eventos que se han emitido, solo los últimos. Cargar una página a la vez mantiene las cosas eficientes. Dicho esto, hay muchos usos para los eventos.
Uno de los grandes es obtener valores de "retorno" de una transacción a un cliente. Si revisa la especificación web3 para send()
, notará que no se menciona el valor de retorno. Esto se debe a que web3
no se puede saber cuánto tiempo llevará confirmar la transacción. La call()
función proporciona un valor de retorno de la función porque solo se usa con funciones view
/pure
que no requieren una transacción.
Si desea devolver un valor de su función de modificación de estado, puede llamar a un evento al final y luego suscribirse a ese evento. Cada vez que se confirme la transacción que representa su llamada, ese evento aparecerá en su suscripción, brindándole su valor de retorno y haciéndole saber que su llamada se completó.
Briomkez