No se pueden recuperar los registros de eventos con MetaMask Web3

No tengo ningún problema en recuperar eventos con este código:

contract.MyEvent({}, { fromBlock: 0 }).get((err, data) => console.log(data))

Pero cuando uso exactamente el mismo código en un navegador que usa MetaMask, la devolución de llamada nunca se ejecuta.

¿MetaMask está haciendo algo que impide que el evento regrese? Puedo llamar a funciones muy bien, pero no puedo recuperar eventos.

Respuestas (1)

Debería poder obtener eventos desde su navegador de la misma manera, ya sea usando metamask o usando web3 cargado con Javascript normal.

Asegúrese de que está probando con el mismo nodo: Obtener registros en un amplio rango puede ser bastante agotador para el nodo del que está extrayendo, por lo que no todos los nodos públicos los devolverán antes de que se agote el tiempo de espera, o en absoluto. Si este resulta ser el problema, intente reducir el rango de los registros que está tratando de recuperar.

También asegúrese de que web3 esté cargado antes de comenzar a usarlo. Por lo general, desea verificar que esté disponible después del evento de carga de la página y solo comenzar a usarlo en ese momento.

Finalmente, Metamask parece tener problemas para cambiar de red de forma limpia. Después de cambiar a la red que desea usar, intente cerrar todas las ventanas abiertas de Chrome (no solo la ventana en la que está usando Metamask) y luego abra el navegador nuevamente desde cero.

¡Salir de mi navegador funcionó! ¡Brillante! Tiene sentido que ese fuera el problema, ya que literalmente no había ninguna indicación en mi nodo local de que algo hubiera sucedido y metamask no devolvió nada (obviamente, mi contrato local no está en la red a la que estaba conectado). Muchísimas gracias.
Hay un error actual en producción en MetaMask relacionado con las consultas de eventos, fallan de forma intermitente, actualmente estamos trabajando en ello.
@DanF FWIW reiniciar mi navegador solucionó el problema. LMK si puedo ayudarte de alguna otra manera