复制器 – 索拉纳的区块链数据存储 PB 解决方案

详细了解使索拉纳成为全球性能最优的区块链的 7 项创新中的 1 项。

Solana是稳定高效运作最佳的公链。 在 Solana Testnet 的当前迭代中,由 200 个物理上不同的节点组成的网络支持使用 GPU 运行时每秒超过 50,000 个事务的持续吞吐量。 实现这一点需要实现多项优化和新技术,其结果是网络容量的突破,标志着区块链开发进入一个新阶段。

有 7 项关键创新使索拉纳网络成为可能:

在本博客文章中,我们将探讨复制器,索拉纳的分布式分类账存储PB的区块链数据存储。 2017 年,我们介绍了 Filecoin 的复制证明。 2018 年,我们使用 VDF 为索拉纳构建了 PoRep 版本,并针对批处理验证进行了优化。

在满负荷下,索拉纳网络每年将生成 1gb/s = 365 天 = 4 PB 的数据。 如果网络中的每个节点都需要存储所有数据,则网络成员身份将限制在维护此类存储容量的集中式少数节点。 我们的历史证明技术可以通过允许快速验证复制证明实现,并在世界。 复制者不是共识参与者,硬件要求非常低。

在高级别上,索拉纳复制器网络的功能如下:复制者必须向网络发出信号,表明它们具有可用于存储数据的 X 字节空间。 在某些频率上,网络会根据复制器标识数和总数将分类帐历史记录划分为多个部分,以定位某些复制率(目前我们预计目标速率约为 100x)和容错率(通过擦除编码实现)复制器的可用存储。 一旦复制器:数据分配,每个复制器从共识验证器下载其各自的数据。 在某些频率上,复制者将受到挑战,以证明他们正在存储数据,此时他们必须完成复制证明 (PoRep)。 复制者的努力获得了3个通货膨胀的奖章。

进一步深度的复制证明

复制证明的基本思想是使用 CBC 加密使用公共对称密钥加密数据集,然后对加密数据集进行哈希处理。 此方法在Filecoin 的复制证明技术报告中作了详细说明。 不幸的是,这种方法的问题是它容易受到攻击。

例如,不诚实的存储节点可以在哈希时流式传输加密和删除。 简单的解决方案是强制在加密的反向上完成哈希处理,或者使用随机顺序。 这可确保在生成证明期间所有数据都存在,并且还需要验证器提供完整的加密数据,以验证每个身份证明的每个证据。 验证所需的空间变为(CBC 密钥数)*(数据大小)。

我们改进此方法,以比加密速度更快的速度随机采样加密块,并将这些样本的哈希记录到 PoH 分类账中。 因此,每个 PoRep 的块顺序完全相同,验证可以流式传输数据并在单个批次中验证所有证明。 这样,我们可以同时验证多个证据,每个证据都位于其自己的 CUDA 核心上。

借助新一代显卡,Solana 网络可支持每个 GPU 卡多达 1500 个复制标识或对称密钥。 验证所需的总空间为 (2 个 CBC 块) = (CBC 密钥数),核心计数等于(CBC 密钥数)。 CBC 块的大小应为 1MB。

接下来,我们必须在验证器和复制器之间构建一个游戏,以确保复制器生成证明,并且验证器实际验证 PoRep。

要开始生成分类帐的 PoRep,复制器客户端执行以下操作:

  1. 客户在常规期间签署 PoH 哈希
  2. 签名用作随机性源,用于选取分类帐的特定切片
  3. 签名用于创建对称的 CBC 密钥,客户端使用密钥对分类帐切片进行编码。

由于每个客户端都使用相同的 PoH 哈希,因此签名在所有客户端之间随机分布。 然后,客户端持续采样加密示例:

  1. 客户在常规期间签署 PoH 哈希
  2. 签名用作随机性源,每 1MB 切片采样 1 个字节。
  3. 样品使用 SHA256 进行哈希处理

所有客户端都被迫使用与签名相同的 PoH 哈希值。 由于签名绑定到 PoH,因此生成的样本哈希值对于该时间点和该特定复制是唯一的。

验证程序依次检查客户的证明:

  1. 验证器根据 GPU 内核的数量声明可以验证的 PoRep 数量
  2. 定期验证器将签署 PoH 哈希
  3. 签名用于选择要验证的分类帐切片,以及用于选择要验证到验证器容量的样本的掩码
  4. 验证器上载验证失败的证明

客户端可以通过捕捞惰性验证器来质询验证器是否失效。 为了防止磨削攻击,客户端必须连续使用相同的密钥对标识。 为了防止垃圾邮件,协议中的所有邮件都会产生 tx 费用。 复制者根据成功提交的证明数量获得奖励。 验证者通过验证证据获得赌注加权奖励,当渔民公布伪造证据的证明时,渔民通过取一枚验证器(削减硬币)来获得奖励。

Solana 对复制器的利用与历史证明、管道 VM 和海湾流等创新相结合,创造了世界上性能最优的区块链。 索拉纳的测试网今天就直播了。 你可以在https://explorer.solana.com看到它。 出于成本目的,我们只运行少量节点。 但是,我们已经在许多实例上将其拆分为 AWS、GCE 和 Azure 上的 23 个数据中心的 200 多个物理上不同的节点(不在共享硬件上),以便进行基准测试。

运行时现在运行正常,开发人员现在可以在测试上部署代码。 开发人员现在可以在 C 中构建智能合约,我们正在积极开发 Rust 工具链。 锈将是索拉纳智能合约开发的主要语言。 Rust 工具链作为索拉纳 Javascript SDK 的一部分公开提供,我们正在进一步迭代软件开发工具包。

索拉纳将很快推出一个公共测试版激励验证器,通过Tour de SOL运行节点,类似于宇宙的赌注游戏,挑战广大公众测试索拉纳网络的极限,同时赚取令牌这样做。