平行鏈上線技術系列三:Rococo local and public test network

引言

本文首先介紹在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目錄下執行:

平行鏈上線技術系列三:Rococo local and public test network

啟動parachain

生成parachain的 chain spec

平行鏈上線技術系列三:Rococo local and public test network

如果需要修改paraId,可以修改rococo-local-parachain-plain.json文件

這裡修改為: 2052

平行鏈上線技術系列三:Rococo local and public test network

生成修改後的paraId的chainspec文件

平行鏈上線技術系列三:Rococo local and public test network

生成wasm文件

平行鏈上線技術系列三:Rococo local and public test network

生成genesis state文件

平行鏈上線技術系列三:Rococo local and public test network

啟動本地collator節點

平行鏈上線技術系列三:Rococo local and public test network

然後在打開本地的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

平行鏈上線技術系列三:Rococo local and public test network

2. 通過這個ParaId(這裡選擇自己已經註冊的一個Id,我這裡選自己註冊的2052)以及之前我們本地生成的genesis state和wasm文件來註冊parathread

平行鏈上線技術系列三:Rococo local and public test network

3. 當註冊成為一個parathread后,我們可以看到parathread處於onboarding狀態。此時,我們就可以申請成為平行鏈了,可以聯繫Parity官方的人進行操作,在element頻道

4. 如果官方的人將Parathread升級為parachain后,我們就可以開始本地啟動平行鏈進行測試,是否能鏈接到rococo live且正常出塊。

(1)首先,啟動Live模式的parachain,這裡有兩種方式:

第一種:修改parachain鏈的chainspec文件,以命令行的方式進行指定Live啟動

第二種:通過json文件的形式,由於我們之前已經在本地生成了rococo-local-parachain-2052-raw.json 這個文件,我們只需要修改其中的一些參數(目前很多項目方使用較為普遍的方式,而且操作簡單)

平行鏈上線技術系列三:Rococo local and public test network

主要修改字段為:

  1. chainType:需要將Local修改為Live,
  2. relay_chain:修改為rococo
  3. 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的區塊

平行鏈上線技術系列三:Rococo local and public test network

在啟動上述命令后,我們可以看到Log里會同步rococo的區塊,整個過程大概耗時2小時左右,等待全部同步完畢后,我們的Parachain就會正常出塊了~。

查看rococo test network可以看到:

平行鏈上線技術系列三:Rococo local and public test network

打開本地8844端口可以看到parachain已經可以正常出塊了,這裡我已經出到204個塊…..

平行鏈上線技術系列三:Rococo local and public test network

至此,rococo live測試結束~

Rococo live 部署注意事項:

1. 如果出現以下問題:

平行鏈上線技術系列三:Rococo local and public test network

這種是由於使用的rococo live的json文件和當前rococo live版本不一致導致的,比如使用的是polkadot-0.9.13的live文件,然而當前rococo live版本為polkadot-v0.9.16

2. 同步中繼鏈區塊錯誤:

平行鏈上線技術系列三:Rococo local and public test network

這裡是由於我們live Parachain的版本和rococ live不一致

3. 在將pallet版本從polkadot-v0.9.13升級到polkadot-v0.9.16時,出現一些pallet宏功能無法使用問題

(1)pallet Struct的宏問題

平行鏈上線技術系列三:Rococo local and public test network

當前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的區塊時,出現以下錯誤,並且可以看到一直拉取不到最新的區塊(本地同步的區塊始終低於最新區塊高度)

平行鏈上線技術系列三:Rococo local and public test network

這裡是由於本地機器時間不同步,使用ntp同步即可

平行鏈上線技術系列三:Rococo local and public test network

本文鏈接:https://www.8btc.com/article/6760936

轉載請註明文章出處

(0)
上一篇 2022-06-27 10:21
下一篇 2022-06-27 11:03

相关推荐