Uncle-Blocks
關於叔塊和事件
假設一個智能合約在一次交易後觸發一個事件。如果這筆交易記錄在一個叔塊中,那麼會有一個事件,經過主塊確認後,還會有另一個事件嗎?
假設我們有一個 web3 前端看這個合約,會記錄多少事件。
如果您的前端通過 JSON RPC 觀察事件日誌(方法eth_newFilter創建過濾器和方法eth_getFilterChanges來輪詢後續更改),則您可以從已探勘的事務(包含在已探勘的塊中)或未決的(尚未開採)交易。
即使你只收到來自探勘交易的事件,也有可能由於鏈重組,被探勘的塊後來成為叔叔。根據eth_getFilterChanges文件,在這種情況下,您將再次收到帶有
removed
標籤的日誌記錄。這實質上意味著您應該僅在以後可以在系統中補償此操作時才對事件執行操作(以防帶有
removed
標記的事件稍後出現),或者您應該在執行此操作之前等待一定的時間,以確保事件不會被回滾。