从合约部署的角度区分不同的 zkEVM_DEF:SWAP

来源:pseudotheos.mirror.xyz

作者:Pseudotheos

以太坊虚拟机 (EVM) 是在以太坊区块链上管理状态和执行智能合约的虚拟机。zkEVMs 旨在通过零知识电路来证明 EVM 的执行,这个领域在过去的一年里已经有了显著的增长并扩张为一个行业。在该领域涌现了许多不同的项目和社区,每个项目和社区都采取了自己独特的方案来应对这两种技术交叉带来的挑战和机遇。

对比不同 zkEVM 项目的一个维度是 EVM 的兼容程度。虽然 EVM 兼容是一个连续介质,但有两种主要的方案:语言层面的兼容和字节码层面的兼容。

OKX建立行业BRC-20解析新标准:5月16日消息,据OKX官方公告,OKX正式建立行业BRC-20解析新标准,该标准已通过安全审计机构慢雾的安全审计,旨在逐步完善和增强BRC-20生态的完整性和稳健性。

据悉,OKX持续关注并投入BRC-20基础设施建设,OKX Web3钱包即将上线Ordinals交易市场,是首个支持Ordinals代币及NFT交易的多链钱包。OKX此前已与UniSat达成官方合作支持双重验证,并上线首个BRC-20浏览器。[2023/5/16 15:06:48]

要理解这些方案之间的区别,很重要的一点是了解 EVM 如何执行用 Solidity 或 Vyper 等高级语言编写的代码。

Beosin:Avalanche链上Platypus项目损失850万美元攻击事件解析:2月17日,据区块链安全审计公司Beosin旗下Beosin EagleEye安全风险监控、 预警与阻断平台监测显示,Avalanche链上的Platypus项目合约遭受闪电贷攻击,Beosin安全团队分析发现攻击者首先通过闪电贷借出4400万USDC之后调用Platypus Finance合约的deposit函数质押,该函数会为攻击者铸造等量的LP-USDC,随后攻击者再把所有LP-USDC质押进MasterPlatypusV4合约的4号池子当中,然后调用positionView函数利用_borrowLimitUSP函数计算出可借贷余额,_borrowLimitUSP函数会返回攻击者在MasterPlatypusV4中质押物品的价值的百分比作为可借贷上限,利用该返回值通过borrow函数铸造了大量USP(获利点),由于攻击者自身存在利用LP-USDC借贷的大量债务(USP),那么在正常逻辑下是不应该能提取出质押品的,但是MasterPlatypusV4合约的emergencyWithdraw函数检查机制存在问题,仅检测了用户的借贷额是否超过该用户的borrowLimitUSP(借贷上限)而没有检查用户是否归还债务的情况下,使攻击者成功提取出了质押品(4400万LP-USDC)。归还4400万USDC闪电贷后, 攻击者还剩余41,794,533USP,随后攻击者将获利的USP兑换为价值8,522,926美元的各类稳定币。[2023/2/17 12:12:32]

为了使 EVM 能够运行智能合约所指定的行为,有这样一个过程:高级语言被编译成字节码,与 EVM 相连接。对于 Solidity,典型的流程如下:

DeFiBox上线Mdex 合约解析功能:据官方公告,Heco 数据合作平台 DeFiBox 现已上线Heco项目Mdex 的合约解析功能,用户通过 DeFiBox 可以直观查看收益率,并根据相关数据进行策略调整,提高了用户体验。[2021/1/27 13:38:26]

1. 首先,合约是用 Solidity 编程语言编写的,并保存为一个 .sol 文件。这个文件包含合约的函数、变量和其他元素。Solidity 代码通常使用集成开发环境 (IDE) 编写,并遵循特定的语法和结构。

2. 接下来,使用 Solidity 编译器将 .sol 文件编译成字节码。字节码是一种有效存储的、机器可读的操作码表示,可以在 EVM 上执行。操作码 是 EVM 能够直接解释和执行的低层级指令。编译过程包括几个步骤,如语法检查、类型检查和优化,以确保字节码的正确和有效的。

动态 | EOS疑似将推出基于EOS的HandShake DNS解析服务:EOS疑似将推出基于EOS 的 HandShake DNS解析服务,一位开发者的Github显示正在开发EOS-handshake服务。Cosmos社区总监Chjango Unchained4月30日发推表示发现EOS开发者正在复用 Handshake 的开源代码。EOS或许会加入域名解析服务,生态会进一步扩大。(IMEOS)[2019/4/30]

3. 一旦合约被编译成字节码,它就可以被部署到以太坊。这通常涉及到向交易池发送一个带有合约字节码的交易。该交易最终被纳入以太坊区块,然后合约被创建。

4. 合约部署后,它可以与以太坊上的其他合约和用户进行互动。

上述流程描述了合约如何被部署到以太坊。部署到 zkEVM 的流程将根据它是字节码层面兼容的还是语言层面兼容的而有所不同。

执行和证明具有与 EVM 相同的字节码的 zkEVM 被称为“字节码层面兼容”。在字节码兼容的 zkEVM 中,除了合约部署地方的不同,对开发者的体验没有任何改变。这种 zkEVM 上可以使用同样的 Solidity 代码、编译器和字节码。开发者可以继续使用他们往常使用的编程语言和工具,同时还可以利用零知识电路的可扩展性和加密安全性。这类 zkEVM 需要能够通过处理相同的低层级操作码和复制相同的结果来复制 EVM 的行为。这涉及到将操作码映射到自定义的 ZK 电路上。从工程的角度来看,这种映射是具有挑战性的,而且操作码的映射导致更庞大的电路和更高的证明生成成本。然而,它最终会给开发者带来更简单的体验。

语言层级兼容性是指 zkEVM 与高级代码 (如Solidity) 一起运行的能力。开发者仍然可以用 Solidity 或其他高级语言编写代码,但这种高级代码必须被编译成与 EVM 不同的字节码。这需要一个特定于部署合约的 zkEVM 网络的编译步骤。非 EVM 的字节码可以被设计为更加电路友好,从而使证明生成更高效。

感谢阅读! 在 Twitter 上关注 @pseudotheos 以获得未来文章的通知。本文基于 CC BY-SA 版权类型。

脚注

: Solidity 首先被编译成一种中间语言,称为 Yul,然后再编译成字节码。

金色早8点

金色财经

Odaily星球日报

欧科云链

澎湃新闻

Arcane Labs

深潮TechFlow

MarsBit

BTCStudy

链得得

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:0ms0-7:382ms