Parity|密码极客&波卡生态系列分享会第一期:如何基于波卡开发区块链项目( 三 )


我们为什么要做链相关的升级?这其实涉及到了一个计算机或者编程行业 。
大家其实默认这样一个现象:没有任何一个程序员可以写出没有漏洞的代码 。
不管是写传统的应用 , 还是写区块链得应用 , 或者智能合约 。 通常情况下你写的代码越多 , 那么你可能产生的安全漏洞就越多 。
回顾过去的几年 , 不管是DEFI还是链本身 , 大家都会发现很多各种各样的漏洞 , 导致很多用户有各种各样的财产损失 。
这就使得区块链本身需要一个比较好的升级——不管是智能合约升级还是链本身的升级 。
但如果我们频频地去使用这种硬分叉进行升级 , 首先时间赶不上 , 因为升级需要“各个矿工在很短的时间内 , 把自己的软件升级到最新的版本 , 然后在某一个特定时间内大家共同去升级到这样的版本 , 最后从旧链切入到新链上面”的这样的一个逻辑 。
然而 , 由于硬分叉 , 这种升级模式成本极高 , 而且很多时候可能会导致你本身的链又分叉出其它的链 。
那么像Substrate就有一个无缝的链上升级 。 其实就是将开发者相对应的一个Runtime提交到链上面 , 然后进行一个验证者链上投票 , 大家可以看到这其实是跟链上治理相关的 。
链上投票完成以后 , 如果绝大多数人同意进行对应的一个升级 , 那么开发者提交的一个Runtime就会被写入到整个链的Runtime里边 , 进行对应的升级 。
有了这样一个无分叉链上升级 , 就可以保证区块链开发者可以更安心的运行自己的区块链 。
即使出现一些问题 , 也可以很快的去进行修复或改正 。
Parity|密码极客&波卡生态系列分享会第一期:如何基于波卡开发区块链项目
文章图片
图9
6、链下工作机(off-chain worker)
大家都知道 , 在以太坊上面我们有各种各样的预言机 , 例如chainlink。
在过去的半年 , 预言机是很受到各种各样的人的关注的 。
因为以太坊本身无法打通链上链下的渠道 , 所以链上如果想要获得链下数据——例如各种各样的通证价格 , 就需要这种预言机将数据发送到链上 。
而Substrate本身就是链下工作机的运行原理——其实就是链上的这些节点 , 它们会通过链下工作机去取得链下的相对应的数据 。
Parity|密码极客&波卡生态系列分享会第一期:如何基于波卡开发区块链项目
文章图片
图10
那么这些链上的验证节点 , 就可以对链条数据直接进行处理 。
未来的话可以对处理结果——例如在链上形成共识 , 来保证可以更快、更方便的拿到链下信息 , 并进行相关的计算 。
像在波卡或Substrate对应的生态里 , 就不太需要这种单独的预言机 。 因为对应的这种链下工作机的接口已经写的比较好了 。
与此同时 , 大家也可以看到对应的这样一个场景:除了我刚刚提到的想去拿一些链下数据;还有就是使用链下工作机的一些场景 。
例如某些比较庞大的计算 , 我们就可以使用链下工作机来完成 , 结果完成后再返回给对应的一个链上验证者 。
这里有一些链下工作机的相关学习资源 , 大家可以进行一个参考 。
Parity|密码极客&波卡生态系列分享会第一期:如何基于波卡开发区块链项目
文章图片
图11
7、如何更好的接入到波卡里面?
前面我讲了一些关于例如波卡是如何使用Substrate进行开发的 , 以及Substrate写出来的Runtime大概是什么样的 , 同时还有Substrate进行开发的优点的话题 。
那么大家可能也更想知道:如果用Substrate去开发出一套区块链系统 , 我是如何更好的接入到波卡里面的?
大家可以看一下图12 , 其实就是关于波卡整个的一个框架 。
熟悉波卡都知道 , Polkadot最中间、最核心的是叫做Relay Chain或者叫做中继链 。 中继链里面跑了很多对应的验证节点 , 叫做区块验证节点(Validators) 。
Parity|密码极客&波卡生态系列分享会第一期:如何基于波卡开发区块链项目
文章图片
图12
不同的链如果接入到中继链里边 , 它们就会作为一个平行链接入到中继链里边 。
很多比较大的区块链系统 , 例如比特币或者以太坊 , 它们如果想接入到波卡里面 , 就需要通过桥首先调节到一个平行链上面 , 再通过平行链与其他的平行链沟通 。
作为平行链 , 它们对于内容的或者区块的验证要通过中继链相关的验证节点来完成 。
那么的话大家就会问 , 平行链本身需要什么节点?这就像图里面提到的一样 , 需要叫做collator的这样一个类型的节点 。
这些节点就负责采集每个平行链对应的区块 , 然后提交给中继链随机选择的一些区块验证节点 。 这些区块验证节点就会去验证平行链里对应的区块 。
与此同时 , 使用Substrate写出来的区块链 , 还需要另外一个模块叫做Cumulus 。 大家可以在用Substrate写完这个Cumulus后 , 再进行稍微的改进 , 就可以用Cumulus连入到平行链里面 。
当然 , 不是每一个Substrate链都可以连入到平行链和中继链 , 或者波卡里面——这就涉及到一个平行链插槽的拍卖 。


推荐阅读