本地开发环境配置
概述
本地开发的基本流程如下
- 安装 Rust 和 Solana CLI
- 使用
Solana CLI
,你可以使用solana-test-validator
命令运行本地测试验证器,初始化账户等基本操作 - 使用
cargo build-sbf
和solana program deploy
命令在本地构建和部署程序 - 使用
solana logs
命令查看程序日志
本地环境配置
Solana Program
使用Rust
编写,调试运行。建议使用Unix
系列系统: Mac
, Linux
等。
如果很不幸你使用的是Windows
,建议使用 WSL
下载Ubuntu
,并在其中完成运行。
在Windows上设置(带有Linux)
下载Windows子系统Linux(WSL)
如果你使用的是Windows
电脑,建议使用Windows
子系统Linux(WSL)
来构建你的Solana
程序。
打开管理员权限的PowerShell
或Windows
命令提示符,检查Windows
版本
winver
如果你使用的是Windows 10
版本2004
及更高版本(Build 19041
及更高版本)或Windows 11
,请运行以下命令。
wsl --install
如果你正在使用较旧版本的Windows
,请按照这里的说明进行操作。
你可以在这里阅读更多关于安装WS
L的信息。
下载Ubuntu
接下来,在这里下载Ubuntu
。Ubuntu
提供了一个终端,可以让你在Windows
电脑上运行Linux
。这就是你将运行Solana CLI
命令的地方。
下载 Rust(适用于 WSL)
接下来,打开Ubuntu
终端并使用以下命令下载适用于WSL
的Rust
。你可以在此处阅读有关下载Rust
的更多信息。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
下载 Solana CLI
现在我们准备下载适用于Linux
的Solana CLI
。请在Ubuntu
终端中运行以下命令。你可以在此处阅读有关下载Solana CLI
的更多信息。
sh -c "$(curl -sSfL https://release.solana.com/v1.16.10/install)"
在 macOS 上进行设置
下载 Rust
首先,按照这里的说明下载Rust
。
下载Solana CLI
接下来,在终端中运行以下命令下载Solana CLI
。
sh -c "$(curl -sSfL https://release.solana.com/v1.16.10/install)"
你可以在这里了解更多关于下载Solana CLI
的信息。
Solana CLI基础
Solana CLI
是一个命令行界面工具,提供了一系列命令,用于与Solana
集群进行交互。
在本课程中,我们将介绍一些最常见的命令,但你始终可以通过运行solana --help
来查看所有可能的Solana CLI
命令列表。
Solana CLI 配置
Solana CLI
存储了一些配置设置,这些设置会影响某些命令的行为。你可以使用以下命令查看当前的配置:
solana config get
solana config get
命令将返回以下内容:
- 配置文件 -
Solana CLI
所在的文件位于你的计算机上 RPC URL
- 你正在使用的端点,将你连接到本地主机、开发网络或主网络WebSocket URL
- 监听来自目标集群的事件的WebSocket
(在设置RPC URL
时计算)- 密钥对路径 - 在运行
Solana CLI
子命令时使用的密钥对路径 Commitment
- 提供了网络确认的度量,并描述了一个区块在特定时间点上的最终性程度
你可以随时使用solana config set
命令更改你的Solana CLI
配置,然后跟上你想要更新的设置。
最常见的更改将是你要定位的集群。使用solana config set --url
命令更改RPC URL
。
# localhost
solana config set --url localhost
# devnet
solana config set --url devnet
# mainnet-beta
solana config set --url mainnet-beta
由于某些你知道的原因,devnet 或者 mainnet 可能访问不佳。建议开发过程中使用 localhost 网络。最后需要部署应用的使用,建议使用 quicknode 的rpc 节点。
同样地,你可以使用solana config set --keypair
命令来更改密钥对路径。当运行命令时,Solana CLI
将使用指定路径下的密钥对。
solana config set --keypair ~/<FILE_PATH>
测试验证器
你会发现在测试和调试时运行本地验证器比部署到开发网络更有帮助。
你可以使用solana-test-validator
命令运行本地测试验证器。该命令会创建一个持续运行的进程,需要单独的命令行窗口。
Stream program logs
通常在打开一个新的控制台并在测试验证器旁边运行solana logs
命令会很有帮助。这将创建另一个持续进行的进程,用于流式传输与你配置的集群相关的日志。
如果你的CLI配置指向本地主机,则日志将始终与你创建的测试验证器相关联,但你也可以从其他集群(如Devnet
和Mainnet Beta
)流式传输日志。当从其他集群流式传输日志时,你需要在命令中包含一个程序ID
,以限制你所看到的日志仅针对你的特定程序。
密钥相关
你可以使用solana-keygen new --outfile
命令生成一个新的密钥对,并指定文件路径以存储该密钥对。
solana-keygen new --outfile ~/<FILE_PATH>
有时候你可能需要检查你的配置指向哪个密钥对。要查看当前在solana config
中设置的密钥对的公钥,请使用solana address
命令。
solana address
要查看在Solana
配置中设置的当前密钥对的SOL
余额,请使用solana balance
命令。
solana balance
要在Devnet
或localhost
上进行SOL
的空投,请使用solana airdrop
命令。请注意,在Devnet
上,每次空投限制为2个SOL。
solana airdrop 2
在你开发和测试本地环境中的程序时,很可能会遇到由以下原因引起的错误:
- 使用错误的密钥对
- 没有足够的SOL来部署你的程序或执行交易
- 指向错误的集群
到目前为止,我们已经介绍了一些CLI
命令,这些命令应该能帮助你快速解决那些问题。
hello world 程序
- Native Solana合约实现 - hello, World
- Anchor 合约框架实现 - hello, World 🌍 With PDA
- Solang solidity合约实现 - hello, World
挑战
现在轮到你独立构建一些东西了。尝试创建一个新的程序,将你自己的消息打印到程序日志中。这次将你的程序部署到Devnet
而不是本地主机。
记得使用solana config set --url
命令将你的RPC URL
更新为Devnet
。
只要你将连接和Solana Explorer的URL
更新为指向Devnet
而不是localhost
,你就可以使用与演示中相同的客户端脚本来调用该程序。
let connection = new web3.Connection(web3.clusterApiUrl("devnet"));
console.log(
`Transaction: https://explorer.solana.com/tx/${transactionSignature}?cluster=devnet`
);
你还可以打开一个单独的命令行窗口,并使用solana logs | grep " invoke" -A
。在Devnet
上使用solana logs
时,你必须指定程序ID
。否则,solana logs
命令将返回来自Devnet
的持续日志流。例如,你可以按照以下步骤监视对Token
程序的调用,并显示每个调用的前5行日志:
solana logs | grep "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke" -A 5