区块链的工作原理
什么是区块链?
简而言之,区块链相当于一份去中心化数字账本,记录了一系列数据。这些数据组成区块,由密码学技术提供保护,按照时间顺序排列。
区块链最早的模型构建于20世纪90年代初。当时,计算机科学家Stuart Haber和物理学家W. Scott Stornetta使用加密技术保护数据不被篡改。
Haber和Stornetta的这项成就鼓舞了诸多计算机科学家与密码学爱好者钻研区块链,这也推动了全球第一种去中心化电子现金系统(即第一种加密货币)——比特币的诞生。
虽然区块链技术先于加密货币问世,但直到2008年,即比特币诞生,前者才逐渐得到认可。自那时起,公众对于区块链技术的兴趣日渐高涨,加密货币也开始流行起来。
区块链技术主要用于记录加密货币交易,但同样可以记录各种数字数据,也可应用于其他领域。最古老、最安全以及最庞大的区块链网络是比特币,它经过精心设计,将密码学与博弈论均衡地融合在一起。
区块链如何运作?
在加密货币领域,我们可以将区块链视为由一连串稳定区块组成的链,每个区块都存储了一系列先前确认过的交易数据。 区块链网络是由无数计算机共同维护,因此其主要功能是充当去中心化数据库(或账本)。换言之,区块链中的所有参与者(即节点)维护区块链数据副本,相互之间保持良好的沟通交流,确保大家始终处于同一页面(或区块)。
因此,区块链交易在全球点对点网络中进行,推动比特币成为去中心化、无国界并且抗审查的加密货币。然而,多数区块链无需任何信任机制,被视为去信任化系统。比特币也没有独立的监管机构。
几乎所有区块链都以挖矿为核心,而这与哈希算法密不可分。比特币使用SHA-256算法(安全哈希算法256位),输入任意长度的字符串可以产生长度相同的输出。输出结果可以称为“哈希值”,该值始终为64个字符(256位)。
因此,无论“挖矿”重复执行多少次,相同输入始终产生相同输出。然而,如果输入发生微小改变,输出结果便截然不同。因此,哈希函数是确定的,而多数加密货币均按单向哈希函数设计。
此类函数决定了用户无法根据输出结果逆推输入。唯一的方法是猜测,但是猜中的概率微乎其微。这正是比特币区块链安全可靠的原因之一。
现在我们了解了算法的功能,下面通过一个简单的交易示例说明区块链的运作原理。
假设Alice和Bob是两位比特币持有者,Alice欠Bob两枚比特币。
为了向Bob偿还两枚比特币,Alice向全网矿工广播了这条交易信息。
在这笔交易中,Alice将Bob的地址和交易的比特币数量告知矿工,并且附上一个数字签名与她的公钥。该签名由Alice的私钥生成,矿工可通过其验证Alice确为这些比特币的实际拥有者。
确认这笔交易真实有效后,矿工即可将这条交易信息与其他交易信息一起放入某个区块,尝试对这个区块进行“挖矿”。该区块通过SHA-256算法进行运算,运算结果必须以一定数量的“0”为开头,方可判定为有效。“0”的数量取决于运算的“困难度”,后者会随全网算力的变化而改变。
为了正确输出“0”数量符合预期的哈希值,矿工在运行加密算法前会在区块内加入一个“nonce”。该值发生细微变化会彻底改变运算结果,矿工必须尝试不同的随机nonce,直至得到正确的哈希值。
每次挖出一个区块,矿工就会向全网广播新区块的信息,以便其他矿工确认区块的有效性。此后,他们会将有效区块的信息加入自己的区块链,表明交易完成。然而,矿工仍需将前一个区块的哈希值加入新区块,最终将所有区块相连,构成名副其实的“区块链”。这一点非常重要,体现了信任在系统中的作用。
每位矿工将专属区块链副本存储于个人计算机并达成共识:投入算力最多的区块链一定最长。如有人想更改前一区块中的交易信息,这个区块的哈希值也会改变,导致此区块之后的所有区块的哈希值全部改变。他必须将之前进行的所有运算推到重来,让别人相信他的区块信息正确无误。因此,如有矿工企图篡改区块信息,则必须投入超过全网50%的算力,这几乎是天方夜谭。类似的网络攻击因此称为51%攻击。
这种请求计算机运算,生成新区块的模型称为工作量证明(PoW)。此外还有其他机制,如权益证明(PoS),它不需要极大的算力支持,消耗的电能更少,吸引更多用户参与其中。