Давайте возьмем пример SimpleStorage
контракта, который идет с коробкой для трюфелей.drizzle-box
Как мы можем прослушать событие StorageSet
и console.log
передать его в консоль 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, поэтому проблема может заключаться в следующем: «Текущий провайдер не поддерживает подписки: MetamaskInpageProvider» .
Я также не вижу этого сообщения об ошибке, так как морось не печатает его. Вы можете посмотреть здесь . Таким образом, вы сможете протестировать подписку на события самостоятельно/вручную. Что-то подобное:
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 .
порты