Я делаю веб-приложение, которому нужны события из моего контракта для инициализации его состояния. Я использовал поставщика веб-сокетов Infura, но, похоже, он сильно отстает и неожиданно закрывает соединения в течение последней недели. getPastEvents
метод плохо работает.
Я хотел бы, чтобы мое приложение было доступно со смартфонов (хотя бы в режиме только для чтения). Поэтому я не могу полагаться только на узел или кошелек, работающий на одном компьютере.
Есть ли способ надежно получить все события из какого-либо контракта? Например, как etherdelta достигает этого? Они запускают сервер с собственным частным узлом, который генерирует статические данные каждый блок?
Вы можете использовать отслеживание событий при каждом вызове транзакции, а затем получить событие из квитанций Tx.
Образец кода
const self = this;
this.props.deposit(this.state.amount).then((result) => {
if (!result) {
Message.error('XYZ')
}
var event = self.props.getEventXXX()
event.watch(function (err, response) {
if(response.event == 'XXX') {
notification.success({
message: 'ABC',
description: 'XYZ!',
});
event.stopWatching()
}
});
Вы также можете обратиться к этому документу: https://github.com/ethereum/wiki/wiki/JavaScript-API#contract-events .
Роб Ярт
Ха ДЖАНГ