这篇文章详细介绍了Solana节点的创建和使用,着重阐述了验证节点和RPC节点的区别,以及如何运行自己的Solana节点所需的硬件和软件要求。文章中提供了逐步的设置指南以及各种Solana RPC节点提供商的比较,有助于开发者选择合适的解决方案。整体内容丰富,条理清晰,适合希望深入了解Solana网络的开发者。
Solana的高性能区块链是一个由计算机(节点)执行和验证交易的网络。Solana有两种类型的节点:验证者节点和RPC节点。本文将解释什么是Solana节点,提供运行你自己的Solana节点的分步指南,还将提供Solana RPC节点提供商的选项。到本文结束时,你将能够在Solana上运行节点并选择RPC节点提供商。
Solana节点是与Solana集群连接所需软件的任何计算机,集群是一组独立拥有的节点。 这些节点共同工作以验证用户提交的、未经信任的程序的输出。根据具体功能,Solana节点可以是RPC节点或验证者节点。
在Solana的权益证明(PoS)共识模型中,验证者节点(也称为共识节点)是负责确认区块有效的实体,并通过对领导节点生成的区块投票,最终确认交易。
Solana的历史证明(PoH)协议是一种密码学方法,用于可靠地排列记录在去中心化账本上的交易和事件。Solana的架构使交易能够在进入网络时被排序,而不是依靠由验证者节点完成的区块排序。
Solana使用委托权益证明协议。任何拥有SOL的人都可以将其委托给一个验证者,此时验证者便在网络上获得影响力,从而被指派为更多插槽的领导者,同时也能获得更多投票奖励。
Solana RPC(Remote Procedure Call)节点是一个非投票的验证者节点,执行所有其他验证者节点的功能,唯独不对区块的有效性进行投票。 因此,它们也不会获得投票积分。
RPC节点响应有关网络的请求,同时也允许RPC节点的用户提交新交易。通常存在一组RPC节点来为特定的去中心化应用程序(例如:去中心化交易所)或服务提供服务,为希望与Solana区块链交互的用户服务。
Solana RPC节点和共识节点之间主要有四个区别,分别是集群共识、投票积分、交易成本和硬件要求。
共识节点通过对领导者生成的区块进行投票参与集群共识,而RPC节点不参与。若一个投票验证者有质押账户,它将在有效投票被添加到区块链时获得投票积分。
投票积分会给予所有成功对已添加到区块链的区块进行投票的共识验证者。此外,当验证者是领导者时,它可为每个已添加到区块链的区块赚取交易费和存储租金。RPC节点不获得任何投票积分。
由于Solana中的所有投票都在区块链上进行,因此每个投票共识验证者节点会产生交易成本。这些交易费用大约为每天1.1 SOL。除了运行和维护节点的费用外,RPC节点不产生其他交易成本。
为了提供更高的可靠性,共识验证者节点的计算和存储资源要求通常高于RPC节点。
Solana RPC节点提供商为开发人员提供轻松访问与Solana网络中的节点发送请求和接收负载的方式,而不需要Solana去中心化应用程序自己承担节点基础设施,这在时间和金钱上都是一个沉重负担。
根据应用程序的不同,存在公共和私有RPC访问的多样化用例。因此,Solana RPC节点提供商提供多种福利,包括开发者工具、根据用户需求的自动扩展访问、放宽的速率限制,以及专用、高可用、可靠且按需的RPC服务。
为你的应用程序选择适当的节点提供商是一种在可靠性、可扩展性、数据正确性、延迟、高级API、客户支持和价格之间的权衡。例如,Alchemy的免费层可以支持大多数初创公司,而GenesysGo正在终止其免费层。
以下是顶级Solana RPC节点提供商的列表:
Alchemy
Quicknode
Syndica
Triton
GenesysGo
Chainstack
Ankr
Runnode
Blockdaemon
Figment
要运行Solana RPC节点,你需要最低数量的SOL的存储,并且具备最低内存(128 GB / 258 GB)、计算(12或16核心)和存储要求。
运行Solana验证者节点并没有严格的SOL最低要求。然而,参与共识需要一个具有0.02685864 SOL租金豁免储备的投票账户。投票还需要针对验证者同意的每个区块发送投票交易,这在每天最高可达1.1 SOL。这个成本估算器可以用来计算运行你自己验证者的单位经济。
以下是运行Solana节点的最低硬件要求,包括内存、计算、存储和操作系统。
对于共识验证者节点:128GB或更多
对于RPC节点:258GB或更多
对于共识验证者节点:至少12核心/24线程,频率最低为2.8GHz
对于RPC节点:16核心/32线程或更多
对于共识验证者:
PCIe Gen3 x4 NVME SSD或更好
账户:500GB或更大。高TBW(总写入字节数)
账本:1TB或更大。建议高TBW
对于RPC节点:
如果需要更长的交易历史,则需要更大的账本磁盘,账户和账本不应存储在同一磁盘上
对于GPU没有严格必要
网络:1 GBPS上下行链路速度,必须没有干扰和不计量
Ubuntu 20.04,Windows 10或更高版本,macOS High Sierra或更高版本。
有了合适的机器后,我们现在可以设置Solana节点。
如果你的应用程序需要高度特定的节点配置,那么现在运行自己的节点可能比使用Solana节点提供商更可取。在Solana网络上运行节点需要几个步骤,包括购买前述硬件、设置服务器、创建账户和Solana钱包。
首先,使用以下命令从你的终端创建一个sol
用户:
sudo adduser sol
其次,使用以下命令安装Solana:
sh -c "$(curl -sSfL https://release.solana.com/v1.8.0/install)"
第三,为账本创建一个挂载点(如果你只是运行RPC节点,则不需要)
sudo mkdir -p /mnt/ledger
sudo chown -R sol:sol /mnt/ledger
sudo mount /dev/nvme0n1 /mnt/ledger
第四,加入Solana Devnet集群并测试你的连接:
solana config set --url devnet
solana gossip
第五,创建四个必要的账户:一个系统账户、一个验证者身份账户、一个投票账户和一个质押账户。
一个系统账户,模拟所有者的钱包,也用于将投票资金转移到验证者并从投票账户中提取奖励。

solana-keygen new --outfile ~/system-wallet-keypair.json #(创建一个新的密钥对以标识系统账户)
solana airdrop 1 ~/system-wallet-keypair.json #(为钱包添加1 SOL,仅在devnet上可能)
solana balance ~/system-wallet-keypair.json
一个验证者身份账户(也称为系统账户),保存验证者的身份,并用于安全地签署交易以及支付投票交易费用。

solana-keygen new --outfile ~/validator-keypair.json #(创建一个新的密钥对以标识验证者账户)
solana config set --keypair ~/validator-keypair.json
solana transfer --allow-unfunded-recipient \
--fee-payer ~/system-wallet-keypair.json \
--from ~/system-wallet-keypair.json ~/validator-keypair.json 0.5 #(示例将0.5 SOL从系统账户转移到验证者账户)
solana balance #(检查验证者账户余额)
投票账户用于投票和接收验证者奖励。

solana-keygen new --outfile ~/vote-account-keypair.json
solana create-vote-account \
~/vote-account-keypair.json ~/validator-keypair.json ~/system-wallet-keypair.json #(将系统账户与投票账户关联)
质押账户用于将Token委托给网络中的验证者,以可能为质押账户拥有者赚取奖励。质押账户的创建和管理与系统账户不同。

solana-keygen new -o stake-account.json
solana create-stake-account --from ~/system-wallet-keypair.json stake-account.json 0.5 #(创建一个新的质押账户并从系统账户转移0.5 SOL)
运行自己的节点使你可以更好地控制硬件提供的资源,并且通常比依赖第三方供应商更具经济性。然而,大多数RPC节点提供商拥有更先进的硬件和更高的带宽网络,这减少了自行维护和更新硬件的必要性。
一旦你设置了Solana节点,参与网络只需启动你的节点并保持计算机运行。
你可以通过运行以下命令来启动验证者节点:

##!/bin/bash
exec solana-validator \
--entrypoint entrypoint.devnet.solana.com:8001 \
--entrypoint entrypoint2.devnet.solana.com:8001 \
--entrypoint entrypoint3.devnet.solana.com:8001 \
--entrypoint entrypoint4.devnet.solana.com:8001 \
--entrypoint entrypoint5.devnet.solana.com:8001 \
--known-validator dv1ZAGvdsz5hHLwWXsVnM94hWf1pjbKVau1QVkaMJ92 \
--known-validator dv2eQHeP4RFrJZ6UeiZWoc3XTtmtZCUKxxCApCDcRNV \
--known-validator dv4ACNkpYPcE3aKmYDqZm9G5EB3J4MRoeE7WNDRBVJB \
--known-validator dv3qDFk1DTF36Z62bNvrCXe9sKATA6xvVy6A798xxAS \
--expected-genesis-hash EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG \
--dynamic-port-range 8000-8020 \
--rpc-port 8899 \
--only-known-rpc \
--wal-recovery-mode skip_any_corrupted_record \
--identity ~/validator-keypair.json \
--vote-account ~/vote-account-keypair.json \
--log ~/log/validator.log \
--accounts /mnt/accounts \
--ledger /mnt/ledger \
--limit-ledger-size`
你还可以通过运行以下命令启动一个RPC节点:

##!/bin/bash
exec solana-validator \
--identity ~/validator-keypair.json \
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
--known-validator dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs \
--known-validator eoKpUABi59aT4rR9HGS3LcMecfut9x7zJyodWWP43YQ \
--known-validator 7XSY3MrYnK8vq693Rju17bbPkCN3Z7KvvfvJx4kdrsSY \
--known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \
--known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \
--only-known-rpc \
--full-rpc-api \
--no-voting \
--ledger /mnt/ledger \
--accounts /mnt/accounts \
--log ~/log/solana-rpc.log \
--rpc-port 8899 \
--rpc-bind-address 0.0.0.0 \
--private-rpc \
--dynamic-port-range 8000-8020 \
--entrypoint entrypoint.testnet.solana.com:8001 \
--entrypoint entrypoint2.testnet.solana.com:8001 \
--entrypoint entrypoint3.testnet.solana.com:8001 \
--expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \
--wal-recovery-mode skip_any_corrupted_record \
--limit-ledger-size`
注意上面的命令中以下选项:
--no-voting
:以RPC节点身份运行验证者,而不参与共识。
---private-rpc
:不在Solana的gossip命令中公开验证者的开放RPC端口。
本文解释了什么是Solana节点提供商以及如何在Solana上运行节点。以下资源可用于加深你对Solana节点的理解:
- 原文链接: alchemy.com/overviews/so...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!