開發你在Sui上的第一個智能合約(上)
本篇文章要分享怎麼用Sui Move
開發智能合約,並且在Sui上發佈你第一個智能合約!
就算不太知道Move怎麼寫,也可以照抄一遍,相信就會對Move和Sui有進一步的了解,那我們開始吧!
事前準備
首先我們要先安裝好Sui的程式,若是還沒安裝的話,請先閱讀Sui開發環境建置的文章,再回來這篇文章
如果已經安裝的話可以直接繼續往下
初始化專案
輸入以下命令初始化你的專案:
1 | sui move new my_first_package |
專案裡面的結構長這樣:
1 | my_first_package |
Move.toml
是專案的設定檔sources
就是你放Move程式的地方
專案設定檔
我們可以先來看一下設定檔Move.toml
1 | [package] |
[package]
就是放專案的基本資料,[dependencies]
是需要用到的一些sui程式庫,這邊也可以放別人寫好的package
,my_first_package
是你package
的地址,當你發布自己的package之後,你會拿到一個object ID
,如果你想要讓別人可以使用你的package,就把my_first_package的0x0
改成你的object ID
,並且推到github上。sui = "0x2"
就是在用sui的package,0x2
這邊是簡寫,代表16進位的0000000000000000000000000000000000000002
模組(Module)範例
一個package裡面可以有很多個模組,模組可以存放在sources
資料夾底下,副檔名會是.move
,以下我們來看官方的一個move模組教學範例,可以分成不同的區塊來閱讀,註解裡有寫Part 1
, Part 2
…等,我們可以先輸入以下命令來產生一個move檔案:
1 | touch my_first_package/sources/my_module.move |
接著把下面的code貼到檔案裡面:
1 | module my_first_package::my_module { |
Part 1是Import,使用關鍵字use
,sui::object::{Self, UID}裡面的Self,代表sui::object,在code裡面可以直接使用object
,UID對應到的是sui::object::UID,在code裡面也是直接使用UID就可以了。在sui裡面很多東西都是一個物件(object),比如說NFT, coin…等,sui::transfer::transfer可以用來轉移物件的所有權。sui::tx_context::TxContext,若是放在一個函數的最後一個變數,當我們呼叫合約的時候,這個參數就會自動傳入。
Part 2是結構的定義,關鍵字key
代表,這個東西可以被存在區塊鏈上,store
代表可以這個東西可以被存在某個擁有key
關鍵字的物件裡面。
Part 3在Sui Move
裡面,當模組被publish時,會執行init
這個function,也是跟原本Move不一樣的地方之一
Part 4是一些可以讀取struct attributes的函數
Build package
現在讓我們來試試Build專案吧!首先確認自己在my_first_package
目錄
然後輸入以下命令
1 | sui move build |
應該會看到以下結果
恭喜你build了第一個Sui move package!
下一次會跟大家分享下集,如何為你的智能合約撰寫測試還有發布合約到Sui區塊鏈上!