10分钟Solana-性能web3-3.1 第一个 Solana 合约

15 阅读3分钟

欢迎订阅专栏10分钟Solana-性能web3

编写你的第一个 Solana 智能合约,最推荐的方式是使用 Anchor 框架。它极大地简化了 Solana 的原生开发流程,让你能更专注于业务逻辑本身。

下面我将一步步带你使用 Anchor,在 Solana 的测试网(Devnet)上部署并运行一个“Hello, world!”程序。

🧰 第一步:搭建开发环境

在开始之前,请确保你的电脑上已安装以下工具:

  1. 安装 Rust:Solana 程序主要用 Rust 编写。

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    
  2. 安装 Solana CLI:这是与 Solana 网络交互的命令行工具。

    sh -c "$(curl -sSfL https://release.solana.com/stable/install)"
    
  3. 安装 Anchor CLI:这是我们的核心开发框架。

    cargo install --git https://github.com/coral-xyz/anchor avm --locked
    avm install latest
    avm use latest
    
  4. 验证安装

    rustc --version
    solana --version
    anchor --version
    

🚀 第二步:创建并编写你的第一个程序

  1. 初始化项目: 使用 anchor init 命令创建一个新项目。

    anchor init hello_solana
    cd hello_solana
    
  2. 编写合约代码: 打开 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 {}
    

⚙️ 第三步:构建与部署

  1. 构建程序: 在项目根目录下运行 anchor build 来编译代码。此命令会生成编译后的字节码文件。

    anchor build
    
  2. 配置网络: 将 Solana CLI 的默认网络设置为开发网(Devnet),以获取免费的空投代币进行测试。

    solana config set --url https://api.devnet.solana.com
    
  3. 生成并充值钱包

    • 生成一个本地钱包,用于部署合约。
      solana-keygen new
      
    • 为这个新钱包领取 2 个 SOL 测试代币。
      solana airdrop 2
      
  4. 部署程序: 部署过程会将我们构建好的字节码上传到 Solana 网络。

    anchor deploy
    

    部署成功后,终端会显示一个程序 ID(Program ID),请复制保存,它就是我们合约的链上地址。

🧪 第四步:测试与交互

  1. 更新程序 ID: 将刚才部署得到的程序 ID,更新到 lib.rs 文件开头的 declare_id! 宏中。

    declare_id!("你刚才部署得到的程序ID");
    
  2. 运行测试: Anchor 项目自带测试框架。运行以下命令,它会自动构建、部署并调用我们合约的 initialize 方法。

    anchor test
    

    如果一切顺利,你应该能在输出日志中看到 Hello, world! from Solana 的字样。

💡 另一种选择:使用 Solana Playground

如果你不想在本地安装环境,Solana 官方提供了一个基于浏览器的在线 IDE——Solana Playground

  1. 访问 beta.solpg.io
  2. 点击左侧的 “Create a new project”,选择 Anchor 框架并命名。
  3. 你会在 src/lib.rs 中看到一份与上面类似的示例代码。
  4. 点击左侧的 “Build” 按钮进行编译,然后点击 “Deploy” 按钮,即可一键部署到 Devnet 网络。

至此,你已经成功地在 Solana 区块链上部署并运行了你的第一个智能合约!这是你 Solana 开发旅程的第一步。接下来可以尝试在合约中添加更多逻辑,比如存储数据、创建账户等,来进一步探索 Anchor 框架的强大功能。