<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>BenCrox (BenCrox)</title>
    <link>https://soldev.cn/BenCrox</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>Solana 开发简介（仅使用浏览器）</title>
      <description>&lt;blockquote&gt;
&lt;p&gt;以下內容，由 LBank 翻译自&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser" rel="nofollow" target="_blank" title=""&gt;官网&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Solana 开发简介（仅使用浏览器）&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;在这个“Hello World”快速入门指南中，我们将使用&lt;a href="https://beta.solpg.io/" rel="nofollow" target="_blank" title=""&gt;Solana
Playground&lt;/a&gt;，这是一个基于浏览器的 IDE，用于开发和部署我们的 Solana 程序。使用它，您&lt;strong&gt;无需&lt;/strong&gt;在计算机上安装任何软件。只需在您选择的浏览器中打开 Solana
Playground，您就可以开始编写和部署 Solana 程序。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;您将学习到的内容
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#what-you-will-learn-4" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;如何开始使用 Solana Playground&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;如何在 Playground 上创建一个 Solana 钱包&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;如何用 Rust 编写一个基本的 Solana 程序&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;如何构建和部署一个 Solana Rust 程序&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;如何使用 JavaScript 与您的链上程序交互&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;使用 Solana Playground
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#using-solana-playground-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://beta.solpg.io/" rel="nofollow" target="_blank" title=""&gt;Solana Playground&lt;/a&gt;
是一个基于浏览器的应用程序，它允许您在浏览器中编写、构建和部署 Solana
链上程序。无需安装任何软件。&lt;/p&gt;

&lt;p&gt;对于想要在 Windows 上开始 Solana
开发的开发者来说，这是一个非常好的资源。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;导入我们的示例项目
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#import-our-example-project-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;在浏览器的新标签页中，打开我们在 &lt;a href="https://beta.solpg.io/6314a69688a7fca897ad7d1d" rel="nofollow" target="_blank" title=""&gt;Solana Playground 上的“Hello
World”示例项目&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;接下来，通过点击“导入”图标将项目导入到您的本地工作区，并将项目命名为
hello_world。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;信息&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;如果您&lt;strong&gt;不&lt;/strong&gt;将程序导入到&lt;strong&gt;您的&lt;/strong&gt; Solana
Playground，您将无法对代码进行更改。但您仍然可以构建和部署代码到 Solana
集群。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;创建一个 Playground
钱包&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#create-a-playground-wallet-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;通常，在&lt;a href="https://solana.com/developers/guides/getstarted/setup-local-development" rel="nofollow" target="_blank" title=""&gt;本地开发&lt;/a&gt;时，您需要创建一个文件系统钱包以供
Solana CLI 使用。但是在 Solana Playground
中，您只需点击几个按钮即可创建一个基于浏览器的钱包。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;信息&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;您的 Playground
钱包将保存在浏览器的本地存储中。清除浏览器缓存会删除您保存的钱包。在创建新钱包时，您可以选择将钱包的密钥对文件保存到本地进行备份。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;点击屏幕左下角的红色状态指示按钮，（可选）将钱包的密钥对文件保存到您的计算机进行备份，然后点击“继续”。&lt;/p&gt;

&lt;p&gt;创建 Playground 钱包后，您会注意到窗口底部现在显示您的钱包地址、您的 SOL
余额以及您连接的 Solana 集群（通常默认/推荐是
Devnet，但“localhost”&lt;a href="https://solana.com/developers/guides/getstarted/setup-local-development" rel="nofollow" target="_blank" title=""&gt;测试验证器&lt;/a&gt;也是可以接受的）。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;创建一个 Solana 程序
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#create-a-solana-program-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;基于 Rust 的 Solana 程序代码将存储在 src/lib.rs 文件中。在 src/lib.rs
文件中，您可以导入 Rust crates 并定义您的逻辑。在 Solana Playground
中打开 src/lib.rs 文件。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;导入 solana_program crate
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#import-the-,[object-object-,-crate-1" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;在 lib.rs 文件的顶部，我们导入 solana_program crate
并将需要的项目引入到本地命名空间中：&lt;/p&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;solana_program&lt;/span&gt;&lt;span class="p"&gt;::{&lt;/span&gt;
&lt;span class="nn"&gt;account_info&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;AccountInfo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;entrypoint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="nn"&gt;entrypoint&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;ProgramResult&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="nn"&gt;pubkey&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Pubkey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;编写您的程序逻辑
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#write-your-program-logic-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;每个 Solana 程序都必须定义一个入口点，告诉 Solana
运行时从哪里开始执行您的链上代码。您的程序&lt;a href="https://solana.com/docs/programs/lang-rust#program-entrypoint" rel="nofollow" target="_blank" title=""&gt;入口点&lt;/a&gt;应提供一个名为
process_instruction 的公共函数：&lt;/p&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="nd"&gt;entrypoint!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;process_instruction&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// 程序入口点的实现&lt;/span&gt;
&lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;process_instruction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="n"&gt;program_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Pubkey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;accounts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;[&lt;/span&gt;&lt;span class="n"&gt;AccountInfo&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="n"&gt;instruction_data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;[&lt;/span&gt;&lt;span class="nb"&gt;u8&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;ProgramResult&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// 向区块链记录一条消息&lt;/span&gt;
&lt;span class="nd"&gt;msg!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, world!"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// 优雅地退出程序&lt;/span&gt;
&lt;span class="nf"&gt;Ok&lt;/span&gt;&lt;span class="p"&gt;(())&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;每个链上程序都应返回一个值为 () 的 Ok
&lt;a href="https://doc.rust-lang.org/std/result/" rel="nofollow" target="_blank" title=""&gt;结果枚举&lt;/a&gt;。这告诉 Solana
运行时，您的程序已成功执行且没有错误。&lt;/p&gt;

&lt;p&gt;我们上面的程序将简单地向区块链集群记录一条 &lt;code&gt;Hello, world!&lt;/code&gt;
的&lt;a href="https://solana.com/docs/programs/debugging#logging" rel="nofollow" target="_blank" title=""&gt;消息&lt;/a&gt;，然后优雅地以
Ok(()) 退出。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;构建您的程序
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#build-your-program-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;在左侧边栏中，选择“构建和部署”标签。接下来，点击“构建”按钮。&lt;/p&gt;

&lt;p&gt;如果查看 Playground 的终端，您应该会看到您的 Solana
程序开始编译。编译完成后，您将看到成功消息。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;信息&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;在编译程序时，您可能会收到未使用变量的警告。不要担心，这些警告不会影响您的构建。它们是由于我们非常简单的程序没有使用
process_instruction 函数中声明的所有变量。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;部署您的程序
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#deploy-your-program-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;您可以点击“部署”按钮，将您的第一个程序部署到 Solana
区块链上，具体到您选择的集群（例如 Devnet、Testnet 等）。&lt;/p&gt;

&lt;p&gt;每次部署后，您将看到您的 Playground 钱包余额发生变化。默认情况下，Solana
Playground 会自动为您请求 SOL 空投，以确保您的钱包有足够的 SOL
来支付部署费用。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;信息&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;注意：如果您需要更多 SOL，可以在 Playground 终端中输入以下命令进行空投：&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;solana airdrop 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;查找您的程序 ID
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#find-your-program-id-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;在使用 &lt;a href="https://solana.com/docs/clients/javascript-reference" rel="nofollow" target="_blank" title=""&gt;web3.js&lt;/a&gt; 或从&lt;a href="https://solana.com/docs/core/cpi" rel="nofollow" target="_blank" title=""&gt;另一个 Solana 程序&lt;/a&gt;执行程序时，您需要提供程序 ID（即程序的公共地址）。&lt;/p&gt;

&lt;p&gt;在 Solana Playground 的“构建和部署”侧边栏中，您可以在“程序凭证”下拉菜单中找到您的程序 ID。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;恭喜您！
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#congratulations!-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;您已经成功地使用 Rust 语言直接在浏览器中设置、构建并部署了一个 Solana 程序。接下来，我们将演示如何与您的链上程序进行交互。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;与您的链上程序进行交互
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#interact-with-your-onchain-program-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;一旦成功将 Solana 程序部署到区块链，您将希望能够与该程序进行交互。&lt;/p&gt;

&lt;p&gt;像大多数创建 dApps 和网站的开发人员一样，我们将使用 JavaScript 与链上程序进行交互。具体来说，我们将使用开源的 &lt;a href="https://www.npmjs.com/package/@solana/web3.js" rel="nofollow" target="_blank" title=""&gt;NPM 包&lt;/a&gt; &lt;a href="/solana" class="user-mention" title="@solana"&gt;&lt;i&gt;@&lt;/i&gt;solana&lt;/a&gt;/web3.js 来帮助我们的客户端应用程序。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;信息&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;这个 web3.js 包是 &lt;a href="https://solana.com/docs/rpc"&gt;JSON RPC API&lt;/a&gt; 之上的一个抽象层，它减少了重写常见样板代码的需要，有助于简化您的客户端应用程序代码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;初始化客户端
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#initialize-client-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;我们将使用 Solana Playground 进行客户端生成。通过在 Playground
终端中运行以下命令创建一个客户端文件夹：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;run
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我们已经创建了客户端文件夹和一个默认的 client.ts 文件。接下来我们将在这里完成我们的 hello world 程序的其余部分。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Playground 全局变量
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#playground-globals-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;在 Playground 中，有许多实用程序可供我们使用，无需安装或设置任何东西。对于我们的 hello world 程序，最重要的全局变量是 web3（用于 &lt;a href="/solana" class="user-mention" title="@solana"&gt;&lt;i&gt;@&lt;/i&gt;solana&lt;/a&gt;/web3.js）和 pg（用于 Solana Playground 实用程序）。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;信息&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;您可以在编辑器中按 CTRL+SPACE（或在 macOS 上按 CMD+SPACE）查看所有可用的全局变量。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;调用程序
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#call-the-program-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;要执行链上程序，必须向其发送一个&lt;a href="https://solana.com/docs/core/transactions" rel="nofollow" target="_blank" title=""&gt;交易&lt;/a&gt;。每个提交到 Solana 区块链的交易都包含一系列指令（以及指令将与之交互的程序）。&lt;/p&gt;

&lt;p&gt;这里我们创建一个新的交易并向其中添加一个指令：&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// 创建一个空交易&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;transaction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;web3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Transaction&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// 向交易中添加一个 hello world 程序指令&lt;/span&gt;
&lt;span class="nx"&gt;transaction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;web3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;TransactionInstruction&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;span class="na"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
&lt;span class="na"&gt;programId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;web3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;PublicKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PROGRAM_ID&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;}),&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;每个指令必须包括操作中涉及的所有密钥以及我们要执行的程序 ID。在这个示例中，keys 是空的，因为我们的程序只记录 "hello world" 并且不需要任何账户。&lt;/p&gt;

&lt;p&gt;创建交易后，我们可以将其提交到集群：&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// 将交易发送到 Solana 集群&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sending transaction...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;txHash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;web3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sendAndConfirmTransaction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="nx"&gt;pg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="nx"&gt;transaction&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;pg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;wallet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;keypair&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Transaction sent with hash:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;txHash&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;信息&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;签名者数组中的第一个签名者默认是交易费用支付者。我们使用我们的密钥对 pg.wallet.keypair 进行签名。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;运行应用程序
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#run-the-application-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;编写好客户端应用程序后，您可以通过相同的 run 命令来运行代码。&lt;/p&gt;

&lt;p&gt;一旦应用程序完成，您将看到类似如下的输出：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Running client...
client.ts:
My address: GkxZRRNPfaUfL9XdYVfKF3rWjMcj5md6b6mpRoWpURwP
My balance: 5.7254472 SOL
Sending transaction...
Transaction sent with hash:
2Ra7D9JoqeNsax9HmNq6MB4qWtKPGcLwoqQ27mPYsPFh3h8wig
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;获取交易日志
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#get-transaction-logs-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;我们将直接在 Playground 中使用 solana-cli 获取任何交易的信息：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;solana confirm -v &amp;lt;TRANSACTION_HASH&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将 &amp;lt;TRANSACTION_HASH&amp;gt; 替换为您从调用 hello world 程序时收到的哈希值。&lt;/p&gt;

&lt;p&gt;您应该会在输出的“日志消息”部分看到 "Hello, world!"。 🎉&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;恭喜！！！
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#congratulations!!!-1" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;您现在已经为您的链上程序编写了一个客户端应用程序。您现在是一名 Solana
开发者了！&lt;/p&gt;

&lt;p&gt;PS: 尝试更新程序的消息，然后重新构建、重新部署并重新执行您的程序。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;接下来的步骤
&lt;a href="https://solana.com/developers/guides/getstarted/hello-world-in-your-browser#next-steps-5" rel="nofollow" target="_blank" title=""&gt;#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;请参阅以下链接，了解更多关于编写 Solana 程序以及设置本地开发环境的信息：&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solana.com/developers/guides/getstarted/setup-local-development" rel="nofollow" target="_blank" title=""&gt;设置本地开发环境&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solana.com/docs/programs" rel="nofollow" target="_blank" title=""&gt;编写 Solana 程序概述&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solana.com/docs/programs/lang-rust" rel="nofollow" target="_blank" title=""&gt;了解更多关于使用 Rust 开发 Solana
程序的信息&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solana.com/docs/programs/debugging" rel="nofollow" target="_blank" title=""&gt;调试链上程序&lt;/a&gt;&lt;/p&gt;</description>
      <author>BenCrox</author>
      <pubDate>Mon, 16 Sep 2024 00:36:00 +0800</pubDate>
      <link>https://soldev.cn/topics/68</link>
      <guid>https://soldev.cn/topics/68</guid>
    </item>
  </channel>
</rss>
