Go-Ethereum

getPastEvents() 與 events.MyEvent({ fromBlock: 0}) 有什麼區別?

  • February 21, 2019

myContract.getPastEvents()used to get past events 和 和有什麼區別using myContract.events.MyEvent({ fromBlock: 0, })

另外,如果我傳遞到fromBlock一個尚未開采的區塊號,它是否按預期工作?

實際上,兩者都會返回過去觸發的事件。但MyEvent可以另外訂閱一個事件。因此,它可以為將來發出的每個事件觸發。

但是,將一一MyEvent返回事件。對於過去和/或將來觸發的每個事件,都會呼叫回調。

並且,getPastEvents將返回事件all-in-one-shot。它將返回過去觸發的事件數組。


注意:不要在主網上{ fromBlock: 0, }使用for 。您將等待很長時間,腳本很可能會在返回任何值之前終止。為了能夠獲得結果,請在和之間指定合理數量的塊。options``fromBlock``toBlock

通常,MyEvent允許您在特定事件類型中指定過濾器(您可以按參數值過濾),而getPastEvents返回事件類型的所有事件。

您發布的語法幾乎相同。主要區別是getPastEvents將返回所有已發生的事件,直到您連接的節點同步到的塊號。MyEvent將返回這些相同的事件,加上將在將新塊添加到鏈中時發生的任何新事件上呼叫回調。


來源:https ://stackoverflow.com/a/51664434/4428008

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