區塊鏈開發就像在建造一座複雜的網路建築,而每項功能、每一筆交易都需要一個安全、穩定的支撐結構來確保系統的高效運作。 Subxt 就是為這樣的需求而生的——它猶如開發者手中的「橋樑」,專為Rust 生態下與Substrate 區塊鏈的高效交互而設計。透過Subxt,開發者可以如同打開工具箱般輕鬆地呼叫鏈上資料、執行交易,甚至在鏈的即時事件中獲取關鍵動態。
這篇文章是由PaperMoon 的Kaichao 老師撰寫的Substrate 進階課程技術文章的七篇,旨在幫助開發者深入掌握如何利用Subxt 實現與Substrate 的無縫對接。從外部交易的提交到鏈上資料的讀取與監控,Subxt 為開發者簡化了操作,並增強了系統的安全性。本篇將帶領大家深入探討Subxt 的核心功能及使用方法,為您的鏈上開發提供堅實的技術支援。
連結Substrate 的核心工具—Subxt
Subxt 是一個Rust 函式庫,旨在提供與Substrate 區塊鏈的高效介面。它允許開發者以安全、類型安全的方式與區塊鏈進行交互,簡化了執行交易、查詢狀態和訂閱事件的過程。 Subxt 的設計強調效能和安全性,利用Rust 的靜態型別系統來防止執行階段錯誤。這使得開發者在建構去中心化應用時,能夠減少潛在的錯誤和安全隱患。
功能概述:關鍵概念和基礎模組
在介紹subxt 相關的功能之前,你應該已經熟悉了以下的一些關鍵概念,
外部交易(Extrinsics) :指的是提交到鏈上的交易或指令。 Subxt 允許使用者建立和提交這些extrinsics。
儲存(Storage) :Substrate 的狀態以鍵值對的形式存儲,Subxt 可以讀取和查詢這些儲存值。
元資料(Metadata) :包含關於區塊鏈運行時的信息,定義了鏈上的所有可用功能和資料結構。
事件(Events) :區塊鏈操作發生時的通知,Subxt 可以訂閱這些事件以獲取鏈上動態變化的狀態。
Subxt提供了豐富的介面與鏈上資料和交易進行交互,功能包括:
提交外部交易(extrinsics)(庫名由此而來)。
訂閱區塊,讀取其中的外部交易和相關事件。
讀取並迭代儲存值。
從元資料中讀取常數和自訂值。
呼叫運行時API,並傳回結果。
透過安全的靜態類型介面執行上述所有操作,或在需要靈活性時透過動態介面執行。
WASM 支援:Subxt 可以編譯為WASM 在瀏覽器中運行,支援基於Rust 的瀏覽器應用,甚至可以與JS 應用程式綁定。
透過subxt-core crate 在#[no_std] 環境中執行多項操作。
使用內建輕客戶端(smoldot)與區塊鏈互動。
實踐指南:Subxt 使用範例詳解
下載元數據
使用subxt-cli
工具從節點下載目標執行時間的元資料。
安裝:
將編碼後的元資料儲存到檔案:
預設情況下,此指令會查詢在http://localhost:9933/ 上執行的本機節點的元資料。如果要查詢其他節點,可以使用--url
參數指定節點位址。
新增依賴
在Rust 工程的cargo.toml 檔案中加入如下內容,
取得鏈上存儲
在Substrate 區塊鏈中,儲存(Storage)用於持久化鏈上狀態資料。取得鏈上儲存的過程通常涉及以下步驟:
建立連結:首先,我們需要建立一個API 用戶端來連接到目標區塊鏈節點。這是透過OnlineClient 完成的,它會自動處理與節點的連接和通訊。
定義儲存查詢:接下來,我們需要定義要查詢的儲存項目。在Substrate 中,儲存資料以鍵值對的形式存儲,我們可以透過這些鍵來存取特定的資料。例如,如果我們想要取得某個帳戶的餘額訊息,就需要建立一個針對該帳戶的儲存查詢。
執行查詢:透過呼叫API 用戶端的fetch 方法傳送請求以取得儲存資料。
處理結果:在成功獲取資料後,我們可以提取所需的字段,例如餘額,並進行後續處理或展示。
發送交易
在Substrate 區塊鏈中,發送交易(或外部交易)是與區塊鏈互動的核心操作之一。這個過程通常包括以下步驟:
建立連接:並查詢儲存類型,先與鏈節點建立API 用戶端連接,確保可以傳送交易。
建構交易:使用Subxt 提供的介面定義交易的具體內容。在這個過程中,你需要指定交易類型,例如餘額轉賬,並設定交易的目標地址和轉帳金額。
簽名交易:在提交交易之前,需要對其進行簽名,以證明交易的發起者擁有相關的權限。這通常是透過私鑰進行簽名,確保交易的合法性。
提交交易:使用API 用戶端將簽署後的交易提交到區塊鏈。提交後,交易會被加入到待處理隊列中,並在下一個區塊中確認。
監控結果:可以透過監聽交易事件,取得交易的處理狀態,確認是否成功。成功後,可以根據傳回的事件資訊進行後續處理。
社區活躍與未來發展, Subxt 的生態支持與創新前景
高度的靈活性和安全性,使得subxt 可以用於多種應用場景,包括:
去中心化應用程式(DApps):在建立與區塊鏈互動的前端應用時,Subxt 提供了簡單的API 介面。
自動化腳本:開發者可以使用Subxt 編寫腳本,以自動化管理鏈上資產或執行定期任務。
鏈上分析工具:使用Subxt 讀取區塊鏈數據,以分析鏈上活動和使用者行為。
Subxt 的開發活動十分活躍,伴隨著不斷更新和功能擴展。開發者可以存取豐富的文件和範例,參與社區討論,報告問題並貢獻程式碼。隨著Substrate 生態的不斷發展,Subxt 將繼續演變,包括更多的效能最佳化、對新特性的支援以及更多跨鏈互動能力。這使得它成為開發者持續創新的重要工具。
火速報名第16 期, Substrate 入門課程
OneBlock+ 聯合Polkadot 共同推出第16 期Substrate 區塊鏈開發入門課程開啟報名囉!本課程專為開發者設計,深入講解如何在15 分鐘內快速建立具備客製化功能的區塊鏈,幫助你高效融入波卡生態。透過6 個核心課程時,你將掌握區塊鏈的理論知識與基礎概念,並熟練運用Substrate 技術。此外,課程還提供每週直播答案和課後練習,幫助鞏固知識並解決學習困難。完成課程後,更有機會獲得多個優質開發職缺內推,為你開拓職涯發展新方向!
📪 倒數20 天,立即報名課程報名吧:
https://wj.qq.com/s2/14957929/h3bh/