轻松上手:从零开始启动第一个 Solana 测试节点

嗨,各位技术爱好者们!

大家是否对 Solana 的“光速”交易处理能力感到好奇?或者你是一名开发者,正准备在 Solana 上构建下一个杀手级 dApp?无论大家是出于学习目的还是实际开发需求,亲手运行一个 Solana 节点都是深入了解其底层架构的最佳方式。运行一个测试节点不仅能帮助我们深入理解其工作原理,还能为自己在 Solana 生态上的开发和测试提供巨大便利。

很多人可能会觉得启动一个区块链节点是件复杂且成本高昂的事情。但别担心,今天这篇文章将手把手带大家走完所有流程,从服务器配置到节点成功运行,让大家轻松拥有一个属于自己的 Solana 测试节点。

准备好了吗?让我们开始吧!
在这里插入图片描述

第一步:硬件是基础——需要什么样的服务器?

在启动节点之前,我们首先要解决的是“地基”问题——硬件配置。Solana 是一个高性能网络,对硬件,特别是 CPU、内存和磁盘 I/O 有着较高的要求。虽然测试网的要求比主网低,但也不能掉以轻心。

根据 Solana 官方文档和社区的最佳实践,以下是运行测试节点的推荐配置:

  • CPU:

    • 核心数: 12 核 / 24 线程或更多。
    • 时钟频率: 建议 2.8GHz 或更高。
    • 说明: Solana 的交易处理高度并行化,更多的核心能显著提升性能。AMD EPYC 或 Intel Xeon 系列的现代处理器都是不错的选择。
  • 内存 (RAM):

    • 容量: 128 GB 或更多。
    • 说明: 内存对于缓存账本(Ledger)和处理状态至关重要。虽然 64 GB 勉强可以运行,但 128 GB 会让我们在节点同步和运行过程中更加从容,避免因内存不足导致的各种问题。
  • 磁盘 (Disk):

    • 类型: PCIe Gen3 x4 NVMe SSD 或更高级别。
    • 容量:
      • 账户数据盘: 至少 500 GB。用于存储账户状态,需要极高的 IOPS(读写速度)。
      • 账本数据盘 (Ledger): 至少 1 TB。用于记录历史交易,可以接受稍低的 IOPS,但仍推荐使用 NVMe SSD。
    • 说明: 千万不要使用机械硬盘 (HDD) 或 SATA SSD! Solana 对磁盘 I/O 的要求极为苛刻,低速磁盘将是最大的瓶颈,会导致我们的节点无法追上网络进度。将账户和账本放在不同的磁盘上是官方推荐的最佳实践。
  • 网络 (Network):

    • 带宽: 1 Gbps 或更高,端口开放。
    • 说明: 稳定的高速网络是保证节点能及时接收和广播交易的基础。

实用建议:

对于初学者,直接购买物理服务器成本较高。可以考虑在 Hetzner、OVH 或 AWS、Google Cloud 等云服务商那里租用符合上述配置的裸金属服务器或虚拟机。特别是 Hetzner,因其出色的性价比在 Solana 验证者社区中广受欢迎。

第二步:环境准备——安装 Solana 工具套件

我们假设我们已经有了一台安装了 Ubuntu 20.04/22.04 的服务器。接下来,我们需要安装 Solana 的命令行工具(CLI)。

  1. 更新系统并安装依赖
    打开终端,运行以下命令:

    sudo apt-get update
    sudo apt-get install -y build-essential pkg-config libssl-dev
    
  2. 安装 Solana CLI
    官方提供了一个非常方便的安装脚本。运行它来安装最新稳定版的 Solana 工具:

    sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"
    

    注意:可以将 v2.0.3 替换为 Solana 官网上推荐的最新版本。

    安装完成后,根据提示将 Solana 的 bin 目录添加到系统的 PATH 环境变量中:

    export PATH="/root/.local/share/solana/install/active_release/bin:$PATH"
    source ~/.bashrc
    
  3. 验证安装
    运行以下命令,如果能看到版本号,说明安装成功:

    solana --version
    
第三步:创建身份并连接到测试网

每个验证者节点都需要一个唯一的身份。这个身份由一个密钥对(Keypair)代表。

  1. 配置 CLI 连接到测试网
    默认情况下,CLI 可能连接到主网或开发网。我们需要明确地将其指向测试网(Testnet):

    solana config set --url https://api.testnet.solana.com
    
  2. 创建验证者身份密钥
    为验证者节点创建一个新的身份文件。这个文件非常重要,一定要妥善保管和备份!

    solana-keygen new -o ~/validator-keypair.json
    ```这条命令会在用户主目录下创建一个名为 `validator-keypair.json` 的文件。
  3. 获取测试网 SOL
    在测试网上运行验证者需要消耗极少量的 SOL 来支付交易费(例如投票费)。我们可以免费获取一些测试币:

    solana airdrop 2 ~/validator-keypair.json --url https://api.testnet.solana.com
    

    我们可以运行 solana balance ~/validator-keypair.json 来检查余额。

第四步:启动验证者节点!

万事俱备,只欠东风!现在,我们可以启动节点了。这是一个基础的启动命令,可以根据服务器的实际情况进行调整。

solana-validator \--identity ~/validator-keypair.json \--entrypoint entrypoint.testnet.solana.com:8001 \--ledger /path/to/your/ledger \--accounts /path/to/your/accounts \--rpc-port 8899 \--dynamic-port-range 8000-8020 \--log - \--limit-ledger-size 50000000

命令参数解析:

  • --identity: 指定刚刚创建的身份密钥文件。
  • --entrypoint: 指定加入网络的入口点。这是测试网的官方入口之一。
  • --ledger: 指定存放账本数据的目录。请务必将其指向准备好的高速大容量 NVMe SSD
  • --accounts: (可选但推荐)指定存放账户状态的目录。为了最佳性能,请将其指向与账本不同的另一块高速 NVMe SSD
  • --rpc-port: 允许通过这个端口与节点进行 RPC 交互。
  • --dynamic-port-range: 指定节点用于与其他节点通信的端口范围。请确保防火墙允许这些端口的 UDP/TCP 流量。
  • --log -: 将日志输出到标准输出(终端),方便我们实时观察。
  • --limit-ledger-size: 限制账本大小,有助于管理磁盘空间。

启动!
执行上述命令后,节点将开始启动。我们会看到海量的日志信息在屏幕上滚动。这个过程被称为“追赶”(Catching up),节点正在从网络的其他地方下载账本数据。根据我们的硬件和网络情况,这个过程可能需要几个小时甚至更长时间。

第五步:如何验证节点是否正常工作?

当日志中不再疯狂滚动 [INFO] solana_core::replay_stage] ... 并且开始出现 [INFO] solana_core::optimistic_confirmation_verifier] ... 或类似的投票信息时,说明我们的节点很可能已经追上了网络进度。

可以打开一个新的终端窗口,使用以下命令来监控节点状态:

  • 查看节点同步状态:

    solana catchup ~/validator-keypair.json
    

    如果显示 Node has caught up to the cluster, 恭喜,成功了!

  • 查看日志:
    在节点运行时,日志是我们最好的朋友。仔细观察其中的 WARNERROR 信息,它们能帮助我们定位问题。

  • 使用 Solana Explorer:
    可以复制验证者密钥的公钥(solana-keygen pubkey ~/validator-keypair.json),然后到 Solana Explorer 网站上搜索它,查看节点是否在验证者列表中出现。

总结

在这里插入图片描述

至此!我们已经成功启动了一个 Solana 测试节点。虽然过程看起来有很多步骤,但只要有一台配置合适的服务器并遵循指引,整个过程还是相当顺利的。

运行自己的节点是进入 Web3 世界最硬核、也最直接的方式。它不仅为我们打开了一扇深入理解 Solana 内部机制的大门,也让我们成为了去中心化网络中实实在在的贡献者。

接下来,我们可以尝试使用这个节点的 RPC 端点来部署和测试我们的智能合约,或者进一步学习如何成为一个主网验证者,参与到网络的共识和安全维护中。探索的旅程,才刚刚开始!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/91785.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/91785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gerrit workflow

提交代码 每次提交代码前,先执行 git pull --rebase ,确保已经合并天上代码,解决冲突 git add git commit -m git push origin HEAD:refs/for/{BRANCH_NAME} 可考虑设置 alias 方式,参考下文 CR-2 情况处理(verify-1情况一样处理…

量化交易如何查询CFD指数实时行情

CFD即所谓的差价合约,是投资者在不拥有实际资产的情况下,交易金融市场的一种方式。最近笔者研究这一块比较多,但查遍整个中文互联网却很少找到关于CFD实时行情的查询教程。因此有了这篇文章。以下我将通过一个简单的Python代码示例&#xff0…

sql练习二

首先,建表。创建学生表和score表接着导入创建好基础信息就可以开始做了。3、分别查询student表和score表的所有记录4、查询student表的第2条到第5条记录5、从student表中查询计算机系和英语系的学生的信息6、从student表中查询年龄小于22岁的学生信息7、从student表…

windows11下基于docker单机部署ceph集群

windows下基于docker单机部署ceph集群 创建ceph专用网络 docker network create --driver bridge --subnet 172.20.0.0/16 ceph-network查看是否创建成功(查看创建状态) docker network inspect ceph-network拉取镜像:(镜像源自行选择) docke…

使用DataGrip连接安装在Linux上的Redis

目录 一、前言 二、开放防火墙端口 三、使用DataGrip连接安装在Linux上的Redis 一、前言 在学习黑马Redis从入门到实战的视频,完成了Redis在linux上的安装配置之后,我们可以使用图形化界面方便操作使用redis数据库。在24年JavaWebAI学习时连接MySQL数…

MySQL的union、union all导致排序失效

今天练习SQL,使用union all 连接各个查询导致我的各个查询排序失效,最后发现使用union all后会忽略各个模块的order by,只有最外层的order by才会生效原SQL如下:( selectexam_id tid,count(distinct uid) uv, count(uid) pv frome…

LVS 集群技术实践:NAT 与 DR 模式的配置与对比

1 实验环境规划 实验目标是搭建一个负载均衡集群,通过 LVS 调度器将流量分发到两台真实服务器(RS1 和 RS2)。2.网络配置3 实验步骤关闭防火墙和 SELinux安装 HTTP 服务(在 RS21和 RS2 上):sudo systemctl s…

YOLOv8中添加SENet注意力机制

注意力机制(Attention Mechanism)是深度学习中的一种方法,在图像处理领域,尤其是在卷积神经网络(CNN)和视觉Transformer等架构中。图像数据具有局部相关性,注意力机制可以帮助模型聚焦于图像中更重要的区域,从而提升处理效果。 SENet(Squeeze-and-Excitation Network)…

SpringBoot五分钟快速入门指南

使用 Spring Boot 构建应用 本指南提供了关于Spring Boot如何帮助您加速应用开发的一些示例。随着您阅读更多 Spring 入门指南,您将看到 Spring Boot 的更多用例。本指南旨在让您快速了解 Spring Boot。如果您想创建自己的基于 Spring Boot 的项目,请访问 Spring Initializr…

docker,防火墙关闭后,未重启docker,导致端口映射失败

首先,看这篇文章前,建议先把网上其他的文章说的方法尝试一遍!!! 1. 现象 docker启动某一个容器,然后映射端口时显示失败2. 解决 把网上的方法尝试一遍之后,最后发现是防火墙的问题!&…

事务处理与AOP(web后端笔记第四期)

p.s.这是萌新自己自学总结的笔记,如果想学习得更透彻的话还是请去看大佬的讲解 目录事务spring事物管理事物属性--回滚事物属性--传播行为(propagation)AOP一些核心概念通知类型通知的执行顺序切入点表达式executionannotation连接点事务 事物是一组操作的集合&…

第36周———— RNN实现阿尔茨海默病诊断

目录 前言 1.检查GPU 2.查看数据 3.划分数据集 4.创建模型与编译训练 ​​​​5.编译及训练模型 6.结果可视化 7.模型预测 8.总结: 前言 🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 1.检查G…

equals和hashcode方法重写

在 Java 中,当你需要基于对象的内容而非引用地址来判断两个对象是否相等时,就需要重写equals和hashCode方法。以下是具体场景和实现原则:一、为什么需要同时重写这两个方法?equals方法:默认比较对象的内存地址&#xf…

Excel批量生成SQL语句 Excel批量生成SQL脚本 Excel拼接sql

Excel批量生成SQL语句 Excel批量生成SQL脚本 Excel拼接sql一、情境描述在Excel中有标准的格式化数据,如何快速导入到数据库中呢?有些工具支持Excel导入的,则可以快速导入数据---例如Navicat;如果不支持呢,如果将Excel表…

金和OA C6 DelTemp.aspx 存在XML实体注入漏洞(CVE-2025-7523)

免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。 前言:我们建立了一个更多,更全的知识库。每日追踪最新的安全漏洞,追中25HW情报。 更多详情: http…

Android性能优化之启动优化

一、启动性能瓶颈深度分析 1. 冷启动阶段耗时分布阶段耗时占比关键阻塞点进程创建15%fork进程 加载ZygoteApplication初始化40%ContentProvider/库初始化Activity创建30%布局inflate 视图渲染首帧绘制15%VSync信号等待 GPU渲染2. 高频性能问题 初始化风暴:多个库…

中国优秀开源软件及企业调研报告

中国优秀开源软件及企业调研报告 引言 当前中国开源生态呈现蓬勃发展态势,技术创新领域尤为活跃,其中人工智能大模型成为开源动作的核心聚焦方向。2025年上半年,国内AI领域开源生态迎来密集爆发,头部科技企业相继推出重要开源举…

C++语法 匿名对象 与 命名对象 的详细区分

目录一、匿名对象的本质定义二、匿名对象的调用逻辑:即生即用的设计三、与命名对象的核心差异四、匿名对象的典型应用场景五、匿名对象的潜在风险与规避六、总结:匿名对象的价值定位在 C 类与对象的知识体系中,匿名对象是一种容易被咱们忽略&…

【Fedora 42】Linux内核升级后,鼠标滚轮失灵,libinput的锅?

解决: 最近在玩Fedora 42,升级了一次给俺鼠标滚轮干失灵了。原因可能是 libinput 升级后与Fedora升级后的某些配置有冲突?(搞不懂) sudo dnf downgrade libinput降级 libinput (1.28.901-1.fc42 -> 1.28.0-1.fc42) …

虚拟机centos服务器安装

创建虚拟机选择镜像启动 移除旧的repo文件: sudo rm -f /etc/yum.repos.d/CentOS-Base.repo下载阿里云的repo文件: 对于CentOS 7: sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo清除缓存并生…