设置 Solana RPC 节点
由于 Solana RPC 服务器运行与共识验证器相同的过程,因此请首先按照有关如何设置 Solana 验证器的说明进行操作。请注意,如果您正在操作 RPC 节点,则无需创建投票账户。RPC 节点通常不投票。
验证器运行后,您可以参考本节了解 RPC 节点特定的设置说明。
示例 RPC节点
validator.sh
下面是 RPC 服务器的示例文件testnet
。
您将需要注意以下标志:
--full-rpc-api
:启用此验证器上的所有 RPC 操作。--no-voting
:运行验证器但不参与共识。通常,由于资源限制,您不希望将验证器同时作为共识节点和完整 RPC 节点运行。--private-rpc
:不在solana gossip
命令中发布验证器的开放 RPC 端口
有关命令中使用的标志的更多解释,请参阅
solana-validator --help
命令
<span style="color:var(--prism-color)"><span style="background-color:var(--ifm-pre-background)"><span style="color:var(--ifm-pre-color)"><code><span style="color:#bfc7d5">#!/bin/bash
</span><span style="color:#bfc7d5">exec solana-validator \
</span><span style="color:#bfc7d5"> --identity /home/sol/validator-keypair.json \
</span><span style="color:#bfc7d5"> --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
</span><span style="color:#bfc7d5"> --known-validator dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs \
</span><span style="color:#bfc7d5"> --known-validator eoKpUABi59aT4rR9HGS3LcMecfut9x7zJyodWWP43YQ \
</span><span style="color:#bfc7d5"> --known-validator 7XSY3MrYnK8vq693Rju17bbPkCN3Z7KvvfvJx4kdrsSY \
</span><span style="color:#bfc7d5"> --known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \
</span><span style="color:#bfc7d5"> --known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \
</span><span style="color:#bfc7d5"> --only-known-rpc \
</span><span style="color:#bfc7d5"> --full-rpc-api \
</span><span style="color:#bfc7d5"> --no-voting \
</span><span style="color:#bfc7d5"> --ledger /mnt/ledger \
</span><span style="color:#bfc7d5"> --accounts /mnt/accounts \
</span><span style="color:#bfc7d5"> --log /home/sol/solana-rpc.log \
</span><span style="color:#bfc7d5"> --rpc-port 8899 \
</span><span style="color:#bfc7d5"> --rpc-bind-address 0.0.0.0 \
</span><span style="color:#bfc7d5"> --private-rpc \
</span><span style="color:#bfc7d5"> --dynamic-port-range 8000-8020 \
</span><span style="color:#bfc7d5"> --entrypoint entrypoint.testnet.solana.com:8001 \
</span><span style="color:#bfc7d5"> --entrypoint entrypoint2.testnet.solana.com:8001 \
</span><span style="color:#bfc7d5"> --entrypoint entrypoint3.testnet.solana.com:8001 \
</span><span style="color:#bfc7d5"> --expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \
</span><span style="color:#bfc7d5"> --wal-recovery-mode skip_any_corrupted_record \
</span><span style="color:#bfc7d5"> --limit-ledger-size
</span></code></span></span></span>
Solana Bigtable
Solana 区块链每秒能够创建许多交易。由于链上的交易量很大,RPC 节点将整个区块链存储在机器上是不切实际的。相反,RPC 操作员使用标志--limit-ledger-size
来指定在 RPC 节点上存储多少个块。如果 RPC 节点的用户需要历史区块链数据,那么 RPC 服务器将必须通过 Solana bigtable 实例访问较旧的块。
如果您有兴趣设置自己的 bigtable 实例,请参阅 Solana GitHub 存储库中的以下文档:solana-labs/solana-bigtable
已知验证者
这些示例片段中提供的已知验证器的身份(通过--known-validator
标志)是:
5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on
- Solana 实验室dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs
- MonkeDAOFt5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN
- Certus OneeoKpUABi59aT4rR9HGS3LcMecfut9x7zJyodWWP43YQ
- 塞尔戈9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv
- 算法|权益
其他集群
在集群页面上可以找到其他 Solana 集群特定的验证器命令的更多示例。
请记住,您仍然需要自定义这些命令以作为 RPC 节点运行,以及其他操作员特定的配置设置。
帐户索引
随着集群中已填充帐户数量的增长,扫描整个帐户集的帐户数据 RPC 请求(如 getProgramAccountsSPL 令牌特定请求)可能会表现不佳。如果您的验证器需要支持这些请求中的任何一个,您可以使用该--account-index
参数激活一个或多个内存帐户索引,这些索引通过按关键字段索引帐户来显著提高 RPC 性能。当前支持以下参数值:
program-id
:每个账户由其所属程序索引;由getProgramAccounts使用spl-token-mint
:每个 SPL 代币账户均由其代币 Mint 索引;由getTokenAccountsByDelegate和getTokenLargestAccounts使用spl-token-owner
:每个 SPL 代币账户由代币所有者地址索引;由getTokenAccountsByOwner和包含 spl-token-owner 过滤器的getProgramAccounts请求使用。