在 offchain_worker 代码中,会调用到 ethereum-client/ 提供的以太坊基础类型和辅助工具,发 http 请求到以太坊的事件服务器,批量获取以太坊的 events,并分类处理 处理后的结果会以发交易的形式从 offchain_worker 中提交到链上 进入 Runtime 业务逻辑进行处理 pallets/oracle/ 里面的逻辑流程也类似:在 offchain_worker 中,用 http 请求从喂价机地址获取数据,然后提交给链上使用。 理解了上述流程后,也就能比较轻松地理解 Compound 在 Ethereum 上做 Compound Governance Proposal 是如何影响到 Gateway 链上的验证人节点集合更新的了。其仍然是通过以太坊的事件向外抛出信息,事件服务器搜集到事件后,缓存下来。Gateway 这边的 Offchain worker 每新增一个块就去事件服务器上批量取一次最近的事件。获取到最近的事件后,按对应的逻辑迭代处理就行了。而 Substrate 中要更新验证人集合,需要用到 Controler account,以及 SetKeys 等相关由 Substrate 提供的功能。 限于篇幅,我们这里的分析点到为止,这里只简要的分析了 Gateway Pallet 粗线条的逻辑流程,然后对 Offchain Worker 部分做了重点关注。 可以看到,Gateway 充分利用 Substrate 提供的基础设施,很方便地实现了业务逻辑以及链上代码与链下代码的集成,以及与其它链的交互。整个代码实现得非常清晰,值得我们学习借鉴。 总结本篇,我们介绍了 Gateway 的总体架构,Substrate 的功能模块,Substrate 框架的特色之处,以及 Gateway 是如何充分使用 Substrate 提供的基础设施进行独立链的开发。 限于篇幅,很多地方只能点到而止,文末附上一些链接,可供大家扩展阅读。 笔者水平有限,欢迎读者使用以下邮箱与我联系:mike@oct.network。 参考资料 1.Introducing Gateway: https://medium.com/compound-finance/gateway-623f6f48d2b6 2.Gateway Document: https://docs.google.com/document/d/1bp4uLYHt0_lUNO3dveFGelXYAC-M7RojqY-5jPDyUlM/edit#heading=h.ymt4jrq294bj 3.Compounds Gateway: a deep dive into setting up a validator node. https://medium.com/ethereum-on-steroids/compounds-gateway-a-deep-dive-into-setting-up-a-validator-node-399a2817702d 4.https://github.com/compound-finance/gateway 5.Substrate.dev: https://substrate.dev/docs/en/ 6.《2020 开发者调查报告:Rust 再次成为最受欢迎的语言》 https://mp.weixin.qq.com/s/xGZqrXfzfthVSIUWIQWENA (责任编辑:admin) |