由GearFans 舉辦的“Gear 中文第四期線上Workshop” 於2022 年2 月18 日成功舉行。
本次Workshop 由Gear 小助手主持,並邀請來自俄羅斯的Gear 開發者Louisa 作為本次嘉賓,為我們講解如何使用Gear 開發NFT 智能合約。 Louisa 是莫斯科物理技術學院的初級研究員,她在密碼學、區塊鍊和開發智能合約方面很有研究。她參加了多次黑客馬拉松,從事於區塊鏈開發工作。曾經為EVM、Solana 做了很多貢獻,參與其中智能合約的編寫,現於GEAR 團隊負責智能合約開發。
Nicole 首先介紹了Gear 以及Gear 的關鍵技術。
並發計算系統有兩類常見的通信方式:共享內存通信——並發程序通過更改共享內存位置的內容進行通信;消息傳遞通信——通過消息交換進行並發程序通信。
通常,消息傳遞並發比共享內存具有更好的性能。在消息傳遞系統中,每個進程的內存開銷和任務切換開銷更低。有很多理論可以用來理解消息傳遞系統,比如說Actor 模型。對於進程間通信, Gear 使用Actor 模型,Actor 模型的原理是程序從不共享任何狀態,只是在彼此之間交換信息。作為先進的語言概念,Actor 模型越來越流行,現在許多新的編程語言都在使用它。
相較於典型的文本和原生代碼,WebAssembly 的體積更小,便於將二進製文件傳輸到網絡緩慢的設備上,這將大大提高文件傳輸效率。 WASM 還支持用不同語言編寫的智能合約,這大大擴展了智能合約開發者可用的語言家族。此外,WASM 是獨立於硬件之外的,具有很高的便攜性。而Actor 模型將保證網絡的穩定、高效和安全。這兩個獨特的功能確保交易以最快的速度在Gear 上運行,從而保證成本最低。
接下來,Nicole 簡要介紹了Gear 的應用場景。
後續Nicole 進一步向大家介紹了Gear 現階段的發展情況以及Gear 的創始團隊。
接下來,Louisa 向大家講解如何在Gear 開發NFT 智能合約。
Louisa 介紹了NFT 的合約代碼,具體代碼請參考:https://github.com/gear-tech/apps/tree/master/non-fungible-token , 是nft 接口。
https://github.com/gear-tech/apps/tree/master/nft-example , 是具體例子。
NFT的合約接口代碼:
// non-fungible-token/src/base.rs pub trait NonFungibleTokenBase { fn init (& mut self , name: String , symbol: String , base_uri: String ); fn transfer (& mut self , from: &ActorId, to: &ActorId, token_id: U256); fn approve (& mut self , owner: &ActorId, spender: &ActorId, token_id: U256); fn approve_for_all (& mut self , owner: &ActorId, operator: &ActorId, approved: bool ); fn balance_of (& self , account: &ActorId); fn owner_of (& self , token_id: U256); }
這幾個方法跟ERC721的核心方法的作用一致。
// non-fungible-token/src/lib.rs pub struct NonFungibleToken { pub name: String , pub symbol: String , pub base_uri: String , pub owner_by_id: BTreeMap<U256, ActorId>, pub token_metadata_by_id: BTreeMap<U256, TokenMetadata>, pub token_approvals: BTreeMap<U256, ActorId>, pub balances: BTreeMap<ActorId, U256>, pub operator_approval: BTreeMap<ActorId, ActorId>, } impl NonFungibleTokenBase for NonFungibleToken { ...... // 此处是non-fungible-token/src/base.rs NonFungibleTokenBase 的具体实现}
在nft-example 中, 講NFT 實現與Gear 合約的基礎架構結合,實現1 個完整的NFT合約。
大家可以編譯nft-example,並通過https://idea.gear-tech.io/部署合約。
關於Gear 合約的基礎知識,請看之前的文章: Gear 合約大揭秘。
在Q&A 環節,Shooter 和Louisa 解答了大家的提問。我們從這些提問中摘錄了部分問題:
What's the difference between Gear and Ink? (Gear 和Ink 有什麼區別?)
- 波卡系的平行鏈大都基於Web Assembly。它只是同一種標準,比如說Go 可以編譯為Web Assembly, Rust 也可以編譯為Web Assembly,但這2 個wasm 文件的差異很大。 Gear 和Ink 明顯的區別就是Gear 基於Actor 模型,效率更高。 Ink 在代碼上會更複雜,理念上和Solidity 有一定的關聯度。
Can gear interoperate evm contracts? (Gear 可以和evm 合約交互嗎?)
- It can't interoperate evm yet but we hope that it would be able to interoperate with other blockchains. (Gear 目前還無法與evm 合約交互,但我們有這方面的目標,未來會和更多區塊鏈進行交互。 )
以後會有簡易的部署節點方式嗎?
- 現在Gear 的Wiki 上有一個部署節點的新方式,其實部署節點算是一個基本操作,你需要對Linux 機器或者對其他機器有一定的了解,目前還沒有一個特別簡單的部署方式。
本次活動的PPT 在https://kdocs.cn/l/cgl52t7yqmme ,對Gear技術感興趣的小伙伴,歡迎查看中文wiki: https://wiki.gear-tech.io/zh-cn/ ,如對wiki翻譯有任何建議,歡迎提交pr,說不定有什麼獎勵哦。
本次線上Workshop 圓滿結束,感謝社區朋友這一路以來的支持。後續GearFans 會舉辦更多線上與線下活動,請持續關注我們的最新資訊,參與我們的精彩活動!
關於GearFans
Gear 是波卡生態的計算組件,GearFans 是Gear 愛好者社區。
- 官網:https://gear-tech.io/
- Twitter:https://twitter.com/gear_techs
- GitHub:https://github.com/gear-tech
- Discord:https://discord.com/invite/7BQznC9uD9
- Medium:https://medium.com/@gear_techs
- Telegram 群:https://t.me/gear_tech
- Telegram 中文群:https://t.me/Gear_CN
- Telegram 中文開發群:https://t.me/gear_dev_cn
- QQ 群:677703337