在 AWS 上运行 Solana 节点 数据库博客
  • 14

在 AWS 上运行 Solana 节点

主要要点

Solana 区块链概述:介绍了 Solana 的高性能网络,适用于各种用例,包括金融、NFT、支付和游戏。区块链运作方式:解释了 Solana 的运作原理及其节点类型,包括投票共识节点 (验证者) 和非投票节点 (RPC 节点)。节点类型和基础设施需求:分析各类 Solana 节点共识节点、基本 RPC 节点和扩展 RPC 节点的基础设施配置。部署架构:介绍单节点与高可用性 (HA) 部署架构的配置。建议的基础设施配置:对于不同类型的 Solana 节点提供了具体的基础设施建议。

Solana 是一个为大规模使用而设计的公共区块链,具备高性能的特性,并广泛应用于金融、NFT、支付和游戏等多种场景。它作为一个单一的全球状态机,开放且可互操作。在本篇文章中,我们将探讨 Solana 区块链的工作方式,运行这些节点所需的基础设施,以及如何在 Amazon Elastic Compute CloudAmazon EC2上运行这些节点。

Solana 区块链如何运作?

Solana 区块链使用两种不同类型的全球分布节点:票选共识节点称为 验证者和非票选节点称为 远程过程调用 (RPC) 节点。这些节点接收读取和写入请求称为 交易,用以执行链上程式或检索有状态数据。类似于典型的软件开发工作流程,Solana 区块链也以名为 集群 的多环境运行。每个集群是不同的验证者和 RPC 节点的组合,协作处理请求并执行共识操作。目前有三个集群,每个集群拥有不同的用途:

集群类型说明devnet用于开发人员部署和测试程序的阶段环境,不需要使用真实的 Solana SOL 代币。推荐给 去中心化应用程序dApps开发者。testnetSolana 核心贡献者用来在正式网络上压测新特征的环境,尤其是性能和稳定性相关的功能。测试网代币并不是真实的,不建议应用开发人员使用。mainnetbeta供大众及 Solana 区块链用户使用的生产环境,提供链上应用程序和核心协议特征的访问。主网代币是真实的。

类似于向 REST API 发送 HTTP 请求,dApps 将向非投票的 RPC 节点发送 RPC 请求。如果客户端的请求仅为区块链上的读取操作,如请求有状态数据,则 RPC 节点处理该请求,并将响应返回给 dApp。

当 dApp 向 Solana 区块链发送应更新链上状态的请求时,RPC 节点将注册该请求并转发给验证者。共识验证者随后会进行完整性检查、近期检查,并确保正确的用户对请求进行了加密签名。

验证者将对哪些交易有效进行投票,直至达成共识。然后执行链上状态变更,并将交易添加到 Solana 纪录中进行永久存储。RPC 节点将把响应发送回客户应用。

AWS 上的 Solana 节点类型

您运行的 Solana 节点的计算和存储配置可能不同。在讨论其基础设施需求之前,我们先回顾一下 Solana 的节点类型。

共识节点

共识节点支持在 Solana mainnetbeta 和 testnet 集群上的权益证明共识。由运营商运行,使用他们自己的股份或接受其他持有者的 Solana SOL 代币委托股份。要设置一个新的共识节点,首先需要生成将在过程中使用的密码学密钥。用标准的 solanakeygen 工具生成密钥后,请确保备份您的私密密钥至安全位置。同时请记住,通过共识节点抵押的 SOL 代币越多,所产生的流量就越多。

在 AWS 上运行 Solana 节点 数据库博客

基本 RPC 节点无次级索引

基本 RPC 节点可以处理大多数来自 dApps 的 JSON RPC API 方法调用,但不包括触发扫描整个帐户集的操作,如 getProgramAccounts,以及与 Solana 程序库SPL 创建的代币相关的查询:getTokenAccountsByDelegate、getTokenAccountBalance、getTokenAccountsByOwner、getTokenLargestAccounts 和 getTokenSupply。这些节点类型可以使用与共识节点相同的基础设施,但不进行交易验证,而是利用 HTTP 和 WebSocket 端点供 dApp 通过 JSON RPC API 和 RPC Pub/Sub 与节点互动。

扩展 RPC 节点带次级索引

带次级索引的扩展 RPC 节点可以处理我们提到的所有 JSON RPC API 方法的请求。为了更快地处理这些额外查询,这些节点构建和维护 附加次级索引,此过程可能需要 512 GB 到 1 TB 的内存。

AWS 上的 Solana 区块链节点部署架构

您可以将这三种类型的节点部署为独立的单个节点。单节点设置适合希望使用共识节点类型进行 抵押 和验证交易的人,或用于非生产需求的 RPC 节点。为了支持生产级 dApps,您可以使用多个由 Auto Scaling 组 管理的高可用 (HA) 设置,并运行在 应用负载均衡器 后面。HA 设置通常只对 RPC 节点而言是必需的,因为共识节点不处理 RPC 请求,其可用性不会影响 dApps 的功能。您可以通过 AWS Cloud Development Kit (AWS CDK) Solana 应用 在 AWS 区块链节点运行者计划 中部署所有三种节点类型及单个和 HA 设置。我们来回顾这两种设置的关键组件。

单节点部署架构

下图展示了单节点部署架构。

其运作方式如下:

自带汉化的免费加速器在 预设 VPC 中部署的 Solana 节点持续与 Solana 集群 中的其他节点同步,通过 互联网闸道 进行连接。如果您部署的是 Solana RPC 节点,其用于 dApps 或开发工具,并且是在预设 VPC 内部运行。JSON RPC API 不会直接暴露在互联网上,以保护节点免受未经授权的访问。如果您部署的是共识节点,则此部分不需要,因为其不会对外提供 JSON RPC API。Solana 节点在本地使用所有所需的密钥,但将副本存储在 AWS Secrets Manager 中作为安全备份。Solana 节点将各种监控指标发送到 Amazon CloudWatch 以进行监控。

高可用性节点部署架构

下图展示了 HA 节点的部署架构。

解决方案运作方式如下:

一组 Solana 节点在预设 VPC 中的 Auto Scaling 组内部署,并通过互联网闸道持续与 Solana 集群中的其他节点同步。Solana 节点通过应用负载均衡器供 dApps 或开发工具内部访问。JSON RPC API 不直接暴露在互联网上,以保护节点免受未经授权的访问。在生产情况下,dApps 需要处理用户认证和 API 保护,类似于以下 示例。Solana 节点在本地使用所有所需的密钥,也存储一个副本在 Secrets Manager 作为安全备份。Solana 节点将各种监控指标发送到 CloudWatch 以进行监控。

每 30 秒,应用负载均衡器会自动向 Auto Scaling 组中的每个 Solana 节点发送健康检查请求。根据预设,如果一个节点在连续三次请求中没有响应,Auto Scaling 组会终止运行该节点的 EC2 实例,并提供另一个实例作为替换。如果需要,也可以为 Auto Scaling 组添加更多条件,根据在 CloudWatch 中汇总的监控参数动态调整节点数量,以应对需求的变化。

在 AWS 上 Solana 节点类型的建议基础设施

一般而言,Solana 社区通常建议使用 AMD EPYC 驱动的计算实例,但您也可以为基于 ARM 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例构建 Solana 验证器二进制档,这些实例由 AWS Graviton3 提供支持。基于在 AWS 上运行和测试 Solana 节点的经验,我们整理了以下表格,总结了根据节点角色不同的基础设施配置。您还可以基于 AWS Graviton 3 处理器的 EC2 实例类型进行开发和测试的实验选项。

Solana 节点类型主要计算选项实验计算选项存储配置数据流量注意事项共识r6a8xlarge (内存 256 GiB)r7g8xlarge (内存 256 GiB) 根卷:EBS gp3 500 GiB,3K IOPS,250 MB/s 吞吐量 帐户卷:EBS gp3 500GiB,5K IOPS,700 MB/s 吞吐量 数据卷:EBS gp3 2TiB,10K IOPS,700 MB/s 吞吐量。根据质押金额,主网 beta 联网的点对点通信需要在 150300 TiB 之间的出站数据传输。基本 RPCr6a8xlarge (内存 256 GiB)r7g8xlarge (内存 256 GiB) 根卷:EBS gp3 500 GiB,3K IOPS,250 MB/s 吞吐量 帐户卷:EBS gp3 500GiB,5K IOPS,700 MB/s 吞吐量 数据卷:EBS gp3 2TiB,10K IOPS,700 MB/s 吞吐量用于点对点通信时,流量需要 1315 TiB,不包含 RPC 端点的流量。扩展 RPCx2idn16xlarge (内存 1024 GiB)N/A 根卷:EBS gp3 500 GiB,3K IOPS,250 MB/s 吞吐量 帐户卷:EBS gp3 500GiB,5K IOPS,700 MB/s 吞吐量 数据卷:实例存储 卷。用于点对点通信时,流量需要 1315 TiB,不包含 RPC 端点的流量。

对于 RPC 节点,维护点对点 (p2p) 通信的出站流量低于共识节点。我们建议您从 AWS Cloud 中访问节点的 RPC 端点,并且不要将其暴露给互联网,以便提高安全性和成本效率。

结论

在本文中,我们回顾了 Solana 区块链如何运作,包括供测试和生产使用的三个公共集群,以及两种类型的节点,用于验证交易和处理来自 dApps 的 RPC API 请求。我们介绍了在 AWS 上的 Solana 节点的三种配置选项:共识节点、基本 RPC 节点和扩展 RPC 节点。最后,我们检讨了为实现良好性能而搭建的经济实惠的基础设施配置,并深入探讨了两种部署选项,您可通过 AWS 区块链节点运行者计划的 Solana 蓝图 自行体验。如果您有进一步的问题,请在 AWS rePost 上提问,标签为“区块链”,或在 Solana StackExchange 上查询,或联系 Solana 社区。

作者介绍

Nikolay Vlasov 是 AWS 全球专业解决方案架构师组织的高级解决方案架构师,专注于区块链相关工作负载。他帮助客户在 AWS 上运行去中心化的 Web 和账本技术工作负载。

Nick Frostbutter 是 Solana 基金会的开发者倡导者,致力于改善开发者体验、