平行链上线技术系列三: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目录下执行:
启动parachain
生成parachain的 chain spec
如果需要修改paraId,可以修改rococo-local-parachain-plain.json文件
这里修改为: 2052
生成修改后的paraId的chainspec文件
生成wasm文件
生成genesis state文件
启动本地collator节点
然后在打开本地的relaychain的polkadot-js的前端界面,注册parachain,上传Wasm和genesis state 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同步即可
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum