比特币时间戳

自古美人都是妖i 提交于 2020-01-28 02:19:59

疑问

每个区块都引用前一个区块的哈希值,所以这些区块已经有先后顺序,那么时间戳是否就没有必要了呢?

回答

为了保证比特币的精确减半时间或者说发行规律,必须具有根据当前算力在一定间隔周期内调整挖矿难度的机制。

在比特币上面,这个一定间隔周期就是两星期,即比特币每两星期根据当前算力调整一次采矿难度,以实现区块出块间隔十分钟左右的目标。为了对两星期的时间进行计算,需要将时间概念引入区块链并成为一致性系统的一部分。

因此区块必须含有时间戳,那么比特币也就是一个分布式电子时钟。

时间

在比特币区块产生时,涉及两个时间:

  • 区块头中的时间,由矿工放置
  • 区块产生的实际时间,比特币系统生成

当然,这两个时间应当几乎相同,这里有两种情况

  • 矿工本身的时钟非人为的不准确,例如晚了1天
  • 矿工具有准确的时钟,但是矿工选择作恶,放一个假的时间戳

那么矿工有没有作恶的动力?

矿工的确存在在时间上作恶的动力。例如,如果产生一个区块实际只花了10 分钟,但是矿工可以通过增加 5 分钟的时间戳来声称花了 15 分钟。如果这种增加 5 分钟的做法在整个两星期的难度调整周期都持续 ,平均区块时间会看起来像是 15 分钟,而实际上比这要短。那么下一个周期的难度可能会向下调整,由于区块时间加快,增加采矿收入。

防止矿工篡改时间戳

  • 过去时间中值(MPT)规则 - 时间戳必须比过去 11 个区块的中值更靠前。11 个区块的中值意味着可以对6 个区块进行重组并且时间仍不会向后移动,有人可能认为这与 Meni Rosenfeld 的 2012年报告中提供的例子是一致的,即对于拥有 10% 网络算力的攻击者,必须进行六次确认才能将攻击的成功概率降低到 0.1% 以下。

  • 未来区块时间规则根据 -MAX_FUTURE_BLOCK_TIME 常量,相比来自同等节点的中值时间,时间戳不能出现在未来 2 小时以上。节点提供的时间与当地系统时钟之间的最大允许差是 90 分钟(又一个安全保障措施)。需要注意的是,不同于上面的 MPT 规则,这不是一个完全达成共识的规则。具有在未来太远时间点的时间戳的区块是无效的,但随着时间向前移动它们可能变得有效。

规则一确保区块链在时间方面继续向前移动 ,而规则二确保区块链不会向前移动 太远。这些时间保护规则并不完美 ,例如,矿工仍可以在两星期时间内通过生成未来的时间戳,从而将时间戳向前移动,但这种操作的影响有限。

2hours/2weeks = 0.6% 

如上文的比率所示 ,由于两个小时只是两星期中很小的一部分,此操作对网络可靠性和挖矿盈利能力的影响可能有限。这相当于在难度调整后的两星期内,将区块之间的时间从 10 分钟减少至9 分 54 秒。而且 ,它只是一次性变动,因为一旦发生了两小时的时间移动 之后,除非先向后移动 ,否则无法再次发生前移。与此同时,矿工在向前移动两个小时之前,可能会考虑安全边际,以减少区块被网络拒绝的风险。

据我们判断 ,这些规则在防止矿工以恶意方式篡改比特币时间戳方面,已经证明具有合理的有效性。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!