上期文章中我们提到区块的组成,其中时间戳就是一个重要组成部分,时间戳就像是一个个交易证明,让每份交易记录都有迹可循。
摘要:上期文章中我们提到区块的组成,其中时间戳就是一个重要组成部分,时间戳就像是一个个交易证明,让每份交易记录都有迹可循,区块链上每个区块的依次相连就是通过时间戳保证的,那时间戳是什么呢?
什么是时间戳
时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。
在区块链技术中,区块链通过时间戳保证每个区块依次顺序相连。时间戳使区块链上每一笔数据都具有时间标记。

举个简单的例子,数字世界的时间戳本身可以类比成邮戳。人们到邮局寄信,邮局会在邮票上盖章,章上内容是某地、某邮局、某年月日,主要表示某地某邮局在某一天受理了这封邮件。
在一些涉及绑匪情节的电影中,我们经常会看到人质家属谈赎金前要求绑匪证明人质还活着,以免在交赎金后才发现人质早已被撕票。这时,绑匪通常会出示人质拿着当天发行的报纸的照片,以此来证明在报纸发行时,人质还活着。
这里,“报纸发行时间”就相当于一个用以表明时间的戳记。
时间戳的意义
目前运用较广的一种数据形式是Unix时间戳,它是指从格林尼治时间1970年01月01日00时00分00秒起截止到现在的总秒数。
比如3600秒表示的就是1970年01月01日01时00分00秒。
在比特币中,这种时间戳也被用来标记比特币每个区块的诞生时间;简而言之,区块的诞生取决于一种名为“挖矿”的游戏,当一个人“挖出”某道谜题的答案,一个区块就诞生了,参与“挖”的人被称为矿工。正是这些矿工负责为他们挖出的区块盖上时间戳,用以记录区块诞生的时间。

不过,这些人的手表指向的时间可能会存在误差,所以时间戳也很难完全同步,在比特币中的时间戳只要求精确到小时就可以了。
时间戳为何不可篡改
上期我们说过一个区块包含两个部分:区块头和区块体。而区块头包含了这个区块的所有特征:
前一个区块头的哈希值(这是前一个区块的数字指纹,也可以看做是指向前一个区块的哈希指针),本区块的时间戳、高度(High,即从第一个区块开始数本区块是第几个块),以及一些其他信息。系统的共识算法保证了每过固定的一段时间(比特币是大约10分钟),参与整个系统记账的节点会达成共识在区块链上添加下一个新的区块。

而时间戳的这种设计,使得更改一条记录的困难程度按时间的指数倍增加,越老的记录越难更改。这是因为,如果改动某个区块里的一条记录,意味着该区块原来的记录源头(默克尔树根)失效了,需要改动区块头,该区块的数字指纹随之失效。又由于下一个区块的区块头包含这个哈希指针,这就意味着下一个区块也需要改动。如此直到最新的那个区块。
可见要想改动一个区块,必须同时改动该区块后面的所有区块。因为将一个区块放入区块链中需要消耗非常多的资源(资源种类依共识算法的不同而不同,可以是计算力,流逝的时间,拥有的权益等),随着后面添加的区块越来越多,要想改动某个区块几乎是不可能的。
就像记录在区块链上的其他数据一样,时间戳一旦记录上链,也是无法篡改的。类似于在绑匪电影中,由于新闻无法提前预测,所以报纸发行时间作为时间戳是可以被信赖的。
本期课堂就到这里了,下期我们继续了解区块的其他组成部分,敬请期待!