传统关系型数据库在设计表时一般会有一个或多个时间戳(timestamp)字段,用来标记一行记录添加或修改时的时间。
基本上,这些时间戳是给应用内部使用的。当数据被共享给其他应用时,这些时间戳并没有多大意义,因为时间戳可以伪造。
在数据黑市上,一个数据掮客可以将一份银行VIP客户数据进行注水,掺入一半的假数据。
一家保险公司为了搅乱市场上竞争对手的视线,故意污染数据,将高净值用户放入骗保用户黑名单,将骗保用户放入高净值用户名单,然后让污染后的数据故意泄露出去。
如果每条数据都带有一个真实可信的时间戳(这条数据产生的真实时间点),这样的造假行为就比较难奏效,因为假数据的时间戳一般都是最近的。
以前我们很少关心数据的时间戳,很少去了解时间戳对数据的意义,一个原因也许是我们不知道如何用技术去实现这样的时间戳。
如果技术实现完全可行,那么这个时间戳对我们来说就有了全新的意义。
首先,我们有了真正可以信任的历史数据。
第二,这些数据因为可信变得更有价值,可以在应用之外被其他应用或者分析工具使用。
第三,我们可以基于这些可信的历史记录生成信用。
最后,我们真正进入一个信用社会。
百科知识:
个人隐私信息泄露在中国是一个非常严重的现象。盗取、贩卖个人信息已经有完整的黑市产业链,部分互联网征信和数据公司,从黑市上购买数据,甚至雇佣黑客盗取数据。互联网用户普遍意识到个人隐私信息的重要,对隐私保护的要求会更高。程序员有责任从技术上加强
想象一下,如果我们想在未来某天证明自己的数据是在今天产生的,可以在今天对今天的所有数据进行某种形式的哈希(比如默克尔树),最终得到一个哈希值,然后在第二天的《参考消息》上登一个广告,把哈希值发布出去。明天的《参考消息》就成了我们的时间戳。
如果明天我们想做同样的事,可以如法炮制,另外有一个关键点,那就是要记得把今天的哈希值也给哈希进去。这样每天的哈希值就包含了以前所有数据的哈希信息。
区块链在P2P网络上通过节点间的共识算法实现了一个分布式的时间戳服务。
区块链是在时间上有序的、由记录块(区块)组成的一根链条。一个区块包含两个部分:区块头(Block Header)和记录部分。区块中的所有记录通过默克尔树(Merkle Tree)组织起来,默克尔树根(Root)的哈希值做为本区块里所有记录的数字指纹被放入区块头。
区块头还包含以下字段:前一个区块头的哈希值(这是前一个区块的数字指纹,也可以看做是指向前一个区块的哈希指针),本区块的时间戳、高度(Hight,即从第一个区块开始数本区块是第几个块),以及一些其他信息。系统的共识算法保证了每过固定的一段时间(Bitcoin是大约10分钟),参与整个系统记账的节点会达成共识在区块链上添加下一个新的区块。
时间戳的这种设计,使得更改一条记录的困难程度按时间的指数倍增加,越老的记录越难更改。这是因为,如果改动某个区块里的一条记录,意味着该区块原来的默克尔树根失效了,需要改动区块头,该区块的数字指纹随之失效。又由于下一个区块的区块头包含这个哈希指针,这就意味着下一个区块也需要改动。如此直到最新的那个区块。
可见要想改动一个区块,必须同时改动该区块后面的所有区块。因为将一个区块放入区块链中需要消耗非常多的资源(资源种类依共识算法的不同而不同,可以是计算力,流逝的时间,拥有的权益等),随着后面添加的区块越来越多,要想改动某个区块几乎是不可能的。
对一个普通应用来说,如何实现这样一个时间戳服务呢?我们需要自己创建一个区块链吗?其实没必要,Bitcoin就是一个很好的时间戳服务,我们可以把哈希值写到Bitcoin的区块链中。这是一种存在证明(Proof of Existence)。Factom也提供类似的服务,它收集所有的哈希,每隔10分钟生成一个哈希值,写到Bitcoin的区块链中。
哪些数据需要有时间戳?必须是不能变更的数据,特别适合存档文件。需要现在就考虑实施时间戳吗?这个跟你的数据战略相关。在大数据时代,拥有高质量的数据就是拥有了价值。时间戳可以一定程度上保证数据的可信度,至少这些数据是经过“时间考验”的。
风险提示:《区块链中时间戳是个什么意思?》不作为任何投资依据,仅供个人网站学习。
温馨提示:《区块链中时间戳是个什么意思?》来源网络,如有问题,请联系网站更新或删除。
百科知识:
1.区块链技术是什么?区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。(来自百度百科)2.区块链技术的本质到底是什么?区块链本质上是一