Mining
乙太坊挖礦節點如何保持與網路的時間一致?
我們已經確定了父塊上的時間戳必須在子塊的時間戳之前 子塊的時間戳可以早於父塊嗎?.
如何考慮不同礦工電腦上時鐘設置的差異?
乙太坊節點(無論是否挖礦)都需要有準確的時間,否則它們將無法連接到對等節點和網路(https://github.com/ethereum/go-ethereum/wiki/Connecting-to-the -網路)。
節點可以容忍時間上的微小差異,但隨著一個節點的時間遠離協調 UTC 時間(每個NTP),其對等點的數量將減少,最終它將有零個對等點並與網路斷開連接。
礦工 M 想要一個與網路一致的時間,以便其他礦工將建立在 M 開采的區塊上。
區塊必須在合理的 Unix 時間內,否則礦工不太可能在時間戳不合理的區塊上建構。(例)
編輯:為清楚起見,在乙太坊中,關於時間戳的唯一規則是時間戳必須大於前一個時間戳。沒有其他規則:白皮書和wiki等舊文件可能會提到 15 分鐘(900 秒),以下是更正:
白皮書:
檢查區塊的時間戳是否大於引用的前一個區塊的時間戳,
並且距離未來不到 15 分鐘維基:
block.timestamp
<= now + 900 是block.timestamp > parent.timestamp 嗎?(嚴格來說更大)黃皮書是正式規範,請參見塊頭有效性(第 4.4.4 節,等式 48)。