📢 Gate廣場 #MBG任务挑战# 發帖贏大獎活動火熱開啓!
想要瓜分1,000枚MBG?現在就來參與,展示你的洞察與實操,成爲MBG推廣達人!
💰️ 本期將評選出20位優質發帖用戶,每人可輕鬆獲得50枚MBG!
如何參與:
1️⃣ 調研MBG項目
對MBG的基本面、社區治理、發展目標、代幣經濟模型等方面進行研究,分享你對項目的深度研究。
2️⃣ 參與並分享真實體驗
參與MBG相關活動(包括CandyDrop、Launchpool或現貨交易),並曬出你的參與截圖、收益圖或實用教程。可以是收益展示、簡明易懂的新手攻略、小竅門,也可以是現貨行情點位分析,內容詳實優先。
3️⃣ 鼓勵帶新互動
如果你的帖子吸引到他人參與活動,或者有好友評論“已參與/已交易”,將大幅提升你的獲獎概率!
MBG熱門活動(帖文需附下列活動連結):
Gate第287期Launchpool:MBG — 質押ETH、MBG即可免費瓜分112,500 MBG,每小時領取獎勵!參與攻略見公告:https://www.gate.com/announcements/article/46230
Gate CandyDrop第55期:CandyDrop x MBG — 通過首次交易、交易MBG、邀請好友註冊交易即可分187,500 MBG!參與攻略見公告:https://www.gate.com/announcements
Solana Web3.js 2.x版本發布:函數式編程重塑開發體驗
Solana Web3.js 2.x:函數式編程的新時代
Solana Web3.js 在2023年11月發布了2.x版本,相較於1.x版本,新版本帶來了顯著的變化。本文將概括其主要改進。
雖然2.x版本剛剛發布,使用率尚不高,許多流行庫也未遷移,但了解這些變化有助於未來的升級準備。
版本對比
1.x版本使用起來相對簡單,僅包含@solana/web3.js一個包,基於類的設計封裝了大量常用操作。例如,Connection類提供了數十種方法,幾乎涵蓋了開發者所需的所有功能。
然而,這種設計也帶來了一些問題。盡管開發者實際使用的功能可能很少,但整個代碼庫都會被下載到用戶設備上,導致加載時間延長。
2.x版本採取了不同的方法。官方團隊將原有代碼庫拆分爲多個小模塊,如@solana/accounts、@solana/codecs、@solana/rpc等。新版本放棄了基於類的實現,更多地採用單個函數,這有利於JavaScript代碼構建時的優化。未使用的代碼將被刪除,不會下載到用戶設備上。根據官方數據,使用新版本的DApp通常能實現30%的尺寸優化,對於使用功能較少的應用,優化比例可能更高。
這種變化對Solana團隊的文檔質量提出了更高要求。如何讓開發者快速找到所需功能成爲一個關鍵問題。目前,包名的語義性較好,從名稱上就能大致了解其用途,這在一定程度上降低了開發者的遷移難度。
然而,由於剛發布不久,許多項目尚未遷移。一些示例和文檔描述也不夠完善,可能會給開發者帶來一些困惑。
2.x版本的另一個重要特點是零依賴。這對於提高安全性至關重要,尤其是在2023年12月初@solana/web3.js 1.95.5和1.95.6版本遭遇供應鏈攻擊後。新版本更多地使用本機功能,取消了外部依賴和Polyfills的引入,從而降低了安全風險。
主要變更
連接方式
2.x版本採用了更加函數式的方法來處理連接。不再使用Connection類,而是通過配置RPC請求地址來創建請求發送器。例如,發送交易時會自動發起HTTPS請求並建立WSS連接,訂閱交易狀態,在交易確認後返回交易哈希。
密鑰對管理
公鑰和私鑰相關的操作也發生了重大變化。1.x版本常用的Keypair和PublicKey類不再存在,取而代之的是一系列函數。例如,現在使用await generateKeyPair()來生成密鑰對,而不是之前的Keypair.generate()。
新的實現利用了JavaScript的Web Crypto API,使用了原生的Ed25519實現。這導致一些操作變成了異步的,但對於熟悉Promise的現代JavaScript開發者來說,這並不是一個大問題。
交易處理
2.x版本中,不再有Transaction和VersionedTransaction類。System Program相關的方法也需要從其他地方引入。例如,轉帳指令現在需要調用@solana-program/system中的getTransferSolInstruction函數。
新版本提供了函數式編程中常用的pipe形式。交易不再通過Connection發起,而是通過定義的RPC Provider生成特定函數來發起交易。這種方式雖然代碼量略有增加,但提供了更強的可定制性。
React支持
值得注意的是,@solana/web3.js項目中還包含了一個名爲@solana/react的庫,提供了一些React Hook,內置了諸如signIn等功能。
結語
@solana/web3.js 2.x版本的發布展現了Solana團隊持續改進的決心。新版本爲開發者提供了一個高效、靈活、可定制的Solana網路交互方式,有望推動平台的進一步發展和應用。