本文旨在介紹如何開始構建可支持您自己的Runtime模塊的自定義Substrate鏈:
· 我們將通過substrate安裝和設置來學習
· 探索substrate配置以及如何使用Polkadot JS瀏覽鏈狀態(tài)
· 專注于介紹runtime模塊的結構,這是一種為鏈添加功能的方法。
在substrate進行開發(fā)
substrate和并發(fā)runtime模塊是用rust開發(fā)的,rust是一種靜態(tài)類型語言,具有內存安全特性,提供速度和可靠性。
這是一個在區(qū)塊鏈開發(fā)中經(jīng)常被忽視的主題,但對于采用是至關重要的:如何解決Rust問題。我們不會在這篇文章中分析Rust代碼,但對于對Substrate感興趣的開發(fā)人員來說,這將是一個前所未有的關注點。
如何為新手解決Rust問題
對于編程語言來說,rust的學習曲線是陡峭的。這可以歸因于它采用的一些語法約定,其中包括對泛型、特征、生命周期和宏等特性的高度依賴,以及范圍和可變性等其他考慮因素。
其他Substrate學習資源,例如Substrate Kitties聲稱Rust很容易掌握,但除非你有使用低級語言(如C ++)的具有一定經(jīng)驗,否則情況并非如此。更細粒度的API,用于處理系統(tǒng)級管理。
問:Rust書籍能否讓您快速掌握Substrate采用的語言功能和概念?
答:是的,但我們建議您在閱讀本書時練習自己的演示,以鞏固您的理解。這將使Substrate中的編碼更加舒適。
考慮到這一點,讓我們在進入runtime模塊之前探索一些實用的Substrate設置和用法。
安裝substrate
安裝Substrate只需要在getsubstrate.io上調用Parity托管的一個bash腳本。 Substrate有兩種方法安裝:
1、快速安裝
更快的Substrate安裝,安裝預構建的Substrate開發(fā)鏈,以及Substrate Scripts,一個用于配置自定義Substrate鏈和runtime模塊的命令行實用程序。
通過與Substrate安裝腳本一起使用的--fast標志運行快速安裝基本上會跳過一些非強制運行Substrate的實用程序的安裝:
curl https://getsubstrate.io -sSf | bash -s -- --fast
這將獲取Substrate所需的所有依賴項,包括Rust,OpenSSL,LLVM等,如果它們尚未安裝,則安裝它們。
2、整體安裝
完整的Substrate安裝將安裝以上所有內容,以及其他兩個實用程序:
subkey:生成或恢復基礎密鑰的實用程序(用于通過命令行管理帳戶)
substrate node:可以連接到substrate 測試網(wǎng)的預配置substrate 節(jié)點。
運行以下命令以安裝這些工具以及Substrate Scripts和開發(fā)節(jié)點:
// full Substrate installation
curl https://getsubstrate.io -sSf | bash
安裝腳本完成后,更新您的cargo環(huán)境以調用新安裝的程序:
// update env (alternatively, reboot your system)
source ~/.cargo/env
現(xiàn)在可以通過Substrate命令訪問已編譯的Substrate節(jié)點。要驗證是否正確安裝了Substrate和Subkey,請分別檢查兩個程序,Substrate和subkey的版本控制:
substrate --version
subkey --version
注意:Polkadot JS應用程序(我們進一步介紹)已在其帳戶管理UI中實現(xiàn)了Subkey - 可以選擇在瀏覽器中管理帳戶,某些用戶不需要Subkey。這可能有助于它為可選實用程序的原因。
所有都是Rust編譯的二進制文件,默認情況下,Substrate和utility工具現(xiàn)在將駐留在?/ .cargo / bin目錄中。檢查自己已安裝的內容:
// list installed cargo binaries
cd ~/.cargo/bin
ls
您會注意到,除了Substrate和Subkey外,我們還可以使用Substrate-node-new和Substrate-module-new的二進制文件。我們將進一步使用這些來生成新的自定義節(jié)點和模塊。
注意:另一個新編譯的二進制文件是substrate -ui-new,一種用于克隆前端React app以管理Substrate鏈的工具。當我嘗試運行應用程序時,這標記了一個錯誤,因此我們假設Polkadot JS / Substrate UI應用程序 - 另一個基于Typescript和React的應用程序,用于配置和管理Substrate和Polkadot區(qū)塊鏈 - 是管理鏈的首選方法。
更新substrate腳本
更新Substrate腳本(從官方文檔中提?。┬枰獜椭?a href="http://www.wenjunhu.com/article/bbs/" target="_blank">最新版本并使用以下命令替換cargo二進制文件:
f=`mktemp -d`
git clone https://github.com/paritytech/substrate-up $f
cp -a $f/substrate-* ~/.cargo/bin
cp -a $f/polkadot-* ~/.cargo/bin
我們已經(jīng)安裝了所需的Substrate工具并準備好使用。我們現(xiàn)在確實可以通過預先構建的開發(fā)節(jié)點運行Substrate。此節(jié)點將開始生成塊,但對開發(fā)用途不大。
注:Substrate開發(fā)人員使用此預構建節(jié)點,可通過Substrate路徑訪問,僅用于開發(fā)目的,測試其最新版本并播放配置。對于擁有自己的runtime模塊和鏈配置的底層項目,我們將編譯一個自定義節(jié)點。這需要復制Substrate源代碼并構建我們的自定義節(jié)點。
無論如何,我們可以驗證Substrate dev鏈是否正在使用此命令:
substrate --dev
您的節(jié)點將在終端中運行,并且將開始生成區(qū)塊。為了查看有關您的鏈的更多信息,例如每個支持模塊的狀態(tài),我們將轉向Polkadot JS應用程序。
有關Substrate命令行選項的細分,請查看--help輸出:
substrate --help
熟悉幫助輸出是了解命令行程序功能的一種經(jīng)過嘗試和測試的方法。此生成包含一些用于測試的有用標志,例如預先配置的帳戶--alice,--bob等。該--light標志將節(jié)點作為輕型客戶端運行,并在框架中內置輕型客戶端支持。
這些和其他標志使得切換鏈配置變得簡單,主要用于開發(fā)目的。
注意:您甚至可以使用自定義Substrate節(jié)點定義自己的命令行選項。請記住更新--help輸出!rust擁有廣泛的命令行工具,是我個人最喜歡的命令行實用程序開發(fā)語言。
在進入自定義構建之前,讓我們回顧一下如何檢查Substrate鏈。今天這樣做的主要方法是通過使用Typescript和React開發(fā)的Polkadot JS應用程序。
使用Polkadot JS
Polkadot JS應用程序充當基本鏈資源管理器,并提供API和接口來管理Substrate模塊。顧名思義,它也支持Polkadot鏈。我們有兩種使用Polkadot JS的選擇:
使用Parity托管應用程序,網(wǎng)址為https://polkadot.js.org/apps復制項目的存儲庫并在您的計算機上本地運行。
讓我們復制項目并在本地運行它。安裝完成后,我們可以將節(jié)點端點指向我們的Substrate鏈,這將是您機器上的另一個正在運行的進程。
// clone and start polkadot.js app
git clone https://github.com/polkadot-js/apps.git
mv apps polkadot.js
cd polkadot.js && yarn start
// start substrate dev chain in another terminal window
substrate --dev
運行后,在瀏覽器中轉到localhost:3000。 要將應用程序連接到本地鏈,請導航到應用程序側面菜單中的“設置”,然后切換到“本地節(jié)點”端點,類似于以下設置:
當點擊save&reload時,您會注意到現(xiàn)在有許多其他的側菜單鏈接。這些鏈接將根據(jù)您的鏈支持的功能而變化。
讓我們來看看幾乎所有連鎖店都會支持的東西 - 賬戶。轉到應用程序的“帳戶”部分,您將看到“我的帳戶”標簽下的帳戶列表。這些是預先配置的帳戶,具有預配置的余額。我們還可以在帳戶之間發(fā)送資金,刪除帳戶和備份帳戶密鑰。這突出了Polkadot JS應用程序的用途 - 在UI級別與您的Substrate鏈進行交互。
在繼續(xù)之前,我們將提到Polkadot UI可以做的更多事情,只是為了突出它的一些功能:
· 您可以上載wasm-compiled基于ink的智能合約以與Contracts運行時模塊一起使用。
作為pos共識區(qū)塊鏈,Staking部分允許您投入資金成為交易的驗證者,支持通過“藏匿賬戶”存儲這些stake資金,可以保持離線的賬戶或存儲這些資金在冷錢包。提名驗證人,也可以查看staking獎勵。當然您也可以從stake存儲錢包中提取資金。
· 民主部分的目的是處理行政投票和管理鏈
· 整個Substrate JSON RPC(通過一系列端點從外部聯(lián)系Substrate的方法)可以在Toolbox部分進行測試,而對鏈的管理更改可以在Sudo部分進行
· 您可能想知道來自Substrate dev鏈的那些預先配置的帳戶來自哪里,這是正確的。這些帳戶以及更多內容(包括運行時邏輯本身的已編譯代碼的“blob”)存儲在“鏈規(guī)范”文件中,也稱為鏈規(guī)范。
來源: 區(qū)塊鏈研究實驗室
評論
查看更多