tp钱包app官网下载|基础指南:zkEVM、EVM兼容和Rollup是什么?

佚名 0 条评论 2022-08-10

作者:Immutable X联合创始人兼CTO Alex Connolly

来源:medium

ZK-rollup长期以来一直被视为以太坊扩展的终局。然而,尽管它们对以太坊扩展路线图很重要,但在几个关键点上仍然存在广泛的不确定性:

zk-rollup到底是什么?

特定于应用程序的rollup和通用rollup之间有什么区别?

zk-EVM rollup是什么?EVM等效和EVM兼容等术语的实际含义是什么么,它们如何适用于rollup?

zk-rollup生态系统的现状怎么样,对我的项目意味着什么?

如果你是一名希望了解以太坊扩展的下一阶段的开发人员,本文(希望)会有所帮助。

ZK-Rollup

ZK-rollup是通过一个简单的观察成为可能的:STARKs或SNARKs等证明系统允许以次线性处理来验证线性数量的交易。我们可以利用这一特性来创建大规模可扩展的区块链交易处理,具体如下:

1、用户在L1上的zk-rollup智能合约中锁定他们的资产。

2、用户将涉及这些资产的交易提交给L2的sequencer,该sequencer将这些交易收集成有序的批次,并为每个批次生成一个有效性证明(例如STARK/SNARK)和聚合状态更新。

3、这个状态更新和证明被提交给我们的L1 zk-rollup智能合约并由其验证,用于更新我们的L1状态。

4、用户可以使用这个L1状态(取决于不同的数据可用性机制)来检索他们的资产,从而实现完全的自我托管和 "以太坊安全性"。

简化的ZK-Rollup架构

验证证明的gas成本与被证明的交易数量呈次线性关系,与直接使用L1相比,允许更大的规模。要想更详细地了解这个过程,我推荐阅读Vitalik的Rollup不完整指南或Delphi新发布的Rollup全面指南。

特定于应用的Rollup

到目前为止,所有生产级的zk-rollup都是我们称之为 "特定于应用的rollup"。在特定于应用的rollup中,rollup支持固定数量的 "状态转换"(例如交易),由rollup运行者定义。这对于过度优化常见的用例是非常有用的,例如:

Loopring—支付和交换

Immutable—NFT铸造和交易,游戏

dydx —永续合约交易

特定于应用的rollup在扩展特定的、已熟知的问题方面非常出色。如果你的项目需求可以通过特定于应用的rollup来满足,你的用例可能会得到更好的性能,更好的用户体验和更好定价,因为它们缺乏通用性是一个巨大的优势。例如,在Immutable,我们能够通过对NFT交易费用补贴免费的NFT铸造和转移来消除gas费用——这种权衡只因rollup的状态转换的可预测性质而成为可能。

然而,许多项目希望能够创建自己的自定义逻辑和智能合约,独立于rollup运营商,这在特定于应用的rollup中是不可能的。此外,许多DeFi项目需要 "可组合性",或与其他项目进行交互的能力(例如,许多DeFi项目使用Uniswap作为价格预言机)。只有当你的rollup不仅支持自定义代码,而且支持可以由任何用户部署的原生智能合约时,可组合性才有可能实现。为了实现这一点,我们需要修改我们的zk-rollup架构,以扩大每个组件的运用。

这种灵活性的增加要付出几个代价:性能大大降低,rollup参数的可定制性降低,以及更高的费用。然而,最大的代价是根本没有实现通用的zk-rollup,当然也没够实现批量生产的zk-rollup。但这种情况正在开始改变。

StarkNet目前已经在主网上运行。

3个独立的项目(zkSync, Polygon Hermez/zkEVM和Scroll)都在ETH CC 2022大会上宣布,他们将成为第一个到达主网的 "zkEVM"。

这些公告值得深入研究,因为这些团队不只是宣布了通用的rollup,他们还宣布了 "zkEVM"。随后,推特上出现了很多围绕 "EVM兼容性"、"EVM等效性"、"真正的zkEVM "以及哪种方法更优越的争论。对于应用开发者来说,这些对话往往是噪音——所以本文的目的是解析这些术语、设计决策和理念,并解释它们对开发者的实际影响。

让我们从头开始:什么是EVM?

了解EVM

以太坊虚拟机(EVM)是执行以太坊交易的运行环境,最初在以太坊黄皮书中定义,后来被一系列以太坊改进提案(EIP)修改。它由以下部分组成:

一个用于执行程序的标准 "机器",每笔交易都有的易失性 "存储器",可以写入交易的持久性 "存储器 "和一个操作 "堆栈"

~约140个定价的 "操作码",在该机器中执行状态转换。

图表来自https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf

我们虚拟机的一些操作码例子:

堆栈操作—PUSH1 (向堆栈中添加东西)

算术操作—ADD(添加数字),SUBTRACT。

状态操作—SSTORE(存储数据),SLOAD(加载数据)。

交易操作— CALLDATA, BLOCKNUMBER (返回关于当前执行的交易的信息)

一个EVM程序只是一系列操作码和参数。当这些程序被表示为一个连续的代码区块时,我们称其结果为 "字节码"(通常表示为十六进制字符串)。

通过将大量这些操作码组合成一个执行序列,我们可以创建任意的程序。以太坊使用定制的虚拟机,而不是调整现有的虚拟机,因为它有独特的需求:

每个操作都必须有 "成本",以防止滥用(因为所有节点运行所有交易)

每个操作都必须是确定性的(因为所有节点都必须在交易执行后就状态达成一致)

我们需要区块链特有的概念(如智能合约、交易)

一些复杂的操作必须是原语(如密码学)

交易必须沙盒化,没有I/O或外部状态访问

EVM是第一个图灵完整的区块链虚拟机,于2015年发布。它有一些设计上的局限性,但其巨大的先发优势和随后的广泛采用为以太坊创造了巨大的独特性——它是迄今为止整个领域中最经得起考验的智能合约基础设施。

由于以太坊的主导地位,许多后来的区块链都直接采用了这个运行时环境。例如,Polygon和BNBChain是以太坊的直接分叉,因此使用EVM作为其运行时间。值得注意的是,EVM并不是一成不变的,在EIP1559等升级中经常被修改。由于其他区块链需要时间来更新,或者在一些地方与以太坊有分歧,它们往往运行的是一个稍微过时的EVM版本,并且可能难以跟上变化——这一事实会让以太坊的核心开发者感到沮丧。

以太坊兼容性

然而,人们所说的 "EVM链 "通常不仅仅是反映这个运行时环境。以下是一些始于以太坊的标准,它们已成为事实上的全球标准:

Solidity(一种高级语言,可编译成EVM字节码)

以太坊的JSON-RPC客户端API(用于与以太坊节点交互)

ERC20/ERC721(Ethereum代币标准)

ethers.js(一个与以太坊交互的网络库)

以太坊的密码学(例如,keccak256作为哈希函数,secp256k1上的ECDSA签名)

从技术上讲,你的链可以有EVM运行时间,而不支持上述的一些或全部。然而,遵守这些标准使得在你的新链上使用以太坊工具变得非常容易。一个很好的例子是Polygon,它除了使用上述所有工具外,还能够运行分叉版本的Etherscan(Polygonscan),使用Hardhat等以太坊开发者工具,并在Metamask等钱包中被支持为不同的以太坊 "网络"。Nansen和Dune等工具最初都是针对以太坊的,因此增加对新的EVM区块链的支持很简单。新的钱包,新的NFT市场——如果以太坊的界面和你的链的界面之间的唯一区别是链的ID,你很可能会成为第一个且最容易添加的。话虽如此,这些工具是为以太坊打造的——只要你开始修改你的区块链(例如更大的区块,更快的区块时间),你就面临破坏它们的风险。没有完美的兼容性这回事。

尽管如此,针对以太坊标准的工具和应用程序的数量为新的区块链创造了巨大的动力,使其只是反映以太坊标准。任何不支持上述标准的区块链在涉及开发者工具时都会自动落后,并有可能随着EVM生态系统的发展而进一步落后。

我认为,"EVM兼容 "一词实际上不足以描述这里的网络效应——我们实际上描述的是 "以太坊兼容",并远远超出智能合约执行环境,延伸到整个以太坊生态系统和工具集。

为了应对这一点,Solana等非EVM区块链不得不创建完全平行的生态系统,这将降低它们的速度,并使其更难吸引现有的开发者。然而,不需要遵守这些标准确实让非EVM区块链有能力对以太坊工具集进行更根本的改变,从而更积极地将自己与以太坊区分开。创建一个EVM区块链非常简单——但为什么有人会使用你的区块链而不是其他数百个 "速度快的EVM区块链 "中的一个。如果你能克服需要建立一个成功的平行链和生态系统的困难,Solana已经表明,a)你可以吸引优秀的原生应用程序(如MagicEden,Phantom),b)如果商业激励足够,EVM起源项目仍然会支持你(如Opensea增加Solana支持)。

ZK-EVM

公共通用rollup都有一个共同的目标:开发者和用户尽可能快地生成网络效果。这需要创造最高性能的rollup技术,拥有最好的BD团队,并进行最早或最有效的营销。然而,所有rollup团队(出于上述原因)都对以下问题感到非常担忧:

将现有以太坊合约(和开发者)迁移到其rollup中

由现有EVM工具支持(如钱包、市场等)

实现这两个目标的最简单方法是创建一个“zkEVM”:一个通用rollup,将EVM作为其智能合约引擎运行,并保持与上述以太坊生态系统的通用接口的兼容性。

然而,这并不像我们从头开始创建新的L1区块链时那样容易。我们的目标是运行EVM字节码——但ZK证明需要将它们证明的所有计算语句转换为非常特定的格式——一个“代数线路(algebraic circuit)”,然后可以编译成STARK或SNARK。为了快速了解“线路”,这里有一个例子(使用更直观的布尔电路(boolean circuit)作为代数线路的特例)。在基于这个简单电路的zkSNARK系统中,我们的证明者希望说服验证者他们了解产生真输出的输入(

下一篇:TokenPocket钱包下载地址|韩国区块链周主舞台会议最后一天,元宇宙和Web3成为焦点
上一篇:TokenPocket冷钱包下载|创新的链上投资平台---UNQ Club
相关文章
评论
返回顶部小火箭