近日,以太坊Layer 2 项目方Matter Labs在zkSync 2.0测试网迁移了首个Solidity dApp,而其底层zkEVM,使得该ZK Rollup二层网络完全兼容了EVM。

对于这个新生的Layer 2,Matter Labs官方在r/ethereum进行了一次AMA,以下是DeFi之道整理的活动内容精选:

Q1 :Alex G 曾在Twitter 上表示,他认为 Starkware 和 zkSync 是为不同的目标用户群构建的,你们能详细说明一下吗?

Alex:

当然,我只能代表Matter Labs 发言,但这确实是我的强烈看法。

zkSync 的愿景牢牢植根于早期加密运动的精神和哲学。它基于密码朋克、主权个人、中本聪以及Vitalik 等思想。简而言之,我们珍视自由以及由密码学带来的强大的新形式的恢复力。你看,密码学是当今任何个人都可以使用的唯一一种技术,它能够抵御最强大的对手(比如强大的极权政权)。密码学与去中心化相结合,赋予区块链社区挑战(并最终改变)现状的能力。如果没有去中心化和不可阻挡性,你今天所拥有的将是银行。如果你认为这两个属性对区块链而言不是必需的,请花点时间在谷歌上搜索“e-gold”和“liberty reserve”。

这给我们带来了两家公司之间的主要区别。zkSync 正在构建一个针对「去中心化」和「弹性优化」的开放协议。我们渴望成为可替代的:即使 Matter Labs 消失或受到损害,网络也应该蓬勃发展。我们的主要目标受众是 1) 使用区块链实现金融主权的人,以及 2) 为这些人构建的去中心化协议。

而StarkWare 正在构建的,或多或少是专有的扩展解决方案,这些解决方案针对其IP的性能和防御能力进行了优化,但具有企业级支持和SLA。作为一个技术和服务提供商,他们正在采取行动保持不可或缺的地位。他们的主要目标受众似乎是建立在区块链上的中心化公司(dydx、Immutable、Sorre、TikTok)。

这种区别直接导致了设计决策的重大差异:

1、软件许可:

zkSync是宽容许可的(Apache/MIT),因此如果Matter Labs 未能做正确的事情,任何人都可以自由地分叉网络。

StarkWare 提出了 Polaris,这将阻止 StarkWare 附属公司以外的任何人运行 STARK 证明器。

2、开发者堆栈:

zkSync 专注于完整的 EVM 兼容性——我们希望网络在各个方面都归社区所有,并且不想充当服务机构以新语言重新编写和重新审核协议。

StarkWare 正在推广 Cairo(一种用于编写智能合约的全新领域特定语言),它有利于性能而不是向后兼容性。

3、可升级性:

zkSync 1.0 从发布的第一天起就有了一个带有强制时间锁定的升级机制(后来扩展了一个安全委员会的机制)。我们承认无法修复漏洞的风险,我们更喜欢这种方式,而不是被传票破坏的风险。而zkSync 2.0 将遵循这种方法。

StarkEx 有一种机制,可以在执行升级之前冻结操作,以作为没有时间锁的升级机制,至少在最初阶段是这样。他们的重点显然是针对外部攻击者的安全性,而不是减少对 StarkWare 本身的依赖。

4、链外数据可用性:

ZKSync 2.0附带了zkPorter:一种针对去中心化优化的链下数据可用性解决方案。它的设计方式将使完整节点比任何现有的以太坊杀手多两个数量级,并为活跃度提供加密经济学激励。

StarkWare则在这里押注于数据可用性委员会(Data Availability Committee),这是由一小部分数据存储者组成的,他们依靠自己的的声誉,而不是去中心化的激励。

如你们所见,这些差异都源于我们价值观和理念的分歧。随着监管压力越来越大,我认为我们会看到更多问题的发生(最明显的是在 KYC、AML、隐私以及加密社区与国家之间的其他紧张领域)。

Q2: 如果 zkPorter 被冻结,智能合约中的资金会怎样?它们是自动退出的吗?如果没有,这将如何影响rollup用户?考虑一个例子,Uniswap 上有 ETH/DAI,其中rollup账户贡献了700万美元,zkPorter账户贡献了300万美元。如果zkPorter 被冻结会发生什么,尤其是从rollup用户的角度来看?

Stan:

通常,这对rollup用户来说不会有什么变化,流动性将保留在合约中,并将继续照常运作。

追问:如果zkPorter被冻结,zkPorter账户提供的流动性如何继续正常运作?这对我来说似乎不安全。

Stan:

zkPorter 冻结意味着在最坏的情况下,zkPorter 账户无法从智能合约中提取其流动性。为什么你认为这可能不安全?请注意,合约的全局存储,如其 ERC-20 余额仍然存储在rollup中。

追问:可以说,这比冻结资金更糟糕。我一直认为冻结 zkPorter 状态就是它字面上的意思——但你实际上并没有在这里冻结 zkPorter。只是资金不在智能合约中——这违背了智能合约平台的初衷。

除非我误解了一切 ——如果用户在 zkPorter 被冻结时遭到清算,并且他们完全无能为力,那将是一个糟糕的用户体验。更大的问题是它打开了一个攻击向量,其中排序器和 zkPorter 验证器可以串通以强制清算和其他 MEV 场景——这使其与侧链一样不安全,并且对于某些 MEV 案例来说可能更糟。我知道 zkSync 2.0 有一个机制,即使在rollup被冻结的情况下,用户也可以从智能合约中提取资金,而 StarkWare 也有类似的保护性提款解决方案。那么,为什么没有为 zkPorter 实现类似的东西来保护用户呢?

Stan:

谢谢你这么全面的回答!我们的团队意识到了这些潜在问题,不幸的是,我不能提供所有的细节,但我们确实致力于最大限度地减少冻结对系统的影响。

关于冻结资金,更取决于合约,当前的Uniswap以太坊合约支持单个分片,因此,如果其代码被移植到zkSync而没有任何更改,它将仅在rollup时存储余额。因此,每当来自 Porter 的用户向合约提供流动性时,他们就会将资金发送到合约的rollup余额中。这些资金,就像所有rollup资金一样,应该像在 L1 上一样安全。正如我已经说过的,我们致力于优雅地处理此类情况。测试网版本将提供更多的详细信息:)

Q3: 将以太坊主网上运行的合约部署到zkSync的过程有多复杂?部署的代码是否完全相同?

Angela:

是的,对于Solidity智能合约:大多数DeFi和NFT项目将在不更改代码的情况下工作。但是,在第一个版本中,编译器会自动将对SHA256和Keccak256的调用替换为对电路友好的哈希函数。目前还不支持其他一些密码学原语,例如ecrecover和密码学预编译。

对于UI: 你可以通过我们的Web3 API 和 Ethers SDK 与智能合约和 zkSync 网络完全交互,对于读取请求,任何语言的任何符合 web3 的框架都可以开箱即用,并具有额外的可选 zkSync L2 特定功能。对于写请求(发送交易):由于 L1 和 L2 之间的根本差异,你将不得不编写一些额外的代码(例如,zkSync 支持以任何token支付费用,因此发送交易将涉及选择token支付费用)。

所以,是的!你只需进行最少的更改即可重用当前的前端(除了发送交易是不同的)。

Q4: zkEVM 架构中最紧迫的中心化点是什么(例如排序器或等效物),在这些领域实现去中心化的计划是什么?

Angela:

zkSync 2.0实现去中心化需要注意 3 点:

1、协议的逐步去中心化

与大多数rollup项目一样,我们选择了逐步去中心化以进行创新、快速迭代以及更快地修复漏洞。zkSync 将保持可升级,直到功能范围稳定,然后它将变得不可变。但是,有两种机制可以在去中心化/安全性和反应性/可升级性之间取得理想的平衡。

A) 信任最小化的可升级性:

zkSync 智能合约的升级可以由 zkSync 治理发起,并有 4 周的时间锁定期。如果治理被破坏,时间锁将让用户有时间通过我们的优先队列/紧急退出机制选择退出。

B) 安全理事会:

为了应对漏洞/黑客事件,我们成立了一个由 15 位受人尊敬的以太坊社区成员组成的安全委员会,它的权力仅限于缩短 4 周时间锁通知期。(注:这15位委员会成员包括Aave创始团队、Itamar Lesuisse (Argent)、Mike McDonald (Balancer)、James Prestwich (cLabs)、Michael Egorov (Curve)、Jack Baumruk (Dekrypt)、Haseeb Qureshi (Dragonfly)、Justin Drake(以太坊基金会)、Stefan George (Gnosis)、Baek Kim (Hashed)、Chris Burniske (Placeholder)、Nick Grossman (USV)、Will Harborne (ZK Validator)、Sergej Kunz (1inch)以及Lasse Clausen (1kx))

这个理事会由智能合约执行,规则如下:

1、8/15 签名可将时间锁缩短至 2 周;

2、10/15 签名可将时间锁缩短至1 周;

3、12/15 签名可将时间锁缩短至3天;

最低3天的时间锁时间,可防止出现最坏的情况。

2、排序器(Sequencer)

最初,只有经授权的排序器提交的区块,才能向 zkSync L1 智能合约提交状态转换。我们可能有一些选择/转换排序器的机制。但最终,我们将切换到由多验证者与 PoS 共识保护的集体排序器。用户不依赖排序器来保证安全。我们的 zkRollup 有一个优先队列/紧急退出机制来保护用户免受排序器的审查:无论排序器是否存在恶意/故障,你始终可以退出 zkSync。

3.zkPorter

zkPorter 用户可以 1-3 美分的固定费用进行交易。这是通过将数据可用性(重建状态所需的基本交易数据)放在链下而不是放在以太坊上来实现的。而数据可用性是通过 zkSync 代币质押者使用权益证明(PoS)来保护的。zkPorter 的安全性严格优于任何其他 L1 或侧链,但在最坏的情况下,恶意行为者控制着质押的排序器和总权益的2/3以上,他们可以签署有效的状态转换,但保留数据,这会冻结状态,因此可冻结质押的 zkPorter 用户和攻击者。

为了尽可能地去中心化zkPorter,2/3的zkSync代币供应是保留给社区的。

Q5: 市场上有这么多扩容解决方案,除了通常声称的“更快、更便宜和更安全”之外,还有什么让你们与众不同?

Lyova :

zkSync 2.0 将拥有 zkPorter - 一个无缝可互操作的,具有链下数据可用性的超便宜分片。你可以在此处阅读所有相关信息:https://link.medium.com/wB8cSQQjqfb

此外,在 zkSync 上,你可以使用任何流动token支付费用——而无需购买 ETH 或像 MATIC 这样的自定义token。

P.S. 关于“我们更快,更便宜以及更安全”,可以参考https://l2beat.com和 https://l2fees.info :)

Q6: zkSync 的下一步是什么?你们是否计划提高跨不同 L2 以及与其他区块链环境的互操作性?

Angela:

关于zkSync的下一步,我们还有很多东西需要构建!

开发者工具:如你所知,我们选择采用长期方法并为我们的编译器使用 LLVM,这已迫使我们考虑调试器、链接器、汇编器、反汇编器和二进制实用程序。

此外,任何编写过 x86 或 arm 程序集的人都可以轻松地为我们的 VM 编写代码。

更多的智能合约语言:LLVM还允许我们和任何其他团队轻松构建语言前端,例如 Rust。

功能更完整、更高效的 zkEVM:在第一个版本中,对 SHA256 和 Keccak256 的调用将被编译器自动替换为电路友好的哈希函数,并且不支持 ecrecover 和密码学预编译。当然,我们的下一步是有效地支持这些!我们还计划实施写时拷贝(copy-on-write)扩展。

UX/DevX 改进:我们已实现了ETH 以外的其他token的手续费方式,并且正在实现帐户抽象,更多的支持会到来!

最后,密码学被证明是区块链世界中令人难以置信的工具。零知识证明已经在推动扩容和隐私,这是公共无许可区块链中最重要的两个问题。Matter Labs 是一个热衷于使用密码学和数学解决问题的工程团队,我们将继续这样做!有趣的应用之一是实施时间锁加密以消除 MEV。

关于跨不同 L2以及与其他区块链环境的互操作性问题,我们主要专注于构建 zkSync,而在 zkSync 和其他网络之间来回移动的问题,主要由 Optics、Connext、Hop 等桥解决方案来解决。

Q7: 你们为什么会选择SNARKs,而不是STARKs? 将来迁移到STARKs会不会太难?合约规模会有限制吗?

Lyova:

选择SNARKs的原因之一是数据更小,因此证明更便宜,它只占用O(1)空间。SNARKs也可以很容易地进行递归,这节省了验证器更多的计算量。此外,zkSync使用的是PLONK方案,与其他SNARKs不同的是,它只需要一个通用的可信设置,这意味着我们不必每次更新电路时都产生“有毒废弃物”。如果你好奇的话,去看看https://github.com/matter-labs/awesome-zero-knowledge-proofs! 我们没有任何计划在将来迁移到STARKs。

L2上部署的合约必须以某种方式发布到L1(至少我们现在是这样),以确保在“优先模式”期间正确执行和提取资金,这在不太可能的审查情况下发生。这就是为什么L1区块gas限制会施加某种大小限制。

Q8: 主网上线之后,Matter Labs如何实现盈利?

Angela:和以太坊相同的方式,最初token供应的1/3留给了团队和投资者,2/3属于社区,zkSync token是zkSync网络的费用token(尽管我们支持以其他token支付交易费用,但它们将在后台换成zkSync token)。