Events
如何檢查事件是否已確認?
當一個事件被觸發時,你會得到這樣的東西:
{ "address": "0x0a7a177321f3b3b6e2299e621eb32e892b141b4b", "topics": [ "0x0d332ed5c7d6f1999116748c0eb99c740f276d879d025a5be6435fcf177785de" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568616c6c6f000000000000000000000000000000000000000000000000000000", "blockNumber": "0x2f6d30", "transactionHash": "0x4aaf274a399ee315dc351b30b2e6ff9525996d4700c4843ec0a625512cd21fd1", "transactionIndex": "0x4", "blockHash": "0xbfad930ed694aae9fc660951ac4a309701a17e75f02087c72c3ea78431c3005e", "logIndex": "0x2", "removed": false }
我需要知道該事件是否已被確認並且不會“恢復”(至少具有很高的可信度)。
我正在考慮做的是等待中引用的塊
blockHash
有 12 次確認以認為事件已確認。為了檢查 12 個確認,我的猜測是我需要通過呼叫來檢查塊
eth_getBlockByHash
,驗證響應不是null
(我猜這意味著塊被丟棄)並確保它eth_blockNumber - block.number
等於或大於 12。這個確認事件的過程聽起來正確嗎?
是的,等待區塊確認是如何確保事件存在。
是的,當一個塊被丟棄時
eth_getBlockByHash
會返回。null
DApp 如何使用 web3.js 或其他庫檢測分叉或鏈重組中有一些範常式式碼? (添加到其中的高質量答案將獲得投票,也可能成為接受的答案。)
大多數人選擇的被認為是“已確認”的方法是等待自您檢查交易以來開採*(x)數量的塊。*
您等待的時間越長越好,因為它減少了事務成為“叔叔”或被還原的機會。