以下內容,由 LBank 翻译自官网
Solana 开发简介(仅使用浏览器)
在这个“Hello World”快速入门指南中,我们将使用Solana Playground,这是一个基于浏览器的 IDE,用于开发和部署我们的 Solana 程序。使用它,您无需在计算机上安装任何软件。只需在您选择的浏览器中打开 Solana Playground,您就可以开始编写和部署 Solana 程序。
您将学习到的内容 #
如何开始使用 Solana Playground
如何在 Playground 上创建一个 Solana 钱包
如何用 Rust 编写一个基本的 Solana 程序
如何构建和部署一个 Solana Rust 程序
如何使用 JavaScript 与您的链上程序交互
使用 Solana Playground #
Solana Playground 是一个基于浏览器的应用程序,它允许您在浏览器中编写、构建和部署 Solana 链上程序。无需安装任何软件。
对于想要在 Windows 上开始 Solana 开发的开发者来说,这是一个非常好的资源。
导入我们的示例项目 #
在浏览器的新标签页中,打开我们在 Solana Playground 上的“Hello World”示例项目。
接下来,通过点击“导入”图标将项目导入到您的本地工作区,并将项目命名为 hello_world。
信息
如果您不将程序导入到您的 Solana Playground,您将无法对代码进行更改。但您仍然可以构建和部署代码到 Solana 集群。
创建一个 Playground 钱包#
通常,在本地开发时,您需要创建一个文件系统钱包以供 Solana CLI 使用。但是在 Solana Playground 中,您只需点击几个按钮即可创建一个基于浏览器的钱包。
信息
您的 Playground 钱包将保存在浏览器的本地存储中。清除浏览器缓存会删除您保存的钱包。在创建新钱包时,您可以选择将钱包的密钥对文件保存到本地进行备份。
点击屏幕左下角的红色状态指示按钮,(可选)将钱包的密钥对文件保存到您的计算机进行备份,然后点击“继续”。
创建 Playground 钱包后,您会注意到窗口底部现在显示您的钱包地址、您的 SOL 余额以及您连接的 Solana 集群(通常默认/推荐是 Devnet,但“localhost”测试验证器也是可以接受的)。
创建一个 Solana 程序 #
基于 Rust 的 Solana 程序代码将存储在 src/lib.rs 文件中。在 src/lib.rs 文件中,您可以导入 Rust crates 并定义您的逻辑。在 Solana Playground 中打开 src/lib.rs 文件。
导入 solana_program crate #
在 lib.rs 文件的顶部,我们导入 solana_program crate 并将需要的项目引入到本地命名空间中:
use solana_program::{
account_info::AccountInfo,
entrypoint,
entrypoint::ProgramResult,
pubkey::Pubkey,
msg,
};
编写您的程序逻辑 #
每个 Solana 程序都必须定义一个入口点,告诉 Solana 运行时从哪里开始执行您的链上代码。您的程序入口点应提供一个名为 process_instruction 的公共函数:
entrypoint!(process_instruction);
// 程序入口点的实现
pub fn process_instruction(
program_id: &Pubkey,
accounts: &[AccountInfo],
instruction_data: &[u8]
) > ProgramResult {
// 向区块链记录一条消息
msg!("Hello, world!");
// 优雅地退出程序
Ok(())
}
每个链上程序都应返回一个值为 () 的 Ok 结果枚举。这告诉 Solana 运行时,您的程序已成功执行且没有错误。
我们上面的程序将简单地向区块链集群记录一条 Hello, world!
的消息,然后优雅地以
Ok(()) 退出。
构建您的程序 #
在左侧边栏中,选择“构建和部署”标签。接下来,点击“构建”按钮。
如果查看 Playground 的终端,您应该会看到您的 Solana 程序开始编译。编译完成后,您将看到成功消息。
信息
在编译程序时,您可能会收到未使用变量的警告。不要担心,这些警告不会影响您的构建。它们是由于我们非常简单的程序没有使用 process_instruction 函数中声明的所有变量。
部署您的程序 #
您可以点击“部署”按钮,将您的第一个程序部署到 Solana 区块链上,具体到您选择的集群(例如 Devnet、Testnet 等)。
每次部署后,您将看到您的 Playground 钱包余额发生变化。默认情况下,Solana Playground 会自动为您请求 SOL 空投,以确保您的钱包有足够的 SOL 来支付部署费用。
信息
注意:如果您需要更多 SOL,可以在 Playground 终端中输入以下命令进行空投:
solana airdrop 2
查找您的程序 ID #
在使用 web3.js 或从另一个 Solana 程序执行程序时,您需要提供程序 ID(即程序的公共地址)。
在 Solana Playground 的“构建和部署”侧边栏中,您可以在“程序凭证”下拉菜单中找到您的程序 ID。
恭喜您! #
您已经成功地使用 Rust 语言直接在浏览器中设置、构建并部署了一个 Solana 程序。接下来,我们将演示如何与您的链上程序进行交互。
与您的链上程序进行交互 #
一旦成功将 Solana 程序部署到区块链,您将希望能够与该程序进行交互。
像大多数创建 dApps 和网站的开发人员一样,我们将使用 JavaScript 与链上程序进行交互。具体来说,我们将使用开源的 NPM 包 @solana/web3.js 来帮助我们的客户端应用程序。
信息
这个 web3.js 包是 JSON RPC API 之上的一个抽象层,它减少了重写常见样板代码的需要,有助于简化您的客户端应用程序代码。
初始化客户端 #
我们将使用 Solana Playground 进行客户端生成。通过在 Playground 终端中运行以下命令创建一个客户端文件夹:
run
我们已经创建了客户端文件夹和一个默认的 client.ts 文件。接下来我们将在这里完成我们的 hello world 程序的其余部分。
Playground 全局变量 #
在 Playground 中,有许多实用程序可供我们使用,无需安装或设置任何东西。对于我们的 hello world 程序,最重要的全局变量是 web3(用于 @solana/web3.js)和 pg(用于 Solana Playground 实用程序)。
信息
您可以在编辑器中按 CTRL+SPACE(或在 macOS 上按 CMD+SPACE)查看所有可用的全局变量。
调用程序 #
要执行链上程序,必须向其发送一个交易。每个提交到 Solana 区块链的交易都包含一系列指令(以及指令将与之交互的程序)。
这里我们创建一个新的交易并向其中添加一个指令:
// 创建一个空交易
const transaction = new web3.Transaction();
// 向交易中添加一个 hello world 程序指令
transaction.add(
new web3.TransactionInstruction({
keys: [],
programId: new web3.PublicKey(pg.PROGRAM_ID),
}),
);
每个指令必须包括操作中涉及的所有密钥以及我们要执行的程序 ID。在这个示例中,keys 是空的,因为我们的程序只记录 "hello world" 并且不需要任何账户。
创建交易后,我们可以将其提交到集群:
// 将交易发送到 Solana 集群
console.log("Sending transaction...");
const txHash = await web3.sendAndConfirmTransaction(
pg.connection,
transaction,
[pg.wallet.keypair],
);
console.log("Transaction sent with hash:", txHash);
信息
签名者数组中的第一个签名者默认是交易费用支付者。我们使用我们的密钥对 pg.wallet.keypair 进行签名。
运行应用程序 #
编写好客户端应用程序后,您可以通过相同的 run 命令来运行代码。
一旦应用程序完成,您将看到类似如下的输出:
Running client...
client.ts:
My address: GkxZRRNPfaUfL9XdYVfKF3rWjMcj5md6b6mpRoWpURwP
My balance: 5.7254472 SOL
Sending transaction...
Transaction sent with hash:
2Ra7D9JoqeNsax9HmNq6MB4qWtKPGcLwoqQ27mPYsPFh3h8wig
获取交易日志 #
我们将直接在 Playground 中使用 solana-cli 获取任何交易的信息:
solana confirm -v <TRANSACTION_HASH>
将 <TRANSACTION_HASH> 替换为您从调用 hello world 程序时收到的哈希值。
您应该会在输出的“日志消息”部分看到 "Hello, world!"。 🎉
恭喜!!! #
您现在已经为您的链上程序编写了一个客户端应用程序。您现在是一名 Solana 开发者了!
PS: 尝试更新程序的消息,然后重新构建、重新部署并重新执行您的程序。
接下来的步骤 #
请参阅以下链接,了解更多关于编写 Solana 程序以及设置本地开发环境的信息: