Substrate Offchain Worker 机制与实战应用

迈向大规模应用之路:使用Substrate实现基于存储共识的链下计算范式 前言 一款大众意义上成功的 Web2.0 To C 应用,至少应该在百万月活量级。我们熟知的顶级的 Web2.0 应用 Twitter, Google, Facebook, WeChat, Tiktok 等,月活都在 10 亿量级以上。也就是说,面向 C 端的应用,必需搞定高并发及大数据量存储和检索,以及其它一些东西。 而我们来看看目前基于区块链的明星应用,截止目前(成文时:2021.10.15): ● Audius,目前月活 400 万用户,号称建立在以太坊和 Solana 之上,具体其使用链的.. 阅读详情

在这里插入图片描述

Crust 实现了去中心化存储的激励层协议,适配包括 IPFS 在内的多种存储层协议,并对应用层提供支持。同时 Crust
的架构也有能力对去中心化计算层提供支持,构建分布式云生态。

《Substrate 区块链开发入门》是由 Parity 和一块+ 联合出品的全球首个 Parity 官方合作课程系列的开发者入门课程。

每周日晚 8 点,作为课程内容知识拓展——大咖技术分享会,由波卡生态的优质项目方代表自发轮流在线上进行分享,为学员们详细解读一个 Substrate 技术相关内容。
在这里插入图片描述
上周日晚,由 Crust Network 核心开发者—— 子琨在直播间为大家带来第三讲**「Substrate Offchain Worker 机制与实战应用」。**

大家好,我是子琨,之前在浙大 CCNT lab 学习分布式系统和云计算,后来就职于微软,做 Azure Kubernetes 团队容器化服务,现在是 Crust Network CTO。我的 Github 地址:zikunfan。

Crust Network 本身是做去中心化存储的,所以想从链下存储的角度出发,谈一谈 Crust Network 在实战应用 Substrate 的过程中对于 Offchain Worker 这块的经验和遇到过的问题。

                          .01
                       OCW 的机制介绍

| 什么是 OCW

有一个很有意思的观点,就是在计算机行业看来,区块链技术和所有的计算机技术是背道而驰的,因为计算机技术是想方法用有限的资源做更多的事情,而区块链是用同样的资源做相同的事情从而达到去中心化信任的目标。

随着区块链的发展,越来越复杂的逻辑被期望放到链上,也就是说,**大家都觉得用区块链解决信任问题的同时也要能处理现实问题,所以 Scalability 就顺理成章成为了区块链中最为重要的技术目标,**ETH2.0 Casper,Polkadot 平行链,Cosmos 跨链这些都是在解决这个问题。

思考两个问题:

一、什么该被放到链上,什么不该被放到链上。on-chain logic i会被整个网络执行。所以简单的来讲,**需要全网达成共识的部分(共识,交易,区块)我们是一定要放到链上的。**BTC 最早就是简单的这么设计的,但复杂的区块链越来越多想要更多。而更多的复杂计算,巨量存储,隐私计算等等,这些都不应该被放到链上。

二、Oracle 的缺点:

1、Off-chain Mechanisms 是独立的,和链不绑定的程序,其往往是中心化的服务,这违背了去中心化的愿景。

2、Offchain 通常通过 RPC 调用来完成,这会非常慢并且不可靠。

| 为什么我们需要 OCW

更高效
更安全
Forkless Upgrade

OCW 作为 Substrate 中的重要模块,其本身就被 Include 到了 Substrate 的 WASM 环境中,这样在一定程度上保证了全网执行的一致性,并且跟随 Substrate一起升级。

这也就在根本上定义了 OCW 并不是作为独立程序运行去 Aware 链,而是作为链的一部分存在的。

并且,其本身还自带了支持 SignedExtrinsic 的机制,也就是说,传统 Oracle 需要去签名发送交易的过程,OCW 都可以一键通过将 Private Key Set 到本地节点而完成。

再者,OCW 并不是通过 RPC 调用,而是 WASM 之间的 Hook 直接进行链上交易的。

OCW 中目前支持的特性:
本地KV 数据库
功能完善的 HTTP 客户端
安全的随机数生成算法
本地精准时间
本地 Keystore 签名和验证算法
链上回掉

| OCW 的运行机制

在这里插入图片描述

轻松读取链上状态
提交链下运行结果

刚刚讲了,OCW 其实是和 WASM Code 绑在一起的,但是又有所区别,因为 Runtime 的 WASM Code 是会校验世界状态(World State)的,而 OCW 的 WASM 仅仅是一段独立运行的 VM 线程。

Runtime Interface 是 Substrate 里面一个很独特的接口,其链接了 WASM 和 Native,也是 OCW 的底层实现逻辑,但在 Runtime Interface 中,你可以定制任意的 Native 接口,和链上的 WASM 进行交互(平行链是不行的),但是在 OCW 中,对其调用进行了限制,刚才说的几类,所以其本身的 Native 环境(平行链是可以的)。

Callback 要注意 Unsigned Extrinsic(其本身需要自定义一套验证逻辑)。

| OCW的适用范围

Long Running Task:Substrate 中的 Offchain Phragmen 代码
合并链上状态,缩减链上状态爆炸的问题
链下通知系统:Substrate 中的 im_online 模块

                          .02
                     OCW 的实际应用场景

| 处理状态爆炸

在这里插入图片描述

Crust 对 OCW 的第一个实际应用是,利用 OCW 来处理链上状态爆炸的问题
先讲一下整体的 sOrder 流程:

1、On-chain:用户直接对着链进行下单
2、Off-chain:用户带着链上 Orderid 传递文件
Locally,是对用户的订单进行打包,然后逐步上链验证。

在这里插入图片描述

三个难点:

1、Crust 设计了一套 Offchain 的接单系统
2、在 Offchain 订单达到 4GB 之后提交一个“大”订单到链上
3、在 ValidateUnsign 的部分,Crust 设计了一个 Delayed Proof Function,Delayed proof function 中处理了节点恶意提交订单的情况(会被惩罚,具体是整体订单价值的 2%)。所以用户在打包订单的同时,需要有文件被存储,并且链上已经存在匹配的用户锁定金额的交易。

| 处理复杂的链上计算

在这里插入图片描述

Crust 对 OCW 的第 2 个实际应用是,利用 OCW 来处理链上的复杂计算(长时间状态更新任务)的问题,就像 Kusama 和 Polkadot 中的 Offchain Phragmen 算法一样。

先讲一下这个 Long Running Task 是什么,这就涉及到 MPoW 中 File Inspector 的工作机制:基本上,它将所有文件根哈希存储在 Encalve 内,Encalve 是 CPU 内受信任的硬件运行时模块。并定期要求外部文件系统提供特定的文件片段,并在 Enclave 内对其进行检查。然后对检查的结果在 Enclave 内部进行签名并且最终形成工作量报告提交到链上。

而其中的工作量报告包含每个节点的文件存储信息,我们需要使用此信息来更新相应存储订单的状态。这可能会花费很多时间来处理更新,因为其索引结构在链上,是一个反向索引的 Hash Map。

而利用 OCW,我们可以把这个更新操作放到链下,不断读取链上工作量报告,并不断向链上提交更新的结果,并交给链去验证即可。

点击视频,回顾:

Substrate Offchain Worker 机制与实战应用

关于 Crust Network

Crust Network 实现了去中心化存储的激励层协议,适配包括 IPFS 在内的多种存储层协议,多种存储应用提供支持。同时 Crust Network 的架构也有能力对去中心化计算层提供支持,构建分布式云生态。

目前上线了公开测试网 Maxwell 1.0,欢迎各位加入测试体验。Crust Network 先后加入 Substrate Builders Program、Web3.0 Bootcamp,以及获得 Web3 基金会 Grant 。Crust Network 作为一个分布式的云存储项目,又不止于云存储,Crust Network 的最终目标是建立一个泛在的公有云生态。

Crust 相关:
Crust 技术白皮书 v1.9.3 版
Crust Network 经济白皮书草案公布
Crust 经济白皮书第 1 期 · 概述
Crust 经济白皮书第2期·参与方
Crust 经济白皮书第 3 期·经济模型
一文快速了解 Crust Network 分布式云

官网:https://crust.network/
Twitter:@CrustNetwork
Medium:https://medium.com/@crustnetwork
GitHub:https://github.com/crustio
Telegram:https://t.me/CrustNetwork
在这里插入图片描述

Substrate - 2 主要概念 - 2.8 链下功能(Off-Chain Features) 2.8 链下功能(Off-Chain Features) 通常需要在将数据包含在链上之前需要查询或者处理线下数据。执行此操作的传统方法是通过 oracles. 虽然这种方法有效,但是在安全性、可扩展性和基础架构效率方面仍然有一些缺点 为了使线下数据集成更加的安全和高效,Substrate提供了以下线下功能: ​ -Off-Chain Worker (OCW) 子系统可以让长时间运行的和可能性不确定的任务(例如:Web请求、数据加密/解密、数据签名、随机数生成、CPU密集型计算、链上 数据的枚举和集成等)执行 阅读详情

相关推荐

Substrate应用开发基础架构

熟悉Web开发流程的同学应该都清楚,开发一个完整的服务器后端,无非要弄清楚几样东西。 1.请求如何接入?是http,restful, 还是 rpc? 2.应用逻辑写在哪里,怎么写 3.数据如何存储?用什么数据库? 4.当前服务如何调用其它服务(高级,异步) 将此模式应用到 Substrate 上,官方给出了如下结构图。在这个图中,Off-chain workers 起到了非常重要的作用。 笔者通过对 substrate 的深度分析,在这里给出上图的一个细化图,基于此图,采用 substrat

MixWeb3 博客 683

Substrate源码分析:启动流程

我们在命令行启动 substrate 节点,到底发生了什么呢?本文基于 substrate 源码,对其启动流程进行了简单的分析。命令行启动 substrate,主要是解析...

Rust语言学习交流 1297

Substrate - 1 开始 - 1.4 在Windows上开始

1.4 在Windows上开始 提示: Substrate本地开发支持的不是很好,强烈推荐使用 Windows Subsystem Linux (WSL) 和按照Ubuntu/Debian说明操作。在MacOS或者Linux等以Unix为基础的操作系统上进行Substrate开发是最容易的。Substrate教程https://docs.substrate.io/tutorials/v3/和指导https://docs.substrate.io/how-to-guides/v3/中的例子使用的是Unix风格

weixin_51487151的博客 821

区块链研究实验室 | 基于substrate创建Ink智能合约

Parity的Substrate区块链框架,在最终版本开发中取得不错的进展。Ink是Parity为基于Substrate的区块链编写智能合约的解决方案。 与Substrate一样,Ink建立在Rust之上,因此遵循Rust语言规则和语法。本文将介绍一个示例在智能合约中复制一个ERC721令牌,通常称为以太坊区块链上的ERC721令牌。 这是系列文章的第1部分,将介绍创建和部署此Ink智能合约的...

willam1的专栏 1208

LLC谐振变换器恒压恒流双竞争闭环控制simulink仿真(附说明文档)

内容概要:本资源是一套面向电力电子与智能控制领域的综合性科研仿真资料合集,核心聚焦于LLC谐振变换器的恒压恒流双竞争闭环控制策略设计与Simulink建模仿真实现,涵盖半桥LLC、双向全桥LLC等拓扑结构的调频闭环仿真,并提供详尽的说明文档与PPT辅助材料。资源体系不仅深入呈现LLC变换器的动态响应与控制逻辑,还扩展至双有源桥(DAB)变换器的软开关协同优化、最小应力控制、EPS调制策略及新扩展移相角优化等前沿技术,同时集成三相PWM整流器在电网不平衡条件下的功率平衡控制、VOC+SVPWM双闭环控制等典型应用场景。此外,资源包涵盖状态估计(如EKF、UKF、PF)、微电网经济调度、卡尔曼滤波融合、神经网络控制、PID优化、储能系统管理等多个交叉方向,特别强调对顶级EI期刊研究成果的高精度复现,旨在帮助科研人员快速掌握先进控制算法的核心思想与仿真实现方法。; 适合人群:电气工程、自动化、电力电子、新能源科学与工程等相关专业的硕士博士研究生、高校科研人员,以及从事新能源变换器、智能电网、电动汽车、微电网系统研发的工程技术人员。; 使用场景及目标:① 深入理解LLC与DAB变换器的闭环控制机理,掌握恒压恒流切换、软开关实现与损耗优化方法;② 利用Simulink平台构建复杂电力电子系统模型,开展动态性能分析与控制器参数整定;③ 复现高水平期刊论文中的先进控制策略,提升科研创新能力与论文发表竞争力;④ 支持毕业设计、科研课题、项目申报及工程原型开发中的仿真验证环节。; 阅读建议:建议结合提供的完整资源目录循序渐进学习,优先研读标注“顶级EI复现”的案例以获取权威方法参考,配合MATLAB/Simulink动手搭建模型,重点关注控制框图设计、调制逻辑实现与仿真结果对比,深入理解算法背后的物理意义与数学推导过程。

手把手教你设计2bit反射型超表面:从单patch扫参到pin管配置全流程

本文提供了一份2bit反射型超表面设计的完整工程实践指南。从单贴片谐振器的参数化扫描与“270度法则”应用,到PIN二极管等效电路模型的获取与集成,再到利用参数化扫描高效仿真四种工作状态,手把手指导读者完成从单元设计到阵列布局、偏置线集成及加工考量的全流程,旨在帮助射频工程师将概念转化为可加工测试的实体模型。

java5的博客 1020

oracle的osw是什么,Tools:OSW工具-Oracle的OS watcher

OSW是Oracle提供的一个用于操作系统监控的工具包,这个工具包可以从Metalink下载。Metalink Note:301137.1下载解包以后即可使用:$ tar -xvf osw.tarx ., 0 bytes, 0 tape blocksx ./osw, 0 bytes, 0 tape blocksx ./osw/Exampleprivate.net, 1731 bytes, 4 ta...

weixin_32956805的博客 727

windows11 远程桌面连接 通过代理连接RDP桌面报错 错误代码0x904 拓展错误代码0x7

打开windows Defender防火墙设置--允许应用通过防火墙更改设置--允许其他应用浏览--进入C:\WINDOWS\system32目录选择mstsc.exe进入C:\Windows\SysWOW64目录h'qmstsc.exe添加后列表里多了一个远程桌面连接,还有一个Remote Desktop Connection,配置网络权限后保存连接成功。

weixin_43978891的博客 1万+

Offchain Worker (下)

向链上发起签名交易

weixin_51487151的博客 431

群晖Docker安装GitLab

external_url ‘http://lanweixia.synology.me’ 这种情况访问页面的时候加上端口没问题,但是会导致http的克隆地址没有端口。external_url ‘http://lanweixia.synology.me:8000’ 加端口的话,又会导致页面访问不了,Gitlab也一直处于启动状态。​ 完成以后修改docke—>gitlab—>config---->gitlab.rb。就是上面改的端口(docker的端口)首次进入,会设置密码,这个密码就是用户名。

Lim的博客 9100

Qt实现仿微信在线聊天工具(服务器、客户端)V1_ 01

在主控类中绑定登录类的信号 void signalLoginOK() ,跳过验证步骤,先实现页面的跳转MyChatToolClient.h文件//登录成功槽函数 private :MyChatToolClient.cpp文件} //登录成功槽函数 void MyChatToolClient :: slotLoginOk() {//关闭登录窗口并释放空间 m_loginWin -> close();//新建并打开聊天窗口 m_chatWin = new ChatWindow;

Leo的博客 1870

OCW

http://ocw.mit.edu/index.htmlhttp://ocw.mit.edu/OcwWeb/Global/all-courses.htm#ElectricalEngineeringandComputerScience

徐祥军 595

<蓝桥杯软件赛>零基础备赛20周--第16周--GCD和LCM

gcd,lcm

罗勇军的博客 7602

Oracle 19c 19.10DBRU 最新补丁升级看这一篇就够了

作者 | JiekeXu来源 |JiekeXu DBA之路(ID: JiekeXu_IT)大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家聊聊 Oracle 19c RU...

JiekeXu的博客 9681

基于TMS320F28034的SCI技术简介

28034的SCI没有接入DMA总线,不过它的收发都有4级的FIFO,在一定程度上也能够缓解cpu的压力。 本文的设计思想如下: 接收:通过中断的方式,4级FIFO满后在中断里将RXDATA出栈。不过就存在这种情况,发送端发出的数据未必能填满4级FIFO,然而此时配置的是4级FIFO触发中断,所以这种情况下中断无法及时地触发。怎么办? 本文的做法是在主程序下循环读取FIFO。这样就可以确保在数据高速传输时,通过中断和主程序及时和有效地接收到总线的数据。(不过当总线波特率较低时可能中断是几...

weixin_48388779的博客 1406

WRFDA如何读取风云四号A 星的GIIRS数据?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1025

Android逆向之旅---Native层的Hook神器Cydia Substrate使用详解

原文:https://blog.youkuaiyun.com/jiangwei0910410003/article/details/73699649

zhangmiaoping23的专栏 712

从基础到前沿:深度剖析光束整形与扫描技术

光束扫描的核心在于通过特定手段改变光束的传播方向,从而实现对目标区域的扫描。在这个过程中,振镜、声光偏转器、电光偏转器等元件发挥着关键作用。振镜是一种常见的光束扫描元件,它主要由电机、反射镜和透镜组成。当电机驱动反射镜旋转时,根据光的反射定律,反射镜会改变入射光线的反射方向。假设初始时光束垂直入射到反射镜上,当反射镜绕某一轴旋转一定角度时,光束的反射方向就会相应改变,从而实现光束在空间中的扫描。在激光打标设备中,通过控制振镜的快速摆动,能够使激光束在工件表面快速移动,完成各种图案和文字的标记。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2097

PSU打oracle的时候显示已经succeed

一. 问题描述: 明明用ORACLE的HOME去打patch,但命令执行后却去找GRID的文件,导致误认为PATCH已经打OK [root@node2 ~]# /u01/app/oracle/product/11.2/db_1/OPatch/opatch auto /home/oracle/software/24436338 -ocmrf /home/oracle/software/ocm.r

EVISWANG的博客 1707

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

深入浅出Substrate:剖析运行时Runtime

基于Substrate开发自己的运行时模块,会遇到一个比较大的挑战,就是理解Substrate运行时(Runtime)。本文首先介绍了Runtime的架构,类型,常用宏,...

Rust语言学习交流 1789

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

为什么Compound选择使用Substrate进行独立链的开发

Mike Tang Compound(https://compund.finanice)在 2021年3月正式上线了其独立链网络 Gateway(原名 Compound Chain)。Gateway是一条独立的链,它的目标是成为一个统一的 Defi 枢纽,实现跨链的 Defi——你可以质押链 A 上的资产,在链 B 上借款——从而将所有链的资产全部打通,提升全网络资产利用率和流动性。 Gateway 的出现基于如下的判断:未来世界一定是一个多链的世界,即没有一条区块链能解决所有问题。未来会有很多条链,很

MixWeb3 博客 2519

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: Crust Network 测试网登陆 Subscan
下一篇: WebX实验室对话 Crust:波卡生态的分布式存储之路
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值