RISC Zero的Bonsai证明服务

1. 引言

Bonsai为通用ZKP网络,其支持任意链、任意协议、以及任意应用,利用ZKP来扩容、隐私和互操作。Bonsai的目标是为每条链都提供无限计算的能力。

借助Bonsai,可仅需数天的开发,即可实现对以太坊、L1链、Cosmos app链、L2 rollups、dApps等与ZKP的集成。

Bonsai证明服务:

  • 1)使用RISC Zero zkVM做链下计算。
    在这里插入图片描述
  • 2)其支持任何开发者,利用通用ZK计算,来构建更强大的链上应用。
  • 3)更长或更大的计算不要求具有相同的gas,从而可专注于链下性能。每个人都希望为EVM之外所运行的计算支付尽可能少的费用。
  • 4)借助ZKP,可不re-run某计算的情况下,验证该计算运行正确。因此Bonsai不仅仅是链下计算,还是可验证计算。
    在这里插入图片描述
  • 5)借助Bonsai,计算量将不受限。当前RISC Zero zkVM已添加了continuations机制,支持程序运行任意长时间。
    在这里插入图片描述
  • 6)为高速证明服务
  • 7)为proof relay系统
  • 8)可做proof转换(STARK -> SNARK)
  • 9)摊销费用
  • 10)用作proof market、轻节点和Image Hub等等。

之所以:

  • 1)使用链下计算服务的原因,在于:与其与具有有限能力的EVM做斗争,开发者可利用RISC Zero zkVM的通用虚拟机,来编写快速可扩展的计算。
  • 2)引入ZKP的原因,在于:任何人,无需re-run某计算,即可验证该计算运行正确。
  • 3)ZK程序无规模限制的原因,在于:借助Bonsai,可运行任意时长的链下计算。

在这里插入图片描述
使用Bonsai可:

  • 1)做链下计算。
  • 2)为具有continuations的程序做receipt management。
  • 3)将proofs与其他用户(dApp)的proofs一起打包,以摊销费用。

RISC Zero Bonsai bounty 中发布了多个bounty任务:

  • 1)任务1:通过RISC Zero的ETH relay,使用Bonsai证明服务,开发一个有趣的dApp实例。不要求有高大上的链下计算。
    • 鼓励使用真实的Bonsai服务,本地开发使用mock服务也一样。
    • 使用开发者模板,修改app合约(Solidity)和provable zkVM程序(对应链下计算,Rust)。无需构建任何电路。
    • 展示有趣的链下provable计算。
  • 2)任务2:构建开发者模板并给RISC Zero团队反馈(并承诺根据要求采取后续行动):
    • 填写开发者反馈表单(并愿意花费1小时通过Telegram或Discord与RISC Zero团队联系)
    • 对开发者模板提供丰富有见解的开发体验反馈。

在这里插入图片描述
开发者无需关注:

  • 1)编写定制的proof电路。
  • 2)考虑链下代码的EVM性能。
  • 3)对Bonsai直接做API调用。
  • 4)使用不熟悉的工具来开发。
  • 5)花费时间配置复杂的开发环境。
  • 6)在部署前对代码进行重大更改。

1.1 RISC Zero zkVM

RISC Zero zkVM:

  • 可间接证明任意程序的执行——基于某真实的微架构(RISC-V)。
  • 可用于不同场景:
    • Rollapps
    • Bonfire
    • RISC-Roll
    • Decision Tress
    • zkPoEx
    • zk voting in cosmos
    • 证明其它虚拟机(如BPF、Type 1 EVM等)的执行。
  • 通过continuations机制,支持数十亿cycles的计算。

RISC Zero zkVM基于开源的RISC-V指令集,其具有广泛的语言兼容性,并有可能用Rust、C++、Solidity、Go和其他语言编写代码。RISC Zero zkVM集成了recursive proofs、定制电路编译器、state continuations以及对证明算法的持续改进,为此,Bonsai支持任何人为不同的应用生成高性能ZKP证明。

1.2 尽可能地去中心化

模块化的生态有如下好处:

  • 互操作性
  • capability性能
  • 多样性
  • 敏捷性
  • 可定制性

Bonsai为可满足以上模块化特性的通用可验证及ZK计算平台。

Bonsai通过可用且符合人体工学设计的平台,为开发者带来了最新的ZK技术。

2. Bonsai——relayed链下计算证明服务

Bonsai使得可在任意链上支持无限计算。借助Bonsai,无需在自己的硬件上生成proofs,可将待证明的程序上传,并根据需要请求Bonsai来生成proofs。

Bonsai高度并行化并具有很高的性能。

无论是想在链下做重计算,或者是要为trustless、verifiable软件来生成proofs,都可使用Bonsai。Bonsai证明服务可单独使用,也可与智能合约以及链直接集成使用。

当前Bonsai仍处于早期开发阶段,勿将其用于生产环境。
在这里插入图片描述
上图展示了如何通过以太坊智能合约来使用Bonsai,对于想使用Bonsai的开发者来说:

  • 1)开发一个调用Bonsai relay合约的dApp合约
    • dApp合约通过callback处理Bonsai relay合约返回的结果
  • 2)编写并上传想让Bonsai证明的程序——称为guest program。当前guest program支持Rust语言编写。除像常规那样编写Rust代码之外,还提供了一些额外的面向RISC Zero zkVM的功能,如:
    • env::read_slice:从dApp合约中读取输入数据。
    • env::commit_slice:将公开结果承诺给journal。journal为receipt的IBU分,包含了某zkVM应用的公开输出。
    • 此外,可使用ethabi来编码和解码EVM bytecode。

即整个架构包括3大核心组件:

  • 1)RISC Zero zkVM:为Bonsai背后的proof引擎。在零知识/可验证上下文中,可运行任意虚拟机的通用zkVM。
    • Bonsai底层使用RISC Zero zkVM来证明程序。
    • 在RISC Zero zkVM中,有:
      • recursive proofs
      • 通用电路(以及专门定做的电路编译器)
      • state continuations
      • 以及 对证明算法的持续改进。
    • 链下运行guest program,其输入源自dApp合约调用给的参数。
  • 2)Bonsai证明服务:见Bonsai litepaper Bonsai: One Chain to Prove Them All。直接与任意智能合约或链集成的证明系统。
  • 3)ETH relay:连接链下proofs和链上应用。dApp智能合约开发者可通过调用链上relay合约来调用Bonsai证明服务。未来也将开放可直接访问Bonsai证明服务的方式。为通用rollup,可将Bonsai中证明的任意计算分发给每条链。

基本的交互流程为:

  • 1)dApp合约通过relay合约来调用ETH relay。
  • 2)ETH relay向Bonsai证明服务发送生成proof请求。
  • 3)Bonsai证明服务使用RISC Zero zkVM来生成proof,并通过ETH Relay将该proof返回。

2.1 每条链和应用的ZKP证明

Bonsai支持将ZKP嵌入到整个web3生态,其承担独立的ZKP证明网络角色:

  • 链和dApps可通过调用智能合约或validators来生成ZKP证明。
  • 所生成的ZKP证明可提交到链上,如以太坊、zero-knowledge L2s、app chains和L1s。

从而:

  • 支持可验证的链下计算。
  • 应用依赖Bonsai来实现其智能合约的主要逻辑以及状态变化计算,而不需要使用链VM(如EVM)。状态变化和合约执行可通过Bonsai提交到链上的ZK proofs来完全验证。
    最终,所实现的智能合约将:
    • 更紧凑compact
    • 功能更丰富functional
    • 更省gas费gas efficient
// Without Bonsai
contract simulation_normal {
 function some_really_hard_work() {
   // A large amount of gas heavy code
       // code ...
       // code ...
       // code ...
       // code ...
       // code ...
       //
 }
}
// With Bonsai
contract simulation_bonsai {
 function some_really_hard_work() {
   bonsai_proving_network.call(“some_really_hard_work”);
 }
}

由上面的伪代码可知,Bonsai简化了non-trivial智能合约和链:

  • Bonsai将任意智能合约reduce为,单个ZK Bonsai网络调用,并将所有gas-heavy代码执行移到了链下。
  • 智能合约不再受限于EVM和其它限制,且,这些gas-heavy代码支持以Rust和其它RISC Zero zkVM所支持的语言来编写。即意味着,ETH上的Solidity合约,可将其主逻辑以Bonsai中的Rust来实现,并利用non-EVM原语、Rust crates以及链下执行的广泛功能。

将Bonsai直接与智能合约执行,支持将ZK带到任意Layer 1、Layer 2、app chain、dApp。当前,以太坊L1 dApps可利用Bonsai的ZK链下执行来降低gas费,并增加在以太坊基础层的TPS:

  • 如,Uniswap的swap函数,可在Bonsai链下计算swap rates和pool fees,从而大幅降低在ETH L1上做一次swap所需的gas量。

通过直接与智能合约集成,可维护Bonsai上构建的任意ZK app原生链的完全可组合型。此外,ZK dApps,当前可使用原生ETH、流动性、NFTs和Aave/Uniswap LPs。Bonsai可高效支持任意应用、链、app链很容易集成ZKP到其协议中,而无需定制化ZK电路开发。

2.2 原生互操作性

Bonsai:

  • 作为跨多条链的中心化证明网络,其支持在不同的智能合约间的组合互操作性,而无需关注各合约的原始链。
  • 作为通用rollup,可将源自以太坊和其它链的多个ZKP证明,rollup为单个proof,并将rollup后的单个proof跨任意链提交。
  • 这就意味着,Bonsair可为任意链可访问的共享执行层。

如:

  • 某以太坊DEX上的swap call,可直接利用Solana上的流动性池。
  • 在Bonsai共享执行层范围内,智能合约可跨链相互调用。
  • 还有其它无限可能,Bonsai不受限于L1s,其可在Layer 2 ORUs、zkEVMs、Cosmos app链(具有与IBC集成的潜力)、oracles、web2间实现互操作性。

2.3 Bonsai架构

Bonsai为高度并行、链未知的通用证明网络,其支持开发者构建完全新的ZK应用类型。为此,Bonsai架构由多个模块化组件组成,使得Bonsai网络可与任意链和协议交互。同时,Bonsai设计之初就以去中心化优先原则,其所开发的所有组件均支持分布式执行和证明。

在这里插入图片描述
Bonsai中主要组件有:

  • 1)Prover network:由节点operator运行RISC Zero zkVM prover所组成的网络,可用于执行和证明通过Bonsai API发送的任意请求。Bonsai基础设施将确保高的节点可用性,同时,跟踪节点operator的激励措施。随着时间推移,Prover network将扩大,且去中心化将支持任何人运行RISC Zero zkVM prover。
  • 2)Request Pool:为proofs请求数据库,以及关于那些proofs(如age和rollup-depth)的metadata。request pool将用作sequencer,并为节点operators构建区块。多个proofs将切分多个部分,以支持高时效证明,该request pool管理单个函数请求的切分和重组。
  • 3)Rollup Engine:rollup engine获取由Prover network生成的proofs,并将这些proofs汇总为单个root proof。然后将root poof提交到链上(如以太坊和Solana),这些链随后会验证该root proof的有效性。
  • 4)Image Hub:image hub将支持开发者存储,通过Bonsai APIs所执行的链上智能合约函数和程序images。此时,程序images复杂性可能会有所不同,从基本的DeFi swap函数到复杂的轻节点甚至Geth。所有这些程序images的执行都将是通过Bonsai和RISC Zero zkVM而ZK可证明的。
    • image hub为开发者提供了特别强大的编程原语,并支持创建跨多个链的复杂状态流。
    • image hub支持Bonsai用作任意链间的共享执行层,并从多个维度增加了智能合约的功能性。

Bonsai未来将引入如下组件:

  • 1)State Store:state store将支持开发者在Bonsai存储状态,而无需在settlement层(如L1以太坊等)维护状态。这将节约gas,并降低应用合约复杂性,同时提高Bonsai中执行代码的功能性。
    • state store中的变量以Key/Value pairs来表示,其在Bonsai中存储状态,便于Bonsai内的函数/程序images访问。
  • 2)Proving Marketplace:当Bonsai proofs的需求量超过了供给时,将致力于开发去中心化证明网络。可基于Bitcoin和以太坊的market设计思想,支持任何人都生成proofs。该proof market将通过竞价来匹配proof请求,支持无需许可地参与到proving网络中,从而提高Bonsai的总体效率和可靠性。

3. 基于Bonsai证明服务的一些应用案例

Bonsai支持智能合约在链下执行任意数量的代码,并为确保该代码的执行和状态变更的有效性生成proof。从而可实现:

  • 1)可扩展性:通过简单将代码执行从链VM中移出,智能合约所需的gas费将少几个数量级,因为仅需在链上执行数行代码。这将有助于降低任意智能合约的gas开销,并实现跨DEX、lending协议、NFT marketplace等的更低费用。有了Bonsai,无论合约的复杂程度如何,每个智能合约的gas费用都会有上限。使用Bonsai,智能合约可以大致聚合为以下内容:

    ontract simulation_bonsai {
      function some_really_hard_work() {
        // Amount of ETH to swap, liquidation prices, LP balances, Etc.
        inputVals = Query chain for input values and data
    
        // Ask Bonsai to calculate state transitions
        newState = bonsai_proving_network.call(“some_really_hard_work”, inputVals)
    
        // Update blockchain values
        state = newState
      }
    }
    
  • 2)功能性:链下执行支持函数利用现有Rust/C++等库的优势。因为链下执行不再受限于现有L1执行层限制。Bonsai上的智能合约代码可像RISC Zero zkVM中的传统程序那样执行,从而支持更好的性能和更复杂的智能合约。同时现有Rust/C++库将增加合约的功能性,特别是增加那些基于传统单片式L1的合约的功能性。

  • 3)链互操作性:当前ETH上没有双边maker taker订单簿的原因,在于高昂的gas费,以及所需的复杂的订单撮合算法。通过Bonsai,整个订单撮合流程可在链下实现。链上操作仅包括提交订单自身,以及锁定支付资产。若将订单簿状态存储在链下,未来还可进一步优化。从ETH block explorer的角度来看,订单簿看起来就像双方的简单资产转移,所有的撮合、竞价、询价均隐藏在Bonsai完成。

    • Bonsai作为共享链下执行层,其支持任意链和合约相互交互。Bonsai zkVM将用作所有链下智能合约的中心,而无需关注这些合约的源头或语言,因Bonsai都会将其编译为RISC-V。作为执行层,Bonsai将支持传统L1跨链的可组合型、互操作性。

3.1 zkLOB

在这里插入图片描述

3.2 zkGovernor

代码见:

  • https://github.com/risc0/risc0/tree/release-0.19/bonsai/examples/governance#readme
    在这里插入图片描述

3.3 zkEVM

在这里插入图片描述

3.4 集成:zk Fraud Proofs

在这里插入图片描述

3.5 集成:Sovereign SDK

在这里插入图片描述

3.6 集成:Eclipse zkBPF

在这里插入图片描述

3.7 集成:Web AuthN Wallet

见:

  • Twitter Bonfire Wallet
    在这里插入图片描述

参考资料

[1] RISC Zero团队在ETH Waterloo 2023上给hackers的分享视频 Scaling dApps with Bonsai (RISC Zero @ ETH Waterloo)
[2] Bonsai overview
[3] RISC Zero Bonsai bounty
[4] 2023年7月视频 Bonsai: a Verifiable & ZK Computing Platform for a Modular World - Brian Retford
[5] Bonsai litepaper Bonsai: One Chain to Prove Them All
[6] 2023年5月视频 RISC Zero - Paul Gafni (RISC Zero)

RISC Zero系列博客

  • RISC0:Towards a Unified Compilation Framework for Zero Knowledge
  • Risc Zero ZKVM:zk-STARKs + RISC-V
  • 2023年 ZK Hack以及ZK Summit 亮点记
  • RISC Zero zkVM 白皮书
  • Risc0:使用Continunations来证明任意EVM交易
  • Zeth:首个Type 0 zkEVM
  • RISC Zero项目简介
  • RISC Zero zkVM性能指标
  • Continuations:扩展RISC Zero zkVM支持(无限)大计算
  • A summary on the FRI low degree test前2页导读
  • Reed-Solomon Codes及其与RISC Zero zkVM的关系
  • RISC Zero zkVM架构
  • RISC-V与RISC Zero zkVM的关系
  • 有限域的Fast Multiplication和Modular Reduction算法实现

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

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

相关文章

VMware网络设置 桥接模式 NAT VMNET0 1 8

1.桥接模式 虚拟机与主机并列 可拥有独立IP 主机与虚拟机之间,以及各虚拟机之间都可以互访。对应虚拟机就被当成主机所在以太网上的一个独立物理机来看待,各虚拟机通过默认的 VMnet0 网卡与主机以太网连接,虚拟机间的虚拟网络为 VMnet0。这…

软件工程第十周

测试过程 单元测试 注意出错处理!单元测试的数据处理部分请见Junit 单元测试之错误和异常处理-CSDN博客 单元测试准则 白盒:对系统结构非常清楚!就像大题注重过程。 单元测试的测试环境 一定要保证整个环境是完整的,尽管可能没…

【日积月累】SpringBoot 通过注解@CacheConfig @Cacheable @CacheEvict @CachePut @Caching使用缓存

目录 1.前言2.引入依赖3.启动类加入注解EnableCaching4.常用注解4.1CacheConfig4.2Cacheable4.3CacheEvict4.4CachePut4.5Caching 5.总结6.参考 文章所属专区 日积月累 1.前言 Spring在3.1版本,就提供了一条基于注解的缓存策略,实际使用起来还是很丝滑…

Springboot---整合对象储存服务MinIO

OSS 「OSS」的英文全称是Object Storage Service,翻译成中文就是「对象存储服务」,官方一点解释就是对象存储是一种使用HTTP API存储和检索非结构化数据和元数据对象的工具。 白话文解释就是将系统所要用的文件上传到云硬盘上,该云硬盘提供了…

机器视觉的试卷批改系统 - opencv python 视觉识别 计算机竞赛

文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…

11、云服务器的宝塔面板安装、在宝塔安装MySQL、Redis、NGINX、JAVA

1►云服务器的宝塔面板安装 如果购买云服务器的时候,选择系统为宝塔面板,那么就不需要麻烦了。宝塔已经装好了。 但是如果没有选择宝塔面板,就需要手动安装。 第一步:点击重装系统 第二步:选择宝塔面板 宝塔面板官方…

Redis 键值类型及其存储结构

Redis 键值类型及其存储结构 键值类型 键的数据类型是字符串,值的类型有:字符串、列表、Hash、集合、有序集合。 键的存储和查找 Redis底层键的存储类似于Java中其他Hash存储结构:数组链表的组合。数组中存储的是Key Hash函数对数组长度取模…

制作一个模板

创建模拟对象是一种有用的技术,它允许您专注于应用程序的一部分,而不必担心系统中尚未存在的其他部分。我想设计应用程序的主页,我不想因为没有用户系统而分心,所以我只创建了一个用户对象,这样我就可以继续了。 应用…

Azure - 机器学习:使用自动化机器学习训练计算机视觉模型的数据架构

目录 一、用于训练的数据架构图像分类(二进制/多类)多标签图像分类对象检测实例分段 二、用于推理的数据格式输入格式输出格式图像分类多标签图像分类对象检测实例分段 了解如何设置Azure中 JSONL 文件格式,以便在训练和推理期间在计算机视觉…

集合贴2——数据

基础课10——人工智能的基础:大数据-CSDN博客文章浏览阅读126次。人工智能和大数据是相互依存、相互促进的关系。大数据是人工智能的重要基础,没有大数据,人工智能就难以发挥其作用。同时,人工智能也提供了处理和分析大数据的工具…

MCU测试科普|如何进行MCU芯片测试,具体流程是什么?

MCU芯片测试系统是一种专门用于检测MCU芯片性能和质量的综合性设备。它通常由硬件和软件两部分组成,硬件包括测试仪器、适配器、测试夹具等,用于连接被测MCU芯片和测试机,实现高效高精度的测试。软件部分通常包括测试程序、测试管理软件等&am…

摄像头内参准确性验证方法

前言 摄像头内参标定出来后,标定结果是否准确?有些内参准确性的验证方案需要很大的场地,且有很多误差源不好控制(特别是对视野比较大的摄像头),惠州市华阳数码特电子有限公司发明了一种占用场地小测试精度…

如何开发一个求职招聘小程序?详细步骤解析与教程

一、确定需求和功能 在开发求职招聘小程序之前,需要明确需求和功能。通过对市场和用户需求的调研和分析,确定小程序需要具备哪些功能,如职位发布、简历投递、在线沟通、面试安排等。 二、选择开发方式 求职招聘小程序的开发方式有多种选择…

Vim编辑器学习

B站学习vim指令链接 1:vim下有两种模式,一种是命令模式,一种是编辑模式 2:命令到编辑模式,按键盘i,编辑到命令格式按Esc 3::wq 保存并退出 :wq code.c保存并把文件命名为…

nginx发布vue项目

1、docker拉取nginx镜像 docker pull nginx:latest2、docker安装nginx # 第一个80端口是主机端口,第二个80端口是内部端口,主机的端口 80 映射到容器内部的端口80 docker run -d --name nginx -p 80:80 -p 443:443 nginx:lateste3、输入IP访问 说明我们…

docker形式简易部署kibana

文章目录 前言一、简易部署1.获取镜像2.启动应用4.访问页面5.总结 前言 记录下使用docker部署kibana服务的过程 一、简易部署 1.获取镜像 docker pull kibana:8.8.0[rootnginx ~]# docker pull kibana:8.8.0 8.8.0: Pulling from library/kibana Digest: sha256:a23d96ae0ae…

2023年11月在线IDE流行度最新排名

点击查看最新在线IDE流行度最新排名(每月更新) 2023年11月在线IDE流行度最新排名 TOP 在线IDE排名是通过分析在线ide名称在谷歌上被搜索的频率而创建的 在线IDE被搜索的次数越多,人们就会认为它越受欢迎。原始数据来自谷歌Trends 如果您相…

于道 - 前端项目启动步骤参考

1. 安装 启动过程有9个步骤: 1.1 安装 Node JS , V18版本的 (安装步骤省略) 1.2 安装 npm install -g yarn ,node JS里边好像自带npm ,通过npm的命令安装 yarn 1.3 切换到项目中去安装,npm install &a…

使用决策树预测隐形眼镜类型

任务描述 本关任务:编写一个例子讲解决策树如何预测患者需要佩戴的隐形眼镜类型。使用小数据集,我们就可以利用决策树学到很多知识:眼科医生是如何判断患者需要佩戴的镜片类型,一旦理解了决策树的工作原理,我们甚至也…

mongodb分组查询

通过userId分组,得到结果字段为:_id和count db.my_solitaire.aggregate([{$group: {_id: "$userId", count: {$sum: 1}}}])通过userId分组得到分组字段和其他想要的字段,得到_id,userName,count userName 为…