在 AWS 上运行 Solana 节点
Solana 区块链如何与用于测试和生产用途的三个公共集群以及用于验证交易和处理来自 dApp 的 RPC API 请求的两种节点类型一起运行。 AWS 上 Solana 节点的三个配置选项:共识、基础 RPC 和扩展 RPC 节点。最后,我们审查了经济高效的基础设施配置,以实现良好的性能,并深入研究了两个部署选项
Solana 是一个专为大规模采用而构建的公共区块链。它是一个高性能网络,可用于一系列用例,包括金融、NFT、支付和游戏。 Solana 作为单一全局状态机运行,并且是开放且可互操作的。在这篇文章中,我们将研究 Solana 区块链的工作方式、Solana 区块链网络中运行的节点类型,并深入研究在 Amazon Elastic Compute Cloud (Amazon EC2) 上运行这些节点所需的基础设施。
Solana 区块链如何运作?
区块链使用两种不同类型的全球分布式节点运行:投票共识节点(称为验证器)和非投票节点(称为远程过程调用 (RPC) 节点)。这些节点接收读取和写入请求(称为交易),以运行链上程序或检索状态数据。与典型的软件开发工作流程一样,Solana 区块链在类似但不同的环境(称为集群)下运行。每个集群都是一组不同的验证器和 RPC 节点,它们一起运行以处理请求并执行共识操作。目前存在三个集群,每个集群都有不同的通用目的:
- devnet – 用作开发人员部署和测试程序和核心协议功能的临时环境,而无需花费真正的 Solana SOL 代币。建议去中心化客户端应用程序(dApps)开发人员在创建应用程序时使用devnet。
- testnet – Solana 核心贡献者使用它来对实时网络上的新功能进行压力测试,特别是与性能和稳定性相关的功能。测试网代币不是真实的,不建议应用程序开发人员使用。
- mainnet-beta – 这是链上应用程序和核心协议功能的生产环境,可供公众和 Solana 区块链的用户访问。主网代币是真实的。
与向 REST API 发出 HTTP 请求类似,dApp 会将 RPC 请求发送到非投票 RPC 节点。如果客户端的请求只是在区块链上执行读取操作,例如请求状态数据,则 RPC 节点会处理该请求并将响应发送回 dApp。
当 dApp 向 Solana 区块链发送应更新其链上状态的请求时,RPC 节点会注册该请求并将其转发给验证器。然后,共识验证器将进行完整性检查、新近度检查,并确保正确的用户已对请求进行加密签名。
验证者将对哪些交易有效进行投票,直到达成共识。然后执行链上状态更改并将交易添加到 Solana 分类账中进行永久存储。然后 RPC 节点会将响应传递回客户端应用程序。
AWS 上的 Solana 节点类型
对于您运行的 Solana 节点类型,您的计算和存储配置可能会有所不同。在下一节讨论其基础设施要求之前,我们先回顾一下 Solana 节点的类型。
Consensus共识
共识节点支持 Solana 主网测试版和测试网集群上的权益证明共识。它们由运营商运营,要么使用自己的股份,要么接受其他 Solana SOL 代币持有者的委托股份。要设置新的共识节点,您首先需要生成在此过程中使用的加密密钥。使用标准 solana-keygen 工具生成密钥后,您需要将您的私人秘密的备份保存在安全的地方。同样重要的是要记住,通过共识节点质押的 SOL 代币越多,它产生的传出流量就越多。
没有二级索引的基础 RPC 节点
基本 RPC 节点可以处理来自 dApp 的大多数 JSON RPC API 方法调用,但那些触发对整个帐户集的扫描操作的调用(例如 getProgramAccounts)以及特定于使用 <sd2 创建的令牌的查询除外>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 的 RAM。
AWS 上 Solana 区块链节点的部署架构
您可以将所有三种节点类型部署为独立的单节点。单节点设置对于那些想要使用共识节点类型stake和验证交易,或者为了非生产需求运行 RPC 节点的人很有帮助。为了支持生产级 dApp,您可以使用高可用性 (HA) 设置,其中包含由 Auto Scaling 组 管理的多个 RPC 节点,并在 Application Load Balancer 后面运行。 HA 设置通常仅适用于 RPC 节点,因为共识节点不服务 RPC 请求,并且它们的可用性不会影响 dApp 的功能。您可以使用 AWS 区块链节点运行者计划中的 AWS 云开发套件 (AWS CDK) Solana 应用程序 部署所有三种节点类型以及单节点和高可用性设置。让我们回顾一下这两种设置的关键组件。
单节点部署架构
下图展示了单节点部署架构。
下面是它的工作原理:
- 部署在默认 VPC 中的 Solana 节点通过 互联网网关 持续与 Solana 集群 上的其余节点同步。
- 如果您部署了 Solana RPC 节点,则默认 VPC 内的 dApp 或开发工具将使用该节点。 JSON RPC API 不直接暴露于互联网,以保护节点免受未经授权的访问。如果您部署共识节点,则不需要此部分,因为它不会在本地主机之外提供 JSON RPC API。
- Solana 节点在本地使用所有必需的密钥,但将副本存储在 AWS Secrets Manager 中作为安全备份。
- Solana 节点将 EC2 和 Solana 节点的各种监控指标发送到 Amazon CloudWatch。
高可用节点部署架构
HA节点部署架构如下图所示。
该解决方案的工作原理如下:
- 一组 Solana 节点部署在默认 VPC 的 Auto Scaling 组内,并通过互联网网关与 Solana 集群上的其余节点持续同步。
- Solana 节点由 dApp 或开发工具通过应用程序负载均衡器在内部访问。 JSON RPC API 不会暴露在互联网上,以保护节点免受未经授权的访问。在生产场景中,dApp 需要处理用户身份验证和 API 保护,如以下 AWS 上的 dApp 示例。
- Solana 节点在本地使用所有必需的机密,但也在 Secrets Manager 中存储副本作为安全备份。
- Solana 节点将 EC2 和 Solana 节点的各种监控指标发送到 CloudWatch。
每 30 秒,Application Load Balancer 会自动向 Auto Scaling 组内的每个 Solana 节点发送运行状况检查请求。默认情况下,如果节点连续不响应三个此类请求,Auto Scaling 组将终止运行该节点的 EC2 实例,并提供另一个节点作为替代。如果需要,您还可以为Auto Scaling组添加更多条件,根据CloudWatch聚合的监控参数弹性调整节点数量,应对需求变化。
AWS 上 Solana 节点类型的推荐基础设施
一般来说,Solana 社区通常建议使用 AMD EPYC 支持的计算实例,但您也可以为由 AWS Graviton3< 提供支持的基于 ARM 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例构建 Solana 验证器二进制文件/sd2>。根据在 AWS 上运行和测试 Solana 节点的经验,我们整理了下表。它根据 Solana 节点的角色总结了不同的基础设施配置。您还可以使用基于由 AWS Graviton 3 处理器支持的 EC2 实例类型的实验选项来进行开发和测试。
r6a.8xlarge | r7g.8xlarge |
| ||
r6a.8xlarge | r7g.8xlarge |
| ||
x2idn.16xlarge |
|
对于 RPC 节点,维持点对点 (p2p) 通信的传出流量低于共识节点。我们建议您从 AWS 云内部连接到节点的 RPC 终端节点,并且不要将它们暴露到 Internet,以获得更好的安全性和成本效益。
Conclusion结论
在这篇文章中,我们回顾了 Solana 区块链如何与用于测试和生产用途的三个公共集群以及用于验证交易和处理来自 dApp 的 RPC API 请求的两种节点类型一起运行。我们介绍了 AWS 上 Solana 节点的三个配置选项:共识、基础 RPC 和扩展 RPC 节点。最后,我们审查了经济高效的基础设施配置,以实现良好的性能,并深入研究了两个部署选项。
本文由SlerfTools翻译,转载请注明出处。
SlerfTools是专为Solana设计的工具箱,致力于简化区块链操作,提供无编程全可视化界面,使发币、管理流动性和无代码创建Dapp等复杂过程变得安全简单。