引言
本文首先介紹在Rococo本地的測試流程,最後介紹 rococo 線上測試 parachain 的流程
Rococo local test network 中測試 parachain
Start Relaychain(Local Rococo relaychain)
準備 rococo-local-cfde.json
以下命令是在 polkadot 目錄下操作的,這裡切換分支到 v0.9.16,然後編譯 cargo build –release
編譯完成後,在polkadot目錄下執行:
啟動parachain
生成parachain的 chain spec
如果需要修改paraId,可以修改rococo-local-parachain-plain.json文件
這裡修改為: 2052
生成修改後的paraId的chainspec文件
生成wasm文件
生成genesis state文件
啟動本地collator節點
然後在打開本地的relaychain的polkadot-js的前端界面,註冊parachain,上傳Wasm和genesis state 參考:https://docs.substrate.io/tutorials/v3/cumulus/connect-parachain/
Rococo live test network 中測試 parachain
比如,上面我們已經註冊了parachain 2052,那麼我們就可以在rococo公開測試網上測試我們的Parachain了。
步驟:
1. 在 rococo public test network 註冊一個paraId
2. 通過這個ParaId(這裡選擇自己已經註冊的一個Id,我這裡選自己註冊的2052)以及之前我們本地生成的genesis state和wasm文件來註冊parathread
3. 當註冊成為一個parathread后,我們可以看到parathread處於onboarding狀態。此時,我們就可以申請成為平行鏈了,可以聯繫Parity官方的人進行操作,在element頻道
4. 如果官方的人將Parathread升級為parachain后,我們就可以開始本地啟動平行鏈進行測試,是否能鏈接到rococo live且正常出塊。
(1)首先,啟動Live模式的parachain,這裡有兩種方式:
第一種:修改parachain鏈的chainspec文件,以命令行的方式進行指定Live啟動
第二種:通過json文件的形式,由於我們之前已經在本地生成了rococo-local-parachain-2052-raw.json 這個文件,我們只需要修改其中的一些參數(目前很多項目方使用較為普遍的方式,而且操作簡單)
主要修改字段為:
- chainType:需要將Local修改為Live,
- relay_chain:修改為rococo
- para_id:需要與我們在rococo live上註冊的parachainId保持一致
其他的字段看自己需要進行修改,也可不修改
這裡值得一提的就是bootNodes字段,這個字段在自己首次本地啟動的時候無需進行配置,但是如果你的平行鏈已經上線並且需要給其他用戶加入的話,這裡就需要進行配置引導節點。
(2)獲取當前需要連接的rococo live的chain spec文件
筆者此時的rococo live的runtime版本為polkadot-v0.9.16,所以我們從polkadot上獲取到rococo的chain spec文件 ,放在我們的parachain目錄下
注意,我們的parachain live的runtime版本必須要和當前rococo live的版本一致
(3)一切準備就緒后(準備好parachain live的chain spec文件和rococo live 的chain spec文件),我們就可以啟動我們本地的平行鏈,準備連接到rococo live進行parachain出塊測試了
注意,下面的base path我們需要預留至少12G的空間(以當前時間為2022-02-20來計算的話),否則空間不夠拉取rococo的區塊
在啟動上述命令后,我們可以看到Log里會同步rococo的區塊,整個過程大概耗時2小時左右,等待全部同步完畢后,我們的Parachain就會正常出塊了~。
查看rococo test network可以看到:
打開本地8844端口可以看到parachain已經可以正常出塊了,這裡我已經出到204個塊…..
至此,rococo live測試結束~
Rococo live 部署注意事項:
1. 如果出現以下問題:
這種是由於使用的rococo live的json文件和當前rococo live版本不一致導致的,比如使用的是polkadot-0.9.13的live文件,然而當前rococo live版本為polkadot-v0.9.16
2. 同步中繼鏈區塊錯誤:
這裡是由於我們live Parachain的版本和rococ live不一致
3. 在將pallet版本從polkadot-v0.9.13升級到polkadot-v0.9.16時,出現一些pallet宏功能無法使用問題
(1)pallet Struct的宏問題
當前polkadot-v0.9.16版本中,Pallet結構體上需要加上#[pallet::without_storage_info]
(2)pallet storage問題
當前polkadot-v0.9.16版本中,我們在使用StorageMap這個存儲結構的時候,如果我們的存儲結構中涉及到AccountId需要使用OptionQuery的方式,而非之前的ValueQuery,因為在官方移除了對於AccountId的default處理,所以我們就需要使用Option的方式處理空值None。對應的咱們的pallet就需要進行重構,並對None進行處理,杜絕Runtime出現這種異常。
4. 在同步rococo live的區塊時,出現以下錯誤,並且可以看到一直拉取不到最新的區塊(本地同步的區塊始終低於最新區塊高度)
這裡是由於本地機器時間不同步,使用ntp同步即可
本文鏈接:https://www.8btc.com/article/6760936
轉載請註明文章出處