上QQ阅读APP看书,第一时间看更新
5.3 用途二:工作量证明
为什么都说区块链是不可篡改的呢?首先考虑一个简单的哈希链:每次打包时包含上一个区块的哈希值和这个区块的相关信息,如果某一个块的信息被篡改了,往后所有块的哈希值都会有变化,其他人也会注意到这个变化。但是这样设计的问题在于任何人都可以修改某一个区块上的信息,重新计算剩余链条的所有信息,并且声称这才是正确的链条。
比特币设计的精妙之处在于,它使得要实现这样的过程需要付出昂贵的成本。它采用工作量证明的共识机制,大家争相证明自己完成了一定的工作量,最先完成的获得记账权。而工作量指的就是要求找到一个随机数,使得它加上一个给定的字符串后,计算得到的哈希值小于某个值。在比特币中,这个给定的字符串包含了版本号、上一个区块的哈希值、以Merkle根哈希值存放的交易信息、时间戳、难度值的信息。矿工找到符合要求的随机数,既“合法”宣告了自己的记账权,也通过哈希函数完成了对交易信息的编码,并以一种不可篡改的方式存储。如果有人试图想更改交易信息,他必须运气特别好,能够快速且成功地找到往后链条的每个区块正确的随机数,使得他篡改信息后的链条成为当前最长的链条,这样的情况理论上的确可能发生,但是在算力有限的情况下,概率比较小。