在前面的章节中,我们学习了比特币的诞生和运行原理。比特币向世界证明了去中心化数字货币的可行性,但它只是区块链技术的第一个应用。比特币诞生几年后,人们开始意识到区块链技术本身的巨大潜力,开始探索区块链在更多领域的应用。
特别是2013年以太坊的提出,创造性地引入了智能合约,使区块链从简单的记账工具进化为可编程的计算平台,极大地丰富了区块链的应用场景。与此同时,不同的团队也在探索使用各种共识机制来提升区块链的性能和扩展性。
本篇将系统介绍区块链的核心技术,包括:
通过本篇的学习,你将理解区块链技术的核心原理,为后续学习以太坊等平台打下基础。
狭义上说区块链是一种区块通过 Hash 方式形成的链式结构,因为链的环环相扣,任何一个区块上的修改,破坏链结构,参考这里,使其具备易于验证、不可篡改的特性。
区块是区块链中的数据存储单元
区块由参与网络的节点独立生成,每一个区块中存储了一组交易信息,这些交易信息的哈希数据为作为默克尔树节点存储,每个区块同时存储前一个区块的哈希信息,因此区块就通过哈希信息链接起来,形成区块链。
广义来讲区块链定义为一个共享的、不可篡改的账本,可用于记录网络中的交易和跟踪“资产”流转。 这里“资产”可以是任何有价的东西, 可以是货币、股票、土地、知识产权、品牌等,当他们在区块链网络上、公开透明的流转和交易是,可降低各方面的风险和成本。
在经济活动中,往往是依靠信息进行决策,信息的真实性、信息的传递速度对业务决策至关重要,区块链是用于传递这些信息的理想之选,因为它可提供即时、共享和完全透明的信息,这些信息存储在不可篡改的账本上。
1. 分布式账本技术
所有网络参与者都有权访问分布式账本及其不可篡改的交易记录。与传统的中心化数据库不同,区块链的账本数据分布存储在全球成千上万的节点中,任何一个节点都无法单方面篡改数据。
2. 不可篡改的记录
在交易被记录到共享账本之后,任何参与者都不可以更改或篡改交易。这是因为每个区块都包含前一个区块的哈希值,形成链式结构,任何对历史数据的修改都会破坏整个链的完整性,极易被发现。
3. 智能合约
智能合约是存储在区块链上的程序,可以自动执行预设的规则和条件。它让区块链从单纯的记账工具,进化为可以运行复杂逻辑的计算平台。下面我们将详细介绍智能合约。
2013 年,Vitalik 提出了以太坊,创造性引入智能合约,智能合约是区块链上可执行的代码,用户可以根据自己的业务需要上传自己的代码到以太坊上,由以太坊的节点来进行执行。极大的丰富了区块链的执行程序能力。
智能合约名称由来
智能合约是链上的程序,为什么叫智能合约呢?"合约"是取材自现实中的合约,是想强调链上的程序可以按协议规则执行,就像法律条款一样。"智能" 主要是强调不受干预的可自动执行。
在以太坊提出之前,比特币这样的加密货币的交易脚本可实现的功能非常有限,以太坊对此进行了改进,它让交易发生的同时可以执行一段代码。让交易本身具备了逻辑执行能力(并且是图灵完备的),让我们可以在链上完成任意复杂的运算。比如有的交易要分期付款,或者多方参与的借贷。像保险合同的执行也是有事前约定的条件,这些合约条件的执行使用智能合约可以轻松实现。 当区块链中可以存储代码和执行代码,给我们带来了无限想象空间。
由于区块链是一个分布式网络,网络中的节点都是独立运行,因此需要有一个公共规则来指导节点的运行,即共识机制。 这是让网络中的所有节点对某个状态达成一致的机制。另一个表述是区块链需要解决的"拜占庭将军问题":在存在恶意节点的情况下,如何让诚实节点达成共识。
常见的共识机制有:
工作量证明(POW)、权益证明(POS)
POW:Proof-of-Work, POW 要求节点进行大量的计算(查找满足一定条件的解)来证明其贡献,首先解决计算问题的节点获得报酬,这个过程也称为“挖矿”。
当前使用 POW 的区块链有: 比特币、比特现金(BCH) 、莱特币(Litecoin)、门罗币(Monero)、字节元 Nervos(CKB) 、以太经典(ETC)
这是一个工作示意图:

工作量证明优点
工作量证明是被认为是最安全可靠的共识机制,在确保网络的安全性和可持续性得到了比特币网络长期的实践考验。
此外,POW机制也不需要参与节点对其它参与者的信任,而是依赖于节点本身的计算能力,参与网络的无需许可性,从而可以更好地确保网络安全和可靠性。
工作量证明缺点
缺点主要在于它消耗大量计算能力和电能,从而带来了较高的物理成本,在比特币网络实际挖矿中,往往数千台设备组成矿池同时挖矿,不同的矿池相互竞争,根据报告比特币的能源消耗已经达每小时14.79TWh,相当于全球总电量的0.5%,相当于每年全球汽车的消耗量。
另外,由于算力争夺过于激烈,一些矿工会抱团,形成超过 50% 算力的情况,那么就可以对链发起 51% 攻击。
51% 算力攻击 工作量证明中,矿工解数学难题比拼的是算力,谁有更大的算力(运算的更快),就有更大的几率挖出区块,当一个节点的算力占全网算力的51%以上时,将获得记账权的绝对优势,可以更快地生成区块,某种程度上拥有了修改区块链数据的权利,从而对链发起攻击,最典型是双花攻击。 双花攻击通常是这样的:
攻击者在实施攻击前,会进行隐身挖矿(如下图橙色链),出块不进行广播,由于攻击者拥有更多能力,他在橙色链上挖矿的速度更快。 攻击者矿工在橙色链上修改他自己的交易,当橙色链比主链更长了,攻击者矿工便会立即向全网广播这条橙色链,而其他的矿工发现了这条橙色链后,按照协议,他们必须丢掉原本的主链,替换成这条橙色链,就完成了一次双花攻击。
当然,要实现对比特币双花攻击是非常困难的,攻击者除了花费巨额资金在挖矿硬件上,还需要大量的电力进行支撑,随着比特币网络算力越来越大,这种攻击可能性也就越来越小。
在以太坊切换到 POS 共识之前,以太经典就多次出现过 51%算力攻击,因为以太经典算力较小,当某恶意矿工把以太坊算力切换到以太经典时,很容易出现算力占比超过 51%,从而发起攻击。
POS: Proof of Stake, 节点争夺记账权依靠的不是算力而是权益(占比),权益通常是通过质押数字货币计算而来。PoS同样需要计算哈希值,当拥有的权益越多,满足Hash目标的机会越大,获得记账权的机会越大。同时质押的货币也作为抵押品防止作恶,如果节点有恶意行为,其抵押品可以被罚没(Slashing)。
在 POS 共识中,节点被称为验证者。
在实践中,各个不同的区块链有自己不同的实现方式,如引入持币时间来计算权益、引入委托质押(DPOS )用更少的共识成本换取更大的吞吐量 (TPS)、或使用投票方式,如BTF 类算法多区块投票。
当前使用 POS 的区块链有: 以太坊 (ETH)、波卡(DOT)、Cosmos (ATOM)、Tezos (XTZ) 等。
POS 优点:
相比 POW ,不需要消耗大量能量,
POS 出块时间稳定,有根号的“快速最终性”, 通常吞吐量(TPS每秒链上交易 ) 表现都更加优异。
随着 POS 的成熟、越来越多新区块链使用 POS 共识。
POS 缺点:
不够成熟,仍旧在不断的发展之中, 例如,POS 共识出现过公地悲剧、长距离攻击(Long range attack)和无利益攻击(Nothing-at-stake attack)等问题,这些问题的解决仍不够简洁,也没有得到足够长时间的检验。
另外,参与POS共识需要质押货币,这笔交易需要当前的验证者确认,这相当于是需要获得网络认可,当网络被恶意大的验证者控制时(其拥有超51% 的权益), 它可以对某些交易进行审查,阻碍新参与者进入,从而对网络产生永久性的损害。
以下是POS参与共识的示意图:

各种共识机制没有绝的好与坏,更多的是 “不可能三角” 的权衡。
区块链不可能三角
不可能三角是去中心化(Decentralization)、可扩展性(Scalability)、安全性(Security),三者不可兼得,三者只能得其二。
去中心化:指的是节点的去中心化程度,节点越多越分散越去中心化
可扩展性:指的是区块链的处理交易性能,每秒可处理交易越多越具备可扩展性
安全性:指的是整个区块链网络的安全,攻击成本越高越安全
这里选择了两类主要共识机制介绍,还有一些其他的共识机制,如 Solana 链使用历史证明 POH (Proof of History)与 POS 的结合,Filecoin 的存储证明(复制证明 + 时空证明)等,很多团队仍在共识机制上研究探索、希望有所突破。
区块链和传统系统一样,随着时间的推移,系统需要升级以加入新功能或解决漏洞。在区块链上,升级通常会表现为链的分叉。
因为区块链是分布式系统,每次升级需要所有的节点客户端软件共同升级。有时一些节点因为利益或理念的不一致,拒绝升级到新的客户端,此时网络中将出现两个版本的客户端:运行新软件的节点会用新的协议去构建新的区块,原有的客户端节点会继续用旧的协议来构建区块,各节点不认可对方的区块,此时就会分叉出两条完全不同的链,这就是硬分叉。
硬分叉是共识的分裂或者改变。在发生硬分叉时,会伴随一些安全风险:
不过,总体上我们应该平常性看待硬分叉,它是区块链进化的方式,所有人有自己选择的自由。硬分叉短时间内是共识的分裂,但历史经验表明,随着时间的推移,共识会重新凝聚,并且比以往更强大。
历史上著名的硬分叉案例
比特币 → 比特币现金(BCH):2017年,比特大陆为首的矿工集团与 Bitcoin Core 为首的核心开发者团队就比特币扩容问题发生了意见分歧。矿工集团提议使用更大的区块,而开发者团队反对。最终比特币在区块高度 478559 时硬分叉为比特币(BTC)和比特币现金(BCH)两条链,之后 BCH 又分叉出了 BSV 等多个链。
以太坊 → 以太经典(ETC):2016年6月17日,以太坊 The DAO 被黑客攻击,损失了数千万美元的 ETH。由于损失巨大,一部分人希望修改源码,强行"夺回"黑客控制的币。另一部分人则坚持"代码即法律"(Code is Law)的理念,不认同这个修改,最终分裂出两条链,坚持原链的即是以太经典(ETC)。
软分叉是一种向后兼容的升级方式。在软分叉中:
这种方式不会导致链的分裂,因为旧节点会认为新规则下的区块是有效的,整个网络可以逐步完成升级。
在区块链没有升级时,也偶尔会发生瞬时分叉(短距离的分叉),通常在 POW 链中,两个节点同时竞争到出块权,此时形成一个短暂的分叉,直到某个分叉产生下一个区块,根据最长链原则,分叉自动消失。连续多个区块上有多个节点同时竞争到出块权的概率几乎为 0,因此这类分叉的距离非常短,只有1-2个区块,这也是为什么链上的交易,等待数个区块后,就当作具有确定性了。
本篇我们系统学习了区块链的核心技术:
这些核心技术构成了区块链系统的基础。理解了这些概念后,你就掌握了区块链技术的核心原理。在接下来的章节中,我们将深入学习以太坊——这个将智能合约发挥到极致的可编程区块链平台。
通过本篇的学习,你应该对区块链核心技术有了系统的了解。如果想更深入学习,推荐以下材料: