区块链
我准备根据用于比特币的设计来描述区块链。还有用于企业环境的私有区块链,但是我稍后才讨论它们。区块链于 2009 年面世,比特币成为第一个实施区块链的系统。在比特币中,区块链是个不可变的数字公共分类账,是一个不断增长的分布式数据库,通过加密保证安全性。区块链存储信息于统一大小的区块中。每个区块包含一个来自前一个区块的哈希信息以提供加密安全性。这个哈希信息是来自前一个区块的数据和数字签名,这个前一个区块的哈希值可以一直回溯到被称为“创始块”的第一个区块。该信息是通过哈希函数运行,然后指向下一个区块的地址。区块链数据结构是默克尔树的一个示例,它被用作验证数据的有效方法。
让区块加入到区块链的过程中涉及了博弈理论。在网络中作为节点的计算机称为“矿工”,必须和其他计算机进行竞争,以找到叫做“nonce(随机数)”的哈希函数产生的值。矿工必须利用自己的计算资源求解这个值,这需要强大的计算机硬件。构建在区块链中的一个称为难度级别的协议决定了基于网络中所谓的全部哈希能力来求解该值的难易程度。这意味着矿工越多,难易程度的调整就越难。因为矿工越多,在网络中的可用计算能力就越多,提高了以每秒哈希为单位计算的哈希能力。一旦矿工验证了一个区块,它们将收到奖励作为把它们的计算能力提供给网络的补偿。这种激励是节点参与挖区块的动力,因为它们收到以交易费用和代币的形式出现的奖励。在比特币的协议中,这被称为工作量证明共识算法。
正如您所看到的,区块链使用去中心化节点的分布式网络。去中心化意味着网络上所有的节点都存有该区块链的副本。这些节点要么存储该区块链的完整副本,要么实施挖矿操作,或者两者兼有。没有管理员来验证交易区块。相反,是由矿工来实施验证,通过解决基于整个可用哈希能力的网络难易程度协议的加密难题来进行。一旦区块加入了区块链,信息就不可变,并对全体参与者是透明的。区块链交易是非递归的,意味着它们在区块中被验证后就不能重复。区块链具有很高的容错性,因为如果有一个或多个节点宕机,总是有其它可用节点来运行该区块链。去中心化的另一个优点是,它可以是无权限和无信任的,允许在陌生人或互不信任的人之间进行交易。区块链所做的是,通过记录交易的透明性提供信任,并提供加密的安全方法来交换价值。
区块链使用点对点网络架构。它不需要访问中央数据库,相反,网络中所有参与的节点可以相互连接。没有“主人”来控制所有的节点。每个节点在如何访问该区块链上是互相平等的,不需要获得管理员访问权限。因此,如果某个节点有恶意,会影响到网络吗?从理论上来讲,如果它们有多数的哈希能力,就会影响到网络。在理论上,一个恶意节点可以采用所谓的“51% 攻击”来控制整个网络。这需要大量的计算资源来完成,因为发起攻击比不攻击网络的成本更大。在这种情况下,利用计算资源挖矿更有利润。确保区块链安全的机制是去中心化,如果一个节点试图修改区块链上的任何信息,就需要来自其他节点验证支持。这会创建一个不同于主网的链,而且只有在其比主网的链还要长时才能被验证。像比特币这样的网络包含数千个节点,因此,如果试图操纵数据,就需要在该网络中的所有其他节点上进行修改。实际上,这是计算密集型的,需要消耗大量的电力,是极其难以做到的。这是一种治理形式,以确保没有人可以欺骗别人。这就是区块链防篡改和不可变的原因。同时,它是透明的,因为有证据表明,每个人都可以查看所发生的交易。
我们可以清楚地看到,正是这种设计让区块链有别于传统的数据库和区块链。我们来做个总结吧。
现在,我们来看看它们各自的优缺点。