IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Rococo local 和 Rococo live 上线流程 -> 正文阅读

[开发测试]Rococo local 和 Rococo live 上线流程

本文首先介绍在Rococo local的测试流程,最后介绍rococo live上测试parachain的流程

Rococo local test network中测试parachain

启动 Relaychain(Local Rococo relaychain)

准备 rococo-local-cfde.json
以下命令是在 polkadot 目录下操作的,这里切换分支到 v0.9.16,然后编译 cargo build --release

编译完成后,在polkadot目录下执行:

./target/release/polkadot --chain rococo-local-cfde.json --alice --tmp --port 30333 --ws-port 9944

./target/release/polkadot --chain rococo-local-cfde.json --bob --tmp --port 30334 --ws-port 9945

./target/release/polkadot --chain rococo-local-cfde.json --dave --tmp --port 30335 --ws-port 9946

启动parachain

生成parachain的 chain spec

./target/release/xxxx build-spec --disable-default-bootnode > rococo-local-parachain-plain.json

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

这里修改为: 2052
// --snip--

"para_id": 2052, // <--- your already registered ID

// --snip--

"parachainInfo": {

"parachainId": 2052 // <--- your already registered ID

},

// --snip--

生成修改后的paraId的chainspec文件

?
./target/release/xxx build-spec --chain rococo-local-parachain-plain.json --raw --disable-default-bootnode > rococo-local-parachain-2052-raw.json

?

生成wasm文件

?./target/release/xxx export-genesis-wasm --chain rococo-local-parachain-2052-raw.json > para-2052-wasm

生成genesis state文件

./target/release/xxx export-genesis-state --chain rococo-local-parachain-2052-raw.json > para-2052-genesis

启动本地collator节点

./target/release/xxx \

--alice \

--collator \

--force-authoring \

--chain rococo-local-parachain-2052-raw.json \

--base-path /tmp/parachain/alice \

--port 40333 \

--ws-port 8844 \

-- \

--execution wasm \

--chain ../../../polkadot/rococo-local-cfde.json \

--port 30343 \

--ws-port 9977

然后在打开本地的relaychain的polkadot-js的前端界面,注册parachain,上传Wasm和genesis state 参考:Connect a Parachain | Substrate_

Rococo live test network中测试parachain

比如,上面我们已经注册了parachain 2052,那么我们就可以在rococo公开测试网上测试我们的Parachain了。(注册之前我们需要到rococo水龙头领取ROC,目前是一次领取100ROC,完全足够我们申请了)

步骤:

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 这个文件,我们只需要修改其中的一些参数(目前很多项目方使用较为普遍的方式,而且操作简单)

主要修改字段为:

  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(读者在部署前,建议先打开rococo live查看一下此时的版本,看网页右上角的版本,再去获取对应版本的chain spec文件),所以我们从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的区块
./target/release/dorafactory-node \

--alice \

--collator \

--force-authoring \

--chain (parachain live chainspec file) \

--base-path /home/parachain-rococo-data/parachain/alice \

--port 40333 \

--ws-port 8844 \

-- \

--execution wasm \

--chain (rococo live chainspec file) \

--port 30343 \

--ws-port 9977

在启动上述命令后,我们可以看到Log里会同步rococo的区块,整个过程大概耗时2小时左右,等待全部同步完毕后,我们的Parachain就会正常出块了~。

查看rococo test network可以看到:

打开本地8844端口可以看到parachain已经可以正常出块了,这里我已经出到204个块.....

至此,rococo live测试结束~

Rococo live 部署注意事项:

1. 如果出现以下问题:

DATE [Relaychain] Bootnode with peer id `ID` is on a different

chain (our genesis: GENESIS_ID theirs: OTHER_GENESIS_ID)

这种是由于使用的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出现这种异常。

(3)在同步rococo live的区块时,出现以下错误,并且可以看到一直拉取不到最新的区块(本地同步的区块始终低于最新区块高度)

[Relaychain] 💔 Verification failed for block 0x04323a860c09fa73051cad03193965508a981dd1655d87406b0985cb590c26c0 received from peer: 12D3KooWNFVr3QBsYwxVtsFjuRgjswNiYV1xi7Mj7EKYA1iGrpmL, "Header 0x04323a860c09fa73051cad03193965508a981dd1655d87406b0985cb590c26c0 rejected: too far in the future"

这里是由于本地机器时间不同步,使用ntp同步即可

ntpdate 0.pool.ntp.org

笔者目前专注于Polkadot和Substrate相关的技术开发,感兴趣的同学可以加入QQ群(Substrae/Polkadot跨链技术):825344668 一起学习交流

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:56:28  更:2022-03-10 22:57:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:17:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码