1 为什么要引入Offchain Features
区块链上的存储和计算资源都非常有限,这无法满足我们对性能的要求。Offchain Features 的引入可以在一定程度上解决这种问题,把需要长时间计算的、耗费大量存储的业务放在链下
那以太坊是怎么解决的呢,它通过Offchain Daemo对链上信息进行监听,然后基于监听结果进行各种逻辑处理,最后再将结果通过rpc传至链上
substrate 的offchain worker 在监听逻辑上其实与以太坊非常相似,区别在于以太坊的Offchain Daemo是独立的应用程序,代码的维护、管理、分发不会经过链上共识,而substrate的offchain worker逻辑在runtime中,这可以让链下业务逻辑共享链上逻辑升级方案
总结而言,substrate offchain worker:
集成度更高,链上链下代码管理统一,在一个节点内,维护性更好
链下代码经过共识验证,分发可靠性有保证,防止潜在的作恶行为
链下代码和链上代码共享同一份forkless升级策略
从offchain worker向链上发送交易,而不是通过外部的rpc通道,交易处理更加灵活和高效
2 Offchain Features 三大组件
Offchain Worker
Offchain Storage
Offchain Indexing
关于上面的三大组件详细内容可以参考之前的翻译以及原文:
原文链接:Offchain operations | Substrate_ Docs
注意:
Offchain Worker可以直接读链上的数据(状态),但不能写
链上代码可以向Offchain Storage中写数据,但不能读
外层的node和rpc可以直接读链上存储的数据以及Offchain Storage中的数据
外层的node和rpc可以直接向Offchain Storage中写数据,但不可以向链上存储写数据
在链上存储数据或者更改数据只能通过发交易的形式(经过共识验证数据)
3 Offchain worker 功能
提交签名和未签名的交易(计算后的数据或者fetch到的信息)
实现了标准的HTTP客户端,可以发送GET/POST请求等
可以读取本地数据库并在offchain workers之间共享数据
读取本地账户信息,签名和验证信息或者交易
产生真随机数
访问本地精确的unix时间戳
可以暂停和恢复工作