专门做瑜伽的网站,网站开发的技术方案,企业网站翻译,在哪个网站可以做行测题搭建验证节点 (成功下载快照) 部署 Solana 验证节点
由于项目需求#xff0c;需要部署一台solana节点#xff0c;我们从一开始搭建#xff0c;遇到许多坑#xff0c;做个记录。 一定要注意服务器配置#xff0c;配置不够#xff0c;rpc启动不起来。
一、简介
官网地址… 搭建验证节点 (成功下载快照) 部署 Solana 验证节点
由于项目需求需要部署一台solana节点我们从一开始搭建遇到许多坑做个记录。 一定要注意服务器配置配置不够rpc启动不起来。
一、简介
官网地址 GitHub: https://github.com/solana-labs 官网: https://solana.com 区块浏览器https://explorer.solana.com/
二、验证节点要求
RPC节点本教程使用的是阿里云的服务器 Ubuntu 20.0432vCPU 128GiB内存2GiB SSD这是最低配了低于这个配置可能RPC启动不起来。
三、安装 solana 工具
stable 可以指定为具体的版本如v1.6.27也可以指定为stable/beta 或 edge
sh -c $(curl -sSfL https://release.solana.com/stable/install)等安装完成执行如下命令
export PATH/root/.local/share/solana/install/active_release/bin:$PATH验证工具是否可用
solana --version
显示有版本信息则安装成功
连接到 Mainnet Beta 群集
solana config set --url https://api.mainnet-beta.solana.com开发网
solana config set --url http://api.devnet.solana.com测试网
solana config set --url https://api.testnet.solana.com确认集群可以访问
solana transaction-count
四、生成身份信息
为您的验证节点创建身份密钥
solana-keygen new -o ~/validator-keypair.json输入密码
查看身份公钥
solana-keygen pubkey ~/validator-keypair.json注意”validator-keypair.json”文件也是您的 (ed25519) 私钥。需要将这个私钥备份好。将solana配置设置为对以下所有命令使用验证节点密钥对
solana config set --keypair ~/validator-keypair.json
五、启动服务 启动服务有多种方式可以在screen里面运行也可以制作启动脚本运行 我们选择脚本运行 方法一(脚本启动) 不推荐-仅测试
rootsolana:~# sudo vi solana-validator.sh
#!/bin/bashsolana-validator \--identity ~/validator-keypair.json \--vote-account ~/vote-account-keypair.json \--trusted-validator 7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2 \--trusted-validator GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ \--trusted-validator DE1bawNcRJB9rVm3buyMVfr8mBEoyyu73NBovf2oXJsJ \--trusted-validator CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S \--no-untrusted-rpc \--ledger /data/validator-ledger \--rpc-port 8899 \--private-rpc \--no-port-check \--dynamic-port-range 8000-8010 \--entrypoint entrypoint.mainnet-beta.solana.com:8001 \--entrypoint entrypoint2.mainnet-beta.solana.com:8001 \--entrypoint entrypoint3.mainnet-beta.solana.com:8001 \--entrypoint entrypoint4.mainnet-beta.solana.com:8001 \--entrypoint entrypoint5.mainnet-beta.solana.com:8001 \--expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \--wal-recovery-mode skip_any_corrupted_record \--limit-ledger-size\--log /data/solana-validator.log
方法二 (服务启动)
创建sol服务并设置开机自启
sudo vi /etc/systemd/system/sol.servicesudo chmod 777 /etc/systemd/system/sol.service
[Unit]
DescriptionSolana Validator
Afternetwork.target
Wantssolana-sys-tuner.service
StartLimitIntervalSec0[Service]
Typesimple
Restartalways
RestartSec1
Userxjzy
LimitNOFILE1000000
LogRateLimitIntervalSec0
EnvironmentPATH/home/xjzy/.local/share/solana/install/active_release/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
ExecStart/home/xjzy/.local/share/solana/install/active_release/bin/solana-validator[Install]
WantedBymulti-user.target
sudo systemctl enable --now sol
systemctl start sol
开发网验证脚本
export SOLANA_METRICS_CONFIGhosthttps://metrics.solana.com:8086,dbdevnet,uscratch_writer,ptopsecret
开发网成功配置
rootsolana:~# sudo vi solana-validator.sh
#!/bin/bashsolana-validator \--identity ~/validator-keypair.json \--vote-account ~/vote-account-keypair.json \--known-validator dv1ZAGvdsz5hHLwWXsVnM94hWf1pjbKVau1QVkaMJ92 \--known-validator dv2eQHeP4RFrJZ6UeiZWoc3XTtmtZCUKxxCApCDcRNV \--known-validator dv4ACNkpYPcE3aKmYDqZm9G5EB3J4MRoeE7WNDRBVJB \--known-validator dv3qDFk1DTF36Z62bNvrCXe9sKATA6xvVy6A798xxAS \--no-untrusted-rpc \--ledger /data/validator-ledger \--rpc-port 8899 \--private-rpc \--no-port-check \--no-snapshot-fetch \--dynamic-port-range 8000-8010 \--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 \--expected-genesis-hash EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG \--wal-recovery-mode skip_any_corrupted_record \--limit-ledger-size \--log /data/solana-validator.log
测试网脚本
export SOLANA_METRICS_CONFIGhosthttps://metrics.solana.com:8086,dbtds,utestnet_write,pc4fa841aa918bf8274e3e2a44d77568d9861b3ea
sudo vi solana-validator.sh#!/bin/bashsolana-validator \--identity ~/validator-keypair.json \--vote-account ~/vote-account-keypair.json \--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \--known-validator 7XSY3MrYnK8vq693Rju17bbPkCN3Z7KvvfvJx4kdrsSY \--known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \--known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \--no-untrusted-rpc \--ledger /data/validator-ledger \--rpc-port 8899 \--private-rpc \--no-port-check \--dynamic-port-range 8000-8010 \--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 \--log /data/solana-validator.log
测试网成功配置
#!/bin/bashsolana-validator \--identity ~/validator-keypair.json \--vote-account ~/vote-account-keypair.json \--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \--known-validator 7XSY3MrYnK8vq693Rju17bbPkCN3Z7KvvfvJx4kdrsSY \--known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \--known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \--no-untrusted-rpc \--ledger /data/validator-ledger \--rpc-port 8899 \--private-rpc \--no-port-check \--dynamic-port-range 8000-8010 \--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 \--log /data/solana-validator.log
测试网 - 配置2 待测试
#!/bin/bashsolana-validator \--identity ~/validator-keypair.json \--vote-account ~/vote-account-keypair.json \--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \--known-validator 7XSY3MrYnK8vq693Rju17bbPkCN3Z7KvvfvJx4kdrsSY \--known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \--known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \--only-known-rpc \--ledger /data/validator-ledger \--rpc-bind-address 45.61.164.13 \--rpc-port 8899 \--no-port-check \--dynamic-port-range 8000-8010 \--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 \--log /data/solana-validator.log
六、验证节点状态
查看端口rootsolana:~# lsof -i:8899
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
solana-va 11967 root 116u IPv4 54896 0t0 TCP *:8899 (LISTEN)查看mainnet集群信息curl -X POST -H Content-Type: application/json -d {jsonrpc:2.0,id:1, method:getClusterNodes} http://api.mainnet-beta.solana.comcurl -X POST -H Content-Type: application/json -d {jsonrpc:2.0,id:1, method:getClusterNodes} http://api.devnet.solana.comcurl -X POST -H Content-Type: application/json -d {jsonrpc:2.0,id:1, method:getClusterNodes} http://api.testnet.solana.com
输出信息中会包含我们自己的节点信息
后续就是等待快照同步了可能需要较长一段时间来同步区块。
查看日志
solana logs下面是启动日志
tail -f solana-validator.log
七、可能用到的启动命令 --public-rpc-address HOST:PORTRPC address for the validator to advertise publicly in gossip. Useful for validators running behind a load balancer or proxy [default: use --rpc-bind-address / --rpc-port]验证者在gossip中公开广告的 RPC 地址。 对于在负载均衡器或代理后面运行的验证器很有用 [默认使用 --rpc-bind-address / --rpc-port]--rpc-bind-address HOSTIP address to bind the RPC port [default: 127.0.0.1 if --private-rpc is present, otherwise use --bind-address]用于绑定 RPC 端口的 IP 地址 [默认值127.0.0.1 如果存在 --private-rpc否则使用 --bind-address]--rpc-port PORTEnable JSON RPC on this port, and the next port for the RPC websocket在此端口上启用 JSON RPC以及 RPC websocket 的下一个端口--accounts-db-skip-shrink通过跳过收缩可以更快地启动验证器。此选项用于测试期间。--incremental-snapshots通过设置此标志启用增量快照。启用后--snapshot-interval-slots将设置增量快照间隔。要设置完整快照间隔请使用 --full-snapshot-interval-slots。--minimal-rpc-api仅公开向其他节点提供快照所需的 RPC 方法--only-known-rpc仅使用已知验证器的 RPC 服务--private-rpc不要发布 RPC 端口供他人使用--restricted-repair-only-mode不要发布导致验证器在有限范围内运行的 Gossip、TPU、TVU 或维修服务端口减少其对集群其余部分的暴露的容量。 --no-voting 标志是隐式的当这个标志已启用--rpc-scan-and-fix-roots在启动时验证块存储根并修复任何差距--skip-poh-verify在验证器启动时跳过分类帐验证--bind-address HOST绑定验证器端口的 IP 地址 [默认0.0.0.0]--dynamic-port-range MIN_PORT-MAX_PORT用于动态分配端口的范围 [默认值8000-10000]--entrypoint HOST:PORT在这个 gossip 入口点与集群会合--expected-genesis-hash HASH要求创世有这个哈希-gossip-host HOSTGossip DNS 名称或 IP 地址供验证器在 gossip 中做广告 [默认ask --entrypoint或 127.0.0.1 未提供 --entrypoint 时]--gossip-port PORT验证器的 gossip 端口号--rpc-port PORT在此端口上启用 JSON RPC以及 RPC websocket 的下一个端口--vote-account ADDRESS验证人投票账户公钥。如果未指定投票将被禁用。授权选民为帐户必须是 --identity 密钥对或带有 --authorized-voter 参数--wait-for-supermajority SLOT处理完账本后下一个槽是 SLOT等到绝大多数股权在开始PoH之前的八卦--wal-recovery-mode MODE恢复分类帐数据库预写日志的模式。 [可能的值tolerance_corrupted_tail_records绝对一致性、point_in_time、skip_any_corrupted_record]
如有更多需求的小伙伴可以关注博主