Solana 学习开发之旅

2025年04月03日更新 33 人订阅
原价: ¥ 20 限时优惠
专栏简介 【Solana】使用 CLI 创建 SPL 标准的 Token 以及基础使用 【Solana】完善 SPL Token 名称和 Logo 【Solana】创建 SPL 标准的 NFT 以及完善 metadata 【Solana】一些基本的js脚本 【Solana】Anchor 框架使用笔记 【Solana】Anchor 示例:通过 CPI 实现 Sol 转账与手续费收取 Solana Hello World: 安装与开发指南 Solana 与 Rust 算术入门—从 Solidity 到 Anchor Solana Anchor 程序接口定义语言(IDL) Solana Anchor 框架下的 Require 与自定义错误 Solana 程序:支持升级与无构造函数实现 Solidity 开发者必知的 Rust 语法基础 Rust 的独特语法解析 Rust 类函数宏解析 Rust 结构体、属性宏与自定义派生宏 Rust 与 Solana 中的可见性及模块化复用 Solana 中的时钟与其他区块变量 Solana 系统变量详解 Solana 日志、事件日志与历史交易查询 Solana 中的Tx.origin、msg.sender 和 onlyOwner Solana 计算单元与交易费用概述 Solana 与 Anchor 中的账户初始化 Solana 计数器教程:账户数据的读写 使用 Solana Web3.js 和 Anchor 读取账户数据 在 Solana 中实现映射表与嵌套映射表 Solana 存储成本、最大容量与账户调整 在 Anchor 中读取账户余额:Solana 的 address(account).balance Solana 中的函数修饰符与 Fallback 函数:为何不存在 Solana 中的 SOL 转移与分割:取代 msg.value 的设计 使用不同签名者修改账户:Solana 中的权限控制 PDA 与密钥对账户:Solana 中的地址与权限模型 Anchor 中的 init_if_needed 与重新初始化攻击防范 Solana 中的 Multicall:批处理交易和交易大小的限制 Solana 中的 Owner 和 Authority 删除和关闭 Solana 中的账户和程序 在 Anchor 中的 #[derive(Accounts)] 不同类型的账户 在链上读取另一个 Anchor 程序的账户数据 Anchor 中的跨程序调用

Solana Hello World: 安装与开发指南

  • 0xE
  • 发布于 2025-03-21 14:59
  • 阅读 1306

本系列文章将带你完成 Solana 开发的入门流程,从环境配置到运行一个简单的 Anchor 程序(Hello World)。我们会涵盖工具安装、项目初始化、构建和测试,并提供经验性建议。

笔者前段时间把 RareSkills 的 Solana 60 天课程学习了一遍。大概用了一周左右的时间,现在想把过程中的笔记和代码分享出来。文章的配套代码我上传到了 github 。笔记我将每天更新 2 到 3 篇。欢迎多多收藏、点赞和关注。

本系列文章将带你完成 Solana 开发的入门流程,从环境配置到运行一个简单的 Anchor 程序(Hello World)。我们会涵盖工具安装、项目初始化、构建和测试,并提供经验性建议。

环境准备

安装 Rust

Rust 是 Solana 和 Anchor 的核心依赖,默认安装最新稳定版即可满足大多数需求。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • 验证:运行 rustc --version。

指定版本(如 rustc 1.78.0) 如果项目需要特定版本,执行:

rustup install 1.78.0
rustup default 1.78.0
rustc --version  # 确认版本为 1.78.0

安装 Yarn

Yarn 用于运行 Anchor 的单元测试,前提是你已安装 Node.js(建议 18.x 或 20.x)。

corepack enable  # 激活 Node.js 自带的 Corepack
yarn --version   # 验证安装

安装 Solana CLI

Solana CLI 是与区块链交互的核心工具,推荐使用 stable 通道以确保稳定性。

sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"
  • 环境配置:安装后运行 source ~/.profile 或重启终端。
  • 验证:运行 solana --version,应返回类似 solana-cli 1.18.25。

指定版本(如 1.18.17) 若需特定版本:

sh -c "$(curl -sSfL https://release.anza.xyz/v1.18.17/install)"
solana --version   # 确认版本

安装 Anchor

Anchor 是 Solana 的智能合约框架,简化程序开发。

cargo install --git https://github.com/coral-xyz/anchor avm --locked --force
avm install latest
avm use latest
anchor --version  # 验证安装
  • 补充说明:avm 是 Anchor 的版本管理工具,类似 rustup,便于切换版本。

指定版本(如 0.29.0) 若需特定版本:

avm install 0.29.0
avm use 0.29.0
anchor --version  # 应显示 anchor-cli 0.29.0

创建并构建 Hello World 程序

初始化项目

在终端运行:

anchor init hello_world
cd hello_world
  • 生成内容:此命令创建项目结构,包括 Anchor.toml 和程序代码。

修改程序代码

编辑 programs/hello_world/src/lib.rs:

use anchor_lang::prelude::*;

declare_id!("AcCKUb5GBSGgX1dz6GMTyvZwSBsnnzZJigac9kB7cfXr");

#[program]
pub mod hello_world {
    use super::*;

    pub fn initialize(ctx: Context<Initialize>) -> Result<()> {
        msg!("Hello, world!");
        Ok(())
    }
}

#[derive(Accounts)]
pub struct Initialize {}
  • 说明:msg! 记录日志,Initialize 是空的账户上下文,仅用于演示。

同步 Program ID

新项目生成的 declare_id! 与代码中的可能不一致,需同步:

anchor keys sync
  • 说明:target/deploy/hello_world-keypair.json 对应的公钥将同步到 lib.rs 和 Anchor.toml 中。

启动本地验证节点

在新终端运行:

solana-test-validator
  • 作用:启动本地测试网络,模拟 Solana 集群。

构建与测试

在项目目录运行:

anchor build
anchor test --skip-local-validator
  • 参数说明:--skip-local-validator 表示使用已运行的本地节点,而非 Anchor 自启节点。
  • 为何如此:手动运行 solana-test-validator 便于调试日志和状态查询。若无本地节点,移除此标志,Anchor 会自动启动一个。

查看结果与日志

日志文件

测试完成后,检查 .anchor/program-logs/ 中的日志:

Transaction executed in slot 99:
  Signature: 2WA64cJjT1W8Y7XCwLa62kD3pFQ17vfjnZxQPDwJnpn4fZb8rQVVgVnS4ad5vgZSpbcrxbvRf9Pbt4951qfhdNrK
  Status: Ok
  Log Messages:
    Program log: Hello, world!
  • 解读:Hello, world! 表示程序成功执行。

【笔记配套代码】 https://github.com/0xE1337/rareskills_evm_to_solana 【参考资料】\ https://learnblockchain.cn/column/119 https://www.rareskills.io/solana-tutorial

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论