火星链 火星链
Ctrl+D收藏火星链
首页 > 币赢 > 正文

ETH:zk 开发人员指南:如何选择正确的 zk 开发工具

作者:

时间:1900/1/1 0:00:00

去年夏天,Vitalik写了一篇?博文,概述了不同类型的zkEVM?。他根据性能和兼容性的权衡轴来定义它们。

这是一种非常有用的启发式方法,可以区分支持zkEVM的方法。但是,zkEVM是构建零知识应用程序的所有可能方法的一个子集。对于想要利用zk计算的独特属性的程序员来说,zkEVM可能不是最佳选择。通过布置整套开发人员工具,我希望提供一个指南,帮助您围绕适合您的应用程序的正确zk堆栈做出决策。

在过去的一两年中,zk工具取得了巨大的进步。他们正在接近普通软件开发人员可以利用zk的强大属性而无需深入了解令人生畏的底层数学和工程的地步。另一方面,为高级用户提供的工具激增,使zk专家能够极其精细地控制zk堆栈。

抽象复杂性的力量

现代软件建立在无数的抽象层之上,以最大限度地提高专家的生产力。工程中的抽象有很多优点,有些直观——Web开发人员不需要深入了解操作系统的工作原理。?

构建良好的、可重用的抽象层的关键是封装层的复杂性,然后为堆栈中的更高层提供简单但富有表现力的接口以供使用。如果处理得当,这使具有不同专业知识和知识领域的开发人员能够跨堆栈构建有用的工具。

毫不奇怪,这些相同的原则适用于zk系统,并且这些抽象层变得足够成熟,zk新手今天就可以开始使用它们并构建应用程序。

底层zk开发

Arkworks-rs

Arkworks-rs是一个Rust库生态系统,它提供zkSNARK应用程序子组件的高效和安全实现。Arkworks为开发人员提供了必要的接口来为zk应用程序定制软件堆栈,而无需重新实现与其他现有库的共性。

Arbitrum社区将于6月10日起对AIP-1.1和1.2提案进行链上投票:6月7日消息,以太坊Layer2网络Arbitrum在推特上表示,AIP-1.1和1.2提案将于6月10日凌晨在Tally平台开启链上投票,并将与6月24日结束。AIP-1.1和1.2提案此前均于4月中旬通过Snapshot温度检查投票。

提案AIP-1.1建议将基金会剩余的7亿ARB置于“智能合约控制的锁定”中,四年内解锁根据提案,在社区成员批准代币分配预算之前,基金会将无法使用代币。此外,Arbitrum 基金会还发布了一份关于该组织如何成立的透明度报告。

提案AIP-1.2旨在修改Arbitrum生态系统的几个治理文件,包括将在链上发布改进提案所需的ARB代币数量的门槛从500万降低到100万。目前该两项提案的支持率均在98%以上。[2023/6/7 21:21:58]

在Arkworks之前,创建新的zk应用程序的唯一方法是从头开始构建所有内容。Arkworks-rs相对于定制的垂直集成工具的主要优势在于灵活性水平、重复工程的减少以及审计工作的减少。Arkworks组件之间合理的接口线允许一定的升级速度,可以在zk技术创新的迅猛步伐中保持堆栈的相关性,而无需强迫团队从头开始重建一切。

Arkworks适用于需要对整个zk软件堆栈进行精细控制,但又不想从头开始构建所有冗余部分的项目。如果你正在考虑电路DSL的自定义版本,例如,你正在制作一个新的证明系统的原型,但不确定承诺方案或相应的椭圆曲线,arkworks将允许你在具有共享接口的多个选项之间快速切换,而不是从头开始。

优点

通过模块化实现灵活性减少重复代码降低工程成本减少审计/错误表面积无需重大重构即可升级任何组件易于在快速发展的zk环境中试验新原语缺点

需要深入了解完整的软件堆栈如果没有正确理解,太多的控制会导致脚精细控制需要堆栈所有级别的专业知识Arkworks确实提供了一些合理的默认值。zk领域特定语言(DSL)

为了创建关于某些计算的证明,首先该计算必须以zkSNARK系统可以理解的形式表达。一些特定于领域的语言已经创建了允许应用程序开发人员以这种方式表达他们的计算的编程语言。其中包括AztecNoir、Starknet的Cairo、?Circom、?ZoKrates和Aleo的Leo等。底层证明系统和数学细节通常不会暴露给应用程序开发人员。

Web3社交应用orb新增创作者收入分析板块:5月30日消息,Web3 社交应用 orb 新增创作者收入分析板块,可查看任何 Lens 帐户的概览信息,包括收入、最大支持者、表现最好的帖子。[2023/5/30 11:47:35]

开发者体验

zkApp开发人员必须精通使用领域特定语言编写程序。其中一些语言看起来很像熟悉的编程语言,而另一些则可能很难学。让我们分解其中的一些:

Cairo——?在Starknet上构建应用程序所必需的StarkwareDSL。编译成CairozkVM可以解释的特定于Cairo的汇编语言。

ZoKrates?—ZoKrates是一个满足常见SNARK需求的工具包,包括用于编写电路的高级语言。ZoKrates在曲线、证明方案和后端方面也具有一定的灵活性,允许开发人员通过简单的CLI参数进行热交换。

Circom?—Circom是一种用于构建电路的专用语言。目前,它是生产电路的实际语言。该语言不是特别符合人体工程学。该语言本身使您敏锐地意识到您正在编写电路这一事实。

Leo?——Leo被开发为Aleo区块链的语言。Leo有一些类似Rust的语法,专门用于区块链内部的状态转换。

Noir?–受Rust启发的语法。围绕IR而不是语言本身构建,这意味着它可以有一个任意的前端。?

任何想要在其应用程序中利用zk的独特属性的应用程序开发人员。其中一些语言已经过数十亿美元通过ZCash和Starknet等链在它们之间流动的实战测试。虽然我们将讨论的一些项目还没有完全准备好用于生产,但使用其中一种语言编写电路是目前最好的策略,除非您需要像Arkworks这样的工具包提供的更精细的控制。

优点

用户无需了解底层zk细节具有一定生产经验的今天可用链上可验证缺点

用户需要学习新的DSL围绕每种语言的孤立工具和支持几乎无法控制底层证明堆栈zkEVM

Bitfinex发布公告介绍Shapella升级后解除质押的ETH和提取质押奖励的流程:4月27日消息,在以太坊Shapella升级完成之后,Bitfinex客户现在可以首次解除质押和提取此前质押的ETH,并解锁其ETH质押奖励。如果想要解除质押ETH2或解锁ETH2Rewards,Bitfinex客户首先需要使用平台钱包页面上的货币转换工具将其ETH2或ETH2Rewards转换为ETH2Unstaking。Bitfinex客户需要输入自己希望取消质押的ETH2或ETH2Rewards数量,然后在“From”下拉菜单中选择“ETH2-ETH2X”或“ETH2Rewards-ETH2R”,在“to”下拉菜单中选择“ETH2Unstaking-ETH2U”。完成转换后,其余额将不可逆地转换为“ETH2Unstaking”,并且根据链上已质押资金的解除绑定过程的结果,ETH2Unstaking余额将转换为ETH,然后可以进行交易、提现等。[2023/4/27 14:30:14]

zkEVM的主要目标是进行以太坊状态转换并使用简洁的零知识正确性证明来证明其有效性。正如Vitalik的帖子中提到的,有许多方法可以做到这一点,但有细微的差别和相应的权衡取舍。?

所有这些之间的主要技术差异恰恰是在语言堆栈中将计算转换为可在证明系统中使用的形式的位置。在某些zkEVM中,这发生在高级语言中,而其他方法则试图证明EVM一直到操作码级别。Vitalik的帖子中深入介绍了这些方法之间的权衡,但我将用一句话总结:堆栈中发生的转换/算术化越低,性能损失就越大。

为什么在zk中证明EVM操作码的成本很高?

为虚拟机创建证明的主要挑战是电路的大小与每条执行指令的所有可能指令的大小成比例增长。出现这种情况是因为电路不知道每个程序会执行什么指令,所以它需要支持所有的指令。

游戏硬件巨头Razer推出Web3孵化器:金色财经报道,游戏硬件和外设巨头 Razer 推出 Web3 孵化器 zVentures Web3 Incubator(ZW3I),旨在帮助将支持 Web3 的游戏带给主流玩家。该孵化器将专注于提供营销支持,将孵化多达 36 个项目,包括 PC 游戏和手游。[2023/4/12 13:57:42]

这在实践中意味着您为最昂贵的指令付出代价,即使您只执行最简单的指令也是如此。这导致了泛化性和性能之间的直接权衡——当你为泛化性添加更多指令时,你会为你?证明的每条?指令付出代价!

这是通用电路的一个基本问题,但随着?IVC等技术的新发展,可以通过将计算分解成更小的块来改善这种限制,每个块都有专门的、更小的子电路。

今天的zkEVM实现使用不同的策略来减轻这个问题的影响......例如,zkSync将更昂贵的操作从主要执行证明电路中剥离到单独的电路中,这些电路在通过snark递归结束。zkSync在意识到他们的大部分成本来自一些复杂的指令后采用了这种方法。

从根本上说,证明EVM更等效的指令集成本更高的原因是EVM不是为zk计算而设计的。放弃堆栈中较早的EVM允许zkEVM在针对zk更优化的指令集上运行,因此证明成本更低。

zkEVM的理想客户是智能合约应用程序,这些应用程序需要比L1以太坊上可用的交易便宜几个数量级的交易。这些开发人员不一定具备从头开始编写zk应用程序的专业知识或带宽。因此,他们更喜欢用他们熟悉的高级语言编写应用程序,比如Solidity。?

扩展以太坊?是目前zk技术最需要的应用。

zkEVM是一种以太坊扩展解决方案,可以无摩擦地缓解限制L1dApp开发人员的拥塞问题。

zkEVM的目标是支持尽可能接近当前以太坊开发的开发人员体验。完全的Solidity支持意味着团队不必构建和维护多个代码库。完美地做到这一点有点不切实际,因为zkEVM需要权衡一些兼容性才能在合理的时间内生成合理大小的证明。

Crypto.com赞助牛津大学的区块链研究:6月24日消息,Watcher.Guru发推称,Crypto.com已经承诺为牛津大学计算机科学系的区块链研究提供两年赞助。[2022/6/25 1:30:15]

快速案例研究:zkSync与Scroll

zkSync和Scroll之间的主要区别在于它们在堆栈中的何处/何时执行算术运算——也就是说,它们从普通EVM构造转换为SNARK友好表示的位置。对于zkSync,当他们将YUL字节码转换为他们自己的自定义zk指令集时,就会发生这种情况。对于Scroll,这发生在最后,当使用实际EVM操作码生成实际执行跟踪时。

因此,对于zkSync,在生成zk字节码之前,一切都与与EVM交互相同。对于Scroll,在执行实际的字节码之前,一切都是一样的。这是一个微妙的差异,它以性能换取支持。例如,zkSync不会像开箱即用的调试器那样支持EVM字节码工具,因为它是完全不同的字节码。虽然Scroll很难从指令集中获得良好的性能,但这并不是为zk设计的。这两种策略各有利弊,最终有很多外生因素会影响它们的相对成功。

zkLLVM编译器

=nil;Foundation正在构建一个编译器,可以将任何LLVM前端语言转换为可以在SNARK中证明的中间表示。zkLLVM被设计为现有LLVM基础设施的扩展,LLVM基础设施是一个行业标准工具链,支持许多高级语言,如Rust、C、C++等。

想要证明某些计算的用户只需用C++实现该计算即可。zkLLVM采用其修改后的clang编译器支持的高级源代码,并生成电路的一些中间表示。此时,电路已准备好进行验证,但用户可能希望根据一些动态输入来验证电路。为了处理动态输入,zkLLVM有一个称为分配器的附加组件,它生成一个分配表,其中包含所有输入和见证,这些输入和见证已完全预处理并准备好与电路一起进行证明。

这两个组件是生成证明所必需的。理论上,用户可以自己生成证明,但由于这是一项有点专业化的计算任务,他们可能想花钱请拥有硬件的其他人为他们做这件事。对于这种交易对手发现机制,=nil;Foundation还建立了一个“证明市场”,证明者竞相为支付给他们的用户证明计算。这种自由市场动态将导致证明者优化最有价值的证明任务。

由于每个要证明的计算任务都是独一无二的,并且会生成不同的电路,因此证明者需要能够处理的电路数量是无限的。这种强制的通用性使得单个电路的优化变得困难。证明市场的引入允许对市场认为有价值的电路进行专业化。如果没有这个市场,由于这种自然的冷启动问题,说服验证者优化该电路将是一项挑战。

另一个权衡是经典的抽象与控制。愿意采用这种易于使用的界面的用户正在放弃对底层加密原语的控制。对于许多用户来说,这是一个非常有效的权衡,因为让密码学专家为您做出这些决定通常更好。

优点

用户可以用熟悉的高级语言编写代码所有zk内部都从用户那里抽象出来不依赖于增加额外开销的特定“VM”电路缺点

每个程序都有不同的电路。难以优化。交换/升级内部zk库非常重要AppChains问题

zkVM描述了所有zk虚拟机的超集,而zkEVM是一种特定类型的zkVM,由于其在当今的流行,值得作为一个单独的主题进行讨论。除了定制的加密VM之外,还有一些其他项目正在致力于构建基于ISA的更通用的zkVM。

系统可以证明不同的指令集架构(ISA),例如新VM中的RISC-V或WASM,而不是证明EVM。致力于这些通用zkVM的两个项目是RISCZero和zkWASM。让我们在这里深入研究一下RISC零,以演示该策略的工作原理以及它的一些优点/缺点。?

RISCZero能够证明在RISC-V架构上执行的任何计算。RISC-V是一种越来越受欢迎的开源指令集架构(ISA)标准。RISC的理念是构建一个极其简单的指令集,复杂度最低。这意味着堆栈中较高层的开发人员最终会在使用此架构实现指令时承担更大的负担,同时使硬件实现更简单。

这种理念也适用于通用计算,ARM芯片一直在利用RISC式指令集,并开始主导移动芯片市场。事实证明,更简单的指令集也具有更高的能量和裸片面积效率。

这个类比非常适合生成zk证明的效率。如前所述,在证明zk中的执行跟踪时,您需要支付跟踪中每个项目的所有指令成本的总和,因此越简单越少的总指令越好。

从开发人员的角度来看,使用RISCZero来处理zk证明很像使用AWSLambda函数来处理后端服务器架构。开发人员只需编写代码即可与RISCZero或AWSLambda交互,该服务会处理所有后端复杂性。

对于RISC零,开发人员编写Rust或C++。然后系统将编译期间生成的ELF文件用作VM电路的输入代码。开发人员只需调用prove即可返回收据对象,任何人都可以从任何地方调用“verify”。从开发人员的角度来看,无需了解zk的工作原理,底层系统会处理所有这些复杂性。

优点

便于使用。为任何程序员打开构建zk应用程序的大门证明可专用于的单电路攻击的表面积也更少,审核也更少与任何区块链兼容,您只需发布证明缺点

承担大量开销来支持这样的通用接口需要对证明生成技术进行重大改进,以实现对现有库的广泛支持zk?开发指南

正如详细讨论的那样,开发zk应用程序有无数不同的选择,所有这些都有自己独特的权衡。此图表将帮助总结此决策矩阵,以便根据您的zk专业知识水平和性能需求,您可以选择最适合该工作的工具。这不是一个完整的列表,我计划在未来添加到这个列表中,因为我意识到这个领域会出现更多的工具。

1.低级Snark库

何时使用:?

您需要对整个证明堆栈进行精细控制想要避免重建公共组件您想尝试证明方案、曲线和其他低级原语的不同组合何时不使用:

您是寻找高级证明接口的新手选项:?

Arkworks-rs2.zkDSL

何时使用:?

您可以轻松学习一门新语言想使用一些久经考验的语言需要最小的电路尺寸,愿意放弃抽象何时不使用:?

需要对证明后端进行精细控制选项:

CircomAztecNoirCairoZoKratesLeo3.zkCompilers

何时使用:?

不愿意承担通用电路的开销想用熟悉的语言编写电路?需要高度定制的电路何时不使用:?

想要控制底层加密原语需要一个已经高度优化的电路选项:

nilzkLLVM4.zkEVM

何时使用:?

你有一个已经在EVM上运行的dApp您需要为用户提供更便宜的交易?您希望将部署到新链的工作量降到最低只关心zk的简洁性何时不使用:?

您需要完美的EVM等效性你需要zk的隐私属性?您有一个非区块链用例?选项:?

zksync2.0PolygonzkEVMScrollStarknet6.预建可重复使用的电路

何时使用:?

您有一个智能合约应用程序依赖于常见的zk构建块,例如Merkleinclusion你对底层zk东西几乎没有专业知识何时不使用:

您有高度专业化的需求预建电路不支持您的用例?选项:?

MantaNetworkSemaphore结论

zk处于多项技术的前沿,构建它需要对数学、密码学、计算机科学和硬件工程有深刻的理解。然而,随着每天都有越来越多的抽象层可用,应用程序开发人员无需博士学位即可利用zk的强大功能。随着时间的推移,通过对堆栈的所有级别进行优化,证明时间的限制会逐渐解除,我们可能会看到针对普通开发人员的更简单的工具。

我希望我说服了你,好奇的软件开发人员,你今天可以开始在你的应用程序中使用zk。

标签:ARKETHETH2ORKarkm币能不能买ethnographyinbusiness答案eth2.0币价CPLAY Network

币赢热门资讯
NFT:1900万美元砸穿整个NFT市场,重新审视Blur带来的流动性

NFT市场正发生「厄尔尼诺现象」。去年6月底NFT市场进入冰点以来,总体的成交量一直都没有什么起色.

1900/1/1 0:00:00
ENS:Bankless:除了空投,Blur 靠什么颠覆 OpenSea?

NFT?市场?Blur?的新治理代币BLUR终于来了。备受期待的空投回馈给社区和用户,申领者热情高涨导致Gas费飙升.

1900/1/1 0:00:00
OIN:为什么说Coinbase的新链Base是一个里程碑?

2月23日,Coinbase宣布推出其以太坊Layer2网络----Base的测试网,目标是吸引下一波10亿级用户进入加密经济.

1900/1/1 0:00:00
ORM:用户突破两百万,Lifeform到底在干什么?

继杀手级应用ChatGPT爆火之后,Lifeform近期上线的移动端虚拟人编辑器LifeformCartoon以AI?拍照生成,AI对话为两大特点迅速吸引了用户的关注.

1900/1/1 0:00:00
COI:Filecoin的新叙事:兼容EVM的存储链,用智能合约加入公链战局

预热许久的FilecoinEVM终于官宣定档3月14日,届时,主网将通过Filecoinnv18Hygge升级正式获得EVM虚拟机兼容能力.

1900/1/1 0:00:00
TOK:Coinbase入局带火以太坊L2生态,Arbitrum生态大盘点

去年下半年,即便整个加密市场处在深熊困境当中,但Arbitrum生态代表项目GMX和TreasureDAO依然逆势增长,无论是用户数据还是Token市场表现都可圈可点,引人注目.

1900/1/1 0:00:00