区块链开发者的内心:垂直扩展危机(二)

2020-09-26 19:10

   

为了实现区块链的大规模采用,应该解决三个基本问题。让我们进入第二个方面:垂直缩放。

这是一个由三部分组成的系列文章的第2部分,其中Andrew Levine概述了传统区块链面临的问题,并提出了针对这些问题的解决方案。在这里阅读有关可升级性危机的第1部分,在这里阅读有关治理危机的第3部分。

互联网的出现表明,我们拥有一种数字自我,它可以与地球上任何地方的人们互动并协调我们的身体自身无法采取的行动,从而能够增强我们在现实世界中的力量。

但是,我们的数字自我被束缚了-囚禁在属于Facebook,Google,Amazon,Netflix,Twitter的私人计算机上,并且清单还在继续。这些私人垄断实际上并不生产技术。相反,他们的产品就是我们-我们的数字自我-他们的全部目的是尽可能地从我们这里获取价值。

许多人认识到区块链技术破坏这些私人垄断和寡头垄断的潜力,但不幸的是,没有特定的区块链能够超越现有的区块链和加密货币社区的范围。

如果这样做的话,它在技术上将无法支持使地球上每个人都能够掌控自己的数字自我所需的那种增长和采用。这是为什么?仅仅是选择正确的功能吗?切换到股权证明?分片?

不幸的是,问题比一个或两个缺少的功能要大得多,并且不能通过对现有协议进行计划的更改来解决,因为问题是它们构造方式的基础。这种架构本身限制了这些平台垂直扩展的潜力。

什么是垂直缩放?

垂直扩展是管理网络中单个节点(计算机)增长的方式。区块链是从不丢弃信息的数据库。信息仅添加到数据库,而不会删除。这使增长成为更大的问题。不仅如此,大多数区块链都不旨在有效利用计算机的各个部分。这将增加一个大数据库,从而以低效的方式消耗给定计算机上的大量计算资源。

为了弥补这些缺点,节点运营商依赖于昂贵的企业级硬件,特别是随机存取存储器或RAM,以及非易失性存储器Express或NVMe,这使网络参与(节点操作)超出了网络。掌握老百姓。而且,以某种方式,我们应该认为这对权力下放来说还不错!

但是分片!

具有讽刺意味的是,存在垂直规模危机的最有力论据之一是对水平规模解决方案的需求水平。

在撰写本文时,一个复仇完全节点仍然不超过500 GB。没什么!然而,绝对必须向以太坊添加复杂,高风险的机制,以便将其区块链分解为零碎,并且需要将宝贵的计算资源用于简单地启用这些“分片”彼此沟通,更不用说执行有意义的计算了。

问题在于,水平缩放(分片)不能替代垂直缩放。假设您有一家工厂每年生产1,000辆汽车,但对2,000辆汽车有足够的需求。您首先要做什么:建立新工厂或尝试从已有的工厂中生产更多的汽车?垂直缩放正在优化工厂,以在仅新建工厂之前生产更多的汽车。区块链节点是“工厂”,决定其输出的是它们在计算机中使用组件的效率。

从直接的经验来看,区块链在节点资源管理方面还没有进行优化,这使其成为垂直扩展解决方案的理想之选。

在区块链中,本质上有两个血统:以太坊和BitShares。许多人可能不熟悉BitShares,但是其架构设计是该领域一些性能最高的区块链的基础,包括EOS,Hive和Steem。虽然以太坊以及许多以其为模型的链仍然是最具价值的通用区块链,其应用程序分散程度最高,拥有唯一的用户,但在原始交易活动方面,BitShares系列绝对占主导地位,使其成为性能之王。

可以说,我的团队在BitShares产品线方面拥有比地球上任何其他团队更多的经验,因此我们将专注于该设计。因为BitShares系列中的区块链每秒能够执行更多的交易,所以这实际上增加了垂直扩展的重要性-因为它们的区块链状态增长得如此之快。

垂直缩放,RAM和分叉

在计算环境中,垂直扩展实质上就是尽可能使用最便宜的内存(磁盘)形式,并尽可能最大程度地使用。就区块链而言,两个最相关的过程是分叉解析和存储状态。那里有数据库的所有这些不同版本(“ forks”),并且节点必须就哪个是“正确”的节点达成共识。那是分叉的决议。

现在,您有一个不可逆的数据库需要存储。理想情况下,您希望将其存储在最便宜的介质(磁盘)上,而不是最昂贵的介质(磁盘)上。

因为您希望尽快解决派生问题,所以您希望这些计算在RAM(快速内存)中完成。但是,一旦分叉已解决并且新的事务已添加到不可逆状态,您便希望将此数据库存储在磁盘中。BitShares产品线中的区块链存在的问题是,它们通过从未真正反映区块链当前状态的设计来实现其性能。相反,当应用每个块时,挂起的事务状态为“撤消”,将旧值写回数据库,然后应用该块。

这种方法的一个问题是,在大多数情况下,这意味着再次执行完全相同的计算,并将相同的状态写回到刚才存在的数据库中,这是非常低效的。

读写:算术

与垂直扩展问题更相关的是,这种设计意味着不可逆状态作为一个整体不能存储在磁盘上,而不必将块“弹出”回磁盘并进入RAM来解决派生问题。这不仅增加了给定节点上的RAM负载,而且在利用RocksDB方面也产生了非常严重的后果。

RocksDB是Facebook开发的一种数据库技术,用于为其新闻提要提供支持。简而言之,它使我们能够从磁盘获得RAM的性能。许多区块链项目都以各种方式使用RocksDB,但我们概述的数据库设计问题在于,不断需要撤销待处理的事务并重写数据库,这抵消了RocksDB的好处。

Facebook的新闻提要全部与数据库读取有关。考虑与单个帖子互动之前,您滚动浏览了多少帖子。因此,RocksDB设计为在数据库读取次数多于写入次数时最有效。上面概述的数据库设计导致大量的数据库编写,甚至抵消了使用RocksDB的好处。

为了充分利用RocksDB,我们需要从头开始重建区块链,以有效地将块从RAM传送到磁盘,同时将写入次数降至最低,以便从RocksDB中受益。通过消除撤消/重写的需要,并创建一个跟踪不可逆状态且永远不需要撤消的数据库,我们可以实现这一目标。

这将使我们能够通过将不可逆块有效地从RAM转移到磁盘而不必将它们带回而将节点中的RAM使用最小化。我们估计这可以将运行节点的成本降低多达75%!这不仅使节点操作更容易访问,增加了操作中的节点数量,而且这些节省的费用最终将传递给用户和开发人员。

限制区块链还是无限区块链?

现有的区块链由于如何解决派生以及如何存储区块链状态而达到了从单个节点可以获取的性能极限。在本文中,我们已经解释了数据库设计如何导致增加RAM使用量的fork解析过程,以及数据库写入抵消了使用RocksDB可能带来的好处,最终导致效率较低的区块链节点。

事实是,垂直缩放比这个单一问题要多得多。区块链生态系统很复杂,有许多组成部分相互反馈。降低运行单个节点的成本对于增加运行中的节点数并降低使用网络的成本至关重要,但是通过最小化网络拥塞,激励有效的节点运行等等,也将获得巨大的收益。

我们的目标不是详细解释如何解决垂直扩展问题,而是要深入了解我们认为是区块链领域中严重未被重视的问题的性质。水平可伸缩性绝对是一个非常重要的关注领域,但是如果我们忽略了垂直可伸缩性的问题,那么我们通过水平扩展所能完成的一切将大大增加效率极低的节点的数量。

 

声明:「火综财经」所发表的文章除注明来源外,均为来自互联网,不代表「火综财经」赞同其观点或证实其描述。转载请注明:火综(www.huozong.cn)