В чем разница между использованием myContract.getPastEvents()
для получения прошлых событий и using myContract.events.MyEvent({ fromBlock: 0, })
?
Кроме того, если я перейду к fromBlock
номеру блока, который еще не был намайнен, будет ли он работать должным образом?
На самом деле оба вернут события, запущенные в прошлом. Но MyEvent
может дополнительно подписаться на событие. Таким образом, его можно было бы запускать для каждого события, испускаемого в будущем.
Однако MyEvent
вернет события одно за другим . И для каждого события, запущенного в прошлом и/или в будущем, будет вызываться обратный вызов.
И getPastEvents
вернет события all-in-one-shot . Он вернет массив событий, запущенных в прошлом.
Примечание: не используйте { fromBlock: 0, }
for options
в основной сети . Вы будете ждать очень долго, и скрипт, скорее всего, завершится до того, как будет возвращено какое-либо значение. Чтобы иметь возможность получить результат, укажите разумное количество блоков между fromBlock
и toBlock
.
В общем, MyEvent
позволяет указать фильтры для определенного типа события (вы можете фильтровать по значениям параметров), тогда как getPastEvents
возвращает все события для типа события.
Синтаксис, который вы опубликовали, почти идентичен. Основное отличие заключается в том getPastEvents
, что будут возвращены все события, которые произошли до тех пор, пока номер блока, к которому вы подключены, не будет синхронизирован. MyEvent
вернет те же самые события, а также вызовет обратный вызов для любых новых событий, которые происходят по мере добавления новых блоков в цепочку.
Ник Шерман
MyEvent
, не обрабатывает старые события.Ник Шерман