撰文:Bryan乐鱼捕鱼, IOSG Ventures
当年的 2022 年对于 rollup 主要的参议焦点似乎齐集结在 ZkEVM,关联词别健忘 ZkVM 亦然另一种扩容技能。固然 ZkEVM 并不是本文的重心,关联词值获得味一下 ZkVM 与 ZkEVM 之间的的几个维度的不同之处:
许多东谈主应该还难忘这张图,CairoVM 事不关己游离于 ZkEVM 门户战斗的实质原因是联想念念想的不同
在参议 ZkVM 之前,咱们开首念念考的是如安在区块链中完结 ZK 讲解系统。梗概上,有两种法子完结电路 - 基于电路的系统 (circuit based) 以及基于假造机的系统 (vm-based)。
作为博彩领域的领先品牌,皇冠体育一直在致力于提高玩家们的游戏体验。无论是在游戏品种的丰富性,还是在服务质量的提升上,皇冠体育都始终不断追求卓越。同时,皇冠体育也积极关注体育赛事和社会公益,以自己的行动为社会做出贡献。开首,基于电路的系统的功能是将圭臬 (program) 平直滚动为箝制条目 (constraints) 并送入讲解系统 (proving system);基于假造机的系统通过提醒集 (ISA) 实行圭臬,在此过程中产生实行轨迹 (execution trace)。这个实行轨迹之后会被映射成箝制条目,然后被送入讲解系统。
对于一个基于电路的系统,圭臬的磋议由实行圭臬的每台机器 (machine) 进行箝制。而对于基于假造机的系统,ISA 被镶嵌到电路产生器 (circuit generator) 中,并产生圭臬的箝制 (constraints),同期电路产生器有提醒集、运行周期、内存等等完毕。假造机提供了通用性,即任何机器齐不错运行一个圭臬,惟有该圭臬的运行条目在上述完毕畛域内。
在假造机中一个 zkp 圭臬粗略履历如下的过程:
图片来源: Bryan, IOSG Ventures
优漏洞:
从开采者 (developer) 的角度来看,在基于电路的系统中开采时常需要对每个箝制条目的资本有真切的了解。有关词,对于编写假造机圭臬来说,电路是静态的,开采者需要更柔和的是提醒 (instructions)。从考证者 (verifier) 的角度来看,假定使用换取的纯 SNARK 看成后端,基于电路的系统和假造机在电路的通用性方面有很大的不同。电路系统对每个圭臬产生不同的电路,而假造机对不同圭臬产生换取的电路。这意味着,在一个 rollup 中,电路系统需要在 L1 上部署多个考证合约 (verifier contract)。从应用 (application) 的角度来看,假造机通过将内存模子 (memory) 镶嵌到联想中,使应用圭臬的逻辑愈加复杂,而使用电路系统的主义是为了提高圭臬的性能。从系统复杂性 (complexity) 的角度来看,假造机将更多的复杂性纳入系统,如内存模子、主机 (host) 和客户 (guest) 之间的通讯等,比较之下电路系统更直快。以下是当前 L1/L2 中基于电路和基于假造机的不同的技俩预览:
图片来源: Bryan, IOSG Ventures
德国获得2024年欧洲杯举办权假造机的联想原则在假造机中,有两个关键的联想原则。开首,确保圭臬被正如实行。换句话说,输出 (output)(即箝制条目 constraint)与输入 (input)(即圭臬 program)应当正确匹配。一般这是通过 ISA 提醒集完成的。其次,确保编译器 (compiler) 在从高等说话诊疗为顺应的箝制形式时能正确使命。
1. ISA 提醒集
菠菜赚钱平台百度百科王法了电路产生器的使命容颜。它的主要职守是将提醒 (instructions) 正确地映射到箝制条目 (constraint) 中,这些箝制条目随后被送入讲解系统 (proving system)。zk 系统使用的齐是 RISC( 精简提醒集 )。有两种 ISA 的采用:
幸运快艇百家乐第一种是自建一个自界说的 ISA(custom ISA),这在 Cairo 的联想中不错看到。一般来说,有如下四种类型的箝制逻辑。
皇冠官网自界说 ISA 的基本联想重心是确保箝制条目尽可能少,从而使圭臬的实行和考证齐能快速运行。
第二种是运用现存的 ISA(existing ISA),这在 Risc0 的联想中被采取。除了以直快的实行期间为主义外,现存的 ISA(如 Risc-V)还提供了稀薄的公道,如对前端说话 (front-end language) 和后端硬件 (backend hardware) 友好。一个(有待惩办的可能)问题是,现存的 ISA 会不会在考证期间上有所过期(因为考证期间并不是 Risc-V 的主要联想追求。
2. 编译器 (Compiler)
暗昧地来说,编译器会慢慢将编程说话翻译成机器代码。在 ZK 的环境下,它指的是使用 C、C++、Rust 等高等说话编译成箝制系统(R1CS、QAP、AIR 等.)的初级代码暗意。有两种法子,
联想一个基于现存 zk 电路暗意 (existing circuit representations) 的编译器 -- 比如说在 ZK 中,电路露出形式从 Bellman 这么的不错平直调用的库 (library) 和 Circom 这么的初级说话开动。为了团员不同的露出形式,Zokrates 这么的编译器(身亦然一个 DSL)旨在提供一个概述层,不错编译成任性的更初级露出形式。基于(现存的)编译器基础设施 (compiler infrastructure) 来构建。基本逻辑是运用一个针对多个前端和后端的中间露出形式 (intermediate representation)。Risc0 的编译器是基于 multi-level intermediate representation(MLIR),不错生成多个 IR(雷同于 LLVM)。不同的 IR 给开采者带来了纯真性,因为不同的 IR 有各自的联想重心,举例其中有一些的优化是专门针对硬件,是以开采者不错凭据我方的意愿进行采用。雷同的意见在使用 GCC 的 vnTinyRAM 和 TinyRAM 中也不错看到。ZkSync 亦然另一个运用编译器基础设施的例子。
此外,你还不错看到一些针对 zk 的编译器基础设施,如 CirC,它也借用了 LLVM 的一些联想理念。
皇冠足球官网除了上述两个最关键的联想形式外,还有一些其他的研究要素:
皇冠客服飞机:@seo36871.系统的安全性 (security) 和考证的资本 (verifier cost) 之间的量度
系统使用的比特数越高(即安全性越高),意味着考证的资本越高。安全性响应在密钥生成器(比如在 SNARK 中代表椭圆弧线)。
新2足球网址手机2.与前端和后端的兼容性 (compatibility)
兼容性取决于为电路的中间暗意 (intermediate representation) 的有用性。IR 需要在正确性(圭臬的输出是否与输入相匹配 + 输出是否合适讲解系统)和纯真性(复旧多种前端和后端)之间取得了均衡。如果 IR 领先是为惩办像 R1CS 这么的低度 (low-degree) 箝制系统而联想的,那么与其他更高等别 (high-degree) 的箝制系统如 AIR 的兼容就很难。
3.为提高后果需要手工制作 (hand-crafted) 电路
使用通用模子 (general purpose) 的漏洞是,对于一些不需要复杂提醒的浅易操作,后来果较低。
简述一下先前的一些表面,
Pinocchio 公约之前: 完结了可考证的磋议,但考证期间相配慢Pinocchio 公约: 在可考证性和考证收效劳方面提供了表面上的可行性(即考证的期间比实行圭臬的期间短),是基于电路的系统TinyRAM 公约: 相对于 Pinocchio 公约,TinyRAM 更像一个假造机,引入了 ISA,因此开脱了一些完毕,如内存考核 (RAM)、适度流 (conttrol flow) 等vnTinyRAM 公约: 使得密钥生成 (key generation) 并不取决每个圭臬,提供了稀薄的通用性。推广电路产生器,即能够处理更大的圭臬。上述模子齐以 SNARK 看成后来端讲解系统,关联词很是是在处理假造机时,STARK 和 Plonk 似乎是一个更合适的后端,从根柢上说是由于其箝制系统更安妥于完结 cpu 雷同的逻辑。
接下来,本文会先容三个基于 STARK 的假造机 - Risc0, MidenVM, CairoVM。简而言之,除了齐以 STARK 看成讲解系统外,它们各自有一些不同:
Risc0 运用 Risc-V 来完结提醒集的直快性。R0 在 MLIR 进行编译,这是 LLVM-IR 的一个变种,旨在复旧多种现存的通用编程说话,如 Rust、C++。Risc-V 还有一些稀薄的公道,比如对于硬件较为友好。Miden 的主义是与以太坊假造机(EVM)兼容,实质上是 EVM 的 rollup。Miden 当今有我方的编程说话,但也勤勉于在明天复旧 Move。Cairo VM 是由 Starkware 开采的。这三个系统所使用的 STARK 讲解系统是由 Eli Ben-Sasson 发明的,当前 Starkware 的总裁。让咱们更真切地了解它们的阔别:
* 若何读懂上头的表格?一些注解...Word size(字长) - 由于这些假造机所基于的箝制系统是 AIR,其功能与 CPU 架构雷同。是以采用 CPU 字长(32/64 位)比较合适。Memory access(内存读取)- Risc0 使用寄存器 (register) 的原因主淌若 Risc-V 提醒集是基于寄存器的。Miden 主要使用堆栈 (stack) 来存储数据,因为 AIR 的功能与堆栈雷同。CairoVM 莫得使用通用寄存器 (general-purpose register),因为 Cairo 模子中的内存考核 (main memory) 资本较低。Program feed(圭臬实行)- 不同法子是有遴选的。举例,对于 mast root 法子来说,它需要在处理提醒时进行解码,因此在实行形式较多的圭臬中下讲解者的资本较高。Bootloading 法子试图在保捏阴私的同期在讲解者资本和考证者的资本之间取得均衡。Non-determinism(非笃定性)- 非笃定性是 NP-complete 问题的一个紧要属性。运用非笃定性有助于快速考证当年的实行。反过来说,它加多了更多的箝制条目,因此在考证方面会有一些和谐。Acceleration on complex operations(复杂运算的加快)- 有些磋议在 CPU 上运行很慢。举例,位操作,如 XOR 和 AND,哈希圭臬 (hash program),如 ECDSA,还有畛域查验 (range-check)......大多是区块链 / 加密时候的原生但不是 CPU 原生的运算(除了位操作)。平直通过 DSL 来完结这些运算会很容易导致讲解的周期 (cycle) 浮滥。Permutation/multiset ( 陈设 / 多列组合 ) - 在大多数 zkVM 中多半使用,有两个主义 --1.通过减少存储好意思满的实行轨迹 (execution trace) 来镌汰考证者的资本 2.讲解考证者知谈好意思满的实行轨迹著作临了笔者想谈谈 Risc0 当前的发展以过甚让我痛快的原因。
R0 当前的发展:
a.自研的「Zirgen」的编译器基础设施正在开采中。将 Zirgen 与一些现存的 zk 专用编译器的性能进行比较会很意思意思意思意思。
b.一些很挑升念念的的翻新,如 field extension,不错完结更坚实的安全参数以及在更大的整数上进行操作。
亚博体育竞彩appc.见证了在 ZK 硬件和 ZK 软件公司之间的整合中看到的挑战,Risc0 使用了一个硬件概述层,以便在硬件方面进行更好的开采。
d.Still a work-in-progress! 还在开采中!
复旧手工制作的电路 (hand-crafted circuits),复旧多种哈希算法。当前,专用的 SHA256 电路已完结,有关词还不可清高通盘的需求。笔者坚信具体采用优化哪类电路取决于 Risc0 所提供的用例 (use case)。SHA256 是一个相配好的开端。另一方面,ZKVM 的定位给东谈主以纯真性,举例,惟有他们不想,就无用去管 Keccak :)递归 (recursion):这是一个很大的话题,笔者倾向于不在该说明进行真切研究。需要知谈的是,跟着 Risc0 倾向于复旧更复杂的用例 / 圭臬,更焦虑地需要递归。为了进一步复旧递归,他们当前正在研究一个硬件端的 GPU 加快决议。处理非笃定性 (non-determinism):这是 ZKVM 必须处理的一个属性,而传统的假造机是莫得这个问题的。非笃定性不错匡助假造机实行得更快。MLIR 相对更擅所长理传统假造机方面的问题,而 Risc0 若何将非笃定性镶嵌到 ZKVM 系统联想中值得期待。WHAT EXCITES ME:
a.浅易且可考证!
在分散式系统中,PoW 需要高水平的冗余,因为东谈主们不信任他东谈主,因此需要相通实行换取的磋议来达成共鸣。而通过运用零学问讲解,现象的完结应该和开心 1+1=2 雷同容易。
b.更多更执行的用例:
除了最平直的扩容外,更多挑升念念的用例将变得可行,比如零学问机器学习、数据分析等。比较于 Cairo 这么的特定的 ZK 说话,Rust/C++ 的功能更普适且更巨大,更多 web2 的用例跑在 Risc0 VM 上。
c.更具包容性 / 教诲的开采者社区:
对 STARK 和区块链感意思意思的开采者无用再从头学习 DSL,使用 Rust/C++ 即可。
感谢 Xin Gao、p0xeidon 的 Boyuan、Taiko 的 Daniel 以及 Sin7Y 对本文的复旧和修改提出!乐鱼捕鱼