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:对抗虚假信息
- 制衡:机器学习和零知识证明