What is the future of Cardano scalability? | Cardano Explorer (cexplorer.io)
本文将着眼于卡尔达诺当前的可扩展性,并考虑输入背书器可以在多大程度上改进它。 我们不会介绍 Hydra 或其他扩展卡尔达诺的选项。 与第一层的可扩展性最接近的改进将是输入认可者(尽管在此之前可能有一些部分改进)。
卡尔达诺当前的可扩展性
每秒事务数(TPS)可以告诉我们在给定时间段内有多少人可以使用网络。 TPS是最大网络吞吐量。
对于卡尔达诺来说,TPS 不是一个合适的指标。 基于 UTxO 的记账模型允许在一次交易中将多个资产发送给多个接收者。 此类交易可以将资产发送给 100 个接收者,并且比网络必须处理 100 个单独的交易要小得多。
查看卡尔达诺当前处理的交易类型。 你会发现大约 60% 是 SC 交易,35% 是简单交易(Alice 将资产发送给 Bob),5% 是带有元数据的交易。
为简单起见,我们将在本文中使用 TPS 指标,并且在大多数情况下,我们只考虑简单交易。
计算TPS相对容易。 为了粗略估计,我们只需要知道区块大小、平均交易大小和区块频率。
卡尔达诺每 20 秒铸造一个新区块。 区块和交易的最大大小由以下协议参数定义:
最大块大小:90,112 字节
最大 TX 大小:16,384 字节
一个简单的卡尔达诺交易的大小可以是 250 到 500 字节。 大多数时候您会看到 300 字节的事务。 SC 交易或具有多个输入或输出的交易当然更大。
交易的输入和输出越多,交易规模就越大。 通常,采用一个大的输入,并从中创建两个输出。 一个输出由接收者接收,另一个输出将部分资产返回给发送者。 交易必须包含见证人(100-200 字节)。
如果我们考虑到块中只有 300 字节大小的交易,那么块中就可以容纳 300 个交易。 如果我们将此数字除以 20 秒(区块铸造频率),我们得到的 TPS 为 15。
如果我们考虑到块中只有 16,000 字节大小的巨大 SC 交易,则大约有 6 个交易可以放入该块中。 TPS 仅为 0.3。
然而,一笔大型 SC 交易可能包含大约 250 个接收者,因此一个区块中将服务 1,500 个接收者。 如果我们不是按交易而是按接收者来计算 TPS,我们会得到 75。
考虑到当前的交易类型,Cardano 目前的最大吞吐量约为每秒 40-50 个接收者。 这比我们只考虑 TPS 和简单交易的情况大约高出 3 倍。
有必要认识到,与其他区块链相比,卡尔达诺区块的大小相对较小。
比特币区块的理论最大大小为 4 兆字节 (SegWit)。 更现实的块最大大小是 2 MB。 去年的平均大小约为 1.6 MB。 比特币平均每 10 分钟就会开采新区块。 比特币可以处理大约 7 TPS。
以太坊平均每 12 秒铸造新区块。 以太坊的区块大小不是固定的(不受以字节为单位的区块大小限制),而是取决于每个区块中包含的交易使用的 GAS 量。 GAS 限制(交易执行的复杂性)决定了区块大小。 它可以动态调整。 目前,GAS 限制设置为 15M。 最近几个月,块大小范围为 140-170 KB。 以太坊每天铸造约 7,200 个区块并确认约 100 万笔交易。 区块中大约有 140 笔交易。 以太坊平均交易量约为 1000 字节。 目前,以太坊的运行接近其容量极限,其 TPS 为 12。
Algorand 的区块大小为 5 MB,出块时间为 3.3 秒。 它可以实现 6000 TPS,团队计划将其提高到 10,000。
比特币的出块时间很长,但因此它可以有很大的块大小。 TPS 主要受到出块时间的限制。 以太坊的区块时间比卡尔达诺大约低一半,同时区块大小大约是卡尔达诺的两倍。 不过,当前的 TPS 为 12。如果我们只计算 500 字节的简单交易,TPS 可能约为 30。这大约是 Cardano 的 2 倍。
Algorand 具有较大的区块大小,同时出块时间非常短。 这也是TPS高的原因之一。 我们将更多地讨论这个与输入认可者相关的项目。
卡尔达诺区块的大小很可能会增加到 180 KB,并且区块铸造频率可以设置为 15 秒,而不会对性能产生负面影响。 这样的话,TPS 就是 40,略高于以太坊。
然而,增加 10 TPS 不会产生显着差异。 区块链必须能够在几年内扩展至数千 TPS。 据说电子网络已经能够做到这一点。 卡尔达诺的使命需要达到类似的数字。 卡尔达诺可以通过输入背书者实现这一目标吗?
输入背书者
输入背书者可以提高卡尔达诺的吞吐量和速度,因为交易可以持续流式传输,而无需等待共识。 卡尔达诺将不再拥有一个包含交易数据的区块,而是拥有三种类型的区块:排名区块、背书区块和输入区块。 交易只会在输入块中。 认可块将引用多个输入块。
这是 Algorand 已经实现的非常相似的概念。 这称为块流水线。 Algorand 采用了交易引用的概念,这是 TPS 高的原因之一(当然不是唯一原因)。 在进入输入背书器之前,我们先简要解释一下 Algorand 中的区块流水线是如何工作的。
Algorand 网络为每个区块随机选择一个用户委员会,然后他们在一轮中对该区块进行提议和投票。
Algorand 中有两种类型的区块:关键区块和微区块。 关键区块用于在网络上达成共识。 除了其他信息(有关提议者、委员会等的信息)之外,关键块还引用多个微块。 微块用于存储交易数据。
委员会仅对关键区块进行投票,而不对微区块进行投票。 微块在包含在关键块中之前由参与节点进行验证。
Algorand 仅包含对关键区块中状态变化的引用,而不是账本的整个状态。 引用只是块中发生的状态更改的 32B 哈希值。 哈希值比存储整个状态小得多。 这减少了关键块的大小,并允许在网络上更快地传播和验证块。
输入背书器和块流水线有许多相似之处:
这两个功能将块分为两部分:一部分用于共识,另一部分用于交易。
无论共识过程如何,这两个功能都可以实现交易块的持续流式传输。
这两个功能都旨在通过减少块传播时间并允许更高的交易率来提高网络的吞吐量和速度。
可以说,IOG团队实现了一个已经在实践中发挥作用的类似解决方案。 另一方面,两种解决方案也存在差异。 最大的区别可能是 Algorand 的区块流水线依赖于单层背书块,而 Cardano 的输入背书者依赖于输入、背书和排名块的分层结构。
让我们描述一下输入背书器功能交付后将在卡尔达诺中使用的块。 我们从顶部(网络共识)到底部(数据)描述它。
排名区块用于在卡尔达诺网络上达成共识。 它们与当前块类似,只是它们不包含任何交易数据。 相反,它们包含对一组彼此兼容的背书块的引用。 此外,每个排名区块都包含创建它的区块生产者的签名。 排名块由槽位领导者生成,协议根据其权益随机选择槽位领导者。 排名区块负责维护区块链的安全性和终结性。 它们每 15-30 秒即可生成一次。
背书块包含对单个输入块的引用,以及创建它的输入背书者的签名。 它们由输入背书者生成和流式传输,并接受区块生产者的有效性检查。 背书区块有一个父区块,即链上最后一个排名区块,并且它们可以有多个(兼容的)子区块。 它们每 5-10 秒即可生成一次。
输入块包含交易数据。 它们由输入背书者生成和流式传输,输入背书者是随机选择的利益相关者,可以从内存池中选择交易并通过网络传播它们。 输入块没有任何父块或子块,并且它们不参与共识过程。 它们只是向网络广播交易的一种方式。 它们每 0.2-2 秒即可生成一次。
认可块仅包含对一个输入块的引用。 背书块可以被与其兼容的其他背书块引用。
例如,如果一个背书块 EB-1 引用了一个输入块 IB-1,另一个背书块 EB-2 引用了一个输入块 IB-2,并且 IB-1 和 IB-2 都没有冲突的交易,那么 EB- 2 可以引用 EB-1 作为其父块。 这样,EB-2 就成为 EB-1 的子块,并且 EB-1 和 EB-2 彼此兼容。 这允许创建背书块的树状结构,其中每个分支代表一组不同的交易,这些交易可以通过下一个排名块包含在分类帐中。
一个背书块拥有多个子块的目的是增加为每个排名块找到一组兼容的背书块的机会。 排名块可以引用一组彼此兼容的背书块,这意味着它们引用的输入块中没有冲突的交易。 通过为背书块设置多个子块,块生产者可以选择最佳分支,以最大化可包含在分类帐中的交易数量。
我们将在另一篇文章中更详细地解释输入认可者(包括图片)。 在本文中,我们想要澄清基本概念。
最需要注意的是,带有交易的区块基本上可以持续地(每 0.2-2 秒)铸造(流式传输)。 这意味着不是每 20 秒创建一个数据块,而是可以在同一时间内创建 10 到 100 个输入块。 高频率的铸造输入块并不妨碍网络共识。
现在让我们关注可扩展性的潜在增长。
一个卡尔达诺区块可以容纳 300 笔简单交易。 如果输入区块的出块时间设置为2秒,则20秒内将创建10个区块,相当于3000笔交易。 如果设置为0.2秒,就会有100个区块,3万笔交易。
所以TPS会上升到150到1500。
如果网络层能够增加输入块的大小,将对 TPS 产生积极影响。 当输入块增加到 180 KB 时,Cardano 的 TPS 可以达到 300 到 3000 左右。
提高可扩展性取决于许多其他网络质量和技术,例如扩散管道、秘银等。如果可以改进其他单独的网络属性,则可以更有效地使用输入背书器功能。
值得一提的是,我们提供的 TPS 仅供参考。 实际上,交易之间会存在冲突,因此在给定轮次中,可能只有部分背书块会进入排名块。
输入背书者可以带来的可扩展性的潜在增加不仅与输入块(以及其中的交易数量)有关,还与对块进行排名有关。
排名区块需要接受区块生产者的有效性检查,区块生产者必须确保它们遵循协议规则和共识参数。 有效性检查对资源的要求更高,因为需要验证更多的交易。 排名区块的大小和铸造频率也受到限制。 它确定排名块中可以包含多少参考文献以及生成它们的频率(15-30 秒)。 因此,可扩展性不仅受到输入块的限制,还受到排名块的限制。
区块链网络无法生成无限数量的交易,因为这会产生大量数据。 数据可用性是区块链可扩展性的关键方面之一。 在去中心化网络中,有效性检查发生在世界各地的节点上。 必须有数据可供他们进行检查。
块大小越大,块中可以处理的交易就越多,但节点也需要更多的带宽和存储。 出块时间越短,交易确认的速度越快,但分叉和孤块的风险也越高。
团队必须仔细平衡权力下放和可扩展性。 提高可扩展性可能会对去中心化产生负面影响,因为它会减少参与网络共识的节点的数量和多样性,并增加某些节点相对于其他节点的权力。
结论
输入背书者可能不是卡尔达诺协议的最后改进。 人们常说,分片对于高可扩展性至关重要。 然而,分片也有其缺点,主要是由于分片之间需要通信和同步。 卡尔达诺可以在输入认可者实施后进行分片。 一个分片的 TPS 大致类似于具有输入背书器的卡尔达诺网络。 因此,具有 10 个分片的卡尔达诺的 TPS 约为 20,000。 然而,这还是遥远的未来,许多技术细节还需要解决。 比如存储层面的分片、改进Mithril并拥有轻客户端、考虑剪枝(扔掉旧交易)等。