欢迎订阅专栏:10分钟Solana-性能web3
编写你的第一个 Solana 智能合约,最推荐的方式是使用 Anchor 框架。它极大地简化了 Solana 的原生开发流程,让你能更专注于业务逻辑本身。
下面我将一步步带你使用 Anchor,在 Solana 的测试网(Devnet)上部署并运行一个“Hello, world!”程序。
🧰 第一步:搭建开发环境
在开始之前,请确保你的电脑上已安装以下工具:
-
安装 Rust:Solana 程序主要用 Rust 编写。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -
安装 Solana CLI:这是与 Solana 网络交互的命令行工具。
sh -c "$(curl -sSfL https://release.solana.com/stable/install)" -
安装 Anchor CLI:这是我们的核心开发框架。
cargo install --git https://github.com/coral-xyz/anchor avm --locked avm install latest avm use latest -
验证安装:
rustc --version solana --version anchor --version
🚀 第二步:创建并编写你的第一个程序
-
初始化项目: 使用
anchor init命令创建一个新项目。anchor init hello_solana cd hello_solana -
编写合约代码: 打开
programs/hello_solana/src/lib.rs文件,这是我们的程序入口。将其内容替换为以下代码:// 导入 Anchor 框架的预导入模块 use anchor_lang::prelude::*; // 声明程序的链上地址(部署时会自动更新) declare_id!("11111111111111111111111111111111"); // #[program] 宏定义了程序的指令入口 #[program] pub mod hello_solana { use super::*; // 定义了一个名为 initialize 的指令 pub fn initialize(ctx: Context<Initialize>) -> Result<()> { // 使用 msg! 宏打印日志到交易记录中 msg!("Hello, world! from Solana"); Ok(()) } } // #[derive(Accounts)] 宏用于定义指令所需的账户列表 #[derive(Accounts)] pub struct Initialize {}
⚙️ 第三步:构建与部署
-
构建程序: 在项目根目录下运行
anchor build来编译代码。此命令会生成编译后的字节码文件。anchor build -
配置网络: 将 Solana CLI 的默认网络设置为开发网(Devnet),以获取免费的空投代币进行测试。
solana config set --url https://api.devnet.solana.com -
生成并充值钱包:
- 生成一个本地钱包,用于部署合约。
solana-keygen new - 为这个新钱包领取 2 个 SOL 测试代币。
solana airdrop 2
- 生成一个本地钱包,用于部署合约。
-
部署程序: 部署过程会将我们构建好的字节码上传到 Solana 网络。
anchor deploy部署成功后,终端会显示一个程序 ID(Program ID),请复制保存,它就是我们合约的链上地址。
🧪 第四步:测试与交互
-
更新程序 ID: 将刚才部署得到的程序 ID,更新到
lib.rs文件开头的declare_id!宏中。declare_id!("你刚才部署得到的程序ID"); -
运行测试: Anchor 项目自带测试框架。运行以下命令,它会自动构建、部署并调用我们合约的
initialize方法。anchor test如果一切顺利,你应该能在输出日志中看到
Hello, world! from Solana的字样。
💡 另一种选择:使用 Solana Playground
如果你不想在本地安装环境,Solana 官方提供了一个基于浏览器的在线 IDE——Solana Playground。
- 访问 beta.solpg.io。
- 点击左侧的 “Create a new project”,选择 Anchor 框架并命名。
- 你会在
src/lib.rs中看到一份与上面类似的示例代码。 - 点击左侧的 “Build” 按钮进行编译,然后点击 “Deploy” 按钮,即可一键部署到 Devnet 网络。
至此,你已经成功地在 Solana 区块链上部署并运行了你的第一个智能合约!这是你 Solana 开发旅程的第一步。接下来可以尝试在合约中添加更多逻辑,比如存储数据、创建账户等,来进一步探索 Anchor 框架的强大功能。