Solana 网络是一个尖端的区块链网络,以其无限的可扩展性和闪电般的交易速度而闻名。如果您想成为 Solana 生态系统的一部分并积极参与其中,您可以通过运行 Solana验证器节点来实现。
本指南将引导您了解如何运行 Solana 节点,包括设置和操作它。这样做将有助于加强网络、验证交易并获得奖励。
什么是 Solana 节点?
Solana 节点是一台根据 Solana 协议实施的共识规则验证交易和区块的计算机。Solana 节点通过存储区块链账本的副本来参与 Solana 区块链网络。
如何成为 Solana 验证者?
要成为 Solana 验证者,您需要强大的计算资源、快速的处理器、大量 RAM 和 SSD 存储。继续阅读以了解具体需要什么以及如何运行 Solana 节点的分步过程。
Solana 节点要求和工具
本指南包含一些实际操作演示。下面我们列出了运行 Solana 节点的关键硬件和软件要求。要继续本指南,您应该具备以下条件:
具有额外卷的专用服务器
一台计算机
网络良好
服务器硬件规格
中央处理器
AMD Gen 3 或更新版本
Intel Ice Lake 或更新版本
12 核/24 线程或更多
2.8GHz 基本时钟速度或更快
SHA 扩展指令支持
AVX2 指令支持(使用官方发布的二进制文件,否则自行编译)
对 AVX512f 的支持很有帮助
内存
256GB 或以上
建议使用错误纠正码 (ECC) 内存
建议使用 512GB 容量的主板
磁盘
PCIe Gen3 x4 NVME SSD,或更高版本
帐户:500GB 或更大。高 TBW(总写入字节数)
Ledger:1TB 或更高。建议使用高 TBW
操作系统:(可选)500GB 或更大。SATA OK
操作系统可以安装在账本磁盘上,但测试表明,将账本安装在自己的磁盘上性能更好
账户和分类账可以存储在同一磁盘上,但是由于 IOPS 较高,因此不建议这样做
三星 970 和 980 Pro 系列 SSD 受到验证者社区的欢迎
几分钟内设置你的 Solana 服务器
专为区块链工作负载构建的高性能专用裸机服务器。
云平台上的虚拟机
虽然您可以在云计算平台上运行验证器,但从长远来看,这可能并不划算。不过,在 VM 实例上运行非投票 API 节点供您自己内部使用可能会很方便。此用例包括基于 Solana 构建的交易所和服务。
事实上,为了方便操作,该团队运营的主网测试版验证器目前正在GCE (32 个 vCPU、128 GB 内存)实例上运行,并配备 2048 GB SSD。 n2-standard-32
本次演示使用了Cherry Servers的AMD 区块链服务器。对于其他云平台,请选择具有类似规格的服务器类型,如上文服务器硬件规格部分所述。
如何运行 Solana 节点:分步过程
步骤1:打开终端程序
要开始本指南,您需要在受信任的计算机上运行命令,而不是在计划用于验证器操作的远程计算机上运行命令。首先,在本地计算机上打开终端程序。本演示使用 Ubuntu 系统,可以使用 打开终端CTRL + Alt + T
。
步骤 2:在本地安装 Solana CLI
要创建验证者投票账户,您需要在本地计算机上安装Solana 命令行界面。
安装 Solana 命令行界面的方法有多种,如文档中所述,但我们将使用安装工具进行演示。
💡对于那些想要更安全、性能更高的可执行文件的人来说,从源代码构建是一个很好的选择。
在终端中运行以下命令:
sh -c "$(curl -sSfL https://release.solana.com/v1.16.8/install)"
您应该获得与下面类似的输出,表明安装成功,并提示您重新打开终端或在现有 shell 中运行提供的命令以应用 PATH 更改:
您可以通过运行以下命令确认 Solana CLI 已成功安装:
solana --version
成功安装 CLI 后,下一步是更改 Solana CLI 配置,以便它向testnet
集群发出请求:
solana config set --url https://api.testnet.solana.com
要验证配置是否已更改,请运行:
solana config get
步骤 3:创建密钥
接下来,您需要创建运行验证器所需的三个密钥对。执行以下命令来创建密钥对:
solana-keygen new -o validator-keypair.jsonsolana-keygen new -o vote-account-keypair.jsonsolana-keygen new -o authorized-withdrawer-keypair.json
上述命令将生成三个密钥对,一个用于验证者,一个用于投票账户,一个用于授权提款人,然后将它们保存到命令中指示的 JSON 文件中。
Solana 验证者负责维护网络和验证交易。投票账户用于选择验证者并确认网络的共识,授权提款人是被允许从账户中提取资金的实体。
步骤 4:创建投票账户并注资
在创建投票账户之前,您需要配置 Solana 命令行工具以使用验证器密钥对。
以下命令将您刚刚创建的验证器密钥对设置为 Solana 配置中的默认密钥对,允许 Solana CLI 或后续命令将其用于身份验证和其他目的:
solana config set --keypair ./validator-keypair.json
现在验证您的帐户余额0
:
solana balance
接下来,您需要将一些 SOL 存入该密钥对帐户以创建交易(在本例中,创建您的投票帐户):
solana airdrop 1
现在,您可以使用 Solana 集群创建投票账户。请注意,到目前为止提到的所有命令都应在您信任的计算机上执行,而不是在您打算运行验证器的服务器上执行,因为您不应该在任何计算机上创建您的账户凭据:
solana create-vote-account -ut \ --fee-payer ./validator-keypair.json \ ./vote-account-keypair.json \ ./validator-keypair.json \ ./authorized-withdrawer-keypair.json
这将使用提供的参数创建一个新的投票账户。
步骤 5:创建服务器
接下来,您需要在首选云平台上设置服务器,并按照指南中提到的硬件规格进行设置。如前所述,这里使用的是AMD 区块链服务器(Ubuntu 22.04)。
您还需要将数据存储划分为两个不同的区域:分类账分区和账户分区。
账本分区:账本分区是存储实际区块链数据的地方。它包含构成 Solana 区块链的所有交易历史记录、区块和其他信息。可以将其视为一本巨大的记录簿,记录网络上发生的每笔交易。它就像 Solana 区块链的历史书。
帐户分区:另一方面,帐户分区是存储单个用户帐户及其相关数据的地方。与 Solana 网络交互的每个用户都有自己的帐户,其中包含他们的余额、交易历史记录和其他相关信息。帐户分区充当 Solana 区块链上每个用户的个人存储空间。
通过分离分类账和账户分区,Solana 旨在实现可扩展性和性能。
步骤 6:通过 SSH 连接到验证者
接下来,使用适合您的服务器提供商的命令通过 SSH 进入您的服务器。这将允许您远程访问和配置验证器。命令应采用以下格式:
ssh user@<server.hostname>
步骤 7:更新你的 Ubuntu 软件包
现在您可以访问服务器,运行以下命令来更新系统包:
solana --version0
步骤 8:启用防火墙
接下来,在虚拟机上创建并启用防火墙,以允许所需端口(8000 - 10000 UDP/TCP)上的传入和传出流量。这些端口特定于测试网(因此请根据所需的集群进行更新)。确保在启用防火墙之前添加所有允许规则(尤其是 SSH),以免将自己锁定在服务器之外。这些防火墙规则基于操作验证器所需的最低要求。
solana --version1
您应该获得如下图所示的输出:
步骤 9:添加新用户
现在在您的服务器上创建一个新用户,该用户将使用该adduser
命令运行验证器服务。
solana --version2
这将在服务器上创建一个名为“sol”的新用户。
硬盘设置
接下来,在您的 Ubuntu 服务器上,确保您至少安装了 2TB 的磁盘空间。您可以使用以下df
命令检查磁盘空间:
solana --version3
如果您有一个未安装/格式化的驱动器,则必须设置分区并安装该驱动器。
要查看可用的硬盘设备,请使用 list block devices 命令:
solana --version4
您可能会在列表中看到一些有名称但没有通用唯一标识符 (UUID) 的设备。任何没有 UUID 的设备都是未格式化的。
步骤 10:格式化和安装驱动器 - 用于分类账和账户
如果您有用于分类帐分区的附加 NVME 驱动器,请使用以下mkfs
命令对其进行格式化:
solana --version5
设备名称和位置可能与您的计算机不同。格式化驱动器后,您可以lsblk -f
再次运行该命令以确认设备现在具有 UUID。
本演示中使用的服务器上的设备已格式化,因此要安装驱动器,首先创建用于安装驱动器的目录(nvme2n1和nvme3n1驱动器将分别用于分类账和帐户)并使用以下命令将创建的目录的所有权更改为“sol”用户:
solana --version6
solana --version7
上述命令将分别创建“/mnt/ledger”和“/mnt/accounts”目录,并将目录的所有权更改为“sol”用户。
现在您可以使用以下命令安装驱动器:
solana --version8
步骤11:系统调整
为了确保系统性能正常并成功启动验证器,通过修改 sysctl 旋钮并增加 systemd 和会话文件限制来优化系统非常重要。应遵循提供的命令进行以下必要的更改:
通过运行以下命令来优化 sysctl 旋钮:
solana --version9
solana config set --url https://api.testnet.solana.com0
接下来,增加 systemd 和会话文件限制。要增加 systemd 和会话文件限制,您需要修改 systemd 配置文件。
如果您有一个用于 Solana 验证器的特定 systemd 服务单元文件,则可以将 LimitNOFILE=1000000 参数添加到该文件的[Service]部分。
如果您没有特定的服务文件,但想要为所有 systemd 单元设置文件限制,则可以将 DefaultLimitNOFILE=1000000 参数添加到 /etc/systemd/system.conf 文件。您可以运行以下命令system.conf
使用 Nano 文本编辑器打开该文件:
solana config set --url https://api.testnet.solana.com1
找到[Manager]部分并添加或修改 DefaultLimitNOFILE 参数。然后保存文件并退出文本编辑器。
重新加载 systemd 以应用更改:
solana config set --url https://api.testnet.solana.com2
接下来,通过运行以下命令设置会话文件限制:
solana config set --url https://api.testnet.solana.com3
上述命令通过在 /etc/security/limits.d/90-solana-nofiles.conf 创建一个新的配置文件来设置 Solana 的进程文件描述符数量限制,并增加进程文件描述符数量限制。
调整系统后,关闭所有打开的会话(注销然后重新登录)。
步骤 12:复制密钥对
现在,您需要使用命令将验证器密钥对和投票帐户密钥对 JSON 文件从本地计算机复制到虚拟机scp
。在生成密钥对的目录中运行以下命令:
solana config set --url https://api.testnet.solana.com4
上述命令将安全地将指定的 JSON 文件从本地计算机复制到远程服务器的“/home/sol”目录。user@<server.hostname> 部分应替换为适当的远程用户名和主机名。
将密钥对复制到远程服务器后,确保将其所有权更改为“sol”用户,您可以使用以下方法执行此操作:
solana config set --url https://api.testnet.solana.com5
步骤13:切换到sol用户
切换回您通过 SSH 连接到远程服务器的终端,然后sol
使用以下命令切换到用户:
solana config set --url https://api.testnet.solana.com6
步骤 14:在远程机器上安装 Solana CLI
您需要在远程服务器上安装 Solana CLI 来运行验证器软件。您可以通过运行以下命令来执行此操作:
sh -c "$(curl -sSfL https://release.solana.com/v1.16.8/install)"
步骤 15:创建验证器启动脚本
在远程服务器上安装 Solana CLI 后,接下来需要做的是为验证器创建启动脚本。通过运行以下命令在“sol”用户的目录validator.sh
中创建一个文件:bin
solana config set --url https://api.testnet.solana.com8
上述命令将validator.sh
在 bin 目录中创建一个文件并使其可执行。
接下来,使用 nano 编辑器打开validator.sh
文件:
solana config set --url https://api.testnet.solana.com9
将以下内容复制并粘贴到validator.sh
文件中,然后保存:
solana config get0
您可以运行solana-validator --help
命令来获取有关此脚本中每个标志的作用的更多信息。
检查区块链 IaaS 平台 Zeeve 如何利用 Cherry Servers 的安全专用裸机服务器来简化其运营。
步骤 16:验证你的验证器是否正常工作
现在要确认您的validator.sh
脚本运行正常,请使用以下命令执行它:
solana config get1
这应该执行该solana-validator
过程。
在另一个终端窗口中,通过 SSH 进入远程服务器并使用以下命令验证solana-validator进程是否正在运行:
solana config get2
您应该获得一个输出,其中包含一行,solana-validator
其中包含添加到validator.sh
脚本的所有标志。
您还可以查看日志以/home/sol/solana-validator.log
确保一切正常。
solana-validator.log
您还可以实时监控文件的内容。在新的终端窗口中,通过 SSH 进入远程服务器并运行以下命令切换到“sol”用户并监控日志文件的内容:
solana config set --url https://api.testnet.solana.com6tail -f solana-validator.log
这将持续监控文件中添加的新数据,并将这些数据显示在终端中。您需要留意包含 的行_ERROR_
,如果没有看到,您可以退出命令。
接下来,您可以通过检查验证器是否已在 Gossip 网络中注册来验证其是否正常运行。在新终端中,通过 SSH 连接到远程服务器,以“sol”用户身份登录,然后validator-keypair.json
通过运行以下命令从文件中提取将用于在 Solana 网络上识别验证器节点的公钥:
solana config get4
然后您可以运行以下命令来从输出中显示与公钥相关的信息solana gossip
:
solana config get5
替换<pubkey
为之前提取的验证者节点的公钥。如果验证者已经在 Gossip 网络上注册,您将获得类似下图的输出:
当验证者加入 Gossip 网络后,你还可以使用以下命令确认验证者已加入网络:
solana config get6
如果它已加入网络,您应该获得如下图所示的输出。
您还可以使用以下命令查看验证器处理块的速度solana catchup
:
solana config get7
结论
在本指南中,我们定义了 Solana 节点要求并提供了有关如何运行 Solana 验证器节点的分步说明。从安装 Solana CLI 到创建验证器启动脚本,我们定义了基本参数,例如身份、投票帐户、已知验证器、日志和分类帐路径、RPC 端口、入口点和预期创世哈希。本指南强调了通过执行启动脚本和检查进程状态来验证验证器是否正常工作的重要性。
运行 Solana 验证器节点可能是一种有益的体验,此时,您应该对运行 Solana 节点需要什么有了更好的了解。您可以利用这些知识为 Solana 网络做出贡献,同时为自己赚取奖励。