人们经常说,区块链的交易记录是不可更改的,是可信的。为什么?
理解这点需要引入一个概念:Hash算法。Hash算法有很多种,基本功能是:将任意长度的数据文件转换成一个唯一对应的固定长度字符串。你可以理解为,给任意一个文件生成了一串固定长度的乱码一样的标签。这个算法是不可逆的,就是说,你拿到这个标签,无法反向推导出原来的数据文件。如果数据文件有一点点变动,比如加了个标点符号,那么重新hash之后,新的标签也与原标签大不相同。无法从新旧标签的差异推测数据文件发生了什么变化。因此,通过标签,可以很容易地验证某个文件在某个时刻是存在的,或者验证两个文件是否相同。
正是这种不可逆性,决定了区块链的不可更改性。每个区块中,除了十分钟内的转账交易数据之外,还有一个区块头。区块头包含了对上一个区块数据的hash值。这些hash层层嵌套,长度固定,最终将所有区块串联起来,形成区块链。区块链里包含了自该链诞生以来发生的所有交易和所有新币发行。
假如我是坏人,我要篡改一笔交易。交易包括发送方和接收方,以及转账的数量。发送方的比特币可以一路追溯到最早新发行该币的区块。发送方拥有这些比特币的合法性,是由该币的原始发行区块记录和该币有关的所有历史交易记录保证的。因此,要篡改一笔交易,意味着它之后的所有hash和相关交易记录全部要篡改一遍,这需要的算力和难度极高,成功概率为零。
所以有所谓6个确认的问题。一笔交易被打包成区块后,再串接6个区块,这个交易才是基本无法更改的。可以类比排队。如果所有人都认可最长的队伍是合法的队伍,那么你排上之后,最关心的应该是:有多少人排在你后面。因为,排在你后面的人越多,你的合法利益越稳固。
新闻上经常用铁索链条图片来展示区块链,严格来说,这是不准确的。铁链或者项链,结构都是线性的。去掉其中一环,整个链条损失不大。区块链的结构不是这样,因为有hash算法,咬合的更加坚固,无法改动一点而不伤及其他。这就是区块链不可更改特性的源泉。