Contract-Design

合約可以安全地依賴 block.timestamp 嗎?

  • December 16, 2018

使用 block.timestamp 作為合約到期時間有多安全?如果礦工在塊頭中提供了不正確的時間戳,在被其他節點拒絕之前,它可以關閉多少?是否有策略使契約對此更加穩健?

不是特別是,但這取決於案例是什麼。

出塊時間受以下限制:

  • 如果您在區塊上標記的時間太遠,那麼其他人將不會在其上建構(礦工不會在時間戳為“來自未來”的區塊上建構)。
  • 您的塊時間不能被標記為早於其父時間。
  • 通過在實際發生之前不加蓋塊,將難度保持在最低(對礦工來說是最好的交易)。

綜上所述,這些因素表明,由不試圖操縱任何東西的小型算力礦工生產的大多數區塊將非常接近準確。 然而,對於更強大的礦工來說,在短時間內操縱時間戳是微不足道的,特別是如果這樣做可以有所收穫的話。

最終,沒有加密方法來驗證時間戳本身——只有某些加密結構的排序。因此在高價值/風險應用的情況下,block.timestamp 需要補充一些其他的策略。

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