由GearFans 舉辦的“Gear 中文第四期線上Workshop” 於2022 年2 月18 日成功舉行。

本次Workshop 由Gear 小助手主持,並邀請來自俄羅斯的Gear 開發者Louisa 作為本次嘉賓,為我們講解如何使用Gear 開發NFT 智能合約。 Louisa 是莫斯科物理技術學院的初級研究員,她在密碼學、區塊鍊和開發智能合約方面很有研究。她參加了多次黑客馬拉松,從事於區塊鏈開發工作。曾經為EVM、Solana 做了很多貢獻,參與其中智能合約的編寫,現於GEAR 團隊負責智能合約開發。

Nicole 首先介紹了Gear 以及Gear 的關鍵技術。

2fb54ec311dc466d86b334df35cd8c3b.png

1f4e3514f626d06c01cff988b64a87ff.png

並發計算系統有兩類常見的通信方式:共享內存通信——並發程序通過更改共享內存位置的內容進行通信;消息傳遞通信——通過消息交換進行並發程序通信。

通常,消息傳遞並發比共享內存具有更好的性能。在消息傳遞系統中,每個進程的內存開銷和任務切換開銷更低。有很多理論可以用來理解消息傳遞系統,比如說Actor 模型。對於進程間通信, Gear 使用Actor 模型,Actor 模型的原理是程序從不共享任何狀態,只是在彼此之間交換信息。作為先進的語言概念,Actor 模型越來越流行,現在許多新的編程語言都在使用它。

61cb459ef77bd67b1db385721152d9bc.png

相較於典型的文本和原生代碼,WebAssembly 的體積更小,便於將二進製文件傳輸到網絡緩慢的設備上,這將大大提高文件傳輸效率。 WASM 還支持用不同語言編寫的智能合約,這大大擴展了智能合約開發者可用的語言家族。此外,WASM 是獨立於硬件之外的,具有很高的便攜性。而Actor 模型將保證網絡的穩定、高效和安全。這兩個獨特的功能確保交易以最快的速度在Gear 上運行,從而保證成本最低。

接下來,Nicole 簡要介紹了Gear 的應用場景。

1.png

後續Nicole 進一步向大家介紹了Gear 現階段的發展情況以及Gear 的創始團隊。

2.png

3.png

4.png

接下來,Louisa 向大家講解如何在Gear 開發NFT 智能合約。

5.png

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