区块链中的时间戳是什么意思?区块链是在时间上有序的、由记录块(区块)组成的一根链条。一个区块包含两个部分:区块头(Block Header)和记录部分。区块中的所有记录通过默克尔树(Merkle Tree)组织起来,默克尔树根(Root)的哈希值做为本区块里所有记录的数字指纹被放入区块头。
区块头还包含以下字段:前一个区块头的哈希值(这是前一个区块的数字指纹,也可以看做是指向前一个区块的哈希指针),本区块的时间戳、高度(Hight,即从第一个区块开始数本区块是第几个块),以及一些其他信息。系统的共识算法保证了每过固定的一段时间(Bitcoin是大约10分钟),参与整个系统记账的节点会达成共识在区块链上添加下一个新的区块。
时间戳的这种设计,使得更改一条记录的困难程度按时间的指数倍增加,越老的记录越难更改。这是因为,如果改动某个区块里的一条记录,意味着该区块原来的默克尔树根失效了,需要改动区块头,该区块的数字指纹随之失效。又由于下一个区块的区块头包含这个哈希指针,这就意味着下一个区块也需要改动。如此直到最新的那个区块。
可见要想改动一个区块,必须同时改动该区块后面的所有区块。因为将一个区块放入区块链中需要消耗非常多的资源(资源种类依共识算法的不同而不同,可以是计算力,流逝的时间,拥有的权益等),随着后面添加的区块越来越多,要想改动某个区块几乎是不可能的。
对一个普通应用来说,如何实现这样一个时间戳服务呢?我们需要自己创建一个区块链吗?其实没必要,Bitcoin就是一个很好的时间戳服务,我们可以把哈希值写到Bitcoin的区块链中。这是一种存在证明(Proof of Existence)。Factom也提供类似的服务,它收集所有的哈希,每隔10分钟生成一个哈希值,写到Bitcoin的区块链中。
哪些数据需要有时间戳?必须是不能变更的数据,特别适合存档文件。需要现在就考虑实施时间戳吗?这个跟你的数据战略相关。在大数据时代,拥有高质量的数据就是拥有了价值。时间戳可以一定程度上保证数据的可信度,至少这些数据是经过“时间考验”的。
有用又有趣的时间戳
有趣的时间戳
如果你现在看到一张发帖时间在2014年7月15日,内容是2018年世界杯法国4:2克罗地亚夺冠的截图,你一定不会认为这图片是真的,即使它是真是真的。
世界杯决赛与区块链时间戳
在当今社会,不论是计算机或是手机,或者其他任何电子设备,我们都可以通过修改它显示的时间,“穿越”到过去,或者“穿梭”到未来,我们也可以通过各种软件来修改图片或者视频等等。因此,在网络上,关于时间的信息似乎失去意义,因为几乎任何人都可以修改它。
不过,在区块链中,时间戳永远不会撒谎,因为区块链过去的部分是不能以任何方式进行修改的。而且时间戳是区块链区块包含特定信息的一个过程,它永远存在。
早在2009年1月3日,比特币概念的创始人中本聪在他创造的第一个区块——“创世区块”上刻下一句永不修改的话:“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks(2009年1月3日,财政大臣正处于实施第二轮银行紧急援助的边缘)。”而这句话正式当日英国泰晤士报的头版文章标题。因为区块链的时间戳服务,这句话被永久性的保留了下来。
区块链与网络
比特币公司BTCC在2015年推出了一项服务“千年之链”——即区块链刻字服务,用户可以将通过这项服务将文字刻在区块链上,永久保存。
现在,通过区块链,我们只需将图片、音频甚至是视频盖上时间戳,不论多少年后,也足以证明它是时间戳的时间就存在的。
为什么区块链中时间戳永不撒谎?
1997年,密码朋克成员哈伯和斯托尼塔提出了一个用时间戳的方法保证数字文件安全的协议,哈伯和斯托尼塔对它的简单解释是,用时间戳的方式表达文件创建的先后顺序,协议要求在文件创建后,其时间戳不能改动,这就使得文件被篡改的可能性为零。
可信时间戳由算力时间源来负责保障时间的授时和守时监测,任何机构包括时间戳中心自己不能对时间进行修改,以保障时间的权威。
哈伯和斯托尼塔提出的这项安全协议后来成为比特币区块链协议的原型,直接赐予区块链技术无中心、防篡改、高透明的特点。这也是区块链技术被视为改变当今中心化垄断、信用严重缺失的社会现状的革命性技术的关键所在。
现如今的区块链中包含了一个永不停息的时间戳系统。
区块链论与时间戳系统
而区块链拥有的以下特点,使得时间戳可以完全信任:
l 不可预测/伪造。因Block的计算是随机事件,其Hash值是一个32字节的随机大数(2256)。想蒙对该数的概率实在是太低了;
l 不可销毁/修改。Block Chain拥有巨大的算力在维护与延续,对于N个确认的Block,想篡改是不可能的;
l Block具有天然时间特性。时间戳是Block meta字段之一;
l Block可以存储信息。对于Block meta信息,是无法控制的。但Block会收录交易,而交易是可以”写入”自己的数据。
时间戳的这种设计,使得更改一条记录的困难程度按时间的指数倍增加,越老的记录越难更改。这是因为,如果改动某个区块里的一条记录,意味着该区块原来的默克尔树根失效了,需要改动区块头,该区块的数字指纹随之失效。又由于下一个区块的区块头包含这个哈希指针,这就意味着下一个区块也需要改动。如此直到最新的那个区块。
可见要想改动一个区块,必须同时改动该区块后面的所有区块。因为将一个区块放入区块链中需要消耗非常多的资源(资源种类依共识算法的不同而不同,可以是计算力,流逝的时间,拥有的权益等),随着后面添加的区块越来越多,要想改动某个区块是不可能的。
我们能用时间戳做些什么?
时间戳像是一台永不失真的摄像机,能把时间和当时正发生的事件原原本本地记录在区块链中。因为时间戳证明了区块链上什么时候发生了什么事情,而且没有人篡改它。
时间戳可以在区块链中扮演公证人的角色,而且比传统的公证制度更为可信。如果用户决定公开了一个时间戳,我们能在区块链上看到的,将是结合一个特定文件的哈希值。
结合时间戳的特性,我们可以做些什么呢:
l 保护知识产权。假如你写了一篇论文,在发布之前想先找行业专家指点一下,但是你担心专家直接用他的名义发表。这时候你只需先保存在区块链链上,便可以轻松证明版权了;
l 记录特殊时刻。如果你想记录某个特殊时刻,记得盖上时间戳;
l 储存特定信息。如果你想永久保存某些重要信息,盖上时间戳。
时间戳的功能,会是区块链的另一种用途,它可能会彻底改变人类的未来。