Cardano和分片

Cardano and sharding | Cardano Explorer (cexplorer.io)

卡尔达诺是一个整体区块链,升级 Ouroboros Leios 不会改变这一点。 许多区块链项目团队已经实施了分片以实现更高的可扩展性。 理论上,卡尔达诺有一天也可以进行分片。 然而,在Ouroboros Leios实施之前,这绝对不会发生。 让我们从共识的角度探讨整体区块链和分片区块链之间的差异。 这个话题很复杂,所以我们会刻意只关注某些方面。 为了方便读者阅读,本文并不旨在提供完整且全面的信息。

整体区块链和分片区块链面临的挑战
单一区块链在同一层或空间处理系统的所有核心组件,例如共识、数据可用性和执行。 参与网络共识的所有节点共享一个空间,在其中共同验证交易和区块。

分片区块链将系统划分为更小的子组,称为分片。 每个分片可以独立并行地处理部分交易。 节点在分片之间划分。 如果网络中有1000个节点和10个分片,则根据特定规则将100个节点分配到每个分片。

然而,分片并不是彼此独立的,因为它们仍然是一个系统的一部分。 每个系统,无论是整体系统还是使用分片,都必须维护一个有效的全局状态。

全局状态是区块链上资产所有权和转移的表示。 全局状态由参与共识的节点存储和更新。 不要忘记区块链带来的关键创新之一是防止双花攻击。 棘手的是在分布式网络中管理此任务。 对于中心化服务器来说,这是一个简单的任务。

从安全角度来看,网络中的所有节点都必须了解全局状态。

在整体区块链中,全局状态存储在所有节点上,使得在任何给定时刻都可以轻松维护数据的一致性和完整性。 然而,这对节点的资源(存储、带宽、计算)提出了要求。 单体系统可能趋于中心化,对节点性能要求更高,并且很难(如果不是几乎不可能)实现高可扩展性。

在分片区块链中,维护全局状态的一致性更加困难,因为它是在各个分片中维护的。 每个分片仅具有全局状态的部分知识,因为它不具有所有数据。 必须有一些同步机制(协议)来确保全局状态在分片之间保持一致。 从安全角度来看,这带来了复杂性和挑战。 另一方面,由于交易是在分片中验证的,因此实现高可扩展性相对容易。 然而,分片的数量受到跨分片通信需求的限制。

单一区块链可以有更简单的共识并且更透明。 就卡尔达诺而言,升级到 Ouroboros Leios 后情况将不再如此,因为将出现 3 个版本的区块,时间不同。 另一个优点是由于数据可用性更高,安全性更容易。 更容易确保抵抗双花和重放攻击。 由于数据可用性更高,确保安全性变得更加容易。 整体区块链对双花和重放攻击具有很强的抵抗力。

整体区块链面临的最大挑战是在不牺牲去中心化和安全性的情况下实现交易(和区块)的快速终结。 复杂性(更高的通信要求)会随着节点数量的增加而增加,从而限制了可扩展性。

让我们补充一点,卡尔达诺使用中本聪风格的共识,即概率最终性。 因此,与可证明最终性的网络(以太坊)相比,交易最终性较慢。

分片区块链的最大优势是通过交易验证的并行化实现高可扩展性。 换句话说,交易验证分布在几个部分独立的节点组(分片)中。 这具有额外的优势,因为它减少了单个节点的存储、带宽和计算能力要求。 网络可以更加去中心化,运行自己的节点可能会更经济。 缺点是复杂,特别是在分片的同步和管理、跨分片通信、分片之间的冲突解决等方面。构建分片的团队面临的最大挑战是在依赖于互联网的相对复杂的系统中实现高安全性和可靠性 。

跨分片通信开销
现在我们从资产和应用的角度来看待分片区块链。 显然,如果每个分片只有有限数量的应用程序和资产(在极端情况下,单个应用程序和每个分片的单个令牌类型),系统的用户友好性和可用性将受到影响。 例如,一个分片中只有 ADA 币、第二个分片中只有 HOSKY、第三个分片中只有 DJED 是没有意义的。 在这样的环境下,去中心化交易所如何运作? 您会将其放置在哪个碎片中?

这个问题通过跨分片通信来解决。 它是允许分片在系统中交换信息和协调操作的过程。 跨分片交易涉及多个分片。 有必要保证分片之间的原子性和一致性。 让我们通过几个简单的例子来演示一下。

如果 Alice 想要将代币 X 从分片 1 发送给分片 2 上的 Bob,系统需要确保交易在两个分片上都是有效、最终且一致的,并且 Alice 不能在其他分片上双花代币 X。 正如您所看到的,一个分片中的节点无法验证此交易并将其声明为最终(完整)交易。 两个分片的节点都必须验证交易。 还需要确保代币 X 不会在其他分片中花费。 其他节点(来自其他分片)也应该至少部分了解代币 X 的状态。还记得我谈到全局状态吗?

就应用程序而言,情况非常相似。 跨分片智能合约需要跨多个分片和来自其他分片的数据(或逻辑)进行通信。 例如,如果DEX智能合约(部署在分片3上)想要将分片1中的代币X与分片2中的代币Y交换,系统需要确保智能合约可以访问和验证代币X的数据和状态,并且 代币 Y 在各自的分片上,并且交换是在分片之间原子且一致地执行的。

现在尝试想象一下这一切在可扩展性、分片时间同步、存储(数据可用性)、通信(带宽)、冲突解决、攻击预防、保持全局状态等方面意味着什么。跨分片同步就是这个过程 这确保所有分片对系统的全局状态具有一致且最新的视图。

分片依赖于其他分片来验证跨分片交易(或智能合约)是一个不需要的(但必要的)功能,因为分片不是完全自治的(独立于其周围环境)。 如果一个分片出现问题(例如,由于攻击、网络问题或性能下降),它可能会影响其他分片,即整个系统。 因此,网络共识必须非常仔细地设计并考虑到这些可能性。

对于尝试实施共识分片的团队来说,存在一个巨大的挑战。 如果大量(超过一半)交易需要跨分片通信怎么办? 在这种情况下,分片区块链可能不会像最初预期的那样高效。 幸运的是,分片区块链已经存在,因此我们可以观察和比较各个实现。

可扩展性背景下的交易最终性
要理解这个主题,有必要在可扩展性的背景下理解交易最终性。 最终性意味着交易一旦被网络确认,就无法恢复或更改。 这确保了系统的安全性和完整性,并防止双花或重放攻击。

最终性会影响系统的性能和效率,因为它减少了等待确认或解决冲突的延迟和开销。

简单地说,在交易 X 最终确定之前,交易 X 转移的资产没有确定的所有者(可以是原始发送者,也可以是新的接收者)。 显然,再次使用该资产(所有者不确定)进行另一笔交易 Y 是“有风险的”,因为如果之前的交易 X 被还原,那么交易 Y(有人只是试图发送)也应该被还原。 这个问题可能是连锁的。 区块链很难恢复单个交易,因此有必要恢复整个区块。 这将严重破坏数据的一致性。

一般来说,最终性对于可扩展性很重要,但对于分片区块链尤其如此,因为它可以实现更快、更简单的跨分片交易。 如果交易不是最终的,则可能会在分片之间造成不一致或冲突,从而影响系统的可扩展性和安全性。 例如,如果分片 1 确认了将代币 X 从 Alice 转移给 Bob 的交易,但分片 2 尚未确认,则 Alice 可能会尝试在分片 2 上再次花费代币 X,从而导致双重支出。 为了防止这种情况,系统需要确保交易在两个分片上都是最终的,然后才允许 Alice 或 Bob 在其他分片上使用代币 X。

最终性对于可扩展性很重要的另一个原因是它可以实现更高效、更灵活的共识协议。 共识协议是确定节点如何就网络状态达成一致的规则区块链并解决冲突。 如果交易不是最终的,它们可能会创建分叉或重组,这可能会影响系统的可扩展性和安全性。

例如,如果节点 A 确认了包含事务 T1 的区块,但节点 B 确认了包含事务 T2 的不同区块,则它们可能会在区块链中创建分叉,这可能会导致混乱或不一致。 为了解决这个问题,系统需要使用可以处理分叉或重组(例如最长链规则)的共识协议。 然而,这些协议可能速度慢、成本高或复杂,这会限制系统的可扩展性和性能。

除非确保快速交易最终性(可证明的最终性),否则分片区块链无法高效可靠地运行,不仅在分片内而且对于跨分片通信也是如此。

如何计算系统吞吐量?
很难估计哪个系统可能具有更高的吞吐量。 问题是交易无法独立验证,即并行验证。 UTXO 和基于账户的区块链之间存在一些差异,但我们会解决这个问题。 如果需要跨链通信来验证交易,则会带来开销和延迟,从而降低吞吐量。 无法通过分片吞吐量乘以分片数量来计算分片系统的总吞吐量。

同样,不可能通过将每个验证器的处理能力乘以验证器的数量来计算单片系统的吞吐量。 验证器可能具有不同的处理能力,因此功能最弱的验证器可能会影响整体系统性能。 这还取决于具体的共识。

在单一区块链中实现高可扩展性(以及快速确定性)并不容易。 存在许多挑战,团队必须仔细权衡。 更快的最终确定通常需要更快的区块生产和传播,这可能会损害系统的安全性和去中心化(分叉或重组的风险)。 更快的最终确定通常需要更复杂的协议或机制(许多节点必须参与每个新块的生产过程中的投票),这可能会损害系统的简单性和透明度。 快速最终达成共识可能需要节点之间更多的通信或同步,这可能会增加延迟或开销。

分片区块链目前具有更高的吞吐量(至少在纸面上),但只有在需要处理跨分片交易时,它们的可靠性才会在更高的系统负载下变得明显。

记账模型和共识如何影响可扩展性?
令某些人惊讶的是,影响吞吐量的是会计模型。 以太坊和大多数 SC 平台使用的基于账户的模型不允许并行交易处理。 验证期间需要维护交易顺序(系统维护共享的全局状态)。 换句话说,交易是相互依赖的。 在验证交易时,需要考虑全局状态,该状态在验证时必须是不可变的(原子性)。

基于账户的模型需要对分片内以及跨分片的交易进行顺序处理,因为每个账户可能依赖于(或与)其他账户或交易。 通过分片的并行化可以提高系统的吞吐量,但前提是有效处理跨分片通信。

Cardano 使用扩展 UTXO(或简称 UTXO/eUTXO)模型,允许并行处理交易。 验证期间交易不相互依赖。 它们在块中的顺序并不重要。

UTXO 模型允许对分片内和分片之间的交易进行更多并行处理,因为每个 UTXO 都是独立的,并且可以在不参考其他 UTXO(或账户)的情况下进行验证。

卡尔达诺有可能成为分片区块链,但首先,团队需要实现快速最终性(可证明的最终性)。 由于概率确定性,考虑分片是没有意义的。 至少从我们的角度来看。 一旦 Ouroboros Leios 实现,就可以考虑分片。

让我们回到交易和区块的最终性。 最终性基于节点投票(批准)交易。 一旦交易被网络中一定比例的节点批准,它就变得不可逆转。 随着每个新区块添加到区块链中权重的增加,卡尔达诺网络中区块(以及交易)的最终确定性现在很慢。 卡尔达诺网络中仅 10% 的节点进行投票(添加新区块并批准之前的所有区块)可能需要长达 1 小时。

结论
去中心化区块链(L1)的可扩展性是一个非常复杂的话题。 团队和卡尔达诺社区应该考虑实施分片,但如果不提高交易的最终性,这是不可能实现的。 我们必须等待实施 Ouroboros Leios,然后,也许开始考虑分片是有意义的。 UTXO 记账模型适合分片,因为它不仅允许分片内并行化,还允许跨分片通信。 当您考虑维护去中心化、安全性、可靠性以及奖励公平性等其他因素时,分片是一项重大技术挑战。 如果第二层不能作为当前提高可扩展性的努力,我们将别无选择,只能提高第一层的可扩展性。 最后,除了分片之外,还有其他有趣的方法可以提高可扩展性。