Web3js

如何在 Drizzle 中監聽合約事件

  • January 25, 2019

我們以SimpleStorage鬆露盒自帶的合約為例drizzle-box

我們如何監聽事件StorageSet並將console.log其發送到 JS 控制台?

細雨選項.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

我猜你使用 Metamask,所以問題可能如下:“The current provider doesn’t support subscriptions: MetamaskInpageProvider”

我也沒有看到此錯誤消息,因為 drizzle 不會列印它。你可以看看這裡。這樣,您應該能夠自己/手動測試該事件訂閱。像這樣的東西:

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));

在這裡您可以找到 web3 事件的文件。

或者,您可以檢查交易收據中的事件。

我正在嘗試做類似的事情,但據我了解,Drizzle 還不支持這一點。這是我發現跟踪它的問題:https ://github.com/trufflesuite/drizzle/issues/147

引用自:https://ethereum.stackexchange.com/questions/54837