“ 本文将尝试从区块链技术本质和技术架构两个角度对区块链技术进行剖析,揭开区块链技术的神秘面纱,探索真正能够给传统行业带来价值的商业落地场景。”
自比特币诞生起,区块链技术发展至今十年有余,不断吸引资本与技术的关注并保持热情不退,大量资金与技术研发的持续投入推动着该技术的快速发展与演进,尤其是随着近几年区块链技术的落地生根,区块链成为继互联网之后重大技术变革的商业期望正开始逐步实现。
正如互联网在各行业的应用与融合,人们相信区块链技术的去中心化、账本的不可篡改等特性亦可对传统行业产生颠覆性革命,区块链从业者开始探寻传统行业与区块链技术的结合,从而产生了跨境结算、供应链金融、数字资产确权、版权存证、商品溯源等落地应用。
01. 区块链技术本质
区块链不是万能的,只有理解了区块链技术的本质,才能去伪存真,发掘适合区块链技术优势的应用场景,真正为传统行业创造新的商业价值。区块链的技术本质,其最核心的有如下三点:
图 1 区块链技术本质
>去中心化平台带来的天然信任
区块链技术与生俱来的天然信任,既不是各种共识算法赋予的,也不是只能增加不能修改的公共账本技术带来的,而是来自于平台不受任何单一主体控制,人人可随时参与随时退出的特质。分布式存储、点对点网络以及各种共识协议等软件技术,都是为了使去中心化的平台能正常运行。平台运行结果由平台参与者达成共识形成。同样,对这个平台的修改更新,也要求平台参与者达成共识。套用“流浪地球”的一句台词,在区块链时代,共识是比钻石还珍贵的东西。
区块链的天然信任还依赖于其所运行软件的开源特性,任何人都可以检查源代码,编译运行成为平台的一个节点,参与平台的运行。去中心化软件技术带不来天然信任,信任来自于这个开源的运行平台不受任何一方控制,任何一方不能随意修改系统运行结果,不能随意修改软件功能。
以阿里巴巴平台打假的例子:阿里巴巴每年投入巨额资金进行打假,但公众仍旧可以想象打假只是走过场,象征性做个别案例,然后利用假货获取更大的利益。阿里巴巴没有办法自证清白,本质原因就是阿里巴巴的运行平台是他们自己控制的,系统数据是他们自己提供的;单一实体运营的中心化的平台没有办法具有去中心化平台与生俱来的天然信任机制。
>原生的通证机制
比特币为什么会成功?从技术上说,比特币所用到的技术包括点对点网络,各种加密算法等都不是新技术,在它之前也有很多电子货币 / 加密货币的失败尝试,很显然技术不是其成功的本质原因。比特币的成功可以归因于其良好的经济激励机制设计——区块链的原生通证机制。其作用可分为两方面,一方面通证机制可以为区块链系统引入经济博弈,保证系统的良性运转;另一方面,也将区块链打造成了价值分配转移的最佳载体,使其被认为是与信息互联网相对应的价值互联网。高晓松一次在清华大学的分享中曾经以区块链通证机制对音乐行业的改造为例,描述了通证将音乐的权益无限细分,从而引入更多参与方,形成各种新的商业机会的场景。
业界也有专业的通证经济研究学派,从实现数字资产的通证化,到现实世界资产通证化,再到公司的激励组织形式变革,给通证经济构建理论支撑,描绘了区块链与各行各业结合后丰富的应用前景。
这里有必要对联盟链做一下特别说明:联盟链没有通证机制,它是许可机制,节点入网需审核批准,使用链外的激励机制而不需要设计复杂的经济激励模型。联盟链节点数量有限,相当于多中心化系统。
>智能合约使能信任计算
比特币初始定位于点对点的电子货币系统,只支持比较弱的脚本处理能力,局限于金融业务逻辑。以太坊开始支持智能合约,使区块链平台能运行图灵完备的程序语言,从而可以实现价值平滑转移,支持复杂业务逻辑,提供信任计算能力,开启了区块链的新时代。智能合约使能了众多商业场景,从游戏、溯源、存证、能源交易到供应链金融等领域,都有比较广泛的应用。这些应用场景或利用区块链赋予的天然信任机制,或利用区块链的通证机制,创造了新的商业模式,带来了新的商业价值。
目前区块链的处理性能与中心化系统还有差距,智能合约的编写也很容易引入安全漏洞,一定程度限制了智能合约的应用。但这些都是新技术发展的必经阶段,业界也在努力解决这些问题,更多的落地场景也逐步涌现,推动区块链产业一步步走向繁荣。
02. 区块链的技术架构
区块链领域涉及的技术比较广泛,业界已经有很多的文章讲述相关的加密技术,共识算法等具体知识,结合众多的开源项目,对技术人员来说可以很方便地切入该领域。本节尝试从整体架构层面,描述各个模块相对关系,帮助大家建立一个整体认识。
图 2 区块链技术架构
>存储层:
区块链平台运行所产生的区块数据,状态数据等需要存储到文件系统和数据库系统中。区块数据存储了具体的交易信息,其中需要利用默克尔树,非对称加密等技术实现信息摘要与签名,保证数据的完整性和一致性。状态数据一般存储到数据库中,也称之为世界状态,其中会包括系统运行参数,已注册帐号以及用户的智能合约字节码以及合约中存储的业务数据等信息。
区块链运行平台可以理解为一个分布式的状态机:所有节点从同一个创世状态开始,依次运行达成共识的区块内的交易,驱动各个节点的世界状态按照相同操作序列(增加,删除,修改)不断变化,实现所有节点在执行完相同编号区块后,世界状态完全一致。一个新节点加入网络,如果是作为一个全量节点,就需要从网络中其他节点同步所有历史区块信息,验证区块的正确性,并依次执行区块内保存的交易重构出世界状态,直到与网络上其他节点区块高度一致时,才完成了同步,可以与其他节点一起继续进行新区块的共识挖矿。
>网络层:
点对点网络主要功能包括实现网络拓扑,交互共识协议信息以及广播 / 接收交易和区块信息等。一个新的节点依赖与种子节点的交互,实现网络邻居节点自动发现与组网,形成去中心化网络拓扑。不同的共识协议,会有不同的协议相关网络数据包,完成共识过程。网络中的大部分数据报文,是交易和区块数据包。一个节点接收到用户交易时,会广播到网络中并尽量传播到各个节点。一个节点生产出来的区块,也要求尽快传播到各个节点。比特币初始设计区块大小 1MB,出块时间间隔 10 分钟,就是为使各个节点尽可能接收到其他节点广播的区块,减少分叉区块的产生。
在区块生成时间间隔一定的前提下,一个区块中包含的交易越多,系统的处理性能就越高。但一个区块能够包含多少交易,一方面取决于节点 CPU 的处理性能,另一方面取决节点的网络带宽。一个区块内包含的交易执行总时长有限,CPU 处理性能越高,能包含的交易就越多;网络带宽的吞吐能力也是限制区块大小的一个因素,网络层需要尽量在下一个区块生产前将当前区块广播至全网,因此节点的网络带宽越高,区块的大小就可以越大,能包含的交易就越多。这里所说的节点的 CPU 处理能力和网络带宽,要考虑全网所有节点,实际上受限于性能最差的节点。
>共识层:
区块链的共识,就是利用一定协议机制使所有节点对接下来要生产出的区块达成一致(即区块内应该包括哪些交易)。我们可以想象成一个投票场景,每人都可以提出自己的建议,并且争取拉到足够多的投票。投票权的分配要能够抵抗女巫攻击,就是说不能使单一主体控制大量选票。在现实世界,我们可以按照选民身份赋予每个人投票权;在数字化世界的中心化系统中,我们利用注册机制(包括手机号,验证码,手持身份证照片,活体检测等技术手段)提高单一主体获得大量选票的门槛;在去中心化的区块链领域,没有了身份识别机制,采取包括工作量证明 PoW,权益证明 PoS,委托权益证明 DPoS,各种 PoX (PoET,PoA 等)以及 VRF 类算法等方法分配投票权。
PoW 要求节点找到一个数值使区块哈希值符合要求,在寻找该数值过程,节点需要投入大量算力。节点找到了满足要求的数值,就获得了投票权,并同时提出了自己建议的区块(PoW 不需要投票环节,先获得投票权的节点提议的区块为共识区块);PoS/DPoS 利用节点抵押的代币权益结合其他因素分配投票权,并结合 BFT 投票确认环节,选择共识区块;VRF 类算法则依赖密码学,数学随机数等技术分配投票权,经过 BFT 投票确认选择共识区块。
>智能合约层:
各个公链采用不同的编程语言进行智能合约编写,比如以太坊的 Solidity,EOS 的 C++等。智能合约编译为字节码,并打包进交易信息上链进行存储。各个节点接收到区块后,提取其中包含的交易信息,将字节码加载到虚拟机运行,运行结果反应到世界状态中。上链的字节码与开源的智能合约,可以进行一致性校验,从而保证节点实际运行的字节码与开源代码所显示业务逻辑一致,提供公开透明的信任能力,使能需要信任计算的商业场景。需要指出的是,目前出于安全角度考虑,将智能合约完全开源后会极大降低黑客攻击门槛,真正开源智能合约的项目并不多。
共识层一般称为 Layer 1,智能合约层称为 Layer 2 (因此存储层和网络层可以认为是 Layer0)。有很多项目在 Layer
2 智能合约层进行创新,比如闪电网络,去中心化交易所,跨链机制等。
>应用层:
各个公链的商业生态建设可以类比为谷歌的 Android 生态建设:公链项目方类似谷歌角色,提供软件平台;矿机生产商类似手机硬件生产厂商,提供软件运行硬件平台;公链上层的丰富应用,也称之为 DAPP,类似 Android 的平台丰富的 APP。公链项目方将软件平台研发出来,还需要提供开发工具,举办活动等来吸引开发者为公链开发 DAPP,打造一个繁荣的生态。现在运行在公链上的 DAPP 以游戏,溯源,交易所等为主。游戏利用区块链的公开透明机制,可以将核心业务逻辑运行在区块链平台以示公平;溯源等应用则主要是将相关流转信息记录在区块链平台,利用其不可篡改特性,供用户进行全生命周期历史信息查询。公链上运行的 DAPP 质量好坏,数量多寡,也是该公链是否健康发展的一个重要指标。
需要指出的是,区块链技术架构的分层只是方便理解而进行的逻辑层面划分,大部分项目还是紧耦合的单体软件形式。随着区块链技术的发展,已经有项目开始支持模块化开发,比如支持更换网络模块、共识模块等。
区块链技术仍在迅速发展,相关生态建设也在各方努力下不断向前推进,区块链技术商业落地应用不断涌现,对区块链技术能否成为新一代商业基础设施,我们充满期待。