Допустим, у меня есть событие notify() в функции с именем buy().
event notify();
buy(){
//...
notify();
}
Проблема здесь в том, что мой дескриптор уведомления срабатывает только после того, как эта транзакция заминирована. Так работают события? Если да, то есть ли альтернатива, чтобы мгновенно узнать о транзакциях, происходящих в моем контракте? var filter = contractObject.notify();
filter.watch(function (error, log, data)
{ console.log(data); });
Используйте pending
при построении вашего web3.eth.filter
.
web3.eth.filter
имеет один параметр:
String|Object — Строка «последняя» или «ожидающая» для отслеживания изменений в последнем блоке или ожидающих транзакциях соответственно. Или объект опций фильтра следующим образом: fromBlock: Number|String — номер самого раннего блока (последний может означать самый последний и ожидающий в данный момент майнинг блок). По умолчанию последний. toBlock: Number|String — номер последнего блока (последний может означать самый последний и ожидающий в данный момент блок майнинга). По умолчанию последний.
Некоторые вещи, которые следует знать об ожидающих транзакциях:
Это несколько причин, по которым по умолчанию прослушиваются только те события, которые были объединены в блок ( latest
). Даже в этом случае имейте в виду, что вы можете захотеть провести реорганизацию сети .