Tomemos el ejemplo del SimpleStorage
contrato que viene con la caja de trufadrizzle-box
¿Cómo podemos escuchar el evento StorageSet
y console.log
enviarlo a la consola JS?
import SimpleStorage from './../build/contracts/SimpleStorage.json'
const drizzleOptions = {
web3: {
block: false,
fallback: {
type: 'ws',
url: 'ws://127.0.0.1:8545'
}
},
contracts: [
SimpleStorage
],
events: {
SimpleStorage: ['StorageSet'],
},
polls: {
accounts: 1500
}
}
export default drizzleOptions
Supongo que usa Metamask, por lo que el problema podría ser el siguiente: "El proveedor actual no admite suscripciones: MetamaskInpageProvider" .
Tampoco veo este mensaje de error, ya que drizzle no lo imprime. Puedes echar un vistazo aquí . De esta manera, debería poder probar esa suscripción de eventos por su cuenta/manualmente. Algo como eso:
drizzle.contracts.SimpleStorage.events
.StorageSet({/* eventOptions */}, (error, event) => {
console.log(error, event);
})
.on('data', (event) => console.log(event))
.on('changed', (event) => console.log(event))
.on('error', (error) => console.log(error));
Aquí puede encontrar la documentación para eventos web3.
Opcionalmente, puede verificar los eventos en el recibo de la transacción.
Estoy intentando hacer algo similar pero, según tengo entendido, Drizzle aún no es compatible con esto. Aquí está el problema que encontré para rastrearlo: https://github.com/trufflesuite/drizzle/issues/147
poros