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


3、怎么使用Substrate进行Rust开发?
Parity|密码极客&波卡生态系列分享会第一期:如何基于波卡开发区块链项目
文章图片
图5
与此同时 , 除了图5上面提到的这种ink! 智能合约 。 这种ink!.Rust类型的智能合约 , 我们目前也兼容了evm其实大家可以使用这些去编写智能合约 , 然后在自己对应的消费链上面进行一个运行 。 接下来我就大致跟大家分享一下怎么使用Substrate进行这种Rust开发 。 因为Substrate是跟其他的智能合约开发比较不太一样 , 因为你是相当于开发一个区块链 , 虽然区块链底层 , 像数据库、网络、控制协议都搭好了 , 但是针对你自己特殊的这种需求 , 例如你要做游戏的一个区块链 , 或者是偏支付的这样一个链 , 这种核心的商业逻辑还是需要你进行开发的 。
Parity|密码极客&波卡生态系列分享会第一期:如何基于波卡开发区块链项目
文章图片
图6
那么进行开发的话需要这种Substrate Runtime的 。 图6里边大家可以看到 , 由于Substrate跟我们平时开发智能合约不太一样 , 那么的话它是有一些这种开发上面的一些这种policy需要大家去记住的 。 例如第一点 , 在Substrate Runtime你如果发了一个我们叫做extrinsic , 或者你就把它当做交易 , 发交易的时候 , 如果这个交易进行时发生了问题的 , 那么交易对状态的改变是不会回滚的 。
然后在以太坊上面进行solidity的开发的话 , 如果交易执行不成功 , 那么其实它的状态是会回滚的 。 这就要求了我们在开发Substrate runtime的时候 , 最好是我们先自己验证一下他这样的一个逻辑对不对?然后再写 。
接下来这几页的图片 , 大家可以看一下 , 在写这种runtime或者相对应的这种逻辑的时候 , 需要大家在里边填充自己的这种代码的 , 大家可以看模块定义通常是包含怎么定义存储事件以及错误 , 还有就是一些相关的这样的一个函数 。
Parity|密码极客&波卡生态系列分享会第一期:如何基于波卡开发区块链项目
文章图片
图7
对于这种如果大家想引用其他的相关的这样的一些trait的话 , 因为整个Substrate都用Rust写 , 所以这也会用到一些trait , 如果大家想知道更多这种Rust相关的信息的话 , 再可以在网上查一下Rust的相关课程 , 或者加入我们Substrate的课程 , 我们会介绍一些 Rust的相关的这种基础 。 然后像存储的话 , 大家可以看到其实里边有一些比较简单的类型、最简单的方法 , 大家就可以学习已经有的这些简单的类型或者这种例子 , 然后根据自己的实际情况 , 然后去改一下相关的这种变量名字 , 进行这样的一个操作 。 与此同时的话类似于我们写智能合约 , 在做一些操作的时候都要触发事件或者发出事件 , 那么这里边你也可以去定义一个事件 。
当然了这里面还有一个地方就是decl_module , 其实就是要定义自己相对应的这种runtime的函数 , 我在最后会提到的叫做Substrate.dev这样的一个网站上面有很多各种各样的教程 , 大家可以跟随教程去学习 , 以及做一些比较简单的例子去深入学习 , 怎么去根据这几个模块定义对应的这样的一个事件存储和函数 , 来完成自己对应的这样的一个Runtime , 以及相对应的逻辑的定义以及操作 。
4、Substrate应用链跟智能合约的差异性在哪?
在这里简单类比下Substrate应用链或者Runtime跟智能合约的差异性 。
Parity|密码极客&波卡生态系列分享会第一期:如何基于波卡开发区块链项目
文章图片
图8
大家都知道写智能合约 , 特别是以太坊上面的solidity这样的一个智能合约 , 很多时候由于solidity以及以太坊本身的限制——比如它存储量较低、手续费较高 , 同时像solidity它本身的限制也是比较多 , 可能更多时候是只能操作整数这种类型 。
这就是为什么大家看到的目前以太坊上面比较火热的应用都是跟通证相关 , 而不是跟更广泛的Web3.0相关的原因 。
而大家使用Substrate进行开发的时候 , 就不存在这样的问题 。
因为大家使用Substrate开发的时候 , 整个链都是为开发者所控制的 。 所以当大家在进行开发的时候 , 不管是链上链下数据 , 或是对应的一些solidity没有的接口 , Substrate都可以进行一个提供 。
并且大家也可以看到 , Substrate本身的吞吐量也是比较高的 , 所以可以给应用提供更多的处理交易与逻辑的空间 。
与此同时 , Substrate本身也会提供一个off-chain worker链下工作机 , 可以帮助做Substrate应用开发的开发者能够更快的处理相关的链下数据 , 实现链上处理链下数据 , 这样就打通了链上与链下 。
5、无缝无分叉的链上升级
熟悉区块链行业的朋友都知道 , 在过去 , 所有的公链项目包括一些联盟链项目 , 如果想要做升级的话 , 都需要进行一个硬分叉 。 像比特币 , 特别是以太坊 。 大家都知道在16年由于“The DAO”事件 , 由于矿工意见不同 , 最终从以太坊分出了经典以太 。


推荐阅读