从‘我不会’到‘我会了’，一起玩 Move 合约开发

随着区块链技术的飞速发展，越来越多的开发者开始寻求更高效、更安全的区块链平台，以支持去中心化应用（DApps）的快速发展。Sui 链和Move 编程语言作为新兴的区块链解决方案，以其创新的设计理念和技术优势，正在成为开发高性能区块链应用的理想选择。

本文将介绍 Sui 链 和 Move 编程语言 的基本概念、优势，以及它们如何改变区块链应用的开发方式，并通过Move 共学活动中的Task1任务，帮助大家快速入门并实践部署第一个 Move 合约。

什么是 Sui 链？

Sui 是一个高性能的区块链平台，旨在为去中心化应用提供快速、安全且可扩展的基础设施。它由 Aptos Labs 团队开发，基于新型的共识协议 ——Narwhal & Tusk。Sui 的设计目标是解决区块链性能瓶颈，提供极高的交易吞吐量和低延迟，适应复杂应用场景的需求。

Sui 链的主要特点：

高吞吐量与低延迟： Sui 的共识机制允许并行处理大量交易，而无需等待整个网络的全局共识。这种并行化的设计能够实现每秒处理成千上万的交易，极大提高了区块链的吞吐量，并减少交易确认的延迟。

面向对象的资源管理： Sui 将区块链中的资源视为对象进行管理。这些资源（例如代币、NFT）有独立的标识符，能够被直接跟踪和操作。通过这种方式，Sui 可以在多个节点之间高效并行地处理资源，而不需要处理全局状态，进一步提升性能。

灵活的交易模型： Sui 提供了灵活且高效的交易模型，支持在多个资源对象之间并行执行交易。这意味着不同用户的交易可以独立且高效地进行，避免了传统区块链的性能瓶颈。

高效的账户和权限管理： Sui 提供了多样化的账户管理机制，可以应对去中心化应用中复杂的权限需求。无论是个人账户、智能合约账户，还是多签账户，都能灵活配置和管理。

什么是 Move 编程语言？

Move 是专为区块链开发设计的编程语言，最初由 MetaLibra（后来的 Diem）团队开发，后被 Sui 区块链采用。Move 的设计重点是资源的管理、所有权的控制以及类型安全，它特别适用于处理去中心化应用中的资产和数字资源。

Move 语言的主要特点：

资源类型系统： Move 语言将所有的资源（如代币、NFT、智能合约中的数据等）视为 “资源类型”。这些资源在系统中不能被复制或销毁，只能转移或借用。这确保了每个资源的唯一性和安全性，从根本上避免了传统智能合约中的资源丢失和重复转移问题。

所有权与借用机制： Move 通过严格的所有权和借用机制管理资源。每个资源都有一个唯一的所有者，资源的借用必须显式声明，这种机制避免了 “共享资源” 时的安全隐患。资源的借用可以确保开发者在不修改资源所有权的前提下共享和操作资源。

模块化编程： Move 支持模块化的编程结构，每个模块可以包含不同的资源类型和函数。模块化设计使得代码更加清晰、可复用，并有助于提高开发效率和降低代码出错的概率。

类型安全与可验证性： Move 是一门强类型语言，这意味着开发者必须在编译时明确地定义每个变量和资源的类型。Move 的类型系统能够确保合约中的大部分错误在编译阶段就被发现，从而避免了运行时错误，提高了智能合约的安全性。

Move 语言的示例代码：
以下是一个简单的 Move 合约示例，展示了如何创建和转移一个名为 Coin 的资源：

Copy
address 0x1 {
module CoinModule {
resource struct Coin has store {
value: u64,
}

public fun create_coin(value: u64): Coin {
Coin { value }
}

public fun transfer_coin(coin: Coin, recipient: address): Coin {
let new_coin = Coin { value: coin.value };
// 这里可以执行实际的转账操作
return new_coin;
}
}
}

在这个示例中，Coin 是一个资源类型，包含一个 value 字段，表示代币的值。create_coin 函数用来创建新的 Coin 资源，而 transfer_coin 函数则用于将 Coin 资源转移到指定的账户。

Move 共学活动：快速上手 Move 开发

为了帮助更多开发者快速了解和掌握 Move 编程语言，Move 共学活动由 HOH 社区、HackQuest、OpenBuild、KeyMap 联合发起。该活动旨在为新手小白提供一个良好的学习平台，带领大家一步步熟悉 Move 语言，并了解如何将其应用到 Web3 开发中。

通过与 Move 领域的专业导师们合作，参与者可以快速掌握 Move 语言的基础知识，逐步向更复杂的应用开发进阶。无论是区块链初学者，还是有一定开发经验的工程师，都能从中获益。

资源链接：

sui 官方文档🚪：获取关于 Sui 链的详细文档，包括开发指南、API 参考等。

move 学习 B 站视频🚪：通过 B 站的视频教程，跟随导师学习 Move 编程语言的基础与进阶。

letsmove 仓库🚪：这是一个 Move 学习资源的 GitHub 仓库，包含了各种示例代码和教程，帮助开发者掌握 Move 语言。

一、 安装 sui 环境

sui 官网安装教程🚪
要开发 Sui 区块链应用，首先需要安装 Sui 的开发环境。以下是windows 系统安装 Sui 环境的步骤：

1. 下载解压 sui

首先访问 sui 环境的github 仓库🚪，在右下角找到 release 版本

在版本的Assets部分中，选择 windows 操作系统对应的.tgz压缩文件，下载并解压

2. 配置环境变量

解压完成后，配置环境变量，电脑搜索高级系统设置，点击环境变量

在系统变量中找到Path变量，添加一条刚才解压sui的文件夹路径，然后一直点击 "确定" 按钮直到关闭高级系统设置

在 cmd 命令行输入sui --version命令查看是否安装成功

二、安装 vscode 插件

为了方便开发 Move 合约，我们推荐安装 VSCode 编辑器以及 Move 插件。通过插件，可以享受语法高亮、代码补全、合约调试等功能，提升开发效率。

安装步骤：

打开 VSCode，进入扩展商店（快捷键：Ctrl+Shift+X），搜索move，安装如下两个插件

插件安装完成后，要经过设置才能使用

lint设置为all，并点击在 settings.json 中编辑

修改设置如下，其中server.path和sui.path的路径为第一步解压 sui 的时候的路径

设置完成后，重启 VSCode 编辑器，确保插件生效。

三、使用 Sui 钱包 Suiet

在 Sui 测试网上部署合约之前，需要准备一个钱包来管理 Sui 代币，并支付交易费用。Suiet 是 Sui 钱包的一种实现，可以用来轻松管理和转账 Sui 代币。

1. 下载 Suiet 钱包

访问Suiet 下载链接🚪安装

2. 创建 Suiet 钱包

安装并启动钱包后，创建一个新钱包，记住钱包的助记词（用于恢复钱包）

3. 获取 sui 代币

获取测试 SUI 代币：通过 Sui Faucet 获取免费的测试代币，用于支付合约部署和交易的费用。进入钱包之后，切换网络为testnet测试网，再点击Faucet 获取测试 SUI

四、部署第一个 Move 合约（HelloMove）

现在，我们已经安装好了 Sui 环境、VSCode 插件，并配置好了钱包，接下来让我们编写并部署第一个 Move 合约

1. 拉取代码

拉取letsmove 仓库🚪代码

PS：最好使用 SSH 连接拉取，因为代码过大，用 HTTPS 链接可能会出现错误，SSH 则更加稳定，配置SSH 详细教程请看 3.1 部分🚪

Copy
git clone git@github.com:move-cn/letsmove.git

复制一份项目里的/mover/001文件夹在mover文件夹里面，并修改为自己的github的id，如huahuahua1223就是我的github的id

2. 创建新项目

首先，在code/task1/文件夹下使用 Sui CLI 创建一个新的 Move 项目：

Copy
sui move new hello_move

该命令会在当前目录下创建一个新的 hello_move 目录，包含了一个基本的 Move 项目模板：

3. 部署合约

步骤一：进入 hello_move 项目目录，第一次输入sui client publish则会创建一个用于部署合约的账户

步骤二：依次输入"y"，"回车"，"0"即可生成一个带有助记词的账户

步骤三：这时要在测试网部署合约，还需要一些测试代币（SUI），可以通过 Sui 的 Faucet 功能获取：sui client faucet，或者把生成的账户导入到Suiet钱包中通过Faucet按钮获取测试代币

步骤四：查看当前部署账户地址，在部署合约之前，可以检查你的账户余额，确保有足够的 SUI 代币来支付交易费用：

Copy
sui client addresses
sui client gas

步骤五：部署合约
现在，你可以部署 Move 合约到 Sui 测试网了。使用以下命令进行合约发布：

Copy
sui client publish --gas-budget 100000000

这条命令会将 hello_move 合约部署到 Sui 测试网上，并消耗一定数量的 SUI 代币作为费用
返回的几个信息为事务数据 (Transaction Data)、事务效果 (Transaction Effects)、事务块事件 (transaction block events)、对象更改 (Object Changes)和余额更改 (Balance Changes)

在 对象更改 (Object Changes) 中找到PackageID去 sui 区块链浏览器🚪中查看，如果能找到结果就说明你成功部署了第一个Move合约🎉🎉🎉

4. 提交代码

剩下的提交 PR 等详细教程请看震惊！原来贡献开源代码这么简单，分分钟上手！🚪

总结

通过本文，我们详细介绍了如何在 Sui 环境中搭建开发环境，并快速入门使用 Move 编程语言编写和部署智能合约。文章从 Sui 链的安装与配置开始，逐步讲解了如何设置开发环境、安装必要的工具和插件，以及如何创建和部署第一个 Move 合约。我们还深入探讨了 Sui 链的高吞吐量和低延迟特性，及 Move 编程语言在资源管理和安全性方面的优势。通过实际操作步骤和代码示例，本文帮助你快速掌握了 Sui 区块链开发的基础。

如果你想进一步提高自己的 Move 编程能力，可以加入 Move 共学活动，通过与导师和社区成员的互动，快速成长。希望这篇博客对你入门 Sui 和 Move 开发有所帮助，祝你在区块链开发的道路上越走越远！如果你有任何疑问或建议，欢迎在评论区留言讨论🌹