Web3js

過濾器對像不適用於 web3.eth.contract getPastEvents() 方法

  • September 23, 2021

我已經提到了Web3 Events,但是過濾器對像對我不起作用,我在應用過濾器對象之前和之後得到了相同的事件結果。

這是程式碼:

instance.getPastEvents(
   "Transfer",
   {filter: {value: [117,50]}},
   { fromBlock: 0 , toBlock: "latest" },
   (errors, events) => {
        if (!errors) {
           console.log(events);
        }
    }
);

該過濾器對象的真正含義是什麼,根據文件和參考資料,它是自定義欄位,但它必須是對象參數。

需要更正過濾器使用的建議。

過濾器僅在參數被索引時才起作用。例如,ERC20.Tranfer 事件被定義為Transfer(address indexed from, address indexed to, uint tokens), 所以只有from並且to可以在過濾器中使用。

編輯:我剛剛注意到,您將過濾器作為單獨的對象送出。正確的格式是這樣的:

instance.getPastEvents(
   "Transfer",
   {
     filter: {value: [117,50]},
     fromBlock: 0 ,
     toBlock: "latest"
   }, (errors, events) => {
        if (!errors) {
           console.log(events);
        }
    }
);

使用 web3 1.2.2,我觀察到如果您使用精確的標識符,例如transactionHash ,那麼與**fromBlocktoBlock結合使用時將不起作用。

返回的精確結果:

filter: {
   transactionHash: txObj.transactionHash,
},

所有結果:

{
   filter: {
       transactionHash: txObj.transactionHash,
   },
   fromBlock: 0,
   toBlock: 'latest'
}

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