Skip to content

Commit

Permalink
remove 哈哈
Browse files Browse the repository at this point in the history
  • Loading branch information
DaviRain-Su committed Aug 28, 2023
1 parent 3123771 commit 67cc53b
Show file tree
Hide file tree
Showing 10 changed files with 16 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ async function main() {
执行成功完成
```

很好!如果你检查 `.env` 文件,你会发现一串字节格式的私钥!请注意保密此文件。如果你将此文件推送到公共的 `GitHub` 存储库,任何人都可以访问其中的资金,因此请确保不要用它处理真实的货币,哈哈
很好!如果你检查 `.env` 文件,你会发现一串字节格式的私钥!请注意保密此文件。如果你将此文件推送到公共的 `GitHub` 存储库,任何人都可以访问其中的资金,因此请确保不要用它处理真实的货币。

再次运行 `npm start` 会使用现有的私钥而不会创建新的。

Expand Down Expand Up @@ -155,7 +155,7 @@ async function airdropSolIfNeeded(

区块哈希和区块高度是识别区块的标识符,用以确保我们是最新的,也不会发送陈旧的交易。

不过,别试图反复运行它,因为水龙头有冷却时间,如果你不停地向它请求,请求将会失败,哈哈
不过,别试图反复运行它,因为水龙头有冷却时间,如果你不停地向它请求,请求将会失败。

在创建或获取密钥对之后,请确保更新`initializeKeypair`函数,以便调用空投。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ async function callProgram(

## ⛽ 交易费用

有一件事我们还没有讨论,那就是费用。`Solana`的交易费用非常低,以至于你几乎可以忽略它们!但可惜的是,作为开发者,我们还是必须关心这些费用的哈哈`Solana`的费用机制与以太坊等EVM链相似。每当你提交一笔交易时,网络上总有人为其提供存储空间和处理能力。费用的存在就是为了激励人们提供这些资源。
有一件事我们还没有讨论,那就是费用。`Solana`的交易费用非常低,以至于你几乎可以忽略它们!但可惜的是,作为开发者,我们还是必须关心这些费用的`Solana`的费用机制与以太坊等EVM链相似。每当你提交一笔交易时,网络上总有人为其提供存储空间和处理能力。费用的存在就是为了激励人们提供这些资源。

主要需要注意的一点是,在交易的签名者数组中,第一个签名者总是负责支付交易费用。如果你没有足够的`SOL`怎么办呢?交易将会被取消!

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ npm i @solana/wallet-adapter-base @solana/wallet-adapter-react @solana/wallet-ad

注意:在整个项目中,我们将使用`Typescript`!当然,如果你更喜欢,完全可以使用普通的`Javascript` :)。

如果系统要求安装 `create-next-app`,请确认安装。你可以为你的应用程序取任何你想要的名字,比如我就给我的应用程序命名为“构建器”,哈哈
如果系统要求安装 `create-next-app`,请确认安装。你可以为你的应用程序取任何你想要的名字,比如我就给我的应用程序命名为“构建器”。

下一步,你可能想添加一些视觉素材。你可以在[这里](https://cdn.disco.co/media%2FAssets_a68f5cab-20c9-45c7-b25c-43bc9dcd9e7d.zip)找到资源包,也可以自己创建。包里有五个“头像”文件和一个背景的`svg`文件。请将它们放入项目的公共文件夹中。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ sidebar_class_name: green

![](./img/display-nft.png)

你需要进行通常的Metaplex设置,但是我们将使用 `walletAdapterIdentity` 而不是 `keypairIdentity` 来进行连接,因为我们并不需要他们的密钥对,哈哈。一旦完成,我们只需使用Metaplex对象调用 `findAllByOwner` 方法。
你需要进行通常的Metaplex设置,但是我们将使用 `walletAdapterIdentity` 而不是 `keypairIdentity` 来进行连接,因为我们并不需要他们的密钥对。一旦完成,我们只需使用Metaplex对象调用 `findAllByOwner` 方法。

下图显示了单个`NFT``NFT`数据在控制台上的打印结果,我们主要关注的是 `uri` 字段:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ npm install @metaplex-foundation/js fs
npm install @metaplex-foundation/mpl-token-metadata
```

我们将借助`Metaplex SDK`添加元数据,并使用 `fs` 库来读取代币的标志图片。接下来,创建一个名为 `assets` 的新文件夹,并添加你的标志。这将在测试网络上进行,所以尽情玩乐吧!我选了一个比萨饼的表情符号,所以我把文件命名为`pizza.png`,哈哈
我们将借助`Metaplex SDK`添加元数据,并使用 `fs` 库来读取代币的标志图片。接下来,创建一个名为 `assets` 的新文件夹,并添加你的标志。这将在测试网络上进行,所以尽情玩乐吧!我选了一个比萨饼的表情符号,所以我把文件命名为`pizza.png`

Metaplex将负责所有繁重的工作,所以请在`index.ts`文件顶部添加以下导入语句:

Expand All @@ -42,7 +42,7 @@ import * as fs from "fs"
3. 使用 `metaplex.uploadMetadata()` 方法上传链下元数据。
4. 使用 `findMetadataPda()` 方法推导出元数据账户的程序派生地址(`PDA`)。
5. 构建类型为 `DataV2` 的链上数据格式。
6. 使用 `createCreateMetadataAccountV2Instruction` 方法创建元数据账户的构建指令(不是拼写错误哦,哈哈)。
6. 使用 `createCreateMetadataAccountV2Instruction` 方法创建元数据账户的构建指令(不是拼写错误哦)。
7. 发送带有指令的交易,以创建令牌元数据账户。

这里涉及许多步骤,但都是基础操作。花一点时间仔细阅读,你就能完全理解正在发生的事情!
Expand Down Expand Up @@ -131,7 +131,7 @@ async function createTokenMetadata(

你会注意到我们在这里留下了许多空白的地方 - 那是因为在创建可替代代币时,我们并不需要设置这些内容。非可替代代币则需要定义更具体的行为特性。

我可以逐个解释这个函数,但实际上我只是在重复自己,哈哈。了解它的工作原理固然重要,但更重要的是知道如何使用它。你需要阅读文档来学习如何使用API,从而创建像这样的函数。
我可以逐个解释这个函数,但实际上我只是在重复自己。了解它的工作原理固然重要,但更重要的是知道如何使用它。你需要阅读文档来学习如何使用API,从而创建像这样的函数。

我在讨论学会钓鱼的技能,而不仅仅是获取一条鱼。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ sidebar_class_name: green

# ✨ 魔法互联网计算机

我们将在游乐场中编写一个简单的`Hello World`程序。它仅会在交易日志中记录一条消息,哈哈哈。至今为止,我们已经完成了许多酷炫的项目,包括建立各种类型的客户端,创建`NFT`收藏品,铸造`SPL`代币,甚至构建用户界面让其他人与之互动。然而,我们迄今为止所做的一切都是基于现有的程序。
我们将在游乐场中编写一个简单的`Hello World`程序。它仅会在交易日志中记录一条消息。至今为止,我们已经完成了许多酷炫的项目,包括建立各种类型的客户端,创建`NFT`收藏品,铸造`SPL`代币,甚至构建用户界面让其他人与之互动。然而,我们迄今为止所做的一切都是基于现有的程序。

你现在已经做好成为一名全栈`Solana`开发者,并学习如何编写自己程序的准备了。

Expand All @@ -24,7 +24,7 @@ sidebar_class_name: green

`Solana`的程序是用`Rust`编写的,这是一种与`C`类似的低级编程语言,速度非常快。在我们着手标准的“`Hello World`”程序之前,让我稍微解释一下为什么`Rust`被视为相当困难。

简单来说:`Rust`感觉艰难,因为它规则众多。就像那些学习曲线陡峭的视频游戏——`DOTA`、英雄联盟、星际争霸(甚至国际象棋或`CSGO`哈哈)。这些游戏有数百个独特的角色/物品/能力,每个都有自己的规则和互动方式。要想在这些游戏中获胜,你必须掌握所有的规则,并了解它们是如何相互作用的。
简单来说:`Rust`感觉艰难,因为它规则众多。就像那些学习曲线陡峭的视频游戏——`DOTA`、英雄联盟、星际争霸(甚至国际象棋或`CSGO`)。这些游戏有数百个独特的角色/物品/能力,每个都有自己的规则和互动方式。要想在这些游戏中获胜,你必须掌握所有的规则,并了解它们是如何相互作用的。

`Rust`也是如此。它是一种强有力的语言,迫使你以不同的方式思考代码。它不是一种可以随意拿来写程序的语言,而是一种你必须深入学习和理解的语言。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ sidebar_class_name: green

# 🎂 Rust的分层蛋糕

我们将在游乐场上制作一个简单的`Hello World`程序,仅仅会在交易日志中记录一条消息。哈哈,招呼已经打过了。现在是时候学习如何处理指令数据,就像在客户端开发中一样。
我们将在游乐场上制作一个简单的`Hello World`程序,仅仅会在交易日志中记录一条消息。招呼已经打过了。现在是时候学习如何处理指令数据,就像在客户端开发中一样。

在开始构建之前,我想先给你介绍一些即将使用的概念。还记得我提到的规则、能力和互动吗?我会带你了解一下编写本地`Solana`程序所需的能力和规则。这里的“本地”非常重要 - 我们将在后续部分借助`Anchor`来处理我们现在所学的许多内容。

Expand All @@ -21,7 +21,7 @@ sidebar_class_name: green
这是一个由`Rust`制作的蛋糕。

:::caution
注意:图层代表重量,哈哈
注意:图层代表重量!
:::


Expand Down Expand Up @@ -159,7 +159,7 @@ pub triat BorshDeserialize : Sized {

如你所知,我们的指令数据以字节数组(由`1``0`组成)的形式提供,我们需要在程序中对其进行反序列化(转换成`Rust`类型)。我们将使用名为 `BorshDeserialize``Traits`来完成这一任务:它包括一个 `deserialize` 方法,可以将数据转换为所需类型。这意味着,如果我们将 `BorshDeserialize Traits` 添加到指令结构体中,我们就可以使用 `deserialize` 方法将指令数据实例转换为`Rust`类型。

如果你对这部分内容感到困惑,不妨再读一遍,哈哈,我自己也花了一些时间才弄清楚。
如果你对这部分内容感到困惑,不妨再读一遍,我自己也花了一些时间才弄清楚。

实际操作示例如下:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ invoke_signed(
Ok(())
```

注意,不要重复 `Ok(())` ,因为那会导致错误,哈哈
注意,不要重复 `Ok(())` ,因为那会导致错误。

希望你现在能够看出这些模式的共通性了。虽然在进行本地开发时,我们需要写很多代码,但整个工作流程相当简单,并且感觉很“纯粹”。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ sidebar_class_name: green

以下是具体的操作步骤。

首先,确保你已经安装了 `Rust``Solana CLI`(除非你跳过了某些部分,哈哈)。此外,你还需要[安装 `Yarn`](https://yarnpkg.com/getting-started/install)
首先,确保你已经安装了 `Rust``Solana CLI`(除非你跳过了某些部分)。此外,你还需要[安装 `Yarn`](https://yarnpkg.com/getting-started/install)

完成这些后,只需根据官方的 [`Anchor` 文档](https://www.anchor-lang.com/docs/installation) 进行设置。一切顺利的话,运行 `anchor --version` 时,你会看到一个版本号被打印出来。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ sidebar_class_name: green
- 添加一个`instructions.ts`文件,在其中创建函数来:
- 创建初始化战利品箱和交换机所需的所有指令。
- 创建打开战利品箱所需的所有指令。
- 注意:这部分可能有些复杂,哈哈 - 你可以参考我们的解决方案代码,但也不妨尝试自己的方法。
- 注意:这部分可能有些复杂 - 你可以参考我们的解决方案代码,但也不妨尝试自己的方法。
- 进行大量的调试和优化。

坦白说,这个列表可能还远远不够。我们添加了许多组件来确保交易和链上变化后状态得到更新,但它仍有不完美的地方。总有更多的空间可以改进,但不要让完美主义成为你前进的障碍。尽你所能,然后交付吧!
Expand Down

0 comments on commit 67cc53b

Please sign in to comment.