编者按:本文来自 登链社区,Odaily星球日报经授权转载。

Curve 和 Matter Labs 团队很高兴宣布以安全且去中心化的方式向以太坊扩展迈出了一大步:今天,我们和 Curve Finance 一起发布了第一个常驻 dapp 的 zkSync L2 智能合约测试网。

>> **演示 demo!**[3]

在 Zinc 上的 Curve 合约[4]

Zinc 文档[5]

为什么选择 ZK Rollup ?

扩展性是以太坊一个迫切的需求 - 隧道尽头有一个亮灯。Vitalik Buterin 刚刚宣布 Rollup 是现阶段扩展以太坊的“唯一选择”[6], 突出显示了其[独特的无需信任安全保证](/ matter-labs/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955 "独特的无需信任安全保证") 。

ZK Rollup (ZKR)是现有的两种 Rollup[7] 版本之一,另一种是 Optimistic Rollup (简写:OR)[8]。两种方法都有其取舍(参见详细比较[9])。这是主要的实际差异:

安全 - 即使使用单个验证者,ZK Rollup 也非常安全,因为它们依靠纯数学,而不是进行持续的经济激励活动来确保资金安全。除了密码学假设外,ZKR 与基础 L1 一样安全。这对于处理资产总值高的协议尤其重要。与 ZKR 相比, Optimistic Rollup 具有强大的反网络效应:其安全性与锁定价值成比例地降低。实际上,需要控制资本上限(数千万美元的范围内),才能安全地放如在单个 Optimistic Rollup 中,才能保持对对 L1 的高度合理攻击的抵抗[10]. 只要以太坊仍然是 PoW 链,就无法缓解。

最终确定性。ZK Rollup 的最终确定性时间(分钟)短,因此支持资本快速退回到 L1(L1:第一层,即以太坊自身网络)。相反, Optimistic Rollup 被迫在快速退出和资本效率退出之间进行选择[11],但不能两者兼有。大多数研究人员认为,OR 至少需要一个星期的争议延迟时间。这对于与 L1 上的合约(至少将在最初)继续在生态系统中发挥重要作用的合约的互操作性非常重要。

可编程性 - 通过 Optimistic Rollup 支持完全的 EVM 兼容性更加容易。通常认为 OR 方法是将现有以太坊智能合约引入 L2 (L2 :二层网络)的唯一可行方法。但是,这种情况即将改变。

ZK Rollup 中的智能合约?

直到最近,在 ZK Rollup 中支持任意用户定义的智能合约还是一项极富挑战性的任务。但是这些天来,在零知识证明领域中事情发展很快。2020 年带来了几项突破,最终使之成为可能:Matter Labs 引入了 Zinc 编程语言和对 SNARK 友好的 Zinc VM,并实现了以太坊的递归 PLONK 证明验证[12]。这些技术的结合将推动 zkSync 上的实现智能合约。

Zinc VM 如何工作?

合约以 Zinc 编程语言编写并编译。编译器输出是双重的:

  • Zinc 虚拟机的字节码。

  • 合约的 SNARK 验证密钥。

Zinc VM 字节码+验证密钥可以完全无许可的方式部署到 zkSync 网络。合约将在 L2 中被分配一个新地址。每当用户与该合约进行交互时,zkSync 的验证程序将执行 Zinc VM 操作码并产生对交易有效性的零知识证明 – 友好的 SNARK Zinc VM 的特殊设计使其成为可能。然后将由 Rollup 块电路针对已部署的验证密钥来递归验证该证明。然后,以太坊上的 zkSync 智能合约验证区块证明,以授权状态转换,所有交易状态转换可以在一个区块快速的验证。

因此,zkSync 上的 Zinc 智能合约继承了有效性证明的严格安全保证。

如何为 zkSync 编写智能合约?

目前,必须使用 Zinc 编程语言编写 Zinc VM 的智能合约。查看最新版本的Zinc Book[13],你将找到完整的入门指南和完整的开发人员参考。我们期待你在Zinc Gitter 聊天室[14]中提出的问题和反馈。

Zinc 目前处于封闭开发 Beta 版。如果你有兴趣为你的项目尝试,请与我们联系[15].

Zinc 与 Solidity/Vyper 有何不同?我可以移植现有的源代码吗?

Zinc 遵循简化的 Rust 语法,但它借鉴了 Solidity 的所有智能合约元素和结构体。任何有经验的 Solidity/Vyper 开发人员都可以在几天之内了解到它。

由于 Zinc 在结构体上与 Solidity 相同,因此可以轻松地将现有的 Solidity 代码转换为 Zinc。主要的挑战是 Zinc 目前尚未完全图灵完备。这意味着:禁止递归和无限循环(有限循环是 OK 的)。

第二受欢迎的 ETH 智能合约语言 Vyper 也不是图灵完备的。因此,今天任何 Vyper 程序都可以同构转换为 Zinc。这正是 zkSync 上 Curve 的工作方式:Matter Labs 帮助 Curve 团队将现有的 Curve 合约重写为 Zinc 版本。它几乎逐行与原始来源相同。

尽管 Zinc 本身不是图灵完备的,但实际上任何在 Solidity 可以完成的工作而只需进行很少的修改即可在 Zinc 中完成,部分是因为大多数 Defi 应用程序的代码很少需要循环或递归,部分是因为图灵完整组件可以通过利用交易级别的递归来重新实现,即合约通过外部调用来调用自己的公共方法(在 zkSync 中仍然可以实现)。

此外我们还有更多的好消息:Matter Labs 正在努力在不久的将来使 Zinc 图灵完备。在此之前,我们很乐意为你的团队提供支持,以使现有的 Solidity 代码可移植。请联系[16].

可组合性如何?

zkSync L2 网络中的所有合约都将能够以与以太坊主网上完全相同的方式原子地互相调用。

如何管理用户密钥?

在Gitcoin 赞助第 7 轮[17],zkSync 被直接集成到结帐流程中,这需要信任 Gitcoin 网站。在此 Demo 中,zkSync 私钥永远不会离开connect.zksync.dev[18]的范围。这种类型的集成类似于 Web2 世界中的单点登录身份验证方案,该方案广泛用于 Google/Apple/Facebook 登录。这实际上意味着 zkSync 现在可以与任何以太坊钱包和任何数量的完全不受信任的 dapp 结合使用。

即使 zkSync 网站被黑,我们的方法也需要通过以太坊钱包另外签名每条消息的方式进行 2 次验证。目前,该签名已由我们的服务器验证,尽管递归 PLONK 证明现在使我们可以将其直接集成到我们的 ZKP 电路中,而无需太多开销。

同时,我们正在与其他团队合作开发通用的以太坊 L2 签名标准,这将使围绕 L2 合约进行交互的用户体验更加令人愉悦。

Zinc Alef 的局限性是什么?

测试网功能齐全,你可以编写智能合约,将它们部署到测试网,在本地测试它们,并生成智能合约执行的零知识证明。每笔交易都将导致 zkSync 测试网上的进行真实通证转移,这将反映在区块浏览器和钱包中。

但是,在此阶段,Zinc VM 尚未集成到 zkSync 核心中。Zinc 编程语言中的一些重要功能也可能会丢失。我们将根据社区的要求优先开发功能。

solidity 合约权限授权_Curve + zkSync L2:以太坊的ZK Rollup智能合约相关推荐

  1. 【附代码】如何在私有链上编写、部署与以太坊进行交互的智能合约

    原文:How To Write, Deploy, and Interact with Ethereum Smart Contracts on a Private Blockchain  作者:jack ...

  2. 以太坊(Ethereum) - 什么是智能合约

    章节 以太坊(Ethereum) – 是什么 以太坊(Ethereum) – 什么是智能合约 以太坊(Ethereum) – 以太币 以太坊(Ethereum) – 虚拟机(E.V.M.) 以太坊(E ...

  3. 什么是以太坊?什么是智能合约?

    以太坊是一个分布式的计算平台.它会生成一个名为Ether的加密货币.程序员可以在以太坊区块链上写下"智能合约",这些以太坊智能合约会根据代码自动执行. 以太坊是什么? 以太坊经常与 ...

  4. 【以太坊】深入理解智能合约(合约调合约)

    一.前言 关于智能合约的描述,大家在网上百度能查到一大堆.看来看去也能看个似懂非懂,但是稍微具体点呢,智能合约到底都能干什么,可以转账提现吗?可以合约调用合约吗?可以发布多个合约吗? 关于智能合约的疑 ...

  5. 技术沙龙|解读以太坊黄皮书,学习智能合约应用开发(北京)

    2019独角兽企业重金招聘Python工程师标准>>> 前几天HiBlock区块链社区的杨镇老师在一次访谈中再次聊到了区块链技术学习和应用的话题,杨镇老师的观点很明确,技术学习要回归 ...

  6. java开源库web3j的以太坊过滤器(filter)和智能合约事件(event)教程

    2019独角兽企业重金招聘Python工程师标准>>> web3j过滤器提供以太坊网络发生的某些事件的通知,对java和安卓程序员来说很有用.在Ethereum以太坊中支持三类过滤器 ...

  7. 以太坊之Remix部署智能合约(Remix简介,使用,测试网络部署合约)

    1.Remix简介 Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的编译.部署至本地或测试网络.执行合约等功能.Solidity 是 以太坊Ethereum 官方设计和支持的开 ...

  8. 如何判断一个以太坊地址是是智能合约地址或者ETH普通地址

    根据不同的应用场景分成两种 1.web3.js在DAPP应用开发时使用 2.solidity智能合约开发时使用 以下是具体实现 1.web3.js在DAPP应用开发时使用 web3.eth.getCo ...

  9. 使用以太坊geth客户端调用智能合约时报“Invalid Address“错误的解决方法

    需要事先定义defaultAccount变量对象 web3.eth.defaultAccount = web3.eth.accounts[0]

  10. 以太坊智能合约开发第二篇:理解以太坊相关概念

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 很多人都说比特币是区块链1.0,以太坊是区块链2.0.在以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成了以太 ...

最新文章

  1. python飞机大战源代码-制作python程序windows安装包(飞机大战源码)
  2. arm linux 进程页表,linux-kernel – ARM Linux页表项格式 – 未使用的位?
  3. linux select读取节点数据失败_MySQL中覆盖索引查询和select*查询执行结果案例分析...
  4. Django 学习笔记第一课
  5. 飞鸽传书内部护眼神功
  6. HBase读写的几种方式(一)java篇
  7. 一个关于文件中位运算的的处理函数。
  8. 数值计算方法(六)——迭代法求解线性方程组
  9. 使用脚本将域账号添加到客户机的本地管理员组
  10. SYN Flood攻击及防御方法 (转)
  11. PyTricks 翻译:Python 字典的 get() 方法和它的默认参数
  12. 软件测试技能大赛山东省,我院获2020年山东省职业院校技能大赛“软件测试”赛项二等奖...
  13. VScode使用markdown
  14. idea更新报Node remains in conflict冲突的解决办法
  15. android 投屏 电脑,安卓王者荣耀投屏电脑
  16. python入门经典教程-Python经典入门教程ppt
  17. 5年培养2000名高端专业人才 阿里巴巴大数据学院落地成都
  18. 三十岁,真的是人生的分水岭吗
  19. 2021网易秋招笔试题(Android开发)
  20. 【UI设计】移动设备的界面设计尺寸

热门文章

  1. 大数据 | 从阿里核心场景看实时数仓的发展趋势
  2. 计算机学院金海教授当选2019IEEE会士
  3. 【疫情模型】基于matlab SEIR模型疫情分析预测【含Matlab源码 666期】
  4. 【细胞分割】基于matlab中值滤波+分水岭法细胞计数【含Matlab源码 640期】
  5. 【数字信号】基于GUI数字波束算法库【含Matlab源码 313期】
  6. java vector编程_java中Vector实现方法和功能还有例子详细讲解一下!谢谢!
  7. python将一个文本文件复制到另一个文件中_使用Python逐行从一个文本文件复制到另一个文本文件...
  8. ansys电力变压器模型_最佳变压器模型的超参数优化
  9. 合并重叠数据combine_first
  10. Servlet中将JavaBean对象传递到JSP页