Solana(SOL)以其高性能、低交易成本和创新的PoH(历史证明)共识机制,在区块链领域备受瞩目,对于希望深入参与Solana网络、为网络安全做贡献,并通过质押(Staking)获得收益的投资者和技术爱好者来说,搭建并运行自己的Solana节点是一个非常有价值的目标,本文将为你提供一份详尽的Solana节点搭建教程,助你从零开始,成功运行自己的SOL验证节点。
什么是Solana节点?为何要搭建?
在开始之前,我们首先要明白Solana节点是什么,Solana节点是Solana网络中的一个参与者,它负责验证交易、维护网络状态、传播数据并参与共识过程,节点主要分为两种:
- 验证节点(Validator Node):参与共识过程,验证交易并产生新的区块,是Solana网络安全的核心,验证节点需要质押一定数量的SOL,并承担相应的责任。
- 非验证节点(RPC节点/全节点):不参与共识,但完整同步Solana区块链的所有数据,为网络提供RPC(远程过程调用)服务,方便开发者和其他用户与区块链交互。
搭建验证节点可以帮助你深度参与Solana生态,通过质押获得奖励,并为网络的安全性和去中心化做出贡献,搭建RPC节点则可以为自身或第三方提供稳定的数据服务。
搭建Solana节点前的准备工作
在动手搭建之前,请确保你满足以下条件:
-
硬件要求:
- CPU:建议至少8核,推荐16核或更高,以保证处理性能。
- 内存(RAM):建议至少32GB,推荐64GB或更高,因为Solana节点内存占用较大。
- 存储(SSD):至少1TB的高速NVMe SSD,用于存储区块链数据,随着区块链的增长,存储需求也会增加。
- 网络带宽:稳定的上行和下行连接,建议至少100Mbps,且网络延迟要低。
- IP地址:一个固定的、公网可访问的IPv4地址。
-
软件要求:
- 操作系统:推荐使用Ubuntu Server 20.04 LTS或22.04 LTS 64位版本,其他Linux发行版也可能支持,但教程以Ubuntu为例。
- Solana CLI工具:用于与节点交互。
- Docker(可选,但推荐):使用Docker可以简化环境配置和依赖管理。
-
SOL代币:
- 对于验证节点,你需要质押至少一定数量的SOL(具体数量可参考Solana官方最新要求,通常较高,例如数千SOL)。
- 对于RPC节点,不需要质押SOL,但需要承担硬件和电费成本。
-
基础知识:
- 具备基本的Linux命令行操作能力。
- 了解区块链和节点的基本概念。
搭建Solana验证节点教程(以Ubuntu为例)
步骤1:系统更新与依赖安装
更新你的系统并安装必要的依赖软件包:
sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential git curl libudev-dev
步骤2:安装Solana CLI工具
Solana CLI是管理节点和钱包的重要工具,通过以下命令安装:
sh -c "$(curl -sSf https://download.solana.com/installer/linux/releases/latest/solana-installer-release-x86_64.sh -o -)"
安装完成后,将Solana CLI添加到系统PATH:
echo 'export PATH="$HOME/.local/share/solana/install/active/bin:$PATH"' >> ~/.bashrc source ~/.bashrc
验证安装是否成功:
solana --version
步骤3:配置Solana CLI并创建钱包
Solana CLI需要配置RPC端点来连接网络,对于搭建自己的节点,我们可以先使用公共RPC进行初始配置,后续再指向自己的节点。
solana config set --url https://api.mainnet-beta.solana.com
创建一个新的钱包用于节点质押(请务必妥善保存助记词,切勿泄露!):
solana-keygen new --outfile ~/.config/solana/id.json
记录下生成的公钥(以"Solana"开头)和助记词。
步骤4:下载并启动Solana节点软件
Solana官方提供了预编译的二进制文件或Docker镜像来运行节点,这里我们以使用Docker为例(推荐,环境隔离好)。
首先安装Docker:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER newgrp docker # 退出当前终端重新登录或执行此命令使group生效
拉取最新的Solana验证节点Docker镜像:
docker pull solanalabs/solana:latest
创建一个目录用于存储Solana节点数据:
mkdir -p ~/solana-node/mainnet-beta cd ~/solana-node/mainnet-beta
启动验证节点容器,这里需要将你的公网IP地址替换掉YOUR_PUBLIC_IP:
docker run -d \ --name solana-validator \ --ulimit nofile=1000000:1000000 \ -p 8000:8000 \ -p 8001:8001 \ -p 8002:8002 \ -p 8003:8003 \ -p 8004:8004 \ -p 8080:8080 \ -v ~/.config/solana/id.json:/root/.config/solana/id.json \ -v ~/solana-node/mainnet-beta:/root/.local/share/solana \ solanalabs/solana:latest \ validator \ --identity /root/.config/solana/id.json \ --limit-ledger-size \ --entries-archive /root/.local/share/solana/entries-archive \ --rpc-bind-address 0.0.0.0 \ --rpc-port 8899 \ --ws-bind-address 0.0.0.0 \ --ws-port 8900 \ --dynamic-port-range 8000-8100 \ --expected-genesis-hash 5defe3d1584348c9b3f7a2b4a5c349c24a6a9a8b1a8a3a9a8b1a8a3a9a8b1 \ --gossip-port 8001 \ --http-port 8899 \ --enable-rpc-tls \ --rpc-tls-cert /root/.config/solana/rpc-tls-cert.pem \ --rpc-tls-key /root/.config/solana/rpc-tls-key.pem \ --no-wait-for-vote-to-credit-sender \ --no-priority-fee \ --no-vote-skip-proof-of-history \ --no-accounts \ --no-sigs \ --no-locks \ --no-recent-blockhashes \ --no-snapshot-fetch \ --no-accounts-db-download \ --no-genesis-download \ --no-ledger-download \ --no-entry-download \ --no-vote-download \ --no-block-download \ --no-transaction-download \ --no-account-download \ --no-slot-download \ --no-root-download \ --no-identity-download \ --no-keypair-download \ --no-config-download \ --no-tls-download \ --no-tls-cert-download \ --no-tls-key-download \ --no-tls-ca-download \ --no-tls-ca-cert-download \ --no-tls-ca-key-download \ --no-tls-ca-crl-download \ --no-tls-ca-crl-key-download \ --no-tls-ca-crl-download \ --no-tls-ca-crl-key-download \ --no-tls-ca-crl-download \ --no-tls-ca-crl-key-download \ --no-tls-ca-crl-download \ --no-tls-ca-crl-key-download \ --no-tls-ca-crl-download \ --no-tls-ca-crl-key-download \ --no-tls-ca-crl-download \ --no-tls-ca-crl-key-download \ --no-tls-ca-crl-download \ --no-tls-ca-crl-key-download \ --no-tls-ca-crl-download \ --no-tls-ca-crl-key-download \ --no-tls-ca-crl-download \ --no-tls-ca-crl-key-download \ --no-tls-ca-crl-download \ --no-tls-ca-crl-key-download \ --no-tls-ca-crl-download \ --no-tls-ca-crl-key-download \ --no-tls-ca-crl-download \ --no-tls-ca-crl-key-download \
