Web3js

訂閱單個 Eth 地址不會返回任何日誌

  • August 31, 2022

使用 Infura ,我希望訂閱特定地址

目前,即使我使用 Ethscan 看到它們,我也沒有收到任何事件

如果我刪除“地址”過濾器,訂閱就可以了。

有什麼我想念的嗎?

const address = "0x81b7e08f65bdf5648606c89998a9cc8164397647";

 var subscription = web3.eth.subscribe(
   "logs",
   {
     address,
   },
   function(error, result) {
     if (error) {
       console.log(error);
     } else {
       console.log(result);
     }
   }
 );

我正在 ropsten 網路上使用 metamask 水龍頭進行測試

Chainstack的開發倡導者在這裡!

事件由智能合約發出,因此您需要監聽智能合約地址才能接收任何事件。

水龍頭通常不是智能合約,而只是在前端請求時發送資金的地址。

此程式碼範例檢索 WETH 合約的事件(在主網上)。

var logs = web3.eth.subscribe('logs', {
   address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
   topics: []
}, function(error, result) {
   if (!error)
       console.log(result);
})
.on("connected", function(subscriptionId) {
   console.log(subscriptionId);
})
.on("data", function(log) {
   console.log(log);
})
.on("changed", function(log) {});

看起來像這樣(只是一個簡短的範例。)

{
 address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
 topics: [
   '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
   '0x00000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45',
   '0x000000000000000000000000b1a3b3ac90380efa3f06aa06fcb8335925aee3d6'
 ],
 data: '0x000000000000000000000000000000000000000000000000012dfb0cb5e88000',
 blockNumber: 15446829,
 transactionHash: '0x9ff570a0701a787282721550f694ac6448ce243ed4049ca40f3363b882ef9ee5',
 transactionIndex: 120,
 blockHash: '0x291891c1c87fe24fdf644f082031f22cd61b511b7dd4744186e1e41fb2139ecc',
 logIndex: 285,
 removed: false,
 id: 'log_b0af76d0'
}
{
 address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
 topics: [
   '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
   '0x00000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45',
   '0x000000000000000000000000b1a3b3ac90380efa3f06aa06fcb8335925aee3d6'
 ],
 data: '0x000000000000000000000000000000000000000000000000012dfb0cb5e88000',
 blockNumber: 15446829,
 transactionHash: '0x9ff570a0701a787282721550f694ac6448ce243ed4049ca40f3363b882ef9ee5',
 transactionIndex: 120,
 blockHash: '0x291891c1c87fe24fdf644f082031f22cd61b511b7dd4744186e1e41fb2139ecc',
 logIndex: 285,
 removed: false,
 id: 'log_b0af76d0'

您可以在 Chainstack 文件的Node API 參考頁面上找到更多詳細資訊和更多訂閱方法!

該地址沒有發出任何事件,它實際上甚至不是合約,因此它不能發出事件。事件/日誌與事務不同。有些事務會有日誌/事件,有些則不會

事件是合約可以發出的或多或少的單獨日誌語句,因此您可以像在做的那樣在鏈下觀看它們。

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