用你的手机运行一个去中心化网络:认识Avail的轻客户端

本文介绍了Avail轻客户端,它允许去中心化交易所的每个用户独立验证交易,就像运行完整节点一样。Avail轻客户端通过数据可用性采样(DAS)和KZG承诺,实现了无需信任的,密码学安全的,快速的数据验证,降低了硬件要求,并形成了点对点(P2P)网络,从而增强了区块链网络的可扩展性和安全性。同时还对比了以太坊全节点和轻节点,展示了Avail轻客户端独特的优势。

想象一下,如果去中心化交易所的每个用户,从个人用户到大型机构,都可以像运行一个完整节点一样,以同样的确定性独立验证交易。一个点对点的去中心化网络将在用户之间形成,他们不需要信任任何个人或实体来验证网络。

不幸的是,以当今主要的区块链架构,这将要求每个人实际运行一个完整节点才能实现。但这并不可扩展,因为:

  • 高硬件要求: 包括大量的 RAM 和存储空间。
  • 技术复杂性: 有效地设置、维护和管理一个完整节点需要大量的技术专业知识。
  • 资源消耗: 支付运行一个完整节点会产生额外的成本,普通网络用户无法合理地支付。
  • 耗时: 大多数用户关心的是应用程序能为他们做什么,而对设置和维护完整节点基础设施没有兴趣。

这给网络带来了中心化力量,最终运行完整节点的参与者通常属于以下两类:

  1. 那些有经济动机的人,例如矿工、验证者以及通过运行完整节点获得性能优势的网络参与者,比如交易所。
  2. 那些只是为了实验或出于利他原因而运行完整节点的人,例如开发者。

不管出于什么原因,结果是只有不到 1% 的网络参与者能够独立验证网络。其他所有人都对网络中的实体抱有不同程度的信任,而这些实体随着时间的推移会获得越来越多的权力。这是当今许多去中心化网络面临的现实,与在全球范围内实现点对点、去中心化网络的目标背道而驰。

但是,如果我们不问自己,如何让每个人都运行一个完整节点,而是问,从运行完整节点中能获得哪些保证,以及我们如何让每个人都容易自己生成这些保证?

事实证明,去中心化网络中的每个参与者必须检查三个核心内容,才能验证链上的某些内容。

  1. 执行正确性: 我们需要知道所有的状态转换是否正确完成。完整节点通过重新执行每笔交易来确保它按照约定的状态转换函数 (State Transition Function, STF) 执行,从而实现这一点。
  2. 正确的交易顺序: 状态转换可能被正确执行,但完整节点还必须验证它们是否以正确的顺序执行。完整节点可以验证协议的共识,以确保区块链的顺序的正确顺序。
  3. 数据可用性: 只有当其他人可以参与时,区块链才是去中心化的。为了让其他人参与,到达最新状态所需的数据需要公开可用。如果一个完整节点可以重新执行 STF 以到达当前状态,那么它可以确定交易数据是可用的。

正如我们所看到的,运行一个完整节点是不可扩展的。相反,我们寻求以一种安全、可扩展且易于任何人运行的方式,验证上述三个要素,并具有完整节点所能提供的保证。

Avail 轻客户端:高效去中心化网络的构建块

在 Avail 网络上部署任何区块链时,默认的轻客户端都包含在内,可以立即使用。Avail 网络经过优化,可为区块链提供数据可用性。默认情况下,轻客户端可以验证 Avail 网络上的数据可用性和已完成区块的顺序。这为 Avail 驱动的链提供了以下保证。

数据可用性: 轻客户端独立验证交易数据是否可用并保持原始形式,而无需依赖完整节点。这是通过数据可用性采样 (Data Availability Sampling, DAS) 完成的。与完整节点下载完整的交易数据不同,Avail 网络使用 KZG 承诺来保护数据,从而使其在数学上是安全的。这使轻客户端可以检查数据的随机样本,并验证它们是否与区块头中的承诺相匹配。对随机单元多次执行此操作使轻客户端能够计算所有数据都可用的概率。使用此技术,Avail 的轻客户端仅通过8-30 个样本即可实现完整节点的保证。

区块排序: 轻客户端通过检查验证者共识来验证 Avail 网络上区块的正确顺序。

然而,仅凭这一点还不足以提供完整的节点保证。只有当轻客户端独立验证所有三个要素(数据可用性、排序执行正确性)时,它才能提供与运行传统完整节点相当的保证。虽然检查执行证明目前不是标准轻客户端部署的一部分,但 Avail 链很快就可以实现。但是,如果你想提前开始使用此功能,你可以立即自定义轻客户端,并使其适应于验证你选择的执行环境的状态转换函数 (STF)。

使用 Avail 轻客户端可以做什么?

还记得我们之前关于去中心化交易所的例子吗?任何人都可以在该交易所独立验证。阻碍这一目标实现的主要因素是设置和维护完整节点所需的高硬件要求和技术专业知识。让我们探讨一下 Avail 轻客户端如何改变这一部分。

运行 Avail 轻客户端的最低要求是:

  • RAM: 512MB
  • CPU: 2 核 (amd64/x86 架构)

推荐的规范是:

  • RAM: 1GB
  • CPU: 4 核 (amd64/x86 架构)

有了这些硬件要求,任何人都可以使用他们已经拥有的硬件(如手机、笔记本电脑甚至智能手表)来运行轻客户端。验证执行证明所需的额外计算量也相对较低。这使得使用去中心化交易所的每个参与者都可以通过完整节点保证来验证网络成为可能。

轻客户端是一个灵活的构建块,可以自定义以满足任何特定网络或应用程序的需求。就像 ERC-20 代币可以被调整、扩展和品牌化一样,开发者可以自由地调整和部署轻客户端,使其对他们的应用程序和用户有意义。

轻客户端的实际应用

Sophon是一个专注于消费者的 Avail 区块链,它定制了轻客户端,使其在促进其节点销售中的非技术参与者参与保护 Sophon 方面发挥关键作用。他们通过出售123,554 个节点销售许可证筹集了 6000 万美元的项目资金。通过使用轻客户端,Sophon 能够为其社区提供一个高效的网络基础设施,几乎可以在任何设备上由任何人运行。许可证持有者,无论他们是否具有技术背景,都可以运行该节点并因其正常运行时间和性能而获得 SOPH 代币奖励。这不仅有助于去中心化 Sophon 网络,而且还鼓励了更广泛的社区参与,并为 Sophon 的生态系统贡献了宝贵的工作。

轻客户端已适配在 手机浏览器智能手表RaspberryPi 上运行。

Avail 轻客户端对比

我们将运行 Avail 轻客户端的推荐要求与以太坊完整节点和以太坊轻客户端进行了比较,以便读者可以看到 Avail 轻客户端与更熟悉的基础设施相比如何。

以太坊完整节点 以太坊轻客户端 Avail 轻客户端
存储 2TB 500MB 500MB
RAM 16GB+ 4GB 1GB
网络 25+ MB/s 8+MB/s 1+MB/s
独立验证

是什么让 Avail 轻客户端独一无二?

Avail 的轻客户端可以直接在用户设备上实现密码学安全、无需信任的数据验证。这消除了对中心化基础设施的依赖,同时保持了数学上安全的数据完整性和前所未有的性能。建立在 Avail 之上的链可以比任何其他网络更快地向最终用户提供独立验证的数据可用性保证。

虽然一些数据可用性解决方案使用 KZG 承诺,但它们不提供通过轻客户端进行采样,这意味着网络参与者无法独立验证数据是否可用。其他解决方案提供带有数据可用性采样的轻客户端,但使用依赖于欺诈证明的命名空间默克尔树,从而引入了 10 分钟或更长时间的等待时间。Avail 网络在将基于 KZG 承诺的有效性证明与数据可用性抽样相结合的方式上是独一无二的,因为这种组合允许轻客户端在大约 40 秒内独立验证数据可用性。这比最接近的替代方案快 ~15 倍

将有效性证明用于轻客户端的好处包括:

  • 主动验证: 轻客户端在接受承诺之前,以密码方式验证承诺是否正确。
  • 高效: 随着交易数量的增加,轻客户端上的工作量保持不变。
  • 无需信任: 轻客户端可以验证加密证明,并且不需要假设诚实的挑战者会检测和报告错误。
  • 最终确定时间: 轻客户端可以在数据最终确定后(大约 40 秒)立即从网络中采样数据,而无需等待质询期。
  • 安全保证: 有效性证明在数学上是正确的,从而减少了攻击面。

Avail 轻客户端允许你与 Avail DA 交互,而无需完整的节点,也无需对远程对等方进行信任假设。

轻客户端还有一个隐藏的技巧,那就是它能够与点对点网络中的其他轻客户端通信。

Avail 轻客户端 - 点对点网络

每个轻客户端都通过轻客户端 p2p 网络与其他客户端共享它所了解的关于 Avail 网络的信息。这形成了一个自我组织的轻客户端系统,作为分布式哈希表检查、验证和重新创建 Avail 区块链。虽然每个轻客户端只能访问区块链数据的一部分,但当它们聚集在一起时,它们可以重现整个网络的完整画面。

单个轻客户端可以从 p2p 网络和基于服务器的网络中进行采样。Avail 的轻客户端是第一个也是唯一一个可以通过从 P2P 网络中进行采样来验证数据可用性的解决方案。

随着越来越多的轻客户端加入网络,会进行更多的验证,从而形成一个自我强化的循环。随着验证的增加,隐藏数据或操纵网络变得越来越困难。

Avail 的 P2P 实现 - Kademlia DHT (Kad-DHT)

Kad-DHT 是一种特定的分布式哈希表 (Distributed Hash Table, DHT) 变体,它根据弦环来组织节点和数据,弦环是一种按 ID 排序的节点逻辑排列。Avail 采用 Kad-DHT 来建立一个用于数据存储和检索的去中心化网络。在这种结构中,每个节点都负责保存一部分数据。节点可以直接通信以访问数据。Avail 利用 Kad-DHT 来存储数据单元并查明哪个对等方拥有特定数据段,其中矩阵数据单元唯一地映射到对等方 ID。

Avail 轻客户端 - 交易生命周期

请记住,轻客户端旨在独立检查和验证网络,以便它可以高效地扩展,而无需昂贵的基础设施或技术专业知识。为了理解轻客户端的交易生命周期,我们将首先详细说明验证者节点究竟做了什么,因为它们是提议和向区块链添加新区块的节点。然后,我们将详细介绍轻客户端如何检查和验证这一点。

  1. 区块生产者创建区块体。
    • 积累交易(数据提交)。
    • 将这些交易排序到 Avail 数据矩阵中(更多信息见下文),Avail 数据矩阵成为区块体。
    • 纠删码数据矩阵以获得额外的冗余。
  2. 区块生产者创建区块头。
    • 为矩阵的每一行生成承诺。
    • 使用多项式插值扩展这些承诺(生成 + 扩展的承诺成为区块头)。
  3. 区块生产者传播区块(区块体 + 区块头)。
  4. 验证者和完整节点接收区块。
  5. 验证者和完整节点解码、重建和验证区块。
    • 重新创建数据矩阵。
    • 重新创建承诺。
    • 扩展承诺。
    • 验证他们收到的所有数据是否与他们生成的承诺相匹配。

数据矩阵是 Avail 网络的一个关键组成部分。它是验证者在创建区块时生成的内容,也是轻客户端检查以验证数据是否可用的内容。数据矩阵由提交数据的行和列组成,其中包含有关数据的一些信息。

Avail 数据矩阵

数据矩阵:数据排列和相应的承诺。

细节

区块生产者将区块数据分解为块,并将这些块排列成 $n$ 行和 $m$ 列,从而形成一个 $n \times m$ 矩阵 $D$。它使用评估形式从每一行构造一个多项式以获得 $\phi_1(x), \dots, \phi_n(x)$。然后它提交每个多项式以分别获得 $C_1, \dots, C_n$。

为了实现冗余,它将 $C_1,...,C_n$ 扩展到 $C_1’,...,C_n’$。它将 $C_1,...,C_n’$ 放入区块头并广播它。有关 KZG 多项式承诺的更多信息,请参见此处

创建数据矩阵时,承诺由区块提议者生成,它们总结了数据的每一行。这些承诺被添加到轻客户端可以访问的区块头中。还为数据矩阵中的每个单元格生成有效性证明。然后,轻客户端可以向网络询问特定单元格的值以及该单元格的关联有效性证明。轻客户端可以数学上的确定性检查此单元格的值是否与区块头中的承诺相匹配。通过对随机单元格多次执行此操作,轻客户端会增加其对所有数据都可用的信心。Avail 轻客户端仅需 8-30 个样本即可生成完整的节点保证。

轻客户端还在 P2P 网络中为其他轻客户端托管采样数据。P2P 网络中的轻客户端维护 Avail 区块链的副本,保留状态和最近 256 个区块,与 Avail 完整(非存档)节点相同。

下面,我们可以看到交易生命周期的完整概述。它从提交到 Avail 网络的数据开始,Avail 验证者创建和完成区块。然后,轻客户端从网络中采样,并与其他轻客户端进行通信,以形成强大的 P2P 网络。

这种架构保证了任何区块链网络都能快速、高效且安全地从几乎任何设备上由轻客户端采样的高数据可用性。轻客户端还可以使用 轻客户端 API 获取特定的区块数据并将数据发布到 Avail 网络。

Avail 验证者去中心化保证

现在我们已经确定了轻客户端如何通过有效性证明和数据可用性采样生成数据可用性保证,我们还应该检查 Avail 验证者的上游去中心化保证。

Avail 网络使用提名权益证明 (Nominated Proof of Stake, NPoS) 机制和 Phragmen 选举算法,旨在改善验证者去中心化的结果,并使少数验证者难以控制网络。Avail 网络专门选择 NPoS,因为它避免了随着时间的推移在基于委托权益证明 (Delegated Proof of Stake, DPoS) 的区块链上出现的许多中心化趋势。Avail 网络从 45-50 个验证者开始,此后已经翻了一番(在撰写本文时),并且正在增长以支持多达 1,000 个活动验证者。Avail 验证者之间的权益分配快照如下所示。

由于权益均匀分布在验证者中,因此控制网络要困难得多。相比之下,许多基于 DPoS 的区块链只有不到 10 个验证者控制至少 33% 的投票权,并且不到 15 个验证者控制超过 50% 的网络。

开始使用

我们从一个雄心勃勃的目标开始,即为去中心化交易所的每个用户提供与运行完整节点相同的确定性。现在,借助 Avail 轻客户端,开发者拥有了以前所未有的规模实现这一目标的途径。这不仅适用于去中心化交易所,而且适用于你可以想象的任何去中心化用例。

现在每个用户都可以成为区块链验证者。Avail 轻客户端已经在生产中,可以实现快速、无需信任的规模化数据验证。查看开发者文档

传递区块第 1.2 部分:教程 - 如何设置和运行轻客户端


如果你想直接与团队交谈,请随时联系:business@availproject.org

Avail 轻客户端 Avail DA Appchains 数据可用性 开发者 轻客户端 数据可用性采样 传递区块

  • 原文链接: blog.availproject.org/ru...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Avail Project
Avail Project
Build with Avail DA, the validity proven data availability layer unifying Web3