用 ChatGPT 寫第一個 Move 合約程式

作者:師大科技系 PecuLab 蔡芸琤 (Pecu)

因為,這兩週被 ChatGPT 洗版,就打算來試試看,請教 ChatGPT 寫 Move 會不會跑出一個可執行的版本。

給 ChatGPT 一個最簡單的 Move 範例,再給定要創作的任務。Please use the same programming language to write a smart contract that has the characteristics of virtual economics.

ChatGPT 有模有樣地寫了一個有鑄造和轉帳功能的智能合約,連程式碼的說明文都寫得很不錯。

請 ChatGPT 把 FT 改成 NFT 版本的樣子,這兩者的程式碼非常相近,但有抓到 FT 和 NFT 的精神,開始有一個 Move 初學者的樣子了,覺得很有趣,打算再繼續餵給 ChatGPT 其他的範例程式,看看是否有機會讓自己變成開規格的人,ChatGPT 就會自動幫忙生出不太差的程式,我來微調修改就好。

改成 NFT 版本,接下來要試試看編譯會不會通過。

要微調的地方只有第一行的 module 0xCAFE::VirtualEconomy

改成 Move 專案的名字 module hello_blockchain::VirtualEconomy。

並且把 aptos init 產生的 dev-address 加入專案設定檔中。

apto init,產生出的專案 address 要記下來,放入專案設定檔中。

因為預設的測試鏈在 devnet 上,所以要自行增加 dev-addresses。

最後要執行編譯啦!

# aptos move compile --named-addresses hello_blockchain=default

編譯就這樣通過了,ChatGPT 太強了!

我不會說 ChatGPT 會寫程式之後,厲害的軟體工程師會失業,我反而樂見這樣的好工具,可以讓會思考的軟體工程師,可以更專注在怎麼去構思一個好的程式架構,剩下的讓 ChatGPT 去完成一部分的半成品之後,程式開發經驗老到的工程師,就像老師要改作文一樣,要知道怎麼修正這個半成品。

這讓我想到,我剛加入高速公路收費 ETC 稽核系統專案的那個菜鳥樣,雖然我那時候會寫程式了,但對於整個 ETC 架構不了解的時候,還是資深工程師先把 High Level Design 設計好,把 UML 畫好,把重要 Function 開好,然後讓我去填那些 Function 裡面的邏輯細節,並且在我每次提交程式碼到 git 的時候,幫我 review 哪裡沒寫對。

但絕對不是幫我處理編譯不過的程式碼 (編譯不過是不能提交的),但編譯過了才是 debug 地獄的開始,因為要搞清楚自己的撰寫邏輯是否符合功能需求,是否有把防呆寫好,是否有考慮到執行效能等編譯通過之後的程式邏輯合理性。

ChatGPT 真的是一個劃時代的好工具,接下來我做個不負責任的預測,下個世界的競爭,是擁有創造力與善用AI工具的人能過得比較有選擇的人生,好好擁抱這個世界的來臨吧!

如果說,Google解放了背誦與記憶式的學習模式,那ChatGPT就是解放了OOO (歡迎大家來填入)。