Events

事件可以檢索多長時間?

  • November 2, 2017

有誰知道可以檢索多長時間的事件?

我在 0x86e5b6d7648b8b994886aeb98e2b4770675e608d 的Kovan 合約上有事件,看來我無法再檢索超過 14 天的事件?

我正在使用的程式碼如下。get 和 watch 都不會檢索超過 14 天的事件。我在今天和 14 天之間沒有任何內容,所以我不知道它是否停止檢索早於幾天的事件,或者是否有限制。

提前感謝您的幫助。

更新:好的,問題似乎是奇偶校驗的“完全同步”的含義與我想像的不同。如果您看到一條線,例如

2017-11-02 15:31:11 #4098136 23/25 對等方 301 MiB 鏈 83 MiB db 0 字節隊列 10 MiB 同步 RPC:1 conn,3 req/s,142 µs

在控制台輸出中,這意味著 Parity 還沒有完全下載所有日誌,它只下載了塊 4098136 的日誌(在這種情況下),即使你看到

2017-11-02 15:31:13 導入 #4569744 1c13…0e14 (0 txs, 0.00 Mgas, 0.81 ms, 0.57 KiB)

let ContractAddr = "0x86E5b6D7648b8B994886aeB98E2B4770675e608D"; // on Kovan

   optionsShout = {
     fromBlock: 4289879,
     toBlock: 'latest',
     address: ContractAddr,
     topics: [web3.sha3('__Shout(string)')]
   }

   let filter, w;

   function getLogs() {
     var filter = web3.eth.filter(optionsShout);
     console.log("getLogs...");
     filter.get(function(error, event) {
       if (!error) {
         console.log("Event: " + event);
       } else
       {
         console.log("Error: " + error);
       }
     })
   }

   function startFilter() {
     console.log("Starting filter");
     filter = web3.eth.filter(optionsShout);

     filter.watch(function(error, event) {
       if (!error) {
         if (event.blockNumber > optionsShout.fromBlock) {
           optionsShout.fromBlock = event.blockNumber;
           displayEvent("event1", event);
         }
       } else
       {
         console.log("Error: "+error);

       }
     })
   }

這裡有幾個可能的問題:

  1. 您連接的節點可能沒有舊事件,或者可能有禁止您檢索它們的策略。

  2. 您請求的日誌範圍可能太寬。這可能會導致節點超時。嘗試找到您的合約有事件的區塊,並僅指定該區塊編號作為範圍。如果這顯示了您的日誌,請嘗試增加範圍,直到找到實際限制在哪裡,然後分批獲取限制在該範圍內的數據。

  3. 如果您使用的是元遮罩,那麼在獲取日誌時似乎存在一些錯誤行為。確保您在正確的網路上後,嘗試關閉所有打開的 Chrome 視窗,然後重新打開它。

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