ZKML——EZKL团队分享

1. 引言

“ZKP之于数字签名” 类似于 “以太坊之于比特币”:

  • 所谓数字签名,是指:“我知道某秘密secrets,使得 F(secrets, public inputs)=pubic outputs”,其中F为fixed function(固定函数)。这是花费coin的原理。
  • 所谓ZKP,是指:“我知道某秘密secrets,使得 F(secrets, public inputs)=pubic outputs”,其中F为任意程序

当由关注链上计算转为关注链下计算时,置入到ZKP中最有趣的程序是机器学习模型,使得AI可在链上高效运行。

2. 为何需要ZKML?以及 何为ZKML?

2.1 为何需要ZKML?

AI在持续发展,但其不运行在链上。

链下ML/AI的特点为:

  • 中心化的
  • 需要信任
  • 需熟悉Python工作流
  • 有大量现有的模型库
  • 有大小公司助力

链上合约的特点为:

  • 去中心化的
  • 无需信任的
  • 可组合式的
  • 扩容性差的
  • 对AI/ML来说太慢且太贵

ZK的特点为:

  • 去中心化的
  • 无需信任的
  • 可组合式的
  • 可扩容的:单个机器证明
  • 有复杂的电路编写语言
  • 难以理解ZKP算法及其背后的数学和安全性。

而ZK + ML 结合:
在这里插入图片描述

2.2 何为ZKML?

所谓ZKML,是指:

  • 可从区块链视角来感知物理世界
  • 使得拥有数字资产的为人类,而不是某域元素
  • 让智能合约可自行判断

在这里插入图片描述

3. 何为EZKL?以及 EZKL通用流程

3.1 何为EZKL?

https://github.com/zkonduit/ezkl(Rust)为 将某ONNX模型(为Pytorch或Tensorflow的输出) 转换为 某零知识证明 的工具:

  • 可 以命令行(或二进制、合约、WASM)方式证明+验证。
  • 逐日增加layers,足以应对小型生产模型。
  • 逐月以2-8倍的速度改进性能。
  • 专注于feature完整性,然后是性能优化。
  • ZKP后端为Halo2。

在这里插入图片描述

在这里插入图片描述

3.2 EZKL通用流程

EZML通用流程为:
在这里插入图片描述
ZKML通用流程分为三大部分:

  • 1)输入授权内容
  • 2)运行机器学习模型(如文本模型图像分类)
  • 3)进行链上验证

3.2.1 授权内容

经证实的且可在zk-snark验证的内容来源有:

  • 1)Http:SXG、signed AMP、signed endpoints(Cloudflare one-click SXG, ngnix)。
  • 2)Email(DKIM):可参看博客 ZK Proof of Email:通往decentralized identity之路
  • 3)发行商的图像:C2PA,attested相机的图像。可参看博客:
    • ZKP+图片授权——PhotoProof:proofs of permissible photo edits
    • zk-IMG:对抗虚假信息
  • 4)第三方公证人(Lit、TLS Notary、Deco)

所有采用标准签名方案(ECDSA、RSA、Ed25519)的内容都可在zk-snark中 和(或) 链上验证。
需要一个类似https的推送来签署数据。

当前的内容授权计划成员(Content Authority Initiative Members)有:
在这里插入图片描述

3.2.2 运行机器学习模型

借助ONNX编译,Ontogeny recapitulates phylogeny路线图为:

  • 1)(从MNIST到Stable Diffusion)的AI历史中下载下一模型。
  • 2)解决任意模型大小或量化问题,实现任意新节点或gadgets。
  • 3)重复以上流程。

并辅以:

  • Optimization:优化性能。
  • Aggregation:将多个proof合并为一个proof,只需检查合并后的那个proof。会受限于内存,从而限制模型大小。
  • Recursion:在新的snark中验证前一snark proof,可为每个layer做不同的proof。会受限于内存,从而限制模型大小。
  • Fusion:对以python表示的机器学习模型 和 ZKP系统 进行融合。

3.2.3 链上验证

以太坊链上受限于预编译合约及gas开销,很多proof策略最终都基于BN128曲线。
在这里插入图片描述

4. ZKML为链的table stakes

ZKML可:

  • 1)向广大受众兑现区块链的promise将需要更强大但仍然是去中心化的身份解决方案。
    • 全身份解决方案已有几年的时间,但增长将很快。如基于abstraction account的ZKP。
  • 2)ZKML Oracles将更简单、快速、扩容性更强:
    • 可将任意链下数据 推到 链上
    • 打开消防水管获取链上数据
  • 3)ZKML模型为“智能裁判”,可理解歧义事件。

5. ZKML示例

ZKML可用于:

  • 1)ZK KYC
  • 2)预测市场
  • 3)智能合约的全面检查
  • 4)AI + DAO
  • 5)ZK + MPC:基因筛选
  • 6)ZKML + 差分隐私:人口普查
  • 7)ZK Vaults
  • 8)NPC-wars

5.1 ZK KYC

ZK KYC用于:

  • 证明人与id匹配,且该id未被制裁。
  • 监管机构不会接受KYC
  • 但可阻止tornado制裁

5.2 预测市场

ZKML用于预测市场,是指:

  • 采用小模型对文本进行分了
  • 构建某智能合约,若某新闻故事预测正确则获得相应的收入(如选举结果、飓风强度、covid变种等)。
  • 任何人都可下载已签名的故事,运行模型,并提交proof。

5.3 智能合约的全面检查

ZKML用于智能合约的全面检查,是指:

  • 对智能合约 或 abstracted account 的不正常行为 添加ZKML fraud/spam check。

5.4 AI + DAO

ZKML用于DAO,是指:

  • 将现有的人类判断、投票、使用多签签署,替换为,链上AI自动化,如合约履行。

5.5 ZK + MPC:基因筛选

ZK + MPC:基因筛选,是指:

  • 病人想要预测(如发生基因突变的概率),但想要匿名检查,可选择是否以及对谁公开。
  • 筛选模型基于可控数据训练,不对外公开。
  • 模型对模型owner来说是私有的,而数据对病人来说是私有的。
  • 模型owner 和 病人 可在MPC中证明推理,仅公开输出结果,且病人获得认证预测结果。

5.6 ZKML + 差分隐私:人口普查

ZKML + 差分隐私:人口普查,是指:

  • 1)定期将秘密真实数据的承诺值对外公开(不泄露任何信息)
  • 2)对于哪些客户端可免费做原型分析,服务端可创建differentially-private noisy marginal summary:
    • 客户端在本地迭代summary,选择模型M,并发送给data owner(即服务端)。
  • 3)服务端基于真实的全表数据,以ZK模式运行模型,将结果返回给客户端,并向客户端证明:
    • 3.1)真实数据与承诺值匹配;
    • 3.2)使用了该真实数据来创建的noisy marginal summary。
    • 3.3)当基于模型M运行真实数据时,其生成的即为所返回的结果。

5.7 ZK Vaults

ZK Vaults,是指:

  • 像Arrakis(锁仓量为4.6亿美金)协议,可选择:
    • trustless vaults:由预定义的0x…作为管理者,trustless vaults支持LP以无需信任且自动化的方式管理其流动性,与Curve V2方式类似。trustless vaults可为动态的或静态的。
    • managed vaults:由专业做市商以更成熟的策略链下运行,需信任该做市商。managed vaults使得LP可享受最先进的做市策略。
  • 引入ZK来实现:自动化、无需信任的成熟链下策略。
  • 公开策略(如看涨期权vaults、简单的投资组合)可为完全无需信任的,可供任何人运行的。
  • 或,管理者可对某策略进行承诺,在不泄露策略内容的情况下,避免rug pull/style drift。
  • 在对应某DeFi协议的某Uniswap V3 position manager中正在试点。

5.8)NPC-wars

https://github.com/omurovec/npc-wars(TypeScript + Solidity + Rust)为:

  • 允许用户在链上竞争各自AI模型的App。
  • 用户可通过EZKL API上传其onnx文件,EZKL会生成verifier字节码并返回供用户部署。然后用户可创建竞赛 或者 参与已有竞赛。
  • 为避免作弊,会确保用户部署完其verifier合约之后,才可提交竞争。
  • 当所有用户都参与之后,会提交正确结果的哈希值。
  • 所有用户都提交其答案以及相应proof。
  • 一旦所有人都提交了答案,winner可claim其stake。

参考资料

[1] 2022年11月Jason Morton在DevCon 6上分享 视频Zero Knowledge Machine Learning
[2] 2023年3月Jason Morton 分享视频 How to build and deploy on-chain AI/ML with zero-knowledge machine learning with Jason Morton

zkML系列博客

  • zkML零知识机器学习介绍
  • ZKML:ZK+机器学习
  • ZKML:区块链世界的AI+隐私
  • zk-IMG:对抗虚假信息
  • 制衡:机器学习和零知识证明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/58307.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ssl单向证书和双向证书校验测试及搭建流程

零、前提准备 首先了解下HTTP和HTTPS的区别: HTTPS与HTTP有什么不同? HTTP是过去很长一段时间我们经常用到的一种传输协议。HTTP协议传输的数据都是未加密的,这就意味着用户填写的密码、账号、交易记录等机密信息都是明文,随时…

SpringBoot项目修改中静态资源,只需刷新页面无需重启项目(附赠—热加载)

初衷 💢初衷💢 因为一遍遍修改并重启项目觉得很麻烦,所以刚开始就自己给项目配置了热加载,但奈何代码更新还是慢,还不如我重启一遍项目的速度,所以放弃了自己上网找到的热加载配置。直到我debugger前端代码…

ELFK——ELK结合filebeat日志分析系统(2)

目录 一、filebeat 二、ELFK 1.原理简介 2.在ELK基础上部署filebeat 一、filebeat Filebeat,轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并…

个人中心 - 实现修改用户头像、用户名或密码

目录 1. 修改用户头像 1.1 获取原来的用户头像和用户名 1.2 实现保存头像 2. 修改用户名或密码 1. 修改用户头像 本文是针对之前的一篇项目博客 - 博客系统 做的一个扩展功能. 1.1 获取原来的用户头像和用户名 想要修改头像, 那么就得先获取数据库中原来的头像, 此处顺便…

Redis的安装

Redis的安装 1、Windows下的安装 1.1 下载 下载地址: https://github.com/MicrosoftArchive/redis/releases https://github.com/tporadowski/redis/releases Redis支持 32 位和 64 位,这个需要根据你系统平台的实际情况选择,这里我们下…

Prometheus实现系统监控报警邮件

Prometheus实现系统监控报警邮件 简介 Prometheus将数据采集和报警分成了两个模块。报警规则配置在Prometheus Servers上, 然后发送报警信息到AlertManger,然后我们的AlertManager就来管理这些报警信息,聚合报警信息过后通过email、PagerDu…

Java并发编程之顺序一致性

如果程序是正确同步的,程序的执行将具有顺序一致性(Sequentially Consistent)——即程序的执行结果与该程序在顺序一致性内存模型中的执行结果相同。 同步,即排队。 同一时刻,只能有一个线程和内存交互!&a…

21.Netty源码之编码器

highlight: arduino-light Netty如何实现自定义通信协议 在学习完如何设计协议之后,我们又该如何在 Netty 中实现自定义的通信协议呢?其实 Netty 作为一个非常优秀的网络通信框架,已经为我们提供了非常丰富的编解码抽象基类,帮助我…

【Mybatis】XML映射文件

目录 11.3XML映射文件 1.select 2.insert、update、delete 3.Sql 4.parameters(参数) 5.resultMap 6.resultMap 使用示例 (1)在先前创建的数据库stu中创建表student 2,并插入若干条数据,代码如下: (2)创建工程mybatis_ResultMap_demo。 (…

【Lua学习笔记】Lua进阶——垃圾回收

按照唐老师的课程本来要讲自带库的,但是想想这东西能看文档,ctrl左键还能看注解,并且最重要的许多自带库的方法基本大部分语言都有,其实看看就能懂了。所以还是重点讲讲垃圾回收 文章目录 GC辅助垃圾回收collectgarbage增量模式分…

【雕爷学编程】MicroPython动手做(32)——物联网之MQTT

MQTT (Message Queuing Telemetry Transport)消息队列遥测传输协议,是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。M…

2023 电赛 E 题 激光笔识别有误--使用K210/Openmv/树莓派/Jetson nano实现激光笔在黑色区域的目标检测

1. 引言 1.1 激光笔在黑色区域目标检测的背景介绍 在许多应用领域,如机器人导航、智能家居和自动驾驶等,目标检测技术的需求日益增加。本博客将聚焦于使用K210芯片实现激光笔在黑色区域的目标检测。 激光笔在黑色区域目标检测是一个有趣且具有挑战性的…

cpolar内网穿透外网远程访问本地网站

cpolar内网穿透外网远程访问本地网站 文章目录 cpolar内网穿透外网远程访问本地网站 在现代人的生活中,电脑是离不开的重要设备,大家看到用到的各种物品都离不开电脑的支持。尽管移动电子设备发展十分迅速,由于其自身存在的短板,使…

css, resize 拖拉宽度

效果如下&#xff1a; 可直接复制预览查看属性值: 关键样式属性&#xff1a; resize: horizontal; overflow-x: auto; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content…

Qt应用开发(基础篇)——数值微调输入框QAbstractSpinBox、QSpinBox、QDoubleSpinBox

目录 一、前言 二、QAbstractSpinBox类 1、accelerated 2、acceptableInput 3、alignment 4、buttonSymbols 5、correctionMode 6、frame 7、keyboardTracking 8、readOnly 9、showGroupSeparator 10、specialValueText 11、text 12、wrapping 13、信号 二、Q…

pytorch实战-图像分类(一)(数据预处理)

目录 1.导入各种库 2.数据预处理 2.1数据读取 2.2图像增强 3.构建数据网络 3.1网络构建 3.2读取标签对应的名字 4.展示数据 4.1数据转换 4.2画图 5.模型训练 1.导入各种库 上代码&#xff1a; import os import matplotlib.pyplot as plt %matplotlib inline import nu…

一台电脑给另外一台电脑共享网络

这里写自定义目录标题 有网的电脑上操作一根网线连接两台电脑没网的电脑上 有网的电脑上操作 右键->属性->共享 如同选择以太网&#xff0c;勾选。确认。 一根网线连接两台电脑 没网的电脑上 没网的电脑为mips&麒麟V10 新增个网络配置ww&#xff0c;设置如下。 …

2.05 购物车后台刷新并显示

一.用户登录添加商品使用cookie存入购物车&#xff0c;并把购物车商品传入到后台 步骤1&#xff1a;创建购物车BO对象 public class ShopcartBO {private String itemId;private String itemImgUrl;private String itemName;private String specId;private String specName;p…

7.物联网操作系统互斥信号量

1.使用互斥信号量解决信号量导致的优先级反转&#xff0c; 2.使用递归互斥信号量解决互斥信号量导致的死锁。 3.高优先级主函数中多次使用同一信号量的使用&#xff0c;使用递归互斥信号量&#xff0c;但要注意每个信号量的使用要对应一个释放 优先级翻转问题 优先级翻转功能需…

牛客网Verilog刷题——VL48

牛客网Verilog刷题——VL48 题目答案 题目 在data_en为高期间&#xff0c;data_in将保持不变&#xff0c;data_en为高至少保持3个B时钟周期。表明&#xff0c;当data_en为高时&#xff0c;可将数据进行同步。本题中data_in端数据变化频率很低&#xff0c;相邻两个数据间的变化&…