所有文章

【SUI Move 智能合約工作坊】圓滿成功

【SUI Move 智能合約工作坊】圓滿成功

籌備許久的的【SUI Move智能合約工作坊】圓滿成功,非常感謝合作夥伴 KryptoCamp、腦哥、酷可實驗室、ACE 王牌交易所、AWS 大力相挺,因為有你們的協助,這場活動才能如此順利。 還記得剛開始對 SUI Move 一竅不通的我們,透過 Co-SUI 讀書會的形式不斷累計開發及分享經驗,從撰寫一支合約都困難重重的我們,到讀懂幾乎所有的官方程式碼,過程雖然艱辛,但我們非常享受。 我們深知對沒有學過 Rust 程式語言的人來說,進到 SUI 新生態開發的門檻很高,於是和夥伴討論後,決定籌備這場工作坊活動,希望可以讓大家在開發 SUI Move 的時候少走一些冤枉路。
byCo-SUI-2023-10-12
繼續閱讀
Solidity 工程師實戰營預約報名

Solidity 工程師實戰營預約報名

以太坊和區塊鏈技術是多年來最具顛覆性的科技力量。 如果我們能夠善用區塊鏈科技,我們就有能力站上國際舞台, 如果我們能夠掌握這股力量,我們就有能力改變世界。 區塊鏈應用如 DeFi, NFT, GameFi 需求持續增長,Dapp 開發需要大量的區塊鏈工程師。 區塊鏈工程師成為最炙手可熱的人才,年薪百萬台幣起跳甚至不少職缺是超過 300 萬台幣以上, 有些海外公司職缺甚至開出年薪至少 500 萬台幣來吸引工程師人才。 本實戰營的目標就是協助你: 「 成為能獨立開發 DApp 的區塊鏈工程師,轉職理想的團隊與公司,開啟 Web3 與區塊鏈產業的職涯!」 如果你也有意願完成實戰營,歡迎預填申請,申請後會再收到一份學習評估問卷, 幫助你評估是否能完成密集的訓練。 🚀 預約流程: 填寫預約報名表申請 ,申請後將收到「學習評估表」通過審核後,於下次實戰營開課前將通知開營時程
byKryptoCamp-2023-05-31
繼續閱讀
一位 NFT 工程師的自白:KryptoCamp 如何幫助 Ray Huang 的區塊鏈技能再升級?

一位 NFT 工程師的自白:KryptoCamp 如何幫助 Ray Huang 的區塊鏈技能再升級?

是否有注意到日前的一則新聞,華語最大原創音樂平台街聲 StreetVoice 攜手擁有互動式音樂NFT技術的 Pluto Lab 新創團隊,共同打造了 Web 3.0 音樂 NFT 孵化器,讓音樂的創作能再次充滿更多可能性,而這個跨界合作也為 NFT 在台灣市場揭開了序幕。 「我們可以說是國內相當早推動 NFT 的新創團隊,」作為 Pluto Lab 幕後的共同創辦人、同時也是 Term Structure 區塊鏈工程師的 Ray Huang 這麼說。很難想像,眼前這位年輕人竟然以非本科系之姿,卻在區塊鏈及 Web3 的世界做出一番成績,讓人更想探究在 Web3 的世界裡是如何讓 Ray Huang 充滿著熱情與好奇心。 #無師自通,一腳跨入Web3世界 大學主修機械工程的 Ray 表示,早在大一、大二的時候他就發現自己除了學業之外,對於課本中沒有教的 Web3 世界充滿想像,也因此 20 出頭歲的他很快就把目標轉移到創業這個選項。相比於 Web2 時代的雙向溝通,Web3 將使用者帶入到能對於數位資產擁有支配的權力,能夠交易、贈與等行為,也為這個應用帶來了更多不同於Web2時代的應用場景。 不過創業說來簡單,正是因為 Web3 有著不同於 Web2 的概念,也因此 Ray 帶著好奇心開始在網路上爬梳各種教學。「不過當時台灣對智能合約這塊能進修的內容相對薄弱,」也因此,Ray 的自學之路其實相當艱辛。如果從結果論來看,他確實成功與一群志同道合的朋友成立了Pluto Lab,也有相當成功的 NFT 產品問世,但依舊在這個領域中存有些困惑未解。 Ray 坦言,在區塊鏈、NFT的世界裡面有許多全新的應用,即便他是直接跳過 Web2 直接進入到 Web3 的「原住民」,對於應用並沒有太多的牽絆與適應,不過其中衍伸的資安其實是他認為相對困難的領域,也因此當他得知有 KryptoCamp 這個學習平臺的時候,他毫不猶豫地認為即便已經具備了對於區塊鏈、Web3的基本知識,但仍想要來這個殿堂跟老師、同學交流學習。 #循序漸進,靠課程突破自學Web3的盲點 Ray 表示,在經過 8 週 KryptoCamp 的密集訓練課程之後,他認為有幾個相當有幫助的部分。首先,他表示在 KryptoCamp 提供的課程裡,是相當有系統性跟架構的,對比過去自己在網路上搜尋相關資訊來說更有效率,而這對於任何想要了解區塊鏈、或想要成為更專業的 Web3 工程師都是非常有幫助,能透過老師們的專業與課程規劃,循序漸進的掌握區塊鏈世界的語言。 此外,對 Ray 而言比較想要加強的資安部分,他也認為 KryptoCamp 所提供的內容非常有收穫。他表示,在「合約資安觀念與挑戰與基礎合約審計方案」這堂課裡面,老師不僅會以實際案例傳授我們該如何從過去的經驗中,梳理出 NFT 等產品設計的資安漏洞、又該如何透過合約的設計強化資安強度,更重要的是,對於瞬息萬變的區塊鏈世界,老師也總是能即時給予課程內容上的調整,讓上課的內容能與時俱進,同時增加彼此的交流,一同針對新的技術找出可行的作法,創造出共好的學習模式。 最後,Ray 也說即便再加入 KryptoCamp 課程前就已經對 NFT 的領域有相當程度的認識,但對於 DeFi(去中心化金融)這個領域反而有著好奇心、並想要嘗試跨入,因此在 8 週的密集課程中,跟著老師從 DeFi 協議觀念到如何實作出一個去中心化交易所,讓 Ray 也快速掌握了DeFi 的關鍵,並在從 KryptoCamp 課程結業後順利加入了 DeFi 團隊。而能認識許多對於區塊鏈有興趣的朋友們,這對於已經開始創業的 Ray 而言,是來到 KryptoCamp 最意外的收穫。他表示,能夠快速與不同產業的同學們鏈結,無論是在觀點、視野或者是對於創業的內容,都有不同程度的火花與交流,是很棒的經驗。 全球市場對於區塊鏈開發者的人才渴求持續飆漲,包括 Google、微軟等大型企業都積極向這類型人才招手。根據 Blockchain Academy 所出具的報告顯示,相關的人才需求年增速度更是高達 300%~500%,相當驚人。對此,Ray 也表示無論你是想要踏入區塊鏈領域的相關從業人員,或是希望能為自己的職場技能加值的人,KryptoCamp 的課程內容都是個非常適合助你一臂之力的選擇,「不過要承受得了 KryptoCamp 課程腳步快速、強度很高的訓練,」Ray笑著說。
byKryptoCamp-2023-03-22
繼續閱讀
從產業門外漢到區塊鏈講師:Hazel Wu 如何靠著 KryptoCamp 課程找出 Web3 世界的斜槓人生?

從產業門外漢到區塊鏈講師:Hazel Wu 如何靠著 KryptoCamp 課程找出 Web3 世界的斜槓人生?

「我既非本科系的學生、也不是區塊鏈老手。」現任前端工程師同時兼任 KryptoCamp 講師的 Hazel Wu 如此說著,而他過去大學的主修竟然是外語,更讓人好奇是怎樣的過程誘發了 Hazel 跨入到區塊鏈的世界裡,讓他快速從 Web2 的世界裡進入到屬於 Web3 的區塊鏈領域。 #一場NFT交易,開啟了通往區塊鏈的大門 從學生時期就在工作上身經百戰的 Hazel,服務業、快遞外送員甚至是行政助理都難不倒他,但是空有一身語言能力的背景,勢必要找到一個新戰場、發揮語言優勢,才有機會在職涯中尋求突破。「我發現自己其實對於電腦相當感興趣,」Hazel 在一次自我探索的心智圖中找到了這個關鍵,他也展現出對於新事物的好奇心,認為應該要給自己一個機會去嘗試。 就這樣,Hazel 先去報名了程式相關的課程,短短逾半年的時間,這些 0 與 1 的程式語言竟也觸發了Hazel 潛在的實力,當她發現能寫出 HTML 等產品的時候,他感覺份外有成就感,就這樣,Hazel 踏上了前端工程師這條路,從利用 Rails 框架打造出具備基本 CRUD 的相簿,或是用 Javascript 做出相關動態效果的 P2P 借貸平台,都是他的作品。 與此同時,Hazel 也開始觸類旁通其他未曾接觸過的領域,其中就包括了當時在話題上的區塊鏈。「不只是因為加密貨幣正值牛市,我也觀察到區塊鏈這項技術正在崛起,」Hazel 説,但單純以加密貨幣/NFT 跨入區塊鏈領域來說,就常常讓 Hazel 碰壁、認為背後的智能合約有太多遊戲規則,導致她在購買時常常錯失良機。 正是如此燃起了這位前端工程師想克服障礙的決心,因此在友人分享下,報名 KryptoCamp 區塊鏈工程師實戰營的培訓課程,希望能發揮自己工程師的技術、了解加密貨幣/NFT 背後運作的遊戲規則,掌握其中訣竅戰勝這個產業。 #系統性教學與個案模擬操作,Web2 無痛接軌 Web3 世界 攤開 KryptoCamp 的課程,從智能開發語言 Solidity 以及去中心化金融 DeFi 等皆有涉略,用多元且密集的課程讓想要跨入區塊鏈的 Hazel,能透過高強度的課程快速激發對相關產業知識與應用的能力。 「我覺得最大的幫助是提升了區塊鏈的撰寫能力。」以程式語言來說,雖然過去 Hazel 是習慣以Javascript 語言作為工具,但是進入到區塊鏈的領域、又是個不同的世界,相比於自己摸索,有專業的老師手把手的帶領,讓他很快能找到 Solidity 強型別語言的使用關鍵,讓 Hazel 能快速掌握這項程式語言的使用心法。 此外,智能合約更是加密貨幣/NFT 等各項產品不可或缺的規範所在,而 KryptoCamp 課程中也大幅著墨該領域的學習。Hazel 表示,講師除了以深入淺出並手把手的帶著每個學員了解,也以實際案例透過模擬操作讓每個人更加熟練。Hazel 進一步解釋,智能合約寫得好不好,關鍵在於是否有資安漏洞讓有心人士可以破解,因此從舊的案例演練也能逐一掌握到執行技巧,不單只是對 Foundry 框架的認識更能在講師領導下抓到需要注意的眉角。 也因為 KryptoCamp 課程會需要每位學員能發行屬於個人的 NFT,因此對於該產品的各種細節都應該要了解,而「盲盒」這個設計正是 NFT 銷售過程中不同於現行市場的一環。Hazel 表示,為了讓 NFT購買增添神秘感跟趣味性,從智能合約開始就會設計好如何讓消費者在正確時間能揭露自己獲得到的NFT 究竟為何,其背後的「開關」程式語言都需要在智能合約上清楚描述。 Hazel 表示來 KryptoCamp 開設的課程學習,不外乎是學習過程中有一群在區塊鏈領域上具備相關經驗的講師授課,同時將這個產業的最新趨勢跟法規做重點整理與即時更新,讓她能跟上最新的腳步,同時,面對新的程式語言也能與講師一同切磋,像是近期後市看漲的 MOVE 程式語言,Hazel 就利用課後之餘與講師請教,希望能掌握產業最新的變化。 #知識就是力量,擁抱區塊鏈開啟職涯另一扇大門 或許區塊鏈三個字對很多人來說都是熟悉又陌生的關鍵字,但 KryptoCamp 創辦人陳昭廷(Casper)就曾在受訪時表示,目前全球市場上都正渴求區塊鏈工程師,即便沒有經驗都能有百萬年薪起跳,更枉論若是有超過3年經驗的年薪都能上看 140~150 萬左右,甚至是海外公司為吸引人才,祭出 500 萬台幣年薪也是時有耳聞,顯見若能站在產業的浪潮上自我賦能,將是開啟個人職涯另一扇大門的機會。 而 Hazel 更在結業後成為KryptoCamp課程的兼任講師,從 Web2 進入到 Web3 的世界,Hazel 表示KryptoCamp 的課程設計就是能讓她更快掌握其中的訣竅,在助教的帶領下不會對於眼前未知的 Web3世界感到茫然,並且善用手中的開源程式碼專案開發產品。而接下來,她也希望用更淺顯的授課方式讓更多想投入區塊鏈的人能更容易掌握關竅。無論身處何處,能持續增加個人對於產業知識的過程,都是在累積自己未來的競爭力,「我相信知識就是力量!」Hazel説。
byKryptoCamp-2023-03-22
繼續閱讀
用 ChatGPT 寫第一個 Move 合約程式

用 ChatGPT 寫第一個 Move 合約程式

用 ChatGPT 寫第一個 Move 合約程式
byPecu-2023-01-03
繼續閱讀
Aptos 寒訓暖身文

Aptos 寒訓暖身文

師大科技系 PecuLab 與 KryptoCamp 共同規劃了 Aptos 寒假培訓營,旨在培養具備 Aptos 實務開發能力與解讀技術解讀能力,課程共有 10 堂,主題包括 Aptos 環境建置、Move Module、Aptos Move 合約開發、Typescript SDK、Aptos 與 DApp 結合開發,以及 Aptos 開發的 CI/CD 與 Move 合約迭代 (AWS 雲端開發環境)。此外,此次培訓營也歡迎對象包括想透過自學 Move on Aptos 來認識志同道合的戰友,讓前往 Web3 的路上有會思考、能實作、好溝通的神隊友同行。
byPecu-2022-12-04
繼續閱讀
從 GitHub 上的 awesome-move 開始閱讀更多不同的 Move 合約

從 GitHub 上的 awesome-move 開始閱讀更多不同的 Move 合約

本文介紹了如何從 GitHub 上的 awesome-move 來看看 Move 的所有在 GitHub 上的相關資源,並比較了 Move 和 Solidity 的 ERC-20 相關函式,並點出兩者最大差異的部分
byPecu-2022-11-29
繼續閱讀
智能合約簡介 Move on Aptos

智能合約簡介 Move on Aptos

​作者:師大科技系 PecuLab 蔡芸琤 (Pecu) 這篇是介紹 Aptos 公鏈上,如何透過 Move 實現智能合約。若對智能合約沒有概念的讀者,可先 Google 一下智能合約,就會跑出一大堆基本介紹。 在 https://www.youtube.com/c/KryptoCamp/videos 上也有許介紹 Ethereum 公鏈上,如何透過 Solidity 實現智能合約的影片。 那假設各位讀者們,可類比 Aptos 公鏈上的智能合約使用 Move (原生語言為 Rust) 開發,之於 Ethereum 公鏈上的智能合約使用 Solidity 開發的概念。 來開始介紹 Move on Aptos 的幾個基本重要關鍵概念 https://aptos.dev/guides/move-guides/move-on-aptos。 除非明確說明,否則會要求signer(這個就是會呼叫使用者進行簽署確認的意思,例如:像在使用 MetaMask,某些合約需要進行使用者確認時,錢包會跳出要使用者簽章的畫面) 限制對帳戶添加或刪除資產的存取。 資料 (Data) 是存在資料自己的帳戶中,而不是發布這筆資料的使用者的帳戶中,這是非常有趣的關鍵概念,把資料擬人化。 因為資料自己是屬於自己的帳戶 (好繞口,你的資料不是你的資料),所以就需要有個對應使用者與資料之間的關係 indexing works,使得資料流 (Data Flow) 的對應如下圖所示: https://aptos.dev/guides/indexing/ 有了這樣的觀念後,就可以參考 https://github.com/aptos-labs/move/blob/main/language/documentation/tutorial/README.md#Step1 來了解,如何透過 Move 來撰寫 Aptos 上的智能合約。 從範例 https://github.com/aptos-labs/move/blob/main/language/documentation/tutorial/step_1/BasicCoin/sources/FirstModule.move 解釋,程式碼使用說明,可參考 https://move-language.github.io/move/modules-and-scripts.html。 module 0xCAFE::BasicCoin { struct Coin has key { value: u64, } public fun mint(account: signer, value: u64) { move_to(&account, Coin { value }) } } module
:: { ( | | | | )* } 其中可對應出,當要發布合約時,可指定此合約要放在哪個地址中 module
:: (地址配上合約名稱),接著就可以寫合約內容。 在合約中的最開始,會定義此合約使用到的公用變數、資料結構,接著就定義合約要執行的功能 (Functions),以這個最簡單的範例來看。要定義合約中的資料結構特性 (Type),可參考 https://move-language.github.io/move/abilities.html。 struct Coin has key { value: u64, } 以範例程式中提及的資料結構,使用的 Type 為 Key。 當給予相對應的特性,就會依照該特性可運作的範圍來管理這個資料結構。 public fun mint(account: signer, value: u64) { move_to(&account, Coin { value }) } fun <[type_parameters: constraint],*>([identifier: type],*): https://move-language.github.io/move/functions.html 其中可對應出,此合約的唯一功能是 mint,當執行 mint 時,就會呼叫 Move 中的 move_to,將 mint 的此合約的代幣轉入簽署人的錢包中。 https://move-book.com/resources/resource-by-example/storing-new-resource.html 本文是想要提供讀者一個自學文件的閱讀脈絡,以及了解整個合約框架的宣告及定義,接下來會帶著讀者們閱讀更多不同的 Move 合約,請持續追蹤。
byPecu-2022-11-18
繼續閱讀
如何在 Aptos 上發布第一個 ICO 範例

如何在 Aptos 上發布第一個 ICO 範例

​ 作者:師大科技系 PecuLab 蔡芸琤 (Pecu) ICO (Initial Coin Offering) = 首次代幣發行 在每個公鏈上,都可使用該鏈上最基礎的智能合約去創造代幣,本文所使用的合約內容來自 https://github.com/aptos-labs/aptos-core/blob/main/aptos-move/move-examples/moon_coin/sources/MoonCoin.move。 依照【成為 Aptos 公鏈開發者的第一步】已完成了 aptos-core 專案下載,先重新連上 Docker 環境,前情提要可參考【使用 Move Module 進入 Aptos 智能合約開發的第一步】。 在預設的 Aptos 中的 devnet 測試鏈創建新帳號 cd ~/aptos-core/aptos-move/move-examples/moon_coin aptos init 取得新地址為78e1a3787f089fddfc294826765ee304f229f97da8a44cee3c0bdc698c5e78a8。 編譯範例 MoonCoin 合約 aptos move compile --named-addresses MoonCoin=78e1a3787f089fddfc294826765ee304f229f97da8a44cee3c0bdc698c5e78a8 發布合約至 Aptos 中的 devnet 測試鏈 aptos move publish --named-addresses MoonCoin=78e1a3787f089fddfc294826765ee304f229f97da8a44cee3c0bdc698c5e78a8 成功發布 MoonCoin 合約至 Aptos 的 devnet 測試鏈上。 檢查合約是否存在於測試鏈上 若要查詢此筆資料是否有順利上鏈,可透過瀏覽器,使用 Aptos Node API (以 RESTful API方式進行) 來查看。因為我的 account address 是 78e1a3787f089fddfc294826765ee304f229f97da8a44cee3c0bdc698c5e78a8,所以網址在 https://fullnode.devnet.aptoslabs.com/v1/accounts/ 後面接上我的 address (請讀者要自行更動為自己的 address)。 https://fullnode.devnet.aptoslabs.com/v1/accounts/78e1a3787f089fddfc294826765ee304f229f97da8a44cee3c0bdc698c5e78a8 因為,我執行了 publish 兩次,所以,看到的會是 sequence_number: "2"。 只是確定有發布了合約上鏈,但還沒看到合約細節。 若要看到合約細節,就要加上 transactions 的資訊,可參考 Aptos Node API 官方文件 https://fullnode.devnet.aptoslabs.com/v1/spec#/operations/get_account_transactions。 https://fullnode.devnet.aptoslabs.com/v1/accounts/78e1a3787f089fddfc294826765ee304f229f97da8a44cee3c0bdc698c5e78a8/transactions 成功看到 moon_coin 新幣合約已經在鏈上了。 以下解釋合約內容 合約內容 https://github.com/aptos-labs/aptos-core/blob/main/aptos-move/move-examples/moon_coin/sources/MoonCoin.move,裡面包含了MoonCoin 結構或類型。在將合約上鏈時,會透過物件建構元 init_module 來定義新幣。在這個範例中,新幣初始化,命名為 MoonCoin,並將幣種定為 ManagedCoin,由發行新幣者維護此合約。 //:!:>moon module MoonCoin::moon_coin { struct MoonCoin {} fun init_module(sender: &signer) { aptos_framework::managed_coin::initialize( sender, b"Moon Coin", b"MOON", 6, false, ); } } //<:!:moon 而合約調用的 aptos_framework 細節,可從 https://github.com/aptos-labs/aptos-core/blob/main/aptos-move/framework/aptos-framework/sources/coin.move 找到。 例如,新幣需要的幾大功能: Minting: Creating new coins. Burning: Deleting coins. Freezing: Preventing an account from storing coins in CoinStore. Registering: Creating a CoinStore resource on an account for storing coins. Transferring: Withdrawing and depositing coins into CoinStore. 相關的官方文件 https://aptos.dev/tutorials/your-first-coin 中文化介紹已可在 https://gushi10546.gitbook.io/aptos-kai-fa-zhe-wen-dang/kai-fa-zhe-jiao-cheng/di-yi-ge-dai-bi 找到,就不再此重新贅述。 截至目前為止,我已經提供了所有初學者要進入 Aptos 開發環境的基礎教學內容,下周開始,會開始進入 move 智能合約撰寫的技術教學文,請有興趣的各方同好們,持續追蹤關注連載。               ​
byPecu-2022-11-14
繼續閱讀
在 Aptos 上,透過 Typescript SDK 創建一個公版 NFT

在 Aptos 上,透過 Typescript SDK 創建一個公版 NFT

​ 作者:師大科技系 PecuLab 蔡芸琤 (Pecu) 根據 https://aptos.dev/tutorials/your-first-nft 的步驟,以及【成為 Aptos 公鏈開發者的第一步】來帶著初學者一步步完成,在 Aptos 上發行第一個 NFT。 因為,RUST SDK 在我撰寫此文的當下,還沒把創建 NFT 需要的 SDK 公開出來,所以,我先以 Typescript SDK 來進行說明。 依照【成為 Aptos 公鏈開發者的第一步】已完成了 aptos-core 專案下載,本文從 https://aptos.dev/tutorials/your-first-nft 中的以下步驟開始進行說明。 官方文件中的第二步,一開始是專案下載,在本文中略過不再重述,直接從如何透過 Typescript SDK 來進行第一個 simple_nft 的例子開始說明。 先重新連上 Docker 環境,前情提要可參考【使用 Move Module 進入 Aptos 智能合約開發的第一步】。 開始測試第一個 simple_nft 的例子,執行成功會看到 Alice 和 Bob 的交易過程被展示出來。 本文所使用的 Docker 環境,與官方文件中要進行的 pnpm 有些許不同,請將 pnpm 更改為 npm 來執行。 依序執行指令如下: cd ~/aptos-core/ecosystem/typescript/sdk/examples/typescript npm install npm run simple_nft 接著說明這個交易過程的逐步細節以及對應的程式碼。官方文件在這個例子中,為了區別 FT (Fungible Token) 和 NFT,分別使用 Coin 代表 FT,而 Token 代表 NFT。 初始化 Representational State Transfer (REST) 和 Aptos 水龍頭。 創建兩個帳戶,Alice 和 Bob。 從水龍頭為 Alice 和 Bob 的帳戶,分別提供 100000000 個 Coin。 在 Alice 的帳戶中創建放置 NFT 的 Collection,並產生第一個 NFT。 Alice 將這個 NFT 轉給 Bob。 Bob 透過代理商將這個 NFT 再轉給 Alice。 以上步驟,透過 https://github.com/aptos-labs/aptos-core/blob/main/ecosystem/typescript/sdk/examples/typescript/simple_nft.ts 原始碼所完成,以下的逐步說明,會根據原始碼中的行號來進行對應解釋。 第一步:初始化 Representational State Transfer (REST) 和 Aptos 水龍頭。 請參閱第 15 行至第 16 行,使用 Typescript SDK 來與 Aptos 溝通,確認完成第一步的初始化動作。 第 20 行,建一個 TokenClient 的物件 tokenClient,等著完成第二步之後所需要的常見操作,例如創建 Collection 和 NFT、進行轉移 (transferring)、建立聲明 (claiming)。 第二步:創建兩個帳戶,Alice 和 Bob。 第 27 行至第 28 行,分別建立 AptosAccount 的帳戶物件為 alice 和 bob。 第三步:從水龍頭為 Alice 和 Bob 的帳戶,分別提供 100000000 個 Coin。 第 38 行至 39 行,從水龍頭為 Alice 和 Bob 的帳戶,分別提供 100000000 個 Token。在 Aptos 中,每個 AptosAccount 帳戶物件,都必須具有鏈上的代幣呈現形式 (representation),此段程式利用水龍頭為 Alice 和 Bob 的帳戶領取同質化代幣 (Fungible Token),代表著 Alice 和 Bob 目前的這個帳戶中的 representation 是 Fungible Token。 第四步:在 Alice 的帳戶中創建放置 NFT 的 Collection,並產生第一個 NFT。 因為,第三步創建帳戶時,已經將 representation 指定為 Fungible Token。所以,第 63 行至第 69 行是,在 Alice 的帳戶下,再建立可放入 NFT 的 Collection。一個 Collection 代表著一個容器的概念,其中可以包含零個、一個或多個不同的 NFT 呈現形式。第 73 至第 81 行,是在這個 Collection 下創立 Alice 的第一個 NFT。 這個公版 NFT 是由 Aptos 所提供,透過 https://github.com/aptos-labs/aptos-core/blob/53d3e1675c005771bdcd7b908479e002dd8fe145/ecosystem/typescript/sdk/src/token_client.ts#L90 可看到能填入的 NFT 資訊欄位有哪些,公版 NFT 合約內容可從 https://github.com/aptos-labs/aptos-core/blob/main/aptos-move/framework/aptos-token/sources/token.move 看到。 若要自行創建公版 NFT 之外的合約,就要自行撰寫 Move 發布新合約,再自建跟這張合約互動的 SDK (Typescript SDK, Python SDK, or Rust SDK)。 第五步:Alice 將這個 NFT 轉給 Bob。 第 85 行至第 86 行,先確認 Alice 的 Collection 中的內容物是甚麼。第 90 行至第 96 行,確認 Alice 的帳號中餘額有多少。第 100 行至第 101 行,查閱 Alice 的 Collection 中的 NFT 詳細內容。第 104 行至第 115 行,Alice 將這個 NFT 轉給 Bob。第 119 行至第 127 行,Bob 確認收到 Alice 傳來的 NFT。 第 130 行至第 138 行,查閱這筆轉移結束後,Alice 和 Bob 當前帳戶中的 NFT 數量。 第六步:Bob 透過代理商將這個 NFT 再轉給 Alice。 第 140 行至第 151 行,Bob 透過代理商將這個 NFT 再轉給 Alice。在這邊使用的是 tokenClient.directTransferToken 而不是 Alice 轉移給 Bob 使用的 tokenClient.offerToken,所以,也不需要 Alice 再做一次 tokenClient.claimToken 進行,確認收到 NFT 的動作,就可以直接拿到。 第 154 行至第 163 行,,查閱這筆轉移結束後,Alice 和 Bob 當前帳戶中的 NFT 數量。 Aptos 的思維和以太鏈有甚麼不同? 在這個例子裏面,我發現了以下幾項有趣的不同,以下是在 Aptos 中有的新鮮事。 對於每個帳戶中的代幣呈現形式 (representation),會強制要求確認。 若要存放 NFT,必須先建立 Collection,代表著一個容器的概念,其中可以包含零個、一個或多個不同的 NFT 呈現形式。 透過代理商轉移 tokenClient.directTransferToken,就比較像是在以太坊中的直接轉移的動作。如果是在 Aptos 進行直接轉移 tokenClient.offerToken,收件方需要進行 tokenClient.claimToken 的確認動作。 若有更新的體悟,再來分享給大家,為何 Aptos 要這麼設計。               ​
byPecu-2022-11-11
繼續閱讀