公链前沿研究的三大视角 |硬核系列

核心提示GHOST协议的主链选择路径其他比较知名的下一代共识协议还有图灵奖得主 Silvio Micali 和姚期智先生分别主导开发的 Algorand 和 Conflux:前者采用了 PoS 共识机制来避免分叉,可以达到大约 300 tps;后者


GHOST协议的主链选择路径


其他比较知名的下一代共识协议还有图灵奖得主 Silvio Micali 和姚期智先生分别主导开发的 Algorand 和 Conflux:前者采用了 PoS 共识机制来避免分叉,可以达到大约 300 tps;后者以树图结构而非链式结构组织区块,实现了超过 3千 tps。目前 Algorand 和 Conflux 以及其他许许多多新的共识协议绝大部分仍处于理论论证和实验阶段,是区块链技术非常重要的发展方向。


第二层扩容方案是对分片、侧链、多链等技术的统称。这类技术的核心思想是把共识参与者(矿工或 PoS 系统中的验证者)进行分组,每组分别处理不同的交易,通过分工合作的方式提高整个系统的吞吐量。


目前,第二层扩容方案中的最具影响力的无疑是比特币的闪电网络,其他比较具代表性的包括以太坊的状态通道、 Sharding 和 Plasma 等提案。第二层扩容方案的主要缺点在于一定程度上牺牲了安全性,因为参与第二层共识的算力或权益份额都要显著少于第一层主链,这是由「分工合作」的设计思想所决定的。


第二层方案的设计中非常重要的一点就是在发现问题时如何安全快速地退回第一层共识,例如在比特币闪电网络中单方面关闭交易通道。因此,第二层扩容方案通常是作为对第一层区块链的一种功能上的补充出现的,更适合处理小额资产(例如闪电网络)和实验性功能(例如比特币现金的虫洞)等特殊场景。


此外,未来第二层方案发展的另一个重要方向是利用智能合约的可编程性,在第一层区块链之上实现和运行为具体业务场景定制的第二层侧链,以获得更高的性能、更低的成本、以及其他更多样化定制化的功能。


例如今年 2 月斯坦福大学的 Benedikt Bünz 等在 ePrint 预印本网站上公开的 Zether 即是以通用的智能合约的形式实现类似 ZCash 的机密交易的功能的第二层方案。


2)更快的确认速度


比特币每笔交易通常需要等待六个区块才能确认,按照平均十分钟产生一个区块计算这大约需要一小时时间,这还没有计算因为吞吐量过低带来的排队等待时间。


实际上,如果转账的金额足够高/区块奖励相对很少的时候,确保一笔交易安全所需等待的时间和区块数还会进一步增加。这样的交易速度无疑会造成很差的用户体验,因此提高确认速度也是区块链技术的一个核心发展方向。


提高确认速度的区块链技术往往同时也会提高吞吐量,因为单独提高确认速度的意义有限,吞吐量过低时排队的时间将成为实际确认延迟的主要部分。


例如前面说的加快区块广播速度和缩短出块间隔就是典型的同时提高确认速度和吞吐量的技术,而 GHOST、Algorand、Conflux 等共识协议的主要目标之一就是保证系统在快速出块的同时仍具有足够的安全性。



Conflux 的树图模型(实线箭头指向父亲区块,虚线箭头指向引用区块)


很多第二层扩容的方案也可以提供更高的确认速度,因为此时只需在第二层确认不会受到第一层主链达成共识速度的限制,典型的如比特币的闪电网络。


为了达到极致的确认速度甚至还出现了基于代理的权益证明(DPoS)的共识协议,在采用这种协议的系统中只有具有强大处理能力和良好的网络条件的超级节点才能直接参与共识,其他参与者只能投票选择自己信任的超级节点而没有打包交易和投票选择区块的权利。


EOS 是 DPoS 系统的典型代表,通过将每轮参与共识的超级节点数量限制在 21 个,EOS 可以实现 1 秒的确认时间和接近 4000 tps。但是 DPoS 的缺点也非常明显,其中最为人诟病的就是超级节点降低了系统的去中心化程度,为安全性和区块链的治理带来了很多隐患。


此外,还有一些折衷的技术通过放宽安全性要求的方式在不改变现有共识协议的情况下对小额支付提供更快的确认速度。


例如通过共享几个大的比特币矿池的交易内存池即可在一笔交易被实际打包进区块之前检查是否有冲突交易,如果没有冲突则可认为这笔交易最终会被打包并执行。这也被称为「零确认技术」,用于快速确认小额交易时甚至不需要等待交易被实际打包进区块。


当然这样的做法局限性也很大,首先必须有相对集中和中心化的矿池为交易池的真实性背书,其次无法百分之百避免某个矿池或者矿池之外的矿工最终打包了一笔与之有冲突的交易。因此这种技术也只能用于确认风险较小的小额交易。

3)更强的安全性


区块链技术保证了达成共识的交易和数据都具有难以被篡改的特性,这也是区块链能够提供去中心化信任的核心逻辑。在以比特币为首的大部分现有区块链系统中,为了达到这点也需要在隐私性方面付出相当的代价——所有的交易都用明文的形式存在链上以供其他节点验证,因此所有交易的内容都是公开的。


这些区块链系统通过与真实身份无关公钥地址实现了一套「假名」的支付系统,这套「假名」系统可以提供最低程度的隐私性,但是地址对应的用户的身份仍能通过历史交易之间的关联性和使用模式等高级分析手段识别出来。因此,对用户的隐私信息提供保护也是区块链技术的重要发展方向,也是密码学技术在区块链中的主要应用。


对转账交易的隐私性保护在技术上实现起来相对比较容易。目前已有混币(CoinJoin)、机密交易(Confidential Transaction)、环签名(Ring Signature)、Mimblewimble 协议、甚至零知识证明(Zero-Knowledge Proof)等多种技术用于保护交易的隐私性,也涌现出了诸如 Monero、Zcash、Grin、Beam 等以隐私保护作为特色的公链。


它们通过采用不同的技术方案获得了不同程度的隐私保护,但是有一个共同的问题就是隐私保护的代价还比较高。


例如Monero 采用环签名技术生成的每笔交易尺寸大约有 10 KB,Zcash 中生成每笔带有零知识证明的交易需要几十秒甚至几分钟的时间和几十 MB 到上 GB 规模的内存空间。降低保护交易隐私的额外开销是这类技术的主要发展方向。


另一方面,对于智能合约的执行等通用计算的隐私保护也吸引了越来越多的研究力量。该方向现在主要的几个技术流派包括基于安全芯片的可信执行环境(Trusted Execution Enclave,TEE)、基于密码学的全同态加密技术(Fully Homomorphic Encryption, FHE)和零知识证明技术等。


以 Intel 的 SGX 芯片为代表的 TEE 技术是目前看来离实现最近、额外开销最低的方案,但其缺点也同样明显:需要信任芯片制造商,并且芯片容易受到侧信道攻击(side-channel attack)。


全同态加密技术的主要缺点在于计算成本过高,完成同样的计算任务需要的计算量大约相当于明文计算时的十万到一百万倍的。零知识证明技术现在已经有 zk-SNARK、zk-STARK、Bulletproof、Ligero、ZKBoo 等多种实现方案,这些方案在性能上各有长短,但目前尚没有哪个在各方面都达到堪用的水平。以更高的性能实现零知识证明是密码学家们在所有区块链技术中最关注的目标。


此外,可验证计算也是一种可以提高区块链安全性的重要技术。可验证计算允许用户不重复执行所有运算即可验证计算结果的正确性,可以减少共识计算的成本和降低加入高吞吐量共识系统的门槛。在实现方式上可验证计算与适合区块链使用的非交互式零知识证明技术具有很多相似之处,此处不再赘述。


02

功能


区块链技术在功能方面的发展面向的主要是丰富的应用需求。自从比特币诞生以来,对区块链功能改进最大的技术无疑是以太坊的智能合约,该技术使得区块链的功能从记录交易的账本进化为通用的数据处理平台,极大地拓展了人们对于区块链在未来的应用场景的想象力。


现在的区块链技术的发展方向是在提供图灵完备的智能合约的基础上同时实现更多的功能,以下从权限控制、外包计算、可信随机数等几个方面简单介绍一下。


1)权限控制


在区块链最简单的实现上,每个账户地址对应一对公钥和私钥,掌握这个私钥就可以完全控制该账户。这种每个账户由一个私钥控制的方式非常简单易懂,但是也有一些缺点:


首先,有的账户可能不是属于某一个人,如公司账户或者夫妻共用的账户等,因此我们希望以更灵活的方式让多个用户共同控制一个账户;其次如果账户对应的唯一一个私钥意外丢失或被盗则用户会立刻失去对账户的控制权,风险过高;最后,有时我们需要区分不同用户使用账户中资产的权限,例如区分大额支付和小额支付所用的私钥等。


为了解决上述问题,比特币引入了多重签名账户,这种账户需要预先设定若干对公钥和私钥,只有使用足够多的私钥签名的交易才是有效的;而在以太坊等支持智能合约的系统中则可以通过编程实现更灵活的权限控制。


然而,直接给每笔交易需要附加多个签名会导致交易的长度随签名个数增加,也会增加验证的负担。Schnorr 签名等多重签名技术使得我们可以将任意多个签名聚合成一个签名,只需一次性验证签名操作即可判断交易是否得到了聚合公钥对应的所有私钥的授权。


2)外包计算


在目前去中心化预言机尚未得到解决的情况下,除了点对点支付以外完全能不依赖于链外信息即在区块链内部实现全部流程的应用并不太多,外包计算就是其中之一。外包计算的基本流程是甲方把输入数据交给乙方,由乙方完成计算后再把计算结果返回给甲方,甲方验证计算结果正确后付费给乙方。


外包计算对于传统的数据库也是一项非常前沿的技术,其最大的难点在于甲方验证计算的成本必须显著低于执行整个计算任务的成本,否则外包计算就失去了外包的意义,这点可以通过前面说的可验证计算技术或者可信执行环境 TEE 实现。


除了计算的经济性外,外包计算通常还要求保护输入数据和输出的计算结果的隐私性,也即乙方要在不知道甲方到底要做什么的前提下完成计算任务。外包计算隐私性的传统密码学解决方案是采用安全多方计算或者全同态加密计算,前者的缺点是需要参与者之间进行交互,不适合区块链的场景,后者的主要缺点在于效率过低。


如果在安全性上降低一些要求,则可信执行环境 TEE 技术也可以达到保护计算隐私性的目的。因此目前看来最适合区块链的外包计算的技术还是使用带有 TEE 功能的安全芯片,在未来可能会出现效率可接受的基于密码学的解决方案。


3)可信随机数


随机数是很多算法和程序设计时都需要用到的重要资源。在区块链上实现一个公平公正公开的随机数对于链上的很多应用乃至一部分区块链共识协议本身都有着十分重要的意义。


在链上实现可信随机数的技术有承诺-打开(Commitment-opening)方案、基于秘密共享(Secret Sharing)的方案、以及基于唯一签名(Unique Signature)和可验证随机函数(Verifiable Random Function,VRF)技术的方案等。


这些方案虽然可以提供质量比较高的随机数,但是都无法完全杜绝攻击者影响和操纵随机数的情况。如何更好地限制攻击者能对随机数造成的影响是密码学家们关注的研究课题。


03

互联互通性

区块链的预言机机制(Oracle mechanism)研究的是如何以去中心化的方式在区块链上可靠地获取链外的数据,这是长期以来阻碍了很多公链应用落地的核心难题。特别是在可预见的未来内多个不同的区块链(包括公链和联盟链)将长期并存的背景下,在不同的区块链间实现数据和价值的相互流通越来越成为一个亟待解决的难题。

尽管通用的预言机至今仍没有一个普遍适用的方案,但是仅用于跨链操作的专有预言机已经有了一些初步的实现:

闪电网络使用的哈希锁定技术可以支持双向跨链操作,实现起来非常简单且不需要可信的第三方,缺点就是功能比较单一,泛用性不强;

BTC relay 用以太坊的智能合约实现了一个比特币的 SPV 节点,以去中心化的方式实现了比特币到以太坊的单向跨链;

Ripple 协议等通过公证人跨链的技术实现了资产交换和转移等功能,缺点在于需要信任作为公证人的第三方;

Cosmos、Polkadot 等采用的侧链和中继链技术可以实现较好的双向跨链性能,也不需要信任任何第三方,缺点是技术架构比较复杂,实现较为困难——目前 Cosmos 和 Polkadot 都还处于测试阶段。

最后,本文为观察公链发展状况提出了吞吐量、互通性、权限控制等视角,并分析了每个方向的发展状况。不过,在前述领域尚没有哪条公链处于绝对领先位置,并且很多公链的解决方案还需要具体实践的检验,我将会继续保持对公链发展状况的高度关注并与大家分享。

 
友情链接
鄂ICP备19019357号-22