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

  • huahua
  • 更新于 2天前
  • 阅读 68

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

系列文章目录

Task1:hello move🚪 Task2:move coin🚪

前言

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

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

HOH社区# 什么是 Sui 链?

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

Sui 链的主要特点:

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

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

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

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

什么是 Move 编程语言?

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

Move 语言的主要特点:

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

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

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

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

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

    
    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 参考等。(https://docs.sui.io/)

- move学习B站视频🚪:通过 B 站的视频教程,跟随导师学习 Move 编程语言的基础与进阶。(https://www.bilibili.com/video/BV1BMD8Y2EfE/)

- letsmove仓库🚪:这是一个 Move 学习资源的 GitHub 仓库,包含了各种示例代码和教程,帮助开发者掌握 Move 语言。https://github.com/move-cn/letsmove

# 一、 安装sui环境  

sui官网安装教程🚪(https://docs.sui.io/guides/developer/getting-started/sui-install)要开发 Sui 区块链应用,首先需要安装 Sui 的开发环境。以下是 **windows系统** 安装 Sui 环境的步骤:  
## 1. 下载解压sui  

首先访问sui环境的github仓库🚪(https://github.com/MystenLabs/sui),在右下角找到release版本![](https://img.learnblockchain.cn/attachments/2024/11/V5EyjK5H673c3575a96f1.jpg)在版本的 **Assets** 部分中,选择windows操作系统对应的`.tgz`压缩文件,下载并解压![](https://img.learnblockchain.cn/attachments/2024/11/QTCtRqQM673c356a91d0b.jpg)  
## 2. 配置环境变量  

解压完成后,配置环境变量,电脑搜索高级系统设置,点击环境变量![](https://img.learnblockchain.cn/attachments/2024/11/V2dNK7og673c357102f9d.jpg)![](https://img.learnblockchain.cn/attachments/2024/11/VI8YxRf3673c357aeed01.jpg)在系统变量中找到 **Path** 变量,添加一条刚才解压 **sui** 的文件夹路径,然后一直点击"确定"按钮直到关闭高级系统设置![](https://img.learnblockchain.cn/attachments/2024/11/gIX0rio0673c35792981a.jpg)![](https://img.learnblockchain.cn/attachments/2024/11/8m8dO0Rh673c3579ba73f.jpg)  

在cmd命令行输入`sui --version`命令查看是否安装成功![](https://img.learnblockchain.cn/attachments/2024/11/S8bXYFli673c357ba5afc.jpg)  
# 二、安装vscode插件  

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

 **安装步骤:**   

1. 打开  **VSCode** ,进入扩展商店(快捷键:`Ctrl+Shift+X`),搜索`move`,安装如下两个插件![](https://img.learnblockchain.cn/attachments/2024/11/w3gtWgW8673c357666a00.jpg)

1. 插件安装完成后,要经过设置才能使用![](https://img.learnblockchain.cn/attachments/2024/11/AuVnpfvP673c356d02c08.jpg)`lint`设置为`all`,并点击 **在 settings.json 中编辑** ![](https://img.learnblockchain.cn/attachments/2024/11/z0Kdv9zM673c357040db9.jpg)修改设置如下,其中`server.path`和`sui.path`的路径为第一步解压sui的时候的路径![](https://img.learnblockchain.cn/attachments/2024/11/zvCBzt8b673c35771f228.jpg)![](https://img.learnblockchain.cn/attachments/2024/11/gnvsZYar673c3571bfa73.jpg)

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

# 三、使用 Sui 钱包 Suiet  

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

访问Suiet下载链接🚪(https://chromewebstore.google.com/detail/suiet-sui-wallet/khpkpbbcccdmmclmpigdgddabeilkdpd)安装![](https://img.learnblockchain.cn/attachments/2024/11/heqb8EWp673c3577c6eaa.jpg)  
## 2. 创建Suiet钱包  

安装并启动钱包后,创建一个新钱包,记住钱包的助记词(用于恢复钱包)![](https://img.learnblockchain.cn/attachments/2024/11/hrzWbW1A673c357c47373.jpg)  
## 3. 获取sui代币  

获取测试 SUI 代币:通过  **Sui Faucet**  获取免费的测试代币,用于支付合约部署和交易的费用。进入钱包之后,切换网络为`testnet`测试网,再点击`Faucet` 获取测试 SUI![](https://img.learnblockchain.cn/attachments/2024/11/feFBmtei673c357291b91.jpg)  
# 四、部署第一个 Move 合约(HelloMove)  

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

拉取letsmove仓库🚪(https://github.com/move-cn/letsmove)代码  
> ❝  
> PS:最好使用SSH连接拉取,因为代码过大,用HTTPS链接可能会出现错误,SSH则更加稳定,配置SSH详细教程请看3.1部分🚪(https://blog.csdn.net/Huahua_1223/article/details/140450754)  

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


![](https://img.learnblockchain.cn/attachments/2024/11/hwKmjYrw673c357d8f491.jpg)在这里插入图片描述  
复制一份项目里的`/mover/001`文件夹在`mover`文件夹里面,并修改为自己的 **github** 的 **id** ,如`huahuahua1223`就是我的 **github** 的 **id** ![](https://img.learnblockchain.cn/attachments/2024/11/MlWIc4Yl673c356dddb47.jpg)  
## 2. 创建新项目  

首先,在`code/task1/`文件夹下使用  **Sui CLI**  创建一个新的 Move 项目:  

sui move new hello_move


该命令会在当前目录下创建一个新的 `hello_move` 目录,包含了一个基本的 Move 项目模板:![](https://img.learnblockchain.cn/attachments/2024/11/W7XC4qxL673c35741cd77.jpg)  
## 3. 部署合约  

 **步骤一** :进入 `hello_move` 项目目录,第一次输入`sui client publish`则会创建一个用于部署合约的账户![](https://img.learnblockchain.cn/attachments/2024/11/sq1ll506673c357ccbe4d.jpg)  

 **步骤二** :依次输入`"y"`,`"回车"`,`"0"`即可生成一个带有助记词的账户![](https://img.learnblockchain.cn/attachments/2024/11/RHPg6TOQ673c357389b86.jpg)  

 **步骤三** :这时要在测试网部署合约,还需要一些测试代币(SUI),可以通过 Sui 的  **Faucet**  功能获取:`sui client faucet`,或者把生成的账户导入到 **Suiet** 钱包中通过 **Faucet** 按钮获取测试代币![](https://img.learnblockchain.cn/attachments/2024/11/d5U57KJp673c357a6f3f5.jpg)![](https://img.learnblockchain.cn/attachments/2024/11/EYxbYxeW673c356f0908b.jpg)  

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

sui client addresses sui client gas


![](https://img.learnblockchain.cn/attachments/2024/11/poD2dzTw673c357e7e454.jpg)在这里插入图片描述  
 **步骤五** :部署合约
现在,你可以部署 Move 合约到 Sui 测试网了。使用以下命令进行合约发布:  

sui client publish --gas-budget 100000000



这条命令会将 `hello_move` 合约部署到 Sui 测试网上,并消耗一定数量的 SUI 代币作为费用![](https://img.learnblockchain.cn/attachments/2024/11/rJNChPSC673c3574c155c.jpg)返回的几个信息为 **事务数据(Transaction Data)、事务效果(Transaction Effects)、事务块事件(transaction block events)、对象更改(Object Changes)和余额更改(Balance Changes)** ![](https://img.learnblockchain.cn/attachments/2024/11/1p9ZBrzt673c3578836e2.jpg)在  **对象更改(Object Changes)**  中找到`PackageID`去 sui区块链浏览器🚪(https://suiscan.xyz/testnet/home)中查看,如果能找到结果就说明你成功部署了第一个 **Move** 合约🎉🎉🎉![](https://img.learnblockchain.cn/attachments/2024/11/txhdMKoR673c356e85f57.jpg)  
## 4. 提交代码  

剩下的提交PR等详细教程请看震惊!原来贡献开源代码这么简单,分分钟上手!🚪(https://hua1223.blog.csdn.net/article/details/143079404)  
# 总结  

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

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

0 条评论

请先 登录 后评论
huahua
huahua
0xbdd3...53C1
感谢您抽出时间阅读或观看这个简介,制作不易,感谢关注!如果您有任何问题或建议,请随时与我联系。谢谢!v:HHHHHH_1223