科普:Layer2 的数据可用性究竟指什么?

链捕手

    作者: ZKCross
    原文标题:《Data Availability in Layer-2 Blockchains》
    编译:麟奇,链捕手
    区块链数据可用性
    最新的以太坊分片路线图优先考虑数据分片,而不是执行分片,从而显著提高以太坊数据吞吐量。此外,模块化区块链还深入研究了Rollup、volitions和validity以及数据可用性解决方案。其都是区块链数据可用性的最新讨论和趋势。
    任何参与区块链和加密货币领域的人都可能好奇在这种情况下区块链数据可用性意味着什么。
    术语“区块链中的数据可用性”是指许多区块链扩展方案面临的特定问题。它检查区块链节点如何生成新块,以及这些新块中包含的所有数据是否都广播到网络。困难在于,如果区块生产者不发布区块中包含的所有数据,则没有人能够发现该区块中是否隐藏了恶意交易。要充分了解数据可用性如何在区块链上工作,重要的是要了解区块链中的区块构成以及区块链节点的功能。
    区块链节点入门
    区块链的数据结构包含一个区块链,区块链中的每个区块由两部分组成:区块头和交易数据列表。
    
  • 区块头是区块的元数据,包含区块的一些基本信息,例如交易的默克尔根。
  • 交易部分的区块包含实际交易。

    区块链网络中有两种类型的节点:全节点(验证节点)和轻客户端。区块链必须支持数据可用性,尤其是rollup和layer 2链。
    数据可用性问题
    数据可用性问题是区块链三元悖论:安全性、可扩展性和去中心化。
    
    三难困境指的是人们普遍认为,在任何给定时刻,去中心化网络只能提供去中心化、安全性和可扩展性这三个好处中的两个。可扩展性、安全性和去中心化都是相互作用的。在交易达成之前,网络必须对其合法性达成一致。如果系统庞大,达成协议的过程可能需要一些时间。
    对数据可用性的攻击
    当流氓节点广播区块头但保留包含错误交易的部分区块时,就会发生区块链数据可用性攻击。虽然可以下载和存储整个区块链的诚实完整节点知道某些数据不可用,但它们缺乏正式的机制来向资源有限且无法访问整个区块链数据的轻节点证明这一点。因此,侧链和分片区块链策略都容易受到数据可用性攻击。侧链网络(或分片)上的流氓节点将区块的哈希提交到可信赖的区块链,而不会将区块数据传输到此攻击中的其他节点。
    数据可用性攻击是区块链领域的一个众所周知的问题,最初是在区块链轻客户端的背景下提出的。Vitalik之后将其普及。轻节点所做的仅仅是存储区块头和验证pow需求。他们依靠全节点来验证区块并在不正确的区块中提供欺诈证明。
    在轻节点情况下,数据可用性攻击不是致命的。通常,矿工也会对完整的节点进行操作。如果一个区块不可用,他们会忽略它并同时挖矿(即在其母区块上)。只要区块无法访问,任何诚实的矿工都不会在区块上进行构建。它最终会脱离最长的链。此时,轻节点会自动忽略这样的区块。当涉及二级区块链和分片时,这种攻击更加需要被重视。
    关键区别在于,除了区块链(或分片)之外,可能缺少大多数诚实的矿工/完整节点。因此,侧链(或分片)中的参与者没有统一、系统的方法来决定是否将缺失的区块合并到他们的分布式账本中。
    数据可用性问题
    区块链中的数据可用性问题提出了以下问题:节点如何确定在创建新区块时,其中包含的所有数据都真正广播到网络中?区块链网络中的对等节点如何确定与新提出区块相关的所有数据确实可用?
    例如,将 Bob 视为 ZK-Rollup (ZKR) 的操作员。他验证了比特币上的 ZK 证明。尽管他没有将所有交易数据传输到比特币,但即使他的证明确定了rollup中所有状态更改的有效性,rollup的用户也可能不知道他们当前的余额。此外,由于ZK特性,它无法洞察现有条件。
    解决数据可用性攻击
    在模块化区块链中,由于验证和数据可用性的脱钩,确保模块化区块链中数据可用性的单独方式至关重要。Rollups提供交易证明并在链下计算新状态,但仍需要在链上发布某些交易数据以防止数据可用性问题。ZK-rollups 主要将三个关键数据位发布到主链:
    
  • 新状态的加密承诺(根哈希)
  • 密码学证明(如ZK-SNARK)确定新状态是将有效交易应用于初始状态的结果。
  • 以calldata的形式为批处理中的每一笔交易提供一小段数据

    密码学证明的零知识特性确认交易和状态变化是合法的,但不提供有关交易本身的信息。完整的节点不再需要交易数据来验证交易并主动重新计算新的状态根。但是,假设没有足够的交易数据广播到主链。在这种情况下,L1上的节点无法检测到rollup的当前状态,这通常仅在特定情况下(但仍很重要)是必须的。
    区块链的数据可用性层
    区块链的数据层既用于区块链的数据结构,也用于物理存储。区块链账本是使用相互连接的区块列表或默克尔树所设计的,这些区块列表使用非对称加密方法进行加密。数据层由以下部分组成:
    区块:区块是用于对交易分组进行分组并将它们分布在网络节点之间的数据结构。挖矿是生成区块的过程。每个区块都有一个区块头,它是能够验证区块合法性的元数据。
    Merkel Tree和交易:在区块链中,交易作为Merkel Tree的一部分进行维护。Merkel Tree通过生成完整交易集合的数字指纹来汇总块中的所有交易,允许用户确定是否包含某笔交易。每个叶子节点都有交易的数据,而每个非叶子节点都包含其先前哈希值的哈希值。Merkel Tree是二进制,需要奇数个叶子节点。如果有奇数个交易,则将最终哈希复制一次,以生成偶数个叶子节点。
    网络层:区块链使用分布式网络,允许任何人下载区块链上的所有信息并与之交互。点对点 (P2P) 网络跨节点分发/广播交易。区块链平台主要利用三种类型的网络:中心式、去中心式和分布式网络。
    物理层:该层包括服务器、边缘节点和物联网 (IoT) 设备,它们作为区块链网络上的节点运行。这些通常通过点对点网络连接。节点可以是任何活跃的电子设备,例如计算机、电话或打印机,只要其连接到网络并具有IP地址。
    虚拟层:位于硬件之上的虚拟层,用于将硬件和资源分配给虚拟机。
    共识层:该层负责实施网络规则,这些规则指定网络内的节点应如何反应,以就广播交易建立共识。
    激励层:该层参与分布式网络中节点努力为达成共识而获得激励的活动。这一层是否被使用由区块链协议使用的共识机制决定。
    合约层:由服务和可选组件组成,使区块链平台能够与其他技术集成,例如数据馈送、智能合约、预言机、DAO和状态通道。
    API层:在区块链之上提供应用程序接口,并为第三方应用程序提供与账本和智能合约通信的机制。
    应用层:这一层具有能够在区块链之上创建应用程序的特征。
    传统数据可用性解决方案
    传统的数据可用性解决方案旨在通过改变区块链的底层数据传输协议和区块数据结构、共识算法和激励机制等基础区块链协议来提高可扩展性。这些解决方案包括Layer1扩展解决方案,例如Segregated Witness、DAG、分片和共识。然而,Layer2解决方案旨在通过在应用层的链下方式提高可扩展性。
    Segregated Witness:具有协议增强功能,已部署用于防止交易延展性并提高区块容量。
    DAG:交易在一个DAG中连接,这意味着一个交易验证下一个交易。每个节点由许多交易级别组成。当一个交易在节点中注册时,它必须首先验证另外两个交易。这两个交易是使用数学过程选择的。然后,节点必须验证两个交易不冲突。为了验证交易,一个节点必须解决类似于比特币网络上的加密难题(pow)。
    分片:一个区块链可以分片成多个链来提高吞吐量。每个分片都有自己的区块生产者,并且可以进行通信以交易代币。分片不是每个区块生产者处理每笔交易,而是将网络的处理能力划分为只处理特定交易的分片。因此,非分片区块链通常有一个或两个功能齐全的完整节点和一个或多个轻客户端。值得注意的是,分片旨在将网络资源分布在不同的节点上。
    共识:共识层对区块链的存在至关重要。任何区块都依赖于共识层才能正常运行。这一层负责组织验证区块并确保其进度一致。
    ZKRollups 解决方案
    当下有些以太坊Layer2解决方案,例如optimistic rollups、ZK rollups和Validiums。这些解决方案将执行操作转移到链下,同时可确保应用程序验证和数据在链上的可用性。虽然基于链下执行的架构提高了吞吐量,但它仍然受到主链可以处理的数据量限制。虽然执行是链下的,但验证或争议解决过程是必须在链上的。交易数据在以太坊上作为calldata提交,以确保数据可用于未来重建。这是极其重要的。
    对于optimistic rollups,操作员可能会提交无效交易,然后压制部分区块。这种方式下,系统中的其他全节点将无法验证提交的主张是否正确。由于缺乏数据,他们将无法提供任何欺诈证明来表示主张确实无效。
    在基于零知识的roll-ups的情况下,ZKP的完整性确保接受的交易是有效的。然而,即使存在这样的保证,不揭露支持交易的数据也会产生严重的负面影响。这可能导致其他验证者无法计算系统的当前状态,用户被排除在系统之外,并且他们的余额也是被冻结的。
    为了提高吞吐量,将执行操作移到链下是有必要的,但也需要有一个可扩展的数据托管层来确保数据可用性。借助ZKcross类似的生态系统,使用零知识Rollup提供可靠的数据托管和排序组件。执行层将包含几个将要被合并的链下ZKRollups扩展解决方案。我们目前正使用ZKcross研发必要的技术,来实现这一点。
    链上数据
    区块链会从哈希率和交易等其他相关活动中产生大量数据。
    当我们谈论链上数据时,我们指的是什么?简而言之就是:所有原生地存储在区块链上的数据都是链上数据。
    链上数据是指在特定区块链网络上已发生的所有交易。或者换句话说,所有已经写入区块链区块的数据。公链的信息具有公开访问的特性。依照数据可以有三个主要分类。
    
  • 每个区块的规格(时间戳、gas费、矿工、区块大小等)
  • 每笔交易非常详细(“发送者”和“接受者”地址、交易中的转账金额等)
  • 智能合约的调用和使用

    链上数据提供有关区块链整体健康状况的信息:网络安全、财务完整性、透明度和利用率。该层的数据是原始且详细的,几乎不需要修改。任何区块链搜索引擎都可以访问它。它是网络上的基础“fact sheet”,与所有市场参与者相关。
    链下数据
    对于比特币用户来说,链下和链上交易各有优缺点。可扩展性是区块链技术的一个限制,它可以通过链下解决方案来解决。链上交易的确认时间可能因网络拥堵情况而产生差异。链下交易是即时执行的,交易成本也更便宜,某些交易在被上链之前不会产生任何费用。链下交易的隐私也更强,因为交易的细节与主链分开并且没有被公开披露。
    一些区块链工具,特别是智能合约,依靠基于区块链的触发器和真实世界的数据来验证条件和执行合约。例如,一个转让土地所有权的智能法律合约。购买房产所需的资金由智能合约托管,该合约需要验证现实世界的房产事实,类似于实际的契约转让。然而,如果区块链不能检索数据,如第三方已确认的契约转让,智能合约的标准如何能被满足以释放卖方的资金。对于链下数据;这些数据为智能合约提供真实世界的信息,以成功执行契约和买卖。随着区块链和加密货币的不断发展,链下解决方案有可能成为一个永久性的解决方案,但唯有时间才是检验其的唯一标准。
    借助ZKCross等支持与多链ZKRollups和跨链层技术进行跨链互操作的协议,将增强链上和链下数据的可用性。ZKcross创建了一个无所不在的层充当跨链Layer2,ZKCross在多个区块链上保持对全局状态变化的跟踪和同步。通过验证计算和使用zk-snark证明进行多链rollup,其解决了跨链第三方的可靠性问题,以及数据可用性攻击的问题。
    总结
    我们正处于一个巨大范式转变的前夕,这将永久地改变比特币的生态系统。ZK-Rollups将以最有效的方式扩展以太坊。这个范式变化将是如此深刻,以至于它有效地标志着所有其他L1智能合约链的死亡,包括我们今天熟知的以太坊。有几个关于可扩展性的争论。数千小时的研究、实现、成功和失败都被用于创造ZK-Rollups。
    当然,努力还远未结束。虽然前方道路曲折,但目标从未像现在这样明显。由于目前的单体区块链架构的效率仍然低得惊人,而且在受限的三元悖论下,增加吞吐量就意味着降低安全性和/或去中心化。特殊的模块化设计,将执行分为不同的执行层,如ZKrollups,将区块链行业的效率提高了100倍到10000倍。毫无疑问,这是将其扩展为全球普遍性和提高至数百万TPS的唯一方法。此外,预计在几年内,90%以上的区块链活动将会发生在zkRollups上,而不会对安全或去中心化产生明显影响。