风险提示:央行等十部委发布《关于进一步防范和处置虚拟货币交易炒作风险的通知》, 请读者提高风险意识。

在Solidity中应用ZK-SNARKs——隐私、计算优化和MEV

通过将ZK-SNARKs技术集成到Solidity,开发者能有效应对以太坊应用中的隐私、计算和MEV相关挑战,进而推动以太坊生态系统的进一步创新与发展。

MarsBit
MarsBit
热度 ...

原文标题:The Application of ZK-SNARKs in Solidity - Privacy Transformation

本文深入探讨了如何通过集成ZK-SNARKs技术到Solidity,来提升以太坊应用层的隐私保护、计算优化和抵御最大可提取价值(MEV)攻击的能力,同时展望了该领域的未来发展方向。MarsBit编全文译:

导言

以太坊是一个基于区块链的开放平台,允许开发者构建并部署智能合约。智能合约是以太坊上的可编程代码,能够支持各种应用的创建。随着以太坊的发展,出现了一些问题和挑战,包括应用中的隐私问题。DeFi应用涉及大量的地址信息和用户资金。在某些应用场景中,保护交易的隐私对用户至关重要。通过采用保护隐私的技术,交易细节只能对涉及的各方可见,而不对公众公开。通过使用ZK-SNARKs 2(零知识简洁非互动论证),我们可以对以太坊上的现有应用进行转化。这包括为以太坊上的现有项目增加私有转账、私有交易、私有订单和私有投票等功能,同时还可以优化计算并应对以太坊应用层项目中的MEV (最大可提取价值)挑战。

通过这项研究,我们的目标是促进以太坊应用层的隐私,并解决与隐私转化、计算优化(如Rollup)和以太坊上的MEV 1抵抗相关的问题。

现存问题

竞争者分析:没有隐私功能的智能合约容易受到竞争者的分析和监控。竞争者可以通过观察和分析合约的交易模式和数据,获得有关业务运营和策略的敏感信息,从而削弱竞争优势。

交易可追溯性:在没有隐私功能的情况下,合约交易是可追溯的,交易的参与者和内容都可以被追踪和识别。这暴露了某些交易,如匿名投票或敏感交易的交易意图和参与者。

数据安全性:智能合约中的数据已成为攻击者的主要目标。没有隐私功能的合约面临数据泄露、篡改或恶意攻击的风险。攻击者经常通过分析来利用和操纵合约数据,进行恶意活动,对用户和合约造成伤害。

技术障碍

EVM智能合约多线程:目前,在以太坊智能合约中直接实现多线程 2是不可能的。以太坊采用基于帐户的执行模型,每个交易都在一个单独的线程中顺序执行。这是因为以太坊的共识机制需要顺序验证和执行交易,以确保所有节点之间的共识。当处理大规模数据时,以太坊的智能合约面临性能瓶颈。要在链上运行包含零知识证明的大量智能合约,需要实现异步调用、事件驱动编程和代理分割,以实现并发执行。

可审计的零知识 (ZK):可审计的ZK指的是验证者能够提供收到的零知识证明给第三方(通常是公众),以验证其有效性,而无需再次经历整个证明过程。这意味着第三方可以验证证明的正确性,而不知道声明的具体细节。与普通的ZK实现相比,可审计的ZK需要更多的计算和存储操作,特别是在验证阶段。这可能会影响智能合约的性能和资源消耗,对Solidity和相应的ZK电路的性能优化提出更高的要求。

证明系统的可扩展性:现有的证明系统存在可扩展性问题,使其难以支持大规模的电路,如证明LLM电路。目前的潜在可扩展性解决方案包括递归证明 1 和分布式证明 1,它们有可能增强证明系统的可扩展性,并为证明大规模电路提供解决方案。

证明系统的安全风险:一些证明系统,如Groth16和Marlin,依赖于一个私下生成的受信任的设置 1 (也被称为有毒废物)。一旦被公之于众,整个证明系统的安全性都无法得到保证。

当前使用的zk-SNARKs方案

Groth16(目前由Zcash使用)

在对手仅限于线性/仿射操作的情况下,Groth基于QAP构建了一个通信成本仅为3元素的LIP。基于这个LIP,它构建了一个zk-SNARK,通信成本为3个群元素,验证者的计算成本仅为4个配对操作(称为Groth16 1)。

优点:证明大小小,当前验证速度最快。

缺点:受信任的设置绑定到电路,这意味着生成一个不同的电路的证明需要一个新的受信任的设置,并且受信任的设置不能动态更新。

Marlin

为了解决zk-SNARKs方案无法实现全局更新的问题,Groth等人基于QAP,提出了一个带有全局和可更新公共参考字符串(可更新的通用CRS)的zk-SNARK,记为GKMMM18。在此基础上,Maller等人提出了Sonic方案,利用排列论证、大产品论证和其他技术,实现了具有O(|C|)大小的全球可更新CRS,简洁的NIZKAoK,无需额外的预处理,在代数群模型下。

Marlin是Sonic的性能优化方案(Plonk也是),主要优化了SRS预处理和多项式承诺,从而减少了证明系统的证明大小和验证时间。

优点:支持全球可更新的受信任设置,在分摊意义上实现简洁验证。

缺点:在证明过程中的高复杂性,与Groth16相比,证明大小不够简洁。

Plonk

Plonk也是Sonic方案的一个优化,引入了一个不同的电路表示法,称为Plonkish,它与R1CS(秩-1约束系统)不同,并允许更多的可扩展性,如查找操作。Plonk通过“子群上的评估而不是单项式的系数”优化排列论证,并利用Lagrange基多项式。

优点:支持全球可更新的受信任设置,完全简洁的验证,以及Plonkish中更可扩展的电路表示。

缺点:在经常有大量增加输入的情况下,Marlin可能表现更好;与Groth16相比,证明大小不够简洁。

HALO2

为了减少证明复杂性和减轻证明者的负担,研究人员引入了递归证明,并提出了Halo证明系统(如Vitalik的博客1所介绍)。Halo证明系统采用了来自Sonic的多项式IOP(交互式预言证明)技术,描述了一个递归证明组合算法,并用来自Bulletproofs的内积论证技术替换了算法中的多项式承诺方案,从而消除了对受信任设置的依赖。

Halo2是Halo的进一步优化,主要是针对多项式IOP的方向。近年来,研究人员已经发现了比Sonic中使用的更高效的多项式IOP方案,如Marlin和Plonk。其中,Plonk被选中,因为它支持更灵活的电路设计。

优点:不需要受信任的设置;引入递归证明以优化证明速度。

缺点:证明大小不够简洁。

如何与Solidity集成?

对于Groth16和Marlin证明系统,已经有高级电路语言和编译器为solidity提供支持,如为Groth16和Plonk提供的circom,以及为Groth16和marlin证明系统提供的zokrate。

对于halo2证明系统,没有与solidity链接的产品或工具,这是一个缺口。可能的参考工具是:

  • halo2-snark-aggregator-solidity由scroll tech 2提供
  • plonk-verifier由PSE 1提供

使用Solidity集成ZK-SNARKs的场景演示

隐私增强

将ZK-SNARKs集成到Solidity中可以实现隐私增强,允许保护交易的细节,同时确保交易的有效性。以下是一个简单的场景,演示如何使用ZK-SNARKs在Solidity中实现隐私转化。

假设有两个用户,Alice和Bob,他们想进行一个私人交易,但不想让交易的细节向其他人公开。

首先,我们需要定义交易的数据结构。在这个例子中,我们将定义一个简单的交易结构,包括发送者、接收者和交易金额:

关于【在Solidity中应用ZK-SNARKs——隐私、计算优化和MEV】的延伸阅读

  • Movement的公链新解:“将 Move 引入 EVM”如何重塑以太坊与 Move?

    LFG Labs推出基于Move语言的以太坊L2,旨在将Move系智能合约的安全性和高性能与EVM系的流动性和用户群结合。Movement SDK提供了模块化的MoveVM虚拟机、编译器和自定义适配器,解决了Move生态系统的破碎化问题。M1和M2公链架构集成了以太坊虚拟机,允许开发者在M2上启动并引入EVM系的DApp。M2使用零知识证明提高隐私和安全性,同时支持EVM和Move语言编写的智能合约。顶级VC机构已开始布局,为新的场景用例和生态增长奠定基础。

  • 律师抢码农饭碗?Ava Labs创始人预言AI如何重塑智能合约

    Ava Labs创始人Emin Gün Sirer认为,使用人工智能帮助编码智能合约可以让普通人也能轻松编写,这将带来数十亿新的区块链用户。目前,Avalanche公司正在开发一种新型虚拟机,支持使用自然语言编程,但仍需解决法律和技术问题。Chainlink BUILD计划中的Council框架可以将英语指令转换为可执行代码,未来仍需改进。律师也可能成为智能合约编写者,普通用户也可以定义基本交易。总的来说,这种新的智能合约方法充满希望。

隐私

接下来,我们需要定义一个智能合约,来处理交易并通过ZK-SNARKs保护交易的隐私。以下是一个简单的智能合约示例:

隐私

在上述示例中,我们引入了一个名为Verifier的库,该库包含用于验证ZK-SNARK证明的相关函数。当用户创建交易时,他们需要提供有效的证明以确保他们有权执行该交易。createTransaction函数首先使用_proof.verify()验证证明的有效性,然后创建一个新的交易对象并将其存储在transactions映射中。getTransaction函数可以用来获取特定交易的详细信息。

最后,我们需要定义Verifier库,其中包含验证ZK-SNARK证明的相关函数。这里仅显示了一个简单的示例:

隐私

此场景展示了如何通过Solidity与ZK-SNARKs的集成来改造隐私。通过使用ZK-SNARKs,交易的细节得到了保护,只有持有有效证明的用户才能执行交易。

计算优化

在Solidity中集成ZK-SNARKs可用于计算优化场景,尤其是在DeFi(去中心化金融)项目中,以提高计算效率并保护用户隐私。以下是一个示例,演示了如何在Solidity中使用ZK-SNARKs为DeFi项目的计算进行优化。

假设有一个DeFi项目,用户可以进行存款和扣款操作。存款和借款操作需要一些计算,例如计算利息或验证借款人的信用。我们可以使用ZK-SNARKs在保护用户隐私的同时优化这些计算。

首先,我们需要定义一些数据结构和功能。以下是DeFi智能合约的简单示例:

隐私

在上述示例中,我们引入了一个名为Verifier的库,该库包含验证ZK-SNARK证明的相关功能。当用户申请贷款时,他们需要提供有效的证明来验证他们的申请是否符合要求。applyLoan函数首先使用_proof.verify()验证证明的有效性,然后创建一个新的贷款对象并将其存储在loans映射中。approveLoan函数由贷款方使用以批准贷款申请。getLoan函数可用于获取特定贷款的详细信息。

同样,我们需要定义包含验证ZK-SNARK证明相关功能的Verifier库。这里仅显示了一个简单的示例:

隐私

抵抗MEV攻击

在Solidity中集成ZK-SNARKs可以帮助实现对MEV(最大可提取价值)攻击的抵抗,MEV攻击是指恶意矿工为了获得额外利润而操纵区块链上交易的顺序。使用ZK-SNARKs可以隐藏交易的细节,从而减少MEV攻击的可能性。以下是一个简单的场景,演示了如何在Solidity中使用ZK-SNARKs实现抵抗MEV攻击的功能。

假设有一个去中心化交易所(DEX),用户可以在其上进行交易。为了抵抗MEV攻击,DEX可以使用ZK-SNARKs来隐藏交易的细节,使恶意矿工无法利用交易顺序获得额外利润。

首先,我们需要定义交易的数据结构。在此示例中,我们将定义一个简单的交易结构,其中包含发送者、接收者、交易金额和交易类型:

隐私

接下来,我们需要定义一个智能合约,用来处理交易并通过ZK-SNARKs保护交易的隐私。以下是一个简单的智能合约示例:

隐私

在上述示例中,我们引入了一个名为Verifier的库,其中包含验证ZK-SNARK证明的相关函数。当用户想要执行交易时,他们需要提供有效的证明以确保他们有权执行该交易。executeTransaction函数首先使用_proof.verify()验证证明的有效性,然后创建一个新的交易对象并将其存储在transactions映射中。getTransaction函数可用于检索特定交易的详细信息。

最后,我们需要定义Verifier.sol库,其中包含验证ZK-SNARK证明的函数。以下是一个简单的示例:

隐私

此场景演示了如何通过集成ZK-SNARKs在Solidity中实施反MEV措施。通过使用ZK-SNARKs,交易的细节得到了保护,使恶意矿工难以通过交易排序来获得额外的利润。

结论

从上述示例中,我们可以看到,将ZK-SNARKs技术集成到Solidity可以有效地解决隐私、计算优化和抵御Ethereum应用中的MEV(最大可提取价值)问题。ZK-SNARKs提供隐私功能,使得在现有的Ethereum项目中可以实现私有转账、私有交易、私有订单和私有投票。与此同时,ZK-SNARKs可以优化计算过程并应对Ethereum应用层项目中与MEV抵抗相关的挑战。通过利用ZK-SNARKs技术,开发者可以增强其应用的隐私性、性能和安全性。这再次证实了在Ethereum上编写ZK应用程序的可行性,并表明这是未来发展的趋势。这将为Ethereum生态系统带来更好的隐私保护、计算优化和MEV抵抗能力,推动Ethereum应用的进一步发展和创新。

可能的改进和未来工作

在Ethereum区块链上建立公共ZK验证层

这可以提供诸如隐私保护、可扩展性、灵活性和可扩展性等各种好处。这可以帮助推动ZK技术在Ethereum生态系统中的采用,并为用户和开发者提供更安全、高效和灵活的验证解决方案。

在Solidity中的ZK性能优化

考虑使用如批处理技术、优化计算和通信、并行计算、缓存和预计算以及优化验证过程等方法来提高ZK在Solidity中的调用性能。增强ZK证明的计算效率,减少通信开销,并提高ZK系统的整体性能。

建立可复用的Solidity ZK组件

这有助于代码的可维护性和可复用性,促进合作和共享,提高代码的可扩展性,并提供更好的代码质量和安全性。这些组件可以帮助开发者高效地开发Solidity应用,同时也有助于整个Solidity社区的增长和发展。

免责声明:本文仅代表作者个人观点,不代表链观CHAINLOOK立场,不承担法律责任。文章及观点也不构成投资意见。请用户理性看待市场风险,以及遵守所在国家和地区的相关法律法规。
图文来源:MarsBit,如有侵权请联系删除。转载或引用请注明文章出处!

标签:

分享至
https://www.chainlook.cn/toutiao/1696992622.html

下一篇:

今日推荐 | 牛市已拉开序幕:市场转变的微妙信号与前瞻分析

牛市的序幕已拉开

免责声明:
链观CHAINLOOK作为区块链技术应用与Web3行业研究的智库媒体,旨在为中国区块链专家、学者们提供最新的行业资讯信息与数据样本,用于区块链技术研究与创新。本站所发布的文章仅代表作者的个人观点,不代表链观CHAINLOOK官方立场,本站所发布的区块链行业研究报告与数据分析成果是通过人工智能算法对数据内容进行分析与归纳生成,不代表任何投资暗示与建议,链观CHAINLOOK不承担法律责任。

风险提示:
虚拟货币不具有法定货币等同的法律地位,参与虚拟货币投资交易存在法律风险,链观CHAINLOOK坚决反对各类代币炒作,请读者提高风险意识,理性看待区块链技术应用及市场风险。

© 链观CHAINLOOK All Rights Reserved. 京ICP备18054193号-5