Alert Source Discuss
🚧 Stagnant Standards Track: Core

EIP-1482: 定义最大区块时间戳漂移

Authors Maurelian (@Maurelian)
Created 2018-10-09
Discussion Link https://ethereum-magicians.org/t/define-a-maximum-block-timestamp-drift/1556

简述

在协议规范中包含一个关于可接受的时间戳漂移的明确定义。

摘要

基于 Geth 和 Parity 都实现了相同的时间戳验证要求,这应该被写入参考规范中。

动机

对于区块头中的时间戳必须有多准确,缺乏明确的说明。《黄皮书》将时间戳描述为

一个标量值,等于 Unix 的 time() 在该区块创建时的合理输出

这导致了关于在智能合约开发中安全使用 TIMESTAMP 操作码(Solidity 的 block.timestampnow)的困惑

对 “reasonable” 的不同解释可能会造成共识失败的风险。

规范

《黄皮书》应该将时间戳定义为:

一个标量值,等于 Unix 的 time() 在该区块创建时的输出。为了区块验证的目的,它必须大于前一个区块的时间戳,并且不能比系统时间大 15 秒以上。

理由

GethParity 都会拒绝时间戳比未来时间大 15 秒以上的区块。这建立了一个事实上的标准,应该在参考规范中明确说明。

向后兼容性

对于在主链历史早期挖掘的区块,如果它们被认为是无效的,可能有必要放宽此要求。

测试用例

这些将非常重要。

实现

_在任何 EIP 被赋予 “Final” 状态之前,必须完成实现,但不必在 EIP 被接受之前完成。虽然在编写代码之前就规范和理由达成共识的方法有其优点,但在解决许多 API 细节的讨论时,”粗略共识和运行代码” 的原则仍然有用。 _

版权

版权及相关权利通过 CC0 放弃。

Citation

Please cite this document as:

Maurelian (@Maurelian), "EIP-1482: 定义最大区块时间戳漂移 [DRAFT]," Ethereum Improvement Proposals, no. 1482, October 2018. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-1482.