王嘉平:谈公链的 3 大性能难点、5 大体验改善

当前位置:首页 > 币圈百科 > 王嘉平:谈公链的 3 大性能难点、5 大体验改善

王嘉平:谈公链的 3 大性能难点、5 大体验改善

2022-12-30币圈百科261

今天,这里有一些关于区块链公链技术发展的思考。作为区块链世界基础设施的基石,公链极大地影响着上层应用的效率、成本和用户体验。比特币开始到现在已经10年了,但是离技术融合的阶段还很远。在这第11个年头,我来盘点一下已经被大家广泛关注的方向,还有一些没有的方向。

性能困难1——速度

性能问题从区块链最开始的时候大家就已经认识到了。直观体验就是速度,也就是一笔交易多长时间可以确认。最初的瓶颈是共识算法。中本共识一开始10分钟出一次,平均交易确认延迟5分钟。然后以太坊将阻塞间隔降低到15秒,预期平均交易确认延迟为7秒。但是真的能在7秒内确认吗?其实不是。这时,性能的瓶颈就变成了吞吐量。虽然交易确认延迟7秒,但是大部分交易都是排队的,除非给了很高的交易费插队。

吞吐量有限是因为普通所有节点的带宽,也就是互联网的平均带宽。这种限制与共识算法无关。很高兴这一点终于得到了很多团队的认可,避免了设计一些只能在本地数据中心内部运行的高通量系统。要突破这个限制,唯一的出路就是拆分吞吐量,让不同的整体节点负责不同的部分。分片是实现这种分割的有效方案。当然,未来可能还有其他方案。

吞吐量问题解决后,速度的体验会回归到交易确认的延迟。当然,此时的要求不是达到几十秒,而是应用会希望达到更低的延迟,比如1秒甚至更少。在同一设计水平上,计算机系统通常在吞吐量和延迟之间存在矛盾。例如,区块链是一种批量交易确认方法。批量越大,即区块越大,吞吐量就越大。此时块之间的间隔需要更长,使得交易确认的延迟更大。

公链第1层技术拆分工作负载后,吞吐量会提升几个数量级,但其交易确认延迟并没有得到明显改善。我自己的预测是,这才是第二层侧链真正发挥作用的地方,而不是现在很多侧链项目所宣称的要克服的问题,和第一层几乎一模一样。

性能难度2——容量

容量问题受到的关注要少得多。其实容量问题包括两个方面,一个是账簿在内存中的状态,每个用户的余额和智能合约的状态,另一个是历史交易记录存档在磁盘中。

比特币在用户地位上几乎没有扩大,吞吐量很低,所以在那个时候,这个容量根本不是问题。但在吞吐量增加,DApp开始逐渐繁荣之后,运力问题逐渐凸显。类似于吞吐量,这个问题是有限的,因为一般所有节点的内存和硬盘的容量有限。这个限制与一致性算法的本质无关。

要突破这个限制,唯一的出路就是拆分运力负担,让不同的全节点负责不同部分的账簿状态和交易备案。分片是实现这种分割的有效方案。当然,未来可能还有其他方案。账簿状态压缩和历史交易压缩是很好的做法,可以和碎片化方案配合使用。但是这些方向总是受限于单个全节点的局部资源,增加几倍是非常困难的,而一个设计良好的碎片化系统可以增加几百倍或者几千倍。

性能困难——个片段

我第一次来这个领域就是为了看性能问题。据说碎片化是一个非常可靠直接的解决方法。 在区块链之外的计算系统中,通过划分工作负载并将其分散到不同的计算单元,哪一个没有实现几个数量级的性能提升?GPU,Mapreduce,CDN,哪个商用高性能系统不采用这种架构?最初当然是起源于数据库领域。但当时圈内人士告诉我,碎片化是伪科学,是不切实际的方案,对区块链扩张没有任何帮助。我当时就惊呆了。这个区块链有什么特别之处,以至于分段工作量变得不可行?

终于,我发现问题了。并不是蓑衣网小编2022说区块链有什么特别之处,而是有一个叫Z的项目,做了一个不完整的分片方案,只划分了事务处理的工作量,事务仍然需要广播到全网所有节点。每个节点仍然需要维护全网的账簿状态,所有节点仍然需要计算每笔交易的账簿状态更新。这意味着根本没有碎片化的好处,也没有吞吐量和容量的提高。同时也引入了额外的开销,导致其实际性能不如非碎片化系统。

不过这个系统整体安全性还好,继承了之前共识算法的安全特性。因此,他们的论文会被ACM CCS这样专注于计算和通信安全的会议接受也就不足为奇了。但是对于真正在性能和能力上有突破的作品,为什么还要找安全领域的专家来审核呢?难道不应该找表演领域的专家来评审吗?例如OSDI、SOSP、NSDI的ACM SIGCOMM。当然,当年Z出了这样的技术方案,一个硬币都没有发的压力。

所以这里还是要命名切片技术,这是公链第一层最靠谱的高性能发展方向。虽然挺难的,但这是正道。

体验壁垒1——交易隐私

从Zcash开始,交易隐私就成为公链技术中一个非常重要的特性。与性能不同,这个特性是密码学的主要地位。零知识证明及其相关扩展算法是解决这一问题的主流方法。目前的缺陷是算法比较昂贵,只适用于简单的验证计算问题,可以满足匿名支付,但离通用计算还有一段距离。这也将是一个非常重要的方向。

当然,并不是说隐私功能一定要支持通用计算。我觉得满足主流应用就够了。但是,在这个方向上,我的一个担忧是,在现在这个监管的时代,这种强反监管的技术可能会对其应用的发展产生很大的负面影响。

同时,隐私有两个内涵。一个是用户的状态,比如用户的账户余额,一个是用户之间的活动记录,比如A给b转X币,而监管和隐私或许可以分别找到这两方面的平衡点。

但是,如果从联盟链的角度来看这一块的内容,那就另当别论了。联盟是一个有准入机制的平台,但不是像公链一样完全没有权限。这种准入机制可以作为监管的切蓑衣网小编2022入点,实际上可以很好的保障各个商事主体的商业隐私。这是一个意义重大的方向。

体验障碍2——硬件安全执行环境

硬件安全执行环境芯片(TEE)的出现使得公平计算和隐私计算容易实现。似乎我们都不需要共识算法或者零知识证明。不幸的是,这不是万灵药。抛开计算效率低、内存容量小的问题不谈,最致命的是,一个声称使用TEE的节点无法独立证明自己的计算是在TEE芯片中完成的,而是需要依靠芯片厂商提供的集中背书服务。这对于无权限的公链系统来说是不可接受的。至少这些芯片厂商可以凌驾于TEE芯片中运行的共识逻辑和加密保护,给出伪造的共识结果来访问私有数据。

当然,在有进入壁垒的联盟链应用场景下,TEE芯片会是一个事半功倍的解决方案。将TEE芯片应用于联盟链的共识机制和隐私计算机制将是一个很有前景的方向。

体验壁垒——集中式辅助设施

公链系统的正确运行不能依赖于任何集中式设施,但集中式辅助设施可以为公链系统支撑的应用生态提供有益的优化和用户体验提升。虽然可行,但目前大多数用户并不直接部署所有节点参与网络,而是依靠一个或多个可信的全节点服务提供商来完成交互。这一环节的机制和安全性将极大地影响最终用户使用区块链系统的实际体验。尤其是移动用户的体验。这里可以有三个发展方向。

第一,公共信息服务。现在典型的例子是数据服务网站和web服务,如Block Explorer或Etherscan。这些服务使应用程序很容易获得链的状态,并避免整个节点的工作量。但美中不足的是,我们需要依赖服务商的口碑,同时服务商也可能作恶。但是对于不敏感的企业来说,这些问题并不构成严重威胁。

二、交易状态的外链证明。这种证明使应用程序能够通过任何网络上的所有节点获得可验证的状态信息,而无需信任该节点。例如,以太坊的MPT树给出了可以验证的状态。这种方法还可以提供上面提到的应用层的好处。而且也不需要依赖其他节点的名声,其他节点也没有作恶的可能。需要改进的是,可以核实的信息类型非常有限。

第三,用户可以低成本自己运行一个免维护的全节点。各种应用的客户端通过信任和依赖用户自己的全节点来完成链中的交互。这个方向也是硬件的机会。对于普通用户来说,一个易于使用的全节点设备将是一个非常有意义的方向。而这种做法更有利于公链系统本身的健壮性和去中心化。

体验障碍43354交易确认延迟

等待交易确认是一个极大影响体验的问题。对于支付应用,现在可以缩短到十几秒确认,用户可以将就。对于往复频率较高的应用,比如游戏,需要较低的确认时间,比如几百毫秒。公链本身,首先保证安全和去中心化。同时,由于批量确认交易的高吞吐量,很难同时兼顾交易确认的延迟。前面说过,第一层解决不了的问题,才是第二层要克服的问题。

王嘉平:谈公链的 3 大性能难点、5 大体验改善

既然我们是分层次的,那么每一层都应该有明确的区别和目标。第一层以统一的方式承载了全网的共识需求,因此无法使用某个特定应用的事务结构进行优化。第二层可以单独垂直完成,多种第二层技术可以共存于同一个公共链上,服务于不同的垂直服务。这使得第二层技术可以利用特定类型应用的事务结构来弥补第一层的不足,最明显的机会就是事务延迟。

体验障碍5——私钥管理

软件时代,用户对个人数据管理毫无负担。所有数据都是本地的,所以在物理层面保护他们的电脑就足够了。然后在在线服务时代,邮件系统第一次大规模教育用户,要对自己的个人数据负责,管理好自己的密码。

在那个年代,集中式服务为用户提供了全力保护,以及一系列帮助用户找回遗忘密码的方案。如今,面对去中心化的应用,用户承担了更大的负担和责任来保护自己的数据和资产权益。这个东西就是私钥。教育用户保护好自己的私钥,比上一个时代的密码管理要难得多。

首先,私钥不是人类能记住的东西。每个人的私钥都可以独立生成,但是它的内容是一个相当长的随机位串,不是用户可以自己选择的。虽然很多钱包都支持助记符,即使是中文助记符,也还是需要用户抄写,但对于大多数人来说,脑子里记不住。其次,在去中心化的系统中,如果用户丢失,没有人能够提供恢复服务,账户和资产的控制权将永远失去。

因此,在公链系统中,私钥管理能否提供更好的体验将是一个重要的方向。比如利用自身的共识存储机制,或者利用额外的p2p存储功能,以类似互联网服务的方式管理用户的私钥,从而减轻用户的记忆负担和遗忘风险,但同时又不失安全性和去中心化的要求。相信这将是易用性和安全可靠性的权衡,适用于不同的场景和用户群体。

王嘉平:谈公链的 3 大性能难点、5 大体验改善 | 分享给朋友: