跟我一起从0开始学习Solana合约开发,一起实操,一起做项目。这是一个系列文章,系统地记录了我的学习笔记。
我准备从0开始学习solana合约开发,并记录这一过程中学习到的知识点、解决的错误。因为我已经有solidity的开发经验,所以我也会对比二者之间的区别,如果对你有用,可以关注这个系列文章。
小提示
学习solana只需要少量的rust知识,不需要系统学习rust。我会边学习边讲解最少必要的rust知识
。
我主要参考solana官网文档进行学习。下面正式开始...
官方推荐使用rustup
安装,rustup可以方便的管理Rust版本和相关工具,在Liunx或MacOS上执行下面的命令:
# 我安装的版本:rustc 1.82.0 (f6e511eec 2024-10-15)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
虽然有多种方式安装node,但我只推荐 nvm
的方式:
# 1. 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
# 2. 让 nvm 在命令行生效,我这里是.zshrc,你的可能是.bashrc,看你的具体环境
source ~/.zshrc
# 3. 安装 node 长期支持版本(--lts)
nvm install --lts
nvm use --lts
# 4. 安装 yarn(node安装好,就有了npm命令)
npm install -g yarn
# 我安装的版本:
# nvm 0.40.1
# node v22.11.0
# npm 10.9.0
# yarn 1.22.22
虽然solana官方文档给了一个便捷的安装命令,但经过我的尝试,安装成功后的版本在编译程序的时候会报错(下文讲到anchor build时会分析这个报错),因此,这里我建议直接在solana的github仓库下载指定版本,我这里下载1.18.22
版本。
# 解压后,配置到环境变量就安装成功了
tar xvzf solana-release-x86_64-apple-darwin.tar.bz2
anchor
是solana的开发框架,开发solana合约要经常使用,它的底层封装了solana-web3.js,用于跟solana链上程序交互,可以类比为以太坊中的hardhat框架。
# cargo是rust的包管理器和构建工具
# 上文安装好了rust,就自带了cargo命令
cargo install --git https://github.com/coral-xyz/anchor avm --locked --force
# 使用最新的anchor版本就行,我的是 anchor-cli 0.30.1
avm install latest
avm use latest
# solana-guide是自定义的,你可以使用任何名称
anchor init solana-guide
cd solana-guide
anchor build
如果你执行anchor build
遇到下面的错误:
[2024-11-13T14:11:24.929159000Z ERROR cargo_build_sbf] Failed to install platform-tools: HTTP status client error (404 Not Found) for url (https://github.com/anza-xyz/platform-tools/releases/download/v1.42/platform-tools-osx-x86_64.tar.bz2)
原因:最新的solana版本会去找platform-tools@v1.42及以上的版本
,然而,对于mac x86_64
系统,platform-tools从v1.42版本开始,release的二进制文件中移除了osx-x86_64的这个文件。
解决:将solana版本降低一下,改为 1.18.22 就好了。这个版本的solana找的是platform-tools@v1.41是正常的。
打开一个新的shell(原来的anchor项目shell不要关),执行如下命令:
# 1. 配置solana在本地运行
solana config set --url localhost
# 2. 启动一个本地节点
solana-test-validator
回到anchor项目所在的shell,执行如下命令:
# 1. 生成solana钱包地址
solana-keygen new -o ~/.config/solana/id.json
# 2. 查看钱包地址
solana address
# 3. 给生成的钱包空投 sol 测试币
solana airdrop 100 {钱包地址}
# 4. 配置 program_id 与 Anchor 密钥同步
anchor keys sync
# 5. 执行测试命令
anchor test --skip-local-validator
如果你完全按照步骤操作到这里,估计你可以看到:
solana_guide
Your transaction signature 5kAgT2JvBL7UYSXaDrKtUTQ793mgeJRYkbyDBDpTTeRWXQjse2SekStvbDPCBmzjTpxpN7S56vGsuBuJsidTj4av
✔ Is initialized! (264ms)
1 passing (266ms)
到这里,我们的环境已经完全安装好了。下一篇文章我将会带你认识目录结构,把这个项目中每一个目录和文件搞清楚是干什么的,怎么修改和重命名,怎么精简目录,把初学者不关心的目录和文件都删除掉进行高效率学习。如果你想提前看到我的更新,可以关注我的公众号:认知那些事
。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!