《锋哥论道区块链》之四区块链1.0之比特币--时间戳
比特币区块的时间戳用于解决交易的存在性问题。
【原译文】
本解决方案首先提出一个“时间戳服务”。时间戳服务通过对以区块(block)形式存在的一组item实施随机散列(hash)并加上时间戳 ,并将该随机散列(hash)进行广播,就像在新闻或世界性新闻组网络(Usenet)的发帖一样。显然,该时间戳能够证实特定数据必然于某特定时刻是的确存在的,因为只有在该时刻存在了才能获取相应的随机散列值(hash)。每个时间戳应当将前一个时间戳(也就是前一个区块的hash值)纳入其随机散列值(hash)中,每一个随后的时间戳都对之前的一个时间戳进行增强(reinforcing),这样就形成了一个链条(Chain)。
【解读】
1.引入时间戳的目的?
比特币区块的时间戳用于证明交易的存在性问题。
2.时间戳服务的时间来源哪里?
时间来自于连接的其他节点(node)时间的中位数(median),要求连接的节点(node)数量至少为5,中位数和本地系统时间差别不超过70分钟,否则会提醒你更新本机的时间。同时,在接收到新的block时会拒绝时间与自己差距+2小时和-(前11个block时间中位数)的block,由此我们知道了这个时间的正确来源了,还是利用大多数人的机器时间,其实比特币的核心理念一直是认为“多数人是正义”的。
假设区块B(n)接收到新的区块为B(x),时间戳为TB(x),则与前一个区块B(n)的时间戳TB(n)关系:-(前11个block时间中位数)<TB(x)- TB(n)<2
注:B(x)区块可能是B(n)之前或者之后的区块。
3.比特币用于存在性证明
存在性证明是指用于向第三方证明某个物品或者事件在过去的某个时刻存在过。
(1)比特币具有下列优良的特性可以更完美的用于存在证明:
1)不可预测/伪造。因block的计算是随机事件,其hash值是一个32字节的随机大数(256bit)。想蒙对该数的概率实在是太低了。
2)不可销毁/修改。Block Chain拥有巨大的算力在维护与延续,对于N个确认的block,想篡改是不可能的。
3)block具有天然时间特性。timestamp是block header(区块头)字段之一。
(2)比特币做存在证明
1)时间点后向证明
因为block hash的不可伪造性,能提供Block Hash即可证明存在于该Block时刻之后。例如,你在拍照的时候,拿着打印有block hash的纸即可证明:你在该block时刻之后进行的拍摄。
2)时间点前向证明
前向证明需要精心构造一个包含消息摘要(hash值)的交易,待该交易进入block中。便可以证明你在该block时刻之前拥有该数字摘要。前向证明的关键是能把信息写入时间戳服务载体。
3)时间区间证明
有时候,仅仅证明时间点之前或之后是不够的,需要能够确认到某一个时刻。将上述方式综合即可完成:
将block A的hash值添入数据文件,并制作文件消息摘要。(时间点后向证明)
将摘要信息构造至交易中,广播之。(时间点前向证明)
当交易被block B收录进去,那么即可证明,该文件于block A与B的时间间隔中存在。
如果交易给了足够的矿工费(Transaction Fee),具有较高优先级的话,便很有可能被紧随其后的block收录。连续的block约10分钟,那么就在一个相对小的时间内作了证明,可以近似认为是时间点。