可扩展性作为Cardano全球采用的途径

Scalability as Cardano’s path to global adoption | Cardano Explorer (cexplorer.io)

你想从 A 地到 B 地。你可以买一张昂贵的车票旅行一个小时,或者买一张便宜的车票并在 2 分钟内到达那里。 人们的行为是理性的,大多数人会选择更实惠、更快捷的选择。 因此,他们永远不会愿意为区块链上的昂贵交易买单。

公共和去中心化区块链网络通常需要更好地扩展。 这意味着他们无法及时处理所有传入的用户交易。 可以把它想象成一辆公共汽车,每 10 分钟从一站发车。 公共汽车只能容纳 100 人,但公共汽车站经常有 200 甚至 300 人。 人们需要乘坐公共汽车,所以他们开始提供更高的票价。 有些人仍然愿意支付 票价从 0.50 美元上涨到 50 美元。 竞争将出现。 每30秒一班的现代化高速列车,票价仅为0.10美元,可容纳1000人。 一周后,没有人会乘坐公共汽车。

在区块链术语中,我们会说高速列车的规模比公共汽车更好。 系统每秒处理的事务数称为吞吐量。 可以把它想象成公共汽车每秒载客量。 在我们的例子中,它是 0.16 人,因为我们将 100 人除以 600 秒。

卡尔达诺有成为全球金融和社会操作系统的雄心。 为此,它需要更好地扩展。 好多了。 在本文中,我们将讨论为什么难以在第一层实现可扩展性以及为什么我们需要第二层。 我们将稍微讨论一下 Hydra、一些关于 rollups 和一些关于 Milkomeda 的内容。

请记住,单个 Cardano 交易可以包含多个资产和多个接收者。 我们不会在文章中过多重复这一点,但单个 Cardano 交易可以与另一个区块链网络上的 10 甚至 100 笔交易相同。

TLDR
在全球范围内,每秒发生超过 16,000 笔数字金融交易。 去中心化区块链很难达到如此高的吞吐量。 状态通道、侧链和汇总都是我们将在不久的将来在 Cardano 生态系统中使用的第二层。

为什么区块链不能很好地扩展?
区块链是由节点组成的分布式网络。 区块链的要求之一是去中心化,这基本上意味着能够以相对便宜的价格运行自己的完整节点。 节点有 4 个瓶颈:处理能力、内存、存储和带宽(节点在给定时间可以下载或发送的最大数据量)。

Cardano 网络中的节点相互通信并转发用户提交的所有交易。 每个节点验证交易。 这可能需要 Plutus 脚本验证,这需要更多的计算能力。 所有收到的交易都必须暂时存储。 进入区块的有效交易必须永久存储。

卡尔达诺目前每 24 小时处理大约 50,000 笔交易。 许多交易包含多个收件人,因此每秒大约有 1 到 5 人使用 Cardano。

现在想象一下,如果使用 Cardano 的人数增加 1000 倍,您将需要什么样的计算机。 或者是人数的 10,000 倍。 对计算能力、内存、存储和带宽的要求将是极端的。 只有企业家才能运行全节点,这会导致中心化。 “不信任,验证”的想法将无法实现。

根据 Capgemini a BNP Paribas 在 2021 年提供的一份报告,2020 年全球有 5220 亿笔金融数字交易。即每天 14 亿笔,或每秒约 16,000 笔交易。 由于该团队无法访问所有公司的数据,因此实际数字可能更高。

对计算机性能的更高要求导致网络集中化。 如果去中心化网络要更好地扩展,团队将面临重大的技术挑战。

为了结算交易,节点必须首先就其有效性达成一致。 如果系统有大量节点,这个协议可能需要一些时间。 更高的去中心化使得节点之间的协议更加困难。 每个单独的节点都必须消耗自己的计算资源来获取、验证和存储交易。 从去中心化的角度来看,这是可取的,但从可扩展性的角度来看,这是非常低效的。 显然,如果生态系统(区块链和第二层)要更好地扩展,节点就无法验证用户之间的所有交易。

第二层的任务是缓解第一层的瓶颈。 目标是并行处理不同层的事务,从而节省第一层的计算资源。 必须始终有某种机制将资产从第一层转移到第二层并返回。

第二层有自己的节点(计算机资源)和自己的用户共识规则。 权力下放和安全假设可能与第一个 l 有很大不同亚耶。 有些人错误地认为,如果在特定区块链之上创建第二层,它会自动继承其属性。 不是这种情况。 第二层的重点是接管第一层资产的责任。 第一层只参与层与层之间的资产转移,不验证第二层发生的交易和智能合约的执行。 第二层通常是一个完全不同的基础设施,包括节点(可能存在漏洞)、钱包、共识(第二层可以只是一个中心化服务器或仅由由单个实体运营的几个节点组成)等。

请注意,验证交易是关于处理数据的。 为了验证数据,它必须是可用的。 实际上,这意味着节点必须下载它或让某人将其发送给它(带宽),并且节点必须存储它(内存、存储)并验证它(处理能力)。 问题是普通计算机无法处理大量数据。 人们抱怨 Cardano 区块链太大而且增长速度太快。 第二层减少了第一层的计算资源需求,因为假设源自第二层的数据(交易)将存储在其他地方,或者在一段时间后简单地删除。

您可能知道 Cardano 是第一层。 第二层是或将是 Milkomeda、Hydra、Midnight 等。 让我们来看看解决方案之间的差异。 第二层有 3 个基本概念:侧链、状态通道和汇总。 我们不会过多地讨论概念之间的差异。 我们将重点关注它们在原则上是如何工作的。

九头蛇
Hydra 是一种状态通道解决方案。

Hydra 的使用方法如下。 几个用户同意(链下)一起打开一个所谓的 Hydra Head。 这基本上意味着他们使用智能合约将选定数量的资产从 Cardano 区块链转移到 Hydra。 需要进行链上交易才能将状态从 Cardano 转移到 Hydra。 转账后,用户相互共享链下状态。 他们可以快速、廉价地进行任意数量的交易。 最终的更改通过链上交易传输回 Cardano 区块链。

Hydra 类似于闪电网络 (LN)。 Hydra Head 可以由多个用户打开,而 LN 只允许在 2 个用户之间打开一个通道。 Hydra 将允许用户使用代币,也可以执行智能合约。

当多个用户想要相互发送多个交易时,Hydra 很有用。 每个用户都必须使用 Hydra 节点并始终在线,以确保不会尝试过早关闭 Hydra Head。 如果是这样,则有必要检查最终状态并在必要时对其提出质疑(以防欺诈企图)。

当参与者提前知道 Hydra Head 何时关闭时,Hydra 很有用。

Hydra 有自己的共识机制,只发生在参与者之间。 Cardano 区块链对 Hydra Head 中发生的交易一无所知。

可以说Hydra Head交易是私密的。 然而,最终状态被写入区块链。

未来的工作将在 Hydra Tail 上完成,以允许用户暂时离线。 Hydra 将通过手机操作。 另一个计划中的改进是将 Hydra Heads 相互连接的能力。 Hydra Heads 的互连为更大的参与者网络铺平了道路,有效地将本地 Heads 转变为全球网络。

美达
Milkomeda C1 是一种与 EVM 兼容的侧链解决方案。

Milkomeda 支持在 Cardano 生态系统中执行以太坊应用程序。 要使用 Milkomeda,您需要一个与 EVM 兼容的钱包,例如 Metamask。 您将钱包连接到 Milkomeda 侧链。 然后,您需要通过网桥将资产从 Cardano 网络发送到 Milkomeda。 ADA 将成为 MilkADA(一种包装的 ADA)。 MilkADA 用于支付费用。

侧链通常是一个独立的网络,有自己的验证器。 就 Milkomeda 而言,验证器由一组 Cardano SPO 运行。

dcSpark 团队提出了一项名为 wrapped smart contracts 的创新,允许用户留在 Cardano 网络上,但在侧链上使用智能合约。 所有用户所要做的就是提交一个 Cardano 交易,其中包含与侧链 dApp 交互所需的数据和资产。 侧链桥接层负责其余的工作。 这种特殊的解决方案实际上使用了 Cardano 节点的资源,但可以节省计算能力。

通常,使用侧链以便资产在桥上转移,所有交易和智能合约执行都在第二层进行。 这基本上节省了第一层的所有计算资源(类似于状态通道解决方案)。 用户不会被迫运行第 2 层节点,也不必像案例中那样在线状态通道解决方案。 侧链通常有自己的公共账本,其中的交易是可追溯的。

一般来说,如果要去中心化,侧链可能会面临与区块链类似的问题。 然而,这并不是用户所期望的。 侧链的目标通常是以更少的去中心化为代价更好地扩展。

汇总
IOG 和 dcSpark 团队正在为 Cardano 开发汇总。 Rollups 可以节省第一层的处理能力和内存。 在某种程度上,存储和带宽也是如此,但其使用情况因情况而异。

Rollup 主要基于智能合约,允许用户将资产从区块链转移到 Rollup 网络中。 在汇总中,您基本上可以对资产执行任何操作。 Rollup 可以只是一个快速交易网络,它可以在任何虚拟机上执行智能合约,也可以是一个应用程序。

Rollup 通过一种特殊的 Merkle 树数据结构来维护网络的状态。 把它想象成一个用砖砌成的金字塔,每一块砖代表信息(用户余额、交易等)。 可以从每条信息创建散列(短字符串)。 也可以从两条信息创建散列。 对于金字塔较低层的每两个哈希,在较高层中创建一个哈希。 如果以这种方式朝着金字塔的顶部前进,则会创建一个哈希值,即 Merke 根(状态根),它代表树结构中的所有数据。

只要您拥有状态片段、一些分支节点(在我们的类比中是砖块)和默克尔根,就可以通过密码学证明状态片段存在于 Merkle 树中。

Rollup 不断向第一层的智能合约发送一个新的状态(Merkle 根)。 区块链用于写入汇总状态,不可更改。 区块链还充当数据可用性层,因为汇总的新状态与每个新块一起分发。

Rollup 往往存在数据可用性问题。 如果区块链只写入 Merkle 根,那么它对交易一无所知,而这是一个理想的特性。 然而,如果 rollup 离线很长时间,资金就会被卡住,因为没有数据(或至少部分数据)就不可能证明用户是资金的所有者。

这个问题有多种解决方案。 Rollup 可以将数据与 Merkle 根一起发送到区块链。 只是数据允许重新创建在 Merkle 树中所做的更改。 区块链网络不需要对数据进行处理,只需存储即可。 数据可以压缩。

一些汇总将数据存储在其他专用网络上。 这节省了完整节点上的存储空间(区块链的大小增长得更慢)。 一些解决方案验证数据实际上在外部网络上可用。

Rollups 可以使用零知识 (ZK) 密码学。 ZK 允许用户创建他们正确完成任务的证明,而无需提供有关该任务的任何信息。

ZK 是如何工作的? 想象一下,您有通往走廊上一扇门的密码。 你想向对方证明你知道代码,但又不想给他们看代码? 所以你走下走廊,打开门。 穿过走廊就是您确实知道密码的证明。

ZK rollup 可以创建一个 ZK 证明,它已经采用了以前的状态,处理了有效的 TX,并正确地产生了一个新的状态根。 在区块链上执行的智能合约可以验证所有证据,并且可以在存在欺诈企图时拒绝 Merkle 树更新。 ZK rollup 不需要在区块链上存储交易和签名数据,因为它不可能作弊。

与侧链一样,rollup 必须有自己的去中心化、项目管理等方式。通常的风险是智能合约可以通过管理密钥进行更新。 通过这种方式,团队保留了对合同的控制权,因此基本上控制了用户资金。 一些项目通过延迟(例如 2 周)激活新更新来解决这个问题。

在撰写本文时,尚不确定团队在 Cardano 汇总开发方面的进展情况。 我们的假设是,我们将在 2023 年看到第一次尝试。许多项目都使用 Rollup,第一次尝试甚至是在可编程性非常有限的比特币上进行。

结论
每个第二层将始终依赖于第一层。 因此,第一层的可扩展性也必须得到显着提高,否则,区块链将永远限制第二层的功能。 对于状态通道解决方案,通道必须不断打开和关闭。 有人计算过,如果地球上的每个人都加入闪电网络,需要 70 年。 如果第一层的交易成本高且速度慢,那么很多人就不会进入第二层,甚至可能不会尝试。 卡尔达诺将显着扩展多亏了 PoS Leios,第一层的表现要好得多。

如果您使用侧链和汇总,请始终注意网络的去中心化程度以及使用它们的风险。

Cardano 在 Milkomeda 上有一个侧链。 Hydra Head 已经在主网上开放。 我们预计第一个汇总将在今年晚些时候出现,并将由 dcSpark 团队交付。 每个单独的解决方案都有自己的优点和缺点,适用于不同的用例。 所有解决方案都有成功的机会。