我们需要什么样的区块链

2019-04-12 17:28:27 浏览数 (1)

题图摄于Lake Powell

本文节选自《区块链核心技术与应用》 。作者简介:

邵周,中国计算机学会区块链专委会委员、中关村区块链联盟金融专委会专家、TOGAF认证企业架构师、信息安全与风险管理专家。研究方向有高性能区块链、分布式存储、分布式算力、跨链协同、加密资产锚定等,著有数本科技书籍。目前就职于亚洲基础设施投资银行。

一.

区块链架构存在的问题和挑战

现实世界不可能是完美的,我们往往在各种三元悖论的权衡之中寻找平衡点。在经济学上有个“蒙代尔不可能三角”(Mundellian Trilemma),指的是一个国家不可能把独立货币政策(Monetary Policy)、固定汇率(Exchange Rate)和资本自由流动(Capital Mobility)三者兼顾到,往往只能三取二舍一。在分布式计算领域,也有人们认可并熟知的CAP理论,即一致性(Consistence)、可用性(Availability)和分区容错性(Network Partitioning)三者不能得兼,只能三选二,如图10-1所示。

蒙代尔不可能三角和CAP理论

而在区块链领域,目前公认的一个“不可能三角”是在去中心化(Decentralization)、安全性(Security)和扩展性(Scalability)上也只能三者选其二,如图10-2所示。完全去中心的区块链架构会带来性能和安全性方面的问题。传统的分布式架构,例如云计算,是通过把一个任务切片,分发到多个节点来并行计算,最后将结果汇总回单一节点,因此效率很高,但中心化程度也很高。完全去中心的区块链架构是把同一个任务放在多个节点同时运行,结果最后进行共识,共识的结果成为最终状态。可想而知,其效率会远远低于前者,但在安全性和可信任程度上又远远高于前者。

区块链不可能三角理论

根据区块链的不可能三角理论,很明显目前以太坊架构是以牺牲扩展性来换取去中心和安全性的。以太坊上平均每秒大约能做15笔交易,所以至今为止,除了ICO或数字资产发行这种应用外,以太坊还没有出现上规模的应用。2017年出现的一个区块链养猫游戏“CryptoKitties”就造成了以太坊网络的拥堵。因此,标榜区块链3.0的其他各类区块链平台项目,纷纷针对比特币、以太坊的性能问题提出了自己的改进方案。然而,目前区块链落地应用少,却不只是因为区块链性能上的问题。我们首先来看看当前区块链平台的问题和痛点。

  1. 交易性能限制:比特币的理论设计限制了其每秒只能完成7笔交易,通常每秒只能完成1~2笔;以太坊大约每秒处理10~20笔交易。另外,PoW这种最终一致性共识算法,使得如比特币的交易需要获得6个以上的确认才能在很大概率上保证交易的最终确定性,因此交易确认的时间也长
  2. 扩展性限制:在需要立即交易确定性的场景,例如联盟链或私有链的场景中,一般节点数会受限。例如使用基于Paxos或BFT(拜占庭容错)等基于状态机复制(SMR)共识算法的区块链平台,参与共识的节点数一般不能超过两位数。
  3. 易用性:目前智能合约的开发、部署和调用都需要由专业区块链编程人员进行,区块链在易用性和对应用的支持上还存在较大障碍。
  4. 兼容性和互操作性:目前大部分的区块链平台都是独立系统,不支持区块链上的资产在不同链之间的流转,不同链上的应用也没有办法做到跨链的集成和整合。
  5. 数据存储:区块链上数据存储容量有限制,特别是每个全节点需要存储的数据量越来越大,急需更低成本和高效的分布式存储方案。
  6. 智能合约形式化证明:形式化证明(Formal Verification),出于成本的考虑,以前往往只应用在硬件设计中,后来慢慢被引入软件行业。形式化证明通过数学方法来证明代码中是否存在漏洞或缺陷。与传统的软件测试不同,形式化证明能够证明一个系统没有任何可以想到的缺陷,这可以从根本上杜绝软件漏洞。由于区块链上的智能合约一经部署就不能修改,安全性至关重要,一旦有未被检测出的漏洞和缺陷,就会给黑客大肆作恶的机会。形式化证明是在未部署合约前对智能合约代码做逻辑上的证明,证明合约的执行具有正确性。形式化的证明一般要求编程语言具备严格的逻辑完备性和自动推理能力。目前以太坊的智能合约编程语言Solidity并不具备这种能力,而传统上的一些形式证明工具和编程语言还没有和区块链做有效结合。
  7. 数据同步性能限制:链上数据每时每刻的增长,带来的问题就是网络上数据同步的负担越来越大,同步速度也越来越慢。
  8. 共识机制数学证明:很多区块链平台使用的共识算法并没有给出严格的数学证明,证明其在假设的网络通信环境内,能够在少数故障节点存在的情况下,依然能够在有限的时间内达成共识,并保证共识结果的正确性。特别是在公有链情况下,很多共识算法,特别是基于权益的PoS共识,缺少严格的数学证明。

二.

区块链平台的典型需求和发展方向

1、区块链平台的典型需求

区块链上的应用根据场景不同,有以下不同维度的需求。

  • 隐私保护:交易参与方和交易的细节不能泄露给交易无关方。目前比特币、以太坊等只是提供半匿名机制,不能保证在大数据分析下隐私交易信息不被泄露。
  • 链上安全性:在区块链网络,特别是公有链场景下如何容错,特别是拜占庭容错,防止女巫、重放、DDoS等攻击是一个十分重要的需求。
  • 数据真实性:虽然在区块链上的数据不可篡改,但现实的数据却没有办法防止人为造假。如何保障链下数据真实上链,又不重回到中心化的Oracle(预言机)机制,也是非常关键的需求。Oracle是一个连接链下链上的数据真实性保障机制,通常需要由权威性机构来做Oracle,但如何防止Oracle的中心化是未来预言机机制设计的关键考虑点。
  • 有用工作量证明:比特币挖矿造成能源的浪费巨大,有人估算目前比特币一年挖矿所耗费的电量已经相当于爱尔兰一年的用电量。比特币的工作量证明只是不停地做哈希运算,计算结果也没有什么实际用途。如果既能做有用的工作量,又能提供一个比较稳定的共识机制,是非常有吸引力,但也是比较难的研究方向。
  • 密码安全性:量子计算目前虽然还是起步的初始阶段,离发展到商用可能还要一大段距离,但量子计算的Shor算法已经在理论上能破解公钥加密系统,区块链所基于的公钥签名系统都将面临被量子计算破解的威胁。另一方面,量子计算的Grover算法虽然不能在数量级上降低破解哈希算法的难度,但也能减少一部分破解哈希算法的计算量。因此,抗量子密码算法也成为目前区块链的一个研究方向。
  • 治理和监管:很多区块链项目目前都是依靠几个核心开发人员维护。一些关键参数的修改和平台发展方向的决策还是由几个人决定,缺少一个比较透明、严格的治理架构和监管体系。如何设计一套适合于区块链的治理和监管体系,使得区块链平台能健康发展,是当下很多区块链项目面临的一个问题。另一方面,一些采用常规计算的破解现有密码学技术的算法也会被发现,像2017年谷歌成功实现对SHA-1的有效碰撞,也说明即使不考虑量子计算的威胁,密码安全性也是一个需要重点关注的问题。
  • 智能合约升级、监控:智能合约一经部署就不能更改,但传统软件都需要不断完善和升级。另外在很多场景下,智能合约的逻辑也需要适应需求的变化。因此如何对智能合约升级,以及如何监控智能合约的运行,也是一个比较常见的需求,特别是对企业客户来说。
  • 防止算力中心化:由于比特币的价格攀升,利益驱使比特币挖矿成为一场算力的军备竞争。比特币挖矿的算力不断趋于中心化,目前五大矿池的算力已经超过全网算力的70%。防止算力集中,目前常用的方法是设计需要存储量大的工作量证明机制,这样在成本上抵抗做专门的算力挖矿芯片(ASIC),使得普通人仍然可以用通用处理器,像CPU、GPU来参与挖矿共识。
  • 身份认证及权限控制:很多区块链的应用,特别是企业级的联盟链应用,需要确认用户的身份,并根据其身份来授予不同的权限。安全高效的身份ID管理、身份认证和权限控制是一个重要的需求。
  • 移动区块链:目前区块链系统都是运行在服务器节点上,手机上只是钱包或轻节点。但未来随着移动设备算力以及存储能力的提升,直接在移动设备组成的去中心化网络成为可能,成为真正意义上的移动区块链平台。

2、区块链平台的发展方向

上述对区块链平台的行业需求,驱动着区块链向实用性稳定性和安全性方向发展,而具体的技术创新则是在以下一些方向上拓展。

  • 区块链操作系统:类似传统电脑操作系统给电脑使用者和应用开发提供底层服务一样,区块链操作系统也给上层去中心化应用的开发和运行提供支撑的功能和环境,这些功能包括认证、权限控制、数据存取、合约编译、测试级部署等支撑性功能。操作系统提供易用性,降低使用区块链以及开发DApp的门槛。
  • 区块链中间件:和传统中间件一样,区块链中间件屏蔽不同区块链平台的接口差异,使得应用能够方便地开发支持不同区块链的DApp,另外也提供跨链整合功能,使得应用能够集成整合多个区块链平台。
  • 区块链网络(多链):和比特币或以太坊的单链技术不一样,区块链网络提供一个网络平台。在该平台下有多条链,每个链上都可以发行自己的虚拟资产,链与链之间也可以通过区块链网络平台中的主链或中继来实现跨链互连。
  • 侧链技术:侧链最早来自于一个无须改变主链(原指比特币的主链),但又能通过建立一个侧链来扩展主链功能的概念。主链的资产可以安全转移到侧链上流通,最好也能安全地回到主链。
  • 区块扩容:区块容量和能打包的交易多少有关,由于区块链的出块频率相对固定,因此当区块扩容之后,每秒交易量(TPS)也会相应提高。
  • 链下计算:区块链的链上计算虽然能安全可靠,但是共识开销很大,因此把有些计算移到链下来处理,从而提升交易速度是一个必然的选择。
  • 分区共识、分片:以太坊的性能问题让以太坊的开发社区也意识到,当每个交易、每步智能合约的执行都需要在所有的共识节点去完成的时候,其扩展性是无法支撑应用的。因此,分片处理、采用局部共识代替全局共识不可避免。
  • 区块链存储:区块链上能存储的空间有限,一般来说只是存储数据的哈希值,也就是数据的指纹。因此如何解决区块链数据,特别是代码或状态数据的存储是当今区块链平台都面临的一个问题。
  • 共识机制:区块链最核心的部分是其共识机制。不同的共识机制有着不同的共识属性,同时也决定其每秒交易量,因此共识机制的设计也成为区块链底层平台设计的一个关键环节。

0 人点赞