Skip to content

Commit

Permalink
feat: fix
Browse files Browse the repository at this point in the history
  • Loading branch information
uvd committed Jul 25, 2024
1 parent 3443611 commit a879502
Show file tree
Hide file tree
Showing 22 changed files with 125 additions and 90 deletions.
27 changes: 27 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
build
book
.idea
# dependencies
/node_modules
/.pnp
.pnp.js


# testing
/coverage


# production
*/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
40 changes: 20 additions & 20 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
# Summary
- [1.轻松入门Sui Move: 快速了解基本概念](./chapter_1.md)
- [2.轻松入门Sui Move: 搭建开发环境](./chapter_2.md)
- [3.轻松入门Sui Move: 清单文件和模块](./chapter_3.md)
- [4.轻松入门Sui Move: 基础语法](./chapter_4.md)
- [5.轻松入门Sui Move: Debug、单元测试和命令行工具](./chapter_5.md)
- [6.轻松入门Sui Move: 结构体](./chapter_6.md)
- [7.轻松入门Sui Move: 对象(上)](./chapter_7.md)
- [8.轻松入门Sui Move: 对象(下)](./chapter_8.md)
- [9.轻松入门Sui Move: Ability](./chapter_9.md)
- [10.轻松入门Sui Move: 动态字段](./chapter_10.md)
- [11.轻松入门Sui Move: Bag和Table](./chapter_11.md)
- [12.轻松入门Sui Move: 父子对象](./chapter_12.md)
- [13.轻松入门Sui Move: 时间和泛型](./chapter_13.md)
- [1.轻松入门Move: 快速了解基本概念](./chapter_1.md)
- [2.轻松入门Move: 搭建开发环境](./chapter_2.md)
- [3.轻松入门Move: 清单文件和模块](./chapter_3.md)
- [4.轻松入门Move: 基础语法](./chapter_4.md)
- [5.轻松入门Move: Debug、单元测试和命令行工具](./chapter_5.md)
- [6.轻松入门Move: 结构体](./chapter_6.md)
- [7.轻松入门Move: 对象(上)](./chapter_7.md)
- [8.轻松入门Move: 对象(下)](./chapter_8.md)
- [9.轻松入门Move: Ability](./chapter_9.md)
- [10.轻松入门Move: 动态字段](./chapter_10.md)
- [11.轻松入门Move: Bag和Table](./chapter_11.md)
- [12.轻松入门Move: 父子对象](./chapter_12.md)
- [13.轻松入门Move: 时间和泛型](./chapter_13.md)
- [番外篇:我在dacade赚了100SUI](./extra_story.md)
- [14.轻松入门Sui Move: 集合(上)](./chapter_14.md)
- [15.轻松入门Sui Move: 集合(下)](./chapter_15.md)
- [16.轻松入门Sui Move: 升级(上)](./chapter_16.md)
- [17.轻松入门Sui Move: 升级(下)](./chapter_17.md)
- [18.轻松入门Sui Move: 设计模式](./chapter_18.md)
- [19.轻松入门Sui Move: 获取时间](./chapter_19.md)
- [20.轻松入门Sui Move: 对象的展示](./chapter_20.md)
- [14.轻松入门Move: 集合(上)](./chapter_14.md)
- [15.轻松入门Move: 集合(下)](./chapter_15.md)
- [16.轻松入门Move: 升级(上)](./chapter_16.md)
- [17.轻松入门Move: 升级(下)](./chapter_17.md)
- [18.轻松入门Move: 设计模式](./chapter_18.md)
- [19.轻松入门Move: 获取时间](./chapter_19.md)
- [20.轻松入门Move: 对象的展示](./chapter_20.md)
36 changes: 22 additions & 14 deletions src/chapter_1.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,33 @@
# 1.轻松入门Sui Move: 快速了解基本概念
# 1.轻松入门Move: 快速了解基本概念

2009年,中本聪发布比特币的开源软件,实现了去中心化的数字货币系统,开启了区块链1.0的时代。

比特币区块链虽然为去中心化的数字货币提供了一个安全的基础,但其功能受到了限制,只能用于简单的价值交换。有没有一种机制可以在链上编写复杂的代码实现区块链智能化,让区块链能应用于更多场景呢?
比特币区块链虽然为去中心化的数字货币提供了一个安全的基础,但其功能受到了限制,只能用于简单的价值交换。
有没有一种机制可以在链上编写复杂的代码实现区块链智能化,让区块链能应用于更多场景呢?

2015年以太坊主网正式上线,为这个问题交出了答卷。也开启了区块链2.0的时代。以太坊为去中心化应用提供一个通用的智能合约平台,使得开发者可以开始编写和部署智能合约,通过智能合约为区块链技术的应用提供了更广泛的可能性。
2015年以太坊主网正式上线,为这个问题交出了答卷。也开启了区块链2.0的时代。
以太坊为去中心化应用提供一个通用的智能合约平台,使得开发者可以开始编写和部署智能合约,通过智能合约为区块链技术的应用提供了更广泛的可能性。

下图为区块链2.0的逻辑架构图,展示了智能合约在区块链中的位置:

![](https://raw.githubusercontent.com/Crazyjs123/crazyjs123.github.io/main/pic/%E5%8C%BA%E5%9D%97%E9%93%BE%E9%80%BB%E8%BE%91%E6%9E%B6%E6%9E%84%E5%9B%BE.png)



区块链为智能合约提供执行环境,而智能合约为区块链扩展功能。智能合约赋予了区块链智能的特性,在区块链中智能合约的作用如同一个智能助理,对区块链中的数据和事件按照预先设定的逻辑进行处理。它作为一个在区块链上可以自动执行的计算机程序,可以处理信息,接收、发送和存储资产。
区块链为智能合约提供执行环境,而智能合约为区块链扩展功能。智能合约赋予了区块链智能的特性,在区块链中智能合约的作用如同一个智能助理,
对区块链中的数据和事件按照预先设定的逻辑进行处理。它作为一个在区块链上可以自动执行的计算机程序,可以处理信息,接收、发送和存储资产。

智能合约部署到区块链中,作为区块链的一部分,自然具有区块链不可篡改的特点;部署后也会作为区块在区块链网络中广播,每个节点都会保存一份,所以分布式保证了它的高可靠性;智能合约在满足一定条件后会自动执行,无需人工触发,更不需要三方担保。以上这些特点使得基于智能合约的交易更加安全,高效和低成本。
智能合约部署到区块链中,作为区块链的一部分,自然具有区块链不可篡改的特点;部署后也会作为区块在区块链网络中广播,每个节点都会保存一份,所以分布式保证了它的高可靠性;
智能合约在满足一定条件后会自动执行,无需人工触发,更不需要三方担保。以上这些特点使得基于智能合约的交易更加安全,高效和低成本。

智能合约具有这么多优秀的特质,那我们如何编写它呢?就不得不说到Move语言了。Mysten Labs联合创始人兼首席技术官Sam Blackshear为Diem区块链开发了Move,不过Move旨在成为一个跨平台的嵌入式语言,可不是只能在Diem区块链平台运行,当然也可以在Sui区块链网络中运行, 这就是Sui Move。
智能合约具有这么多优秀的特质,那我们如何编写它呢?就不得不说到Move语言了。Mysten Labs联合创始人兼首席技术官Sam Blackshear为Diem区块链开发了Move,
不过Move旨在成为一个跨平台的嵌入式语言,可以在Sui区块链网络中运行, 这就是Move。

Sui Move准确来说应该是Move On Sui。是在Sui区块链平台上运行的原生语言。开发人员使用它可以创建、管理和操作数字资产,并编写智能合约。Sui Move 引入了以对象为中心的数据存储模型,这使得Sui可以并行处理事务,比串行事务的区块链具有更高性能。从开发的角度,Sui Move 也无需在交易前后做大量关于资产所有权的处理;针对对象的处理也非常简单灵活。
Move准确来说应该是Move On Sui。是在Sui区块链平台上运行的原生语言。开发人员使用它可以创建、管理和操作数字资产,并编写智能合约。
Move 引入了以对象为中心的数据存储模型,这使得Sui可以并行处理事务,比串行事务的区块链具有更高性能。从开发的角度,
Move 也无需在交易前后做大量关于资产所有权的处理;针对对象的处理也非常简单灵活。

接下来让我们使用一个简单的例子来演示一下,使用Sui Move如何操作数据对象,如何在区块链上部署以及如何运行。需要注意的是,初学者先不要陷入细节,只需跟着我的例子,一探Sui Move的宏观即可
接下来让我们使用一个简单的例子来演示一下,使用Move如何操作数据对象,如何在区块链上部署以及如何运行。需要注意的是,初学者先不要陷入细节,只需跟着我的例子,一探Move的宏观即可

```Move
module test::test {
Expand Down Expand Up @@ -49,9 +56,10 @@ module test::test {
}
```

此合约包含两个函数,一个是publish_blog根据传入的content参数,新建一个Blog对象,并把这个Blog对象所有权赋给调用函数的用户地址。另一个则是like_blog修改博客对象的属性,将指定的Blog对象的点赞数加1。
此合约包含两个函数,一个是publish_blog根据传入的content参数,新建一个Blog对象,并把这个Blog对象所有权赋给调用函数的用户地址。
另一个则是like_blog修改博客对象的属性,将指定的Blog对象的点赞数加1。

我们如何将这段代码发布到Sui区块链网络上呢?只需要使用Sui Move命令行工具的publish命令即可。需要注意的是,这个操作会消耗gas(gas这里暂不多做介绍,我们简单理解为付费的一种形式)
我们如何将这段代码发布到Sui区块链网络上呢?只需要使用Move命令行工具的publish命令即可。需要注意的是,这个操作会消耗gas(gas这里暂不多做介绍,我们简单理解为付费的一种形式)

```bash
sui client publish
Expand Down Expand Up @@ -79,16 +87,16 @@ sui client call --package <合约地址> --module <合约模块名> --function p

通过sui client object 命令查看对象可以发现:虽然我们没有显式的对存储做任何操作,但是Blog对象的like_cnt属性值已经加1。

现在我们对Sui Move有了大致的了解,得出了Sui Move 不仅安全、性能高、开发也简单灵活的结论。那我们可以使用它做些什么呢?
现在我们对Move有了大致的了解,得出了Move 不仅安全、性能高、开发也简单灵活的结论。那我们可以使用它做些什么呢?

1.创建智能合约来管理和转移各种类型的数字资产,包括加密货币、代币化资产、非同质化代币(NFT)等

2.Sui Move可以用于编写智能合约,实现去中心化交易、借贷等金融服务;也可以利用智能合约实现去中心化的投票和治理机制;还可以用于NFT和数字艺术领域,确保数字内容的版权和所有权。
2.Move可以用于编写智能合约,实现去中心化交易、借贷等金融服务;也可以利用智能合约实现去中心化的投票和治理机制;还可以用于NFT和数字艺术领域,确保数字内容的版权和所有权。

3.Sui Move可以用于创建数字身份认证系统,使用户能够安全地管理和共享他们的身份信息,同时保护个人隐私。
3.Move可以用于创建数字身份认证系统,使用户能够安全地管理和共享他们的身份信息,同时保护个人隐私。



了解更多Sui Move内容
了解更多Move内容
- telegram: t.me/move_cn
- QQ群: 79489587
4 changes: 2 additions & 2 deletions src/chapter_10.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 10.轻松入门Sui Move: 动态字段
## 10.轻松入门Move: 动态字段

在第八章我们讲被嵌套的对象的时候,举了一个例子:人(Person对象)可能拥有0个或者多个笔记本电脑,但在实际生活中,我们不仅仅可以拥有笔记本电脑,我们还可以拥有平板电脑、手机、台式机、游戏机等电子设备。那Person对象的定义将会变成如下:

Expand Down Expand Up @@ -200,7 +200,7 @@ public entry fun delete_person(mut person: Person, _: &mut TxContext) {



了解更多Sui Move内容
了解更多Move内容

- telegram: t.me/move_cn
- QQ群: 79489587
Expand Down
4 changes: 2 additions & 2 deletions src/chapter_11.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 11.轻松入门Sui Move: Bag和Table
## 11.轻松入门Move: Bag和Table

上一章我们讲到使用动态字段可以给Person对象动态添加电子设备的例子,因为无法直接获取Person对象的动态字段个数,在删除Person对象之前,具体应该删除多少个动态字段也是不确定的,所以其实特别容易漏删,造成资源浪费。

Expand Down Expand Up @@ -177,7 +177,7 @@ Table、ObjectTable、ObjectBag的用法都跟Bag一样,这里就不再赘述



了解更多Sui Move内容
了解更多Move内容

- telegram: t.me/move_cn
- QQ群: 79489587
Expand Down
4 changes: 2 additions & 2 deletions src/chapter_12.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 12.轻松入门Sui Move: 父子对象
## 12.轻松入门Move: 父子对象

我们在第八章讲对象的类别的时候,讲到独有对象,它只属于一个账户或者对象,只有这个账户或者对象可以对其进行访问、删除、修改和转交。这是因为Move并没有区分转交的目标是一个账户的地址还是一个对象ID。当一个对象被转交给另一个对象的时候,这两个对象就形成了父子关系,为了方便下面我统一将被转交的对象称之为子对象,作为owner的另一个对象称之为父对象。

Expand Down Expand Up @@ -147,7 +147,7 @@ ReturnReceipt结构体是一个hot potato结构体,主要保存父子对象映



了解更多Sui Move内容
了解更多Move内容

- telegram: t.me/move_cn
- QQ群: 79489587
Expand Down
4 changes: 2 additions & 2 deletions src/chapter_13.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 13.轻松入门Sui Move: 事件和泛型
## 13.轻松入门Move: 事件和泛型

### 事件

Expand Down Expand Up @@ -148,7 +148,7 @@ coin对象包含Balance类型的字段,而Balance包含phantom类型参数,
了解更多Sui Move内容
了解更多Move内容
- telegram: t.me/move_cn
- QQ群: 79489587
Expand Down
4 changes: 2 additions & 2 deletions src/chapter_14.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 14.轻松入门Sui Move: 集合(上)
## 14.轻松入门Move: 集合(上)

这一章我们将讲解如何保存数据的集合。说到数据的集合首先想到的肯定是数组,Move标准库给我们提供了vector模块以支持数组类型。

Expand Down Expand Up @@ -286,7 +286,7 @@ pop_max每次一定会输出堆内最大值,多次调用直到堆内无数据,



了解更多Sui Move内容
了解更多Move内容

- telegram: t.me/move_cn
- QQ群: 79489587
4 changes: 2 additions & 2 deletions src/chapter_15.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 15.轻松入门Sui Move: 集合(下)
## 15.轻松入门Move: 集合(下)

除了上一章提到的vector和PriorityQueue类型是集合外,还有我们讲动态字段的时候讲到的bag(object_bag)、table(object_table)、dynamic_filed(dynamic_object_field)等,这些已经讲过我们不再赘述。这一章我们将探究Move给我们提供了哪些额外实用的集合结构体。

Expand Down Expand Up @@ -128,7 +128,7 @@ VecSet是基于vector实现的,是一个保证没有重复的数据集合。



了解更多Sui Move内容
了解更多Move内容

- telegram: t.me/move_cn
- cQQ群: 79489587
4 changes: 2 additions & 2 deletions src/chapter_16.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 16.轻松入门Sui Move: 升级(上)
## 16.轻松入门Move: 升级(上)

在编写合约部署上链后,如果发现有Bug怎么办?在web2中我们可以修改代码,重新部署即可。但是在Move中包是一个不可变对象,也就是说一旦发布就无法修改和删除,以此保证不会因为修改线上包对使用者造成不可预见的问题。不过虽然无法修改链上合约,但Move提供了一个升级包的方法来重新生成一个包。下面我先演示一下升级的方法。

Expand Down Expand Up @@ -197,7 +197,7 @@ https://docs.sui.io/concepts/sui-move-concepts/packages/upgrade



了解更多Sui Move内容
了解更多Move内容

- telegram: t.me/move_cn
- cQQ群: 79489587
4 changes: 2 additions & 2 deletions src/chapter_17.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 17.轻松入门Sui Move: 升级(下)
## 17.轻松入门Move: 升级(下)

上一章我们讲到UpgradeCap的定义,讲到它有一个policy字段表示这个包使用的升级策略。那Move内置的升级策略有哪些呢?

Expand Down Expand Up @@ -239,7 +239,7 @@ sui client call --gas-budget 10000000 \

https://docs.sui.io/concepts/sui-move-concepts/packages/custom-policies

了解更多Sui Move内容
了解更多Move内容

- telegram: t.me/move_cn
- QQ群: 79489587
Expand Down
4 changes: 2 additions & 2 deletions src/chapter_18.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 18.轻松入门Sui Move: 设计模式
## 18.轻松入门Move: 设计模式

今天要介绍两个比较常见的设计模式烫手山芋和一次性见证者,烫手山芋可以保证函数调用完必须调用某类函数,而一次性见证者则可以保证函数只会执行一次。

Expand Down Expand Up @@ -183,7 +183,7 @@ https://docs.sui.io/concepts/sui-move-concepts/one-time-witness



了解更多Sui Move内容
了解更多Move内容

- telegram: t.me/move_cn
- QQ群: 79489587
Expand Down
14 changes: 7 additions & 7 deletions src/chapter_2.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# 2.轻松入门Sui Move: 搭建开发环境
在编写Sui Move程序之前,需要先安装开发环境,所以本章将介绍如何安装开发环境。
# 2.轻松入门Move: 搭建开发环境
在编写Move程序之前,需要先安装开发环境,所以本章将介绍如何安装开发环境。

安装开发环境有三种方式:

Expand Down Expand Up @@ -71,11 +71,11 @@ rustup是一个管理工具链,用于管理不同平台下的 Rust 构建版

vscode编辑器的安装教程,网上已经有很多,这里不再赘述。[详见](https://blog.csdn.net/msdcp/article/details/127033151)

这里要着重讲的是安装Sui Move Analyzer
这里要着重讲的是安装Move Analyzer

Sui Move Analyzer是由MoveBit开发的适用于sui-move语言的Visual Studio代码插件,它有许多有用的功能,如高亮显示、自动完成、转到定义/引用等。
Move Analyzer是由MoveBit开发的适用于sui-move语言的Visual Studio代码插件,它有许多有用的功能,如高亮显示、自动完成、转到定义/引用等。

vscode安装好后,点击侧边栏EXTENSIONS,在搜索栏搜索Sui Move Analyzer选中后,不要直接点击安装,先查看安装说明,这里有几点需要注意:
vscode安装好后,点击侧边栏EXTENSIONS,在搜索栏搜索Move Analyzer选中后,不要直接点击安装,先查看安装说明,这里有几点需要注意:

1.如果已经安装move-analyzer 或者 aptos-move-analyzer的需要先disable掉,避免产生冲突

Expand All @@ -97,11 +97,11 @@ vscode安装好后,点击侧边栏EXTENSIONS,在搜索栏搜索Sui Move Analyz



现在既有编辑器、gas、运行环境都准备好了,那我们可以开始我们的Sui Move之旅啦
现在既有编辑器、gas、运行环境都准备好了,那我们可以开始我们的Move之旅啦



了解更多Sui Move内容
了解更多Move内容

- telegram: t.me/move_cn
- QQ群: 79489587
4 changes: 2 additions & 2 deletions src/chapter_20.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 20.轻松入门Sui Move: 对象的展示
# 20.轻松入门Move: 对象的展示

SUI提供了一个模板引擎,可以使用它将对象的数据转换为模板对象定义的键值对,来实现对链上对象的链下展示管理。

Expand Down Expand Up @@ -132,7 +132,7 @@ const rpcObject = await toolbox.client.getObject({

https://docs.sui.io/standards/display

了解更多Sui Move内容
了解更多Move内容

- telegram: t.me/move_cn
- QQ群: 79489587
Expand Down
8 changes: 4 additions & 4 deletions src/chapter_3.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## 3.轻松入门Sui Move: 清单文件和模块
## 3.轻松入门Move: 清单文件和模块

按照国际惯例,学习一门语言,编写的第一个程序一定是输出一个Hello World。今天我们也来一起写一个Hello World并以此引出一些Sui Move项目结构,并作详细介绍
按照国际惯例,学习一门语言,编写的第一个程序一定是输出一个Hello World。今天我们也来一起写一个Hello World并以此引出一些Move项目结构,并作详细介绍

首先我们新建一个名为hello_world的项目,使用命令:

Expand Down Expand Up @@ -99,7 +99,7 @@ module <包的地址>::<模块名称> {
- 直接引用:

```rust
struct HelloWorldObject has key, store {
public struct HelloWorldObject has key, store {
id: UID,
text: std::string::String //直接引用std::string模块的utf8方法
}
Expand Down Expand Up @@ -200,7 +200,7 @@ sender(ctx)//直接调用函数



了解更多Sui Move内容
了解更多Move内容

- telegram: t.me/move_cn
- QQ群: 79489587
Expand Down
Loading

0 comments on commit a879502

Please sign in to comment.