Synchronization

僅監視客戶端的最後一個塊可能會變得陳舊嗎?

  • October 3, 2017

讓我們有一個僅用於監視目的的乙太坊節點(它不創建任何交易,只是更新它是整個鏈的副本)。

為了在大多數乙太坊庫(尤其是 web3j 和 EthereumJ)中獲得有關鏈中頂級塊的通知,我們應該編寫一些帶有最終將被呼叫的方法的偵聽器類。像這樣的東西:

class EthereumListener {
   public void onBlock(Block block) {
       long blockNumber = block.getNumber();
       //...
   }
}

我的問題是:我可以確定block正在通知的聽眾已經在主鏈上並且不會過時嗎?

換句話說:可能block是叔叔嗎?可能是如果我稍後向客戶詢問具有此編號的塊,我會得到一個具有不同內容的塊,因為叔塊被客戶副本中的有效塊替換了?

如果答案是“是”,我的第二個問題是:庫(web3j 或 EthereumJ)onBlock在替換 Uncle 塊時是否通過方法通知我新的有效塊?

換句話說:不同的方法blockNumber呼叫之間可能相同嗎?onBlock

不,不確定一個塊不會被另一個塊替換。一個區塊的確認越多,它被替換的可能性就越小。你永遠不會有 100% 的信心,它不會被替換,但要求多次確認你可以有一個非常高的信心,實際上它會非常接近 100%。

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