系列文章目錄#
Task1:hello move🚪
Task2:move coin🚪
Task3:move nft🚪
Task4:move game🚪
更多精彩內容,敬請期待!✌️
@TOC
前言#
隨著區塊鏈技術的飛速發展,越來越多的開發者開始尋求更高效、更安全的區塊鏈平台,以支持去中心化應用(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
的資源:
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 部分🚪
git clone [email protected]:move-cn/letsmove.git
複製一份項目裡的/mover/001
文件夾在mover
文件夾裡面,並修改為自己的github的id,如huahuahua1223
就是我的github的id
2. 創建新項目#
首先,在code/task1/
文件夾下使用 Sui CLI 創建一個新的 Move 項目:
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 代幣來支付交易費用:
sui client addresses
sui client gas
步驟五:部署合約
現在,你可以部署 Move 合約到 Sui 測試網了。使用以下命令進行合約發布:
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 開發有所幫助,祝你在區塊鏈開發的道路上越走越遠!如果你有任何疑問或建議,歡迎在評論區留言討論🌹
更多精彩內容,歡迎關注系列文章目錄!
我們在探索 Move 的道路上共同成長,不見不散! 🎉