Web3j

如何使用 eth_newFilter 獲取合約的待處理傳入交易?

  • June 7, 2019

我正在嘗試使用 Infura 獲取某個契約的待處理交易。是否可以使用 eth_newFilter 來做到這一點?由於顯然這些過濾器只是從合約事件中“觸發”,這是否意味著這個想法注定要失敗?例如,當我從過濾器中獲得一個 tx 時,它不能再處於掛起狀態,因為它必須完成才能觸發過濾器?

如果是這樣,託管我自己的完整節點並自行解析所有待處理事務是否是一個合適的選擇?在 Infura 上這樣做會導致大量請求,我不想給他們的服務帶來負擔。

任何幫助深表感謝。

eth_newFilter 用於接收和過濾乙太坊日誌。當一個交易被包含在一個區塊中,命中一個智能合約並生成一個日誌時,就會產生日誌,這不是你想要的。

您可能想查看 web3js 待處理事務訂閱: https ://web3js.readthedocs.io/en/1.0/web3-eth-subscribe.html#subscribe-pendingtransactions

const subscription = web3.eth.subscribe('pendingTransactions', function(error, result){
   if (!error)
       console.log(result);
})
.on("data", function(transaction){
   // Filter transaction if it hits your contract.
   console.log(transaction);
});

或直接使用 getPendingTransaction

web3.eth.getPendingTransactions().then(console.log);

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