让建站和SEO变得简单

让不懂建站的用户快速建站,让会建站的提高建站效率!

 
你的位置:新人注册送66元 > 一个真正注册送38元资讯 >

新人注册送66元对于编写捏造机法子来说

新人注册送66元对于编写捏造机法子来说

撰文:Bryan新人注册送66元, IOSG Ventures

畴昔的 2022 年对于 rollup 主要的计议焦点似乎辘集会在 ZkEVM,然而别健忘 ZkVM 亦然另一种扩容妙技。天然 ZkEVM 并不是本文的要点,然而值取得味一下 ZkVM 与 ZkEVM 之间的的几个维度的不同之处:

兼容性:天然齐是扩容,然而侧要点并不同,ZkEVM 的侧要点在于平直已矣与现存 EVM 的兼容,而 ZkVM 的定位在于已矣总共的扩容,也即是将 dapp 的逻辑以及性能普及到最优,兼容性并不是首要的。底层搭好了,EVM 兼容也不错已矣。性能:两者齐有比较不错意料的性能方面的瓶颈,ZkEVM 主要瓶颈在于兼容 EVM 这么一个并不适应封装在 ZK 阐明系统时产生的过剩本钱。ZkVM 的瓶颈在于因为引入了提醒集 ISA,导致最终输出的拘谨更复杂。建立者体验:Type II ZkEVM ( 如 Scroll, Taiko) 主打的是对于 EVM Bytecode 的兼容,换句话说即是 Bytecode 级别偏激以上的 EVM 代码齐不错通过 ZkEVM 产生对应的零学问阐明。对于 ZkVM 来说,有两个标的,一个标的是作念我方的 DSL( 如 Cairo), 另一个则是主义兼容现存的比较熟习的话语如 C++/Rust(如 Risc0)。异日咱们展望原生的 solidity 以太坊建立者会不错无本钱移动至 ZkEVM,而更新更刚劲的应用则会跑在 ZkVM 上。

好多东说念主应该还紧记这张图,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

捏造机的野心原则

在捏造机中,有两个要津的野心原则。起初,确保法子被正确乎践。换句话说,输出 (output)(即拘谨要求 constraint)与输入 (input)(即法子 program)应当正确匹配。一般这是通过 ISA 提醒集完成的。其次,确保编译器 (compiler) 在从高档话语调遣为适应的拘谨时势时能正确责任。

1. ISA 提醒集

限定了电路产生器的责任样式。它的主要职守是将提醒 (instructions) 正确地映射到拘谨要求 (constraint) 中,这些拘谨要求随后被送入阐明系统 (proving system)。zk 系统使用的齐是 RISC( 精简提醒集 )。有两种 ISA 的采选:

第一种是自建一个自界说的 ISA(custom ISA)新人注册送66元,这在 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 的一些野脸色念。

除了上述两个最要津的野心要领外,还有一些其他的计划身分:

1.系统的安全性 (security) 和考证的本钱 (verifier cost) 之间的衡量

系统使用的比特数越高(即安全性越高),意味着考证的本钱越高。安全性反应在密钥生成器(比如在 SNARK 中代表椭圆弧线)。

2.与前端和后端的兼容性 (compatibility)

兼容性取决于为电路的中间示意 (intermediate representation) 的灵验性。IR 需要在正确性(法子的输出是否与输入相匹配 + 输出是否妥贴阐明系统)和活泼性(相沿多种前端和后端)之间取得了均衡。如果 IR 领先是为处罚像 R1CS 这么的低度 (low-degree) 拘谨系统而野心的,那么与其他更高档别 (high-degree) 的拘谨系统如 AIR 的兼容就很难。

3.为提高死字需要手工制作 (hand-crafted) 电路

使用通用模子 (general purpose) 的过失是,一个真正注册送38元资讯对于一些不需要复杂提醒的浮浅操作,其死字较低。

简述一下先前的一些表面,

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,不错已矣更坚实的安全参数以及在更大的整数上进行操作。

c.见证了在 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 对本文的相沿和修改提议!新人注册送66元