web3py第一课:web3合约交互基础部分
这一篇是正式建立DFarm DAO以来的第一篇文章了,本来这周不准备分享。但是感觉基础的一些知识可以先讲,大家先熟悉一下,所以今天就分享一下web3py跟智能合约交互的一些基础知识。 这部分都是非常简单的代码,希望大家尝试一下。安装python、pycharm这些环境和开发工具大家自行安装即可,网上一搜都是教程,比我写的好很多,这部分内容不再赘述。 web3py文档: https://web3py.readthedocs.io/en/stable/index.html web3py应该是python上跟智能合约交互最好用的包了,首先我们安装一下。 如果你是mac系统,直接使用:`pip install web3` 进行安装。 如果你是windows系统,则需要先装一下c++环境。 下载 vs_buildtools: https://visualstudio.microsoft.com/zh-hant/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16 之后如图安装下面勾选的包,一定要装全,已包含和可选两部分你都要装...
web3py第三课:游戏脚本编写 & 不开源合约调用
终于到了大家心心念念的游戏脚本编写的教程了,今天我会以前段时间比较火的游戏“掰手腕”为例子,来教大家如何写一个游戏脚本。教程无论哪个游戏,我们要写脚本,都是要先进行一下交互,看自己的交互记录来写脚本。 这里我展示一下我的一次fight记录:从这个记录中,我们可以得到很多信息。比如游戏的合约地址、方法名、参数名、参数值。 其实知道这些就可以写脚本了,但是我们还需要ABI才可以进行调用,如果我们打开合约的源代码看到的这是这样:这说明该合约没有开源,所以无法看到合约的源代码,这时候我们要怎么寻找ABI呢?如果你学习过智能合约的一些知识,可能会发现,网站(DAPP)也是通过ABI+web3.js跟智能合约做交互,我们web3py也是一样的道理。所以这些游戏网站都会有ABI来让你调用,也就是说我们去扒一扒网站的源代码即可!通过搜索,在网站的源代码中很容易可以找到。如果JS比较多,需要一个一个看。如果你用safari浏览器可以全局搜索,Chrome好像要一个一个的去找一下。 然后ABI一般都非常长,我们如果只用一个fight方法,完全可以只取这一段:[{"inputs":[{"interna...
Quarter I 2022
原文作者:Ansem(推特@blknoiz06) 原文链接: https://blknoiz06.substack.com/p/quarter-i-2022?token=eyJ1c2VyX2lkIjoxNTEzODUxLCJwb3N0X2lkIjo0NDk3NTUwMywiXyI6Impza3RSIiwiaWF0IjoxNjQxMDAyOTU4LCJleHAiOjE2NDEwMDY1NTgsImlzcyI6InB1Yi0zNDg4NDgiLCJzdWIiOiJwb3N0LXJlYWN0aW9uIn0.Cqy5UR9NIQI5frgMTGectMzDdH_0CF2RZHRcrmNejs4 译者:Evelyn、AluAyi、Henson、Rex|W3.Hitchhiker2022市场整体展望你好!对于我的堕落同胞(fellow degenerates)和其他不知何故闯入这个页面的读者们,我将尝试在这里梳理今年一季度的一些想法。这是我第二次写这样的长篇大论,所以请忍耐一下(哈哈),希望它比从我推特发出来的数百条零零散散的推文更有条理。 2021年对于加密资产来说很显然是突破性的一年,从...
web3py第一课:web3合约交互基础部分
这一篇是正式建立DFarm DAO以来的第一篇文章了,本来这周不准备分享。但是感觉基础的一些知识可以先讲,大家先熟悉一下,所以今天就分享一下web3py跟智能合约交互的一些基础知识。 这部分都是非常简单的代码,希望大家尝试一下。安装python、pycharm这些环境和开发工具大家自行安装即可,网上一搜都是教程,比我写的好很多,这部分内容不再赘述。 web3py文档: https://web3py.readthedocs.io/en/stable/index.html web3py应该是python上跟智能合约交互最好用的包了,首先我们安装一下。 如果你是mac系统,直接使用:`pip install web3` 进行安装。 如果你是windows系统,则需要先装一下c++环境。 下载 vs_buildtools: https://visualstudio.microsoft.com/zh-hant/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16 之后如图安装下面勾选的包,一定要装全,已包含和可选两部分你都要装...
web3py第三课:游戏脚本编写 & 不开源合约调用
终于到了大家心心念念的游戏脚本编写的教程了,今天我会以前段时间比较火的游戏“掰手腕”为例子,来教大家如何写一个游戏脚本。教程无论哪个游戏,我们要写脚本,都是要先进行一下交互,看自己的交互记录来写脚本。 这里我展示一下我的一次fight记录:从这个记录中,我们可以得到很多信息。比如游戏的合约地址、方法名、参数名、参数值。 其实知道这些就可以写脚本了,但是我们还需要ABI才可以进行调用,如果我们打开合约的源代码看到的这是这样:这说明该合约没有开源,所以无法看到合约的源代码,这时候我们要怎么寻找ABI呢?如果你学习过智能合约的一些知识,可能会发现,网站(DAPP)也是通过ABI+web3.js跟智能合约做交互,我们web3py也是一样的道理。所以这些游戏网站都会有ABI来让你调用,也就是说我们去扒一扒网站的源代码即可!通过搜索,在网站的源代码中很容易可以找到。如果JS比较多,需要一个一个看。如果你用safari浏览器可以全局搜索,Chrome好像要一个一个的去找一下。 然后ABI一般都非常长,我们如果只用一个fight方法,完全可以只取这一段:[{"inputs":[{"interna...
Quarter I 2022
原文作者:Ansem(推特@blknoiz06) 原文链接: https://blknoiz06.substack.com/p/quarter-i-2022?token=eyJ1c2VyX2lkIjoxNTEzODUxLCJwb3N0X2lkIjo0NDk3NTUwMywiXyI6Impza3RSIiwiaWF0IjoxNjQxMDAyOTU4LCJleHAiOjE2NDEwMDY1NTgsImlzcyI6InB1Yi0zNDg4NDgiLCJzdWIiOiJwb3N0LXJlYWN0aW9uIn0.Cqy5UR9NIQI5frgMTGectMzDdH_0CF2RZHRcrmNejs4 译者:Evelyn、AluAyi、Henson、Rex|W3.Hitchhiker2022市场整体展望你好!对于我的堕落同胞(fellow degenerates)和其他不知何故闯入这个页面的读者们,我将尝试在这里梳理今年一季度的一些想法。这是我第二次写这样的长篇大论,所以请忍耐一下(哈哈),希望它比从我推特发出来的数百条零零散散的推文更有条理。 2021年对于加密资产来说很显然是突破性的一年,从...
Subscribe to ourens.eth
Subscribe to ourens.eth
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
zk-Rollup (ZKR) 被 V 神称为以太坊的终极 L2 扩容解决方案。很多专家学者,包括 Vitalik 本人认为通用型的 ZKR 平台还需要数年的时间才会看到。因此,现阶段的焦点是期望 Optimistic Rollup (比如 Optimism、 Arbitrum 和 Boba Network)可以先担起以太坊扩容的大旗,之后随着 ZKR 技术的成熟和就绪,大家再转向 ZKR。但令人激动的是,ZKR 技术已经开始通过 zkSync 和 StarkWare 等平台走向市场。
本文将聚焦于 L2 扩容的发展以及 zk-Rollup 的崛起。
“不可能三角”是以太坊这样的 L1 区块链面临的永恒的难题,不同的链也总是在去中心化、安全性和可扩展性三者间寻找平衡。很多时候,一条区块链为了顾及其中两个方面,而不得不牺牲第三个方面。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfecd058-adb2-4f98-906a-e8b77d1d126d_748x639.png
以太坊更侧重于去中心化和安全性,因此不得不面临可拓展性方面的限制。以太坊链上手续费之高,以至于大部分人不能承担在 L1 层的转账费用(见下图的 Messari 研究报告)。
人们需要一个方案,既可以解决可拓展性问题,同时也不会牺牲去中心化或安全性。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5e31b6bf-2deb-4170-a283-2708c999ee1a_1210x601.png
有两种方法可以对区块链进行扩容,第一种是对 L1 层区块链本身进行扩容,方法有增加区块大小,或分片(将交易分配给不同组的验证者,而不是让验证者处理所有交易)。然而,这样做肯定会带来去中心化或安全性上的牺牲。第二种方法是将 L1 层网络上的交易转移至 L2 层。使用 L2 层扩容方案在不牺牲去中心化或安全性的前提下,解决区块链的可扩展性问题。
L2 解决方案在二层对交易进行汇集,然后发送至 L1 层网络进行结算。这样,每一批交易付一笔 gas 费用,而不是每笔交易都付 gas 费用。因此,所有交易对 gas 费用进行平摊,有效降低了每笔交易的费用。这样,L1 就成为了 L2 上所有执行交易的结算层。
总结一下,L2 解决方案在不牺牲去中心化或安全性的前提下,通过非常低廉的手续费来帮助区块链进行扩容。
模块化区块链 vs. 单片式区块链
L2 扩容是“模块化区块链”的一部分。在传统的“单片式区块链”中,所有的功能都发生在 L1 。
从本质上来说,区块链主要处理三件事:
执行 → 运算: 计算机的 CPU ;计算层
安全 → 共识: PoW 或 PoS;
数据可用性 → 将区块数据储存在链上;
在‘单片式区块链’中,所有这三种功能都是由 L1 进行。因此,L1 也受到“不可能三角”的限制,从而影响到效率。 “模块化区块链”将每项功能进行划分,不同的功能采用不同的解决方案,比如: L2 解决方案上对执行层的扩容,在 L1 层进行结算前在 L2 层进行交易归集和执行。此外,还会有其它的解决方案来改进安全性和数据可用性(从 PoW 转向 PoS 以及数据分片)。
过去一年中,因为新用户对于低 gas 费的追求,许多其它的 L1 区块链网络日渐崛起。这也让一些人认为这些替代性的 L1 网络才是社区真正需要的扩容方案。虽然从某种程度上来说,不无道理——像 Solana 这样的区块链也在引入新型的架构。不少 L1 区块链兼容 EVM,并称有更高的 TPS,但仍然要指出在使用率达到一定高水平的阶段,这些区块链也会遇到和以太坊一样的可拓展性问题。近期,Avalanche 因网络活跃度的提升而带来的 gas 数十倍飙升就是个例子。
作者当然并不是反对 Avalanche,只是为了指出 L2 扩容方案对于高需求量的区块链来说都是非常必须的,而不仅仅是以太坊。扩容是区块链发展和演进中非常重要的一部分,随着交易量的增长,其它 L1 网络也会面临以太坊的同样问题。L2 解决方案则可以在保持去中心化和安全性的前提下让区块链进行扩容。
那么问题来了,L2 到底是什么?它的工作原理又是如何?
以太坊 L2 扩容史是从“状态通道”(state channels)到 Plasma 到 Rollup 的演变史。
状态通道是一种由多签智能合约支撑的链下扩容方案,ETH 等资产锁定在合约中,用户之间创建双向支付通道,用户可以在链下进行点对点的转账,然后在链上进行结算。
换句话说,状态通道就像是在“记账”,用户彼此之间可以在链下进行数百次交易,然后通过向以太坊 L1 发送最后一笔交易来停止记账。这样一来,原本是许多笔的交易,通过状态通道得以简化。
举例说明:用户 A 和用户 B 通过多签将资金存入一个“通道”中,通过这个通道,A 和 B 可以进行点对点的交易,而不需要每笔交易都发送到 L1 层网络结算。不需要的情况下,通道则可以关闭。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6034a1a-d2e6-4f8b-ab8c-ba1f43755d0b_682x501.png
这样并非每笔交易都在 L1 进行处理,于是节省了手续费,但是并不支持更加广泛的应用,因为用户必须通过多签来与特定的其它方之间进行转账。
Plasma
Plasma 创造了一系列的“子链”来分散转账负荷。每一条子链都有一个运营者(中心化角色、多签或 PoS 系统)可以在 L2 区块中处理成千上万笔交易,并捆绑为一笔单一交易提交给 L1。如果遇到有争议的交易,会采用“欺诈证明”的方式来验证。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9874a5-7fbb-4d2f-998a-3a1078c91cdf_471x673.png
Plasma 的方向是正确的,但问题是 L2 每一笔交易的数据并不能为 L1 所用,也就是说数据可用性(DA)是在链下的。因此,这种方法不能作为通用型方案。
“通用型”意味着什么?为何如此重要?
通用型方案支持 EVM 运行环境。通用型 L2 方案可以让现有的以太坊应用简单方便地迁移到 L2。这样的重要性在于已有的应用是经过测试的,相比新代码的合约风险更小;而且这些应用已经有了足够的用户基础,这些用户也能够受益于 L2 手续费的降低。
如何建立通用型的 L2?这里就到了我们要将的 Rollup 部分。
Rollup
记住,“通道”和 Plasma 将所有交易高效地在链下(off-chain)进行处理,并不会将每笔交易的数据同步到 L1 ,这也限制了它们称为通用型解决方案的能力。
Rollup 搭建在以太坊主网之上,它将多笔交易汇总起来,打包成一笔提交给以太坊主链,而不是让主链单独处理每一笔交易。Rollup 将运算和状态存储放到链下,但是每笔交易中的部分数据在链上,也就是对主网可用,因此每笔交易依然是回到 L1 进行结算。rollup 的高效之处在于将每笔交易的大小进行压缩,然后再在 L1 进行结算。这将大大增加可拓展性,但仍受 L1 数据可用性的限制。
数据可用性是指每笔交易的数据储存在链上,数据可用性的重要意义主要体现在两个方面:
这些数据是存在共识的 (利用 L1 的去中心化和安全性) ,任何人都可以处理 Rollup 中的交易来保证没有欺诈;
有了数据可用性,Rollup 才是通用型的方案,可以做到 EVM 兼容,并在修改很少代码的前提下轻松地对应用迁移;
这也是为何以太坊将 Rollup 作为主要的 L2 扩容方案—— Rollup 可以让用户在 L2 上体验 L1 层的各种应用,而且花费手续费更低,同时还能维持 L1 的去中心化和安全性。比如 Uniswap 就可以非常简单地迁移到 Optimism L2 上。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21a53fb-4bc5-4511-b953-57bdbf408a48_583x402.png
Rollups 的分类
目前,主要有两种类型的 Rollups: Optimistic Rollups (使用欺诈证明)和 ZK Rollups (使用零知识证明)

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe5fa395-3a35-4c18-b205-90c9a57960cb_691x214.png
在 Optimistic Rollup 中,L2 交易被验证人进行排序和分组,送到 L1 层进行结算。网络上的任何人都可以成为验证人,这些验证人提交以太坊等资产作为押金。任何网络的参与者都可以针对一笔交易提出异议,如果真的存在欺诈,那么发送这笔虚假交易的验证人的押金就会被没收。在一批交易得到处理后,有一个7天的异议提交窗口期。Optimistic Rollup 又被称为“欺诈证明”,在被证明是欺诈前,所有的交易都乐观地被假设是“有效的”。
Optimistic Rollup 二层扩容方案是由 Optimism 和 Arbitrum 提出并首先推向市场,但相对于其它新型的 L1 层区块链(Solana 或 Avalanche)并没有得到广泛采用和关注。L2 上的手续费依旧不算低廉,应用开发缓慢,用户迁移的动力不足。根据 DeFiLama 的数据,截至2021年11月30日,Arbitrum 和 Optimism 的 TVL 仅仅占以太坊 L1 总 TVL 的一小部分。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F82b41962-7188-42c5-9159-af1877e179e0_406x349.png
Zero Knowledge-Rollups (ZKR)
Zero Knowledge-Rollups (ZKR) 依赖零知识证明这项密码学技术。ZKR 将交易执行和共识、数据可用性分离开来,L2 上的多个交易打包之后会变成一个零知识证明(zkSNARK 或 zkSTARK)并可被 L1 快速验证,所以零知识证明验证的成本会分摊到每个交易上,这样能省 Gas Fee 和提高 TPS。
因为 Rollup 上的每笔交易的 input 数据都储存在 L1 ,其它节点可以验证这些交易的有效性,决定是否接受或拒绝这笔交易。因此,如果 zk Rollup 上的一个用户想要进行一次双花,L1 上的节点就会拒绝。
ZKR 的另外一个重要的特性是验证比运算成本低很多,这样的简洁性为扩容提供了条件。但零知识证明技术上复杂度非常高,需要大量的运算,交易的时延也会变长。
简单来说,相较于 Optimistic Rollup,ZKR 技术上更加复杂,每笔交易手续费更低,但是运算成本更高昂。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5006702-1875-4ee9-bd6d-cd34d89f7baf_427x211.png
StarkWare 和 zkSync 是 ZKR 领域的两个主要选手,他们在通用型 ZKR 平台上的进展均比市场期望的更快。zkSync 采用的是零知识证明中的 SNARK 技术,StarkWare 采用的是更具可拓展性的 STARK 技术。后面我们会有专门的文章介绍这两个项目。
采用 STARK 技术的目前有 :
@StarkWareLtd
@0xPolygonMiden
采用 SNARK 技术的目前有 :
@zksync
@loopringorg
@0xPolygonHermez
@aztecnetwork
@0xPolygonZero
【References】
Twitter: ZK 爱好者 @ZKP101
zk-Rollup (ZKR) 被 V 神称为以太坊的终极 L2 扩容解决方案。很多专家学者,包括 Vitalik 本人认为通用型的 ZKR 平台还需要数年的时间才会看到。因此,现阶段的焦点是期望 Optimistic Rollup (比如 Optimism、 Arbitrum 和 Boba Network)可以先担起以太坊扩容的大旗,之后随着 ZKR 技术的成熟和就绪,大家再转向 ZKR。但令人激动的是,ZKR 技术已经开始通过 zkSync 和 StarkWare 等平台走向市场。
本文将聚焦于 L2 扩容的发展以及 zk-Rollup 的崛起。
“不可能三角”是以太坊这样的 L1 区块链面临的永恒的难题,不同的链也总是在去中心化、安全性和可扩展性三者间寻找平衡。很多时候,一条区块链为了顾及其中两个方面,而不得不牺牲第三个方面。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfecd058-adb2-4f98-906a-e8b77d1d126d_748x639.png
以太坊更侧重于去中心化和安全性,因此不得不面临可拓展性方面的限制。以太坊链上手续费之高,以至于大部分人不能承担在 L1 层的转账费用(见下图的 Messari 研究报告)。
人们需要一个方案,既可以解决可拓展性问题,同时也不会牺牲去中心化或安全性。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5e31b6bf-2deb-4170-a283-2708c999ee1a_1210x601.png
有两种方法可以对区块链进行扩容,第一种是对 L1 层区块链本身进行扩容,方法有增加区块大小,或分片(将交易分配给不同组的验证者,而不是让验证者处理所有交易)。然而,这样做肯定会带来去中心化或安全性上的牺牲。第二种方法是将 L1 层网络上的交易转移至 L2 层。使用 L2 层扩容方案在不牺牲去中心化或安全性的前提下,解决区块链的可扩展性问题。
L2 解决方案在二层对交易进行汇集,然后发送至 L1 层网络进行结算。这样,每一批交易付一笔 gas 费用,而不是每笔交易都付 gas 费用。因此,所有交易对 gas 费用进行平摊,有效降低了每笔交易的费用。这样,L1 就成为了 L2 上所有执行交易的结算层。
总结一下,L2 解决方案在不牺牲去中心化或安全性的前提下,通过非常低廉的手续费来帮助区块链进行扩容。
模块化区块链 vs. 单片式区块链
L2 扩容是“模块化区块链”的一部分。在传统的“单片式区块链”中,所有的功能都发生在 L1 。
从本质上来说,区块链主要处理三件事:
执行 → 运算: 计算机的 CPU ;计算层
安全 → 共识: PoW 或 PoS;
数据可用性 → 将区块数据储存在链上;
在‘单片式区块链’中,所有这三种功能都是由 L1 进行。因此,L1 也受到“不可能三角”的限制,从而影响到效率。 “模块化区块链”将每项功能进行划分,不同的功能采用不同的解决方案,比如: L2 解决方案上对执行层的扩容,在 L1 层进行结算前在 L2 层进行交易归集和执行。此外,还会有其它的解决方案来改进安全性和数据可用性(从 PoW 转向 PoS 以及数据分片)。
过去一年中,因为新用户对于低 gas 费的追求,许多其它的 L1 区块链网络日渐崛起。这也让一些人认为这些替代性的 L1 网络才是社区真正需要的扩容方案。虽然从某种程度上来说,不无道理——像 Solana 这样的区块链也在引入新型的架构。不少 L1 区块链兼容 EVM,并称有更高的 TPS,但仍然要指出在使用率达到一定高水平的阶段,这些区块链也会遇到和以太坊一样的可拓展性问题。近期,Avalanche 因网络活跃度的提升而带来的 gas 数十倍飙升就是个例子。
作者当然并不是反对 Avalanche,只是为了指出 L2 扩容方案对于高需求量的区块链来说都是非常必须的,而不仅仅是以太坊。扩容是区块链发展和演进中非常重要的一部分,随着交易量的增长,其它 L1 网络也会面临以太坊的同样问题。L2 解决方案则可以在保持去中心化和安全性的前提下让区块链进行扩容。
那么问题来了,L2 到底是什么?它的工作原理又是如何?
以太坊 L2 扩容史是从“状态通道”(state channels)到 Plasma 到 Rollup 的演变史。
状态通道是一种由多签智能合约支撑的链下扩容方案,ETH 等资产锁定在合约中,用户之间创建双向支付通道,用户可以在链下进行点对点的转账,然后在链上进行结算。
换句话说,状态通道就像是在“记账”,用户彼此之间可以在链下进行数百次交易,然后通过向以太坊 L1 发送最后一笔交易来停止记账。这样一来,原本是许多笔的交易,通过状态通道得以简化。
举例说明:用户 A 和用户 B 通过多签将资金存入一个“通道”中,通过这个通道,A 和 B 可以进行点对点的交易,而不需要每笔交易都发送到 L1 层网络结算。不需要的情况下,通道则可以关闭。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6034a1a-d2e6-4f8b-ab8c-ba1f43755d0b_682x501.png
这样并非每笔交易都在 L1 进行处理,于是节省了手续费,但是并不支持更加广泛的应用,因为用户必须通过多签来与特定的其它方之间进行转账。
Plasma
Plasma 创造了一系列的“子链”来分散转账负荷。每一条子链都有一个运营者(中心化角色、多签或 PoS 系统)可以在 L2 区块中处理成千上万笔交易,并捆绑为一笔单一交易提交给 L1。如果遇到有争议的交易,会采用“欺诈证明”的方式来验证。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9874a5-7fbb-4d2f-998a-3a1078c91cdf_471x673.png
Plasma 的方向是正确的,但问题是 L2 每一笔交易的数据并不能为 L1 所用,也就是说数据可用性(DA)是在链下的。因此,这种方法不能作为通用型方案。
“通用型”意味着什么?为何如此重要?
通用型方案支持 EVM 运行环境。通用型 L2 方案可以让现有的以太坊应用简单方便地迁移到 L2。这样的重要性在于已有的应用是经过测试的,相比新代码的合约风险更小;而且这些应用已经有了足够的用户基础,这些用户也能够受益于 L2 手续费的降低。
如何建立通用型的 L2?这里就到了我们要将的 Rollup 部分。
Rollup
记住,“通道”和 Plasma 将所有交易高效地在链下(off-chain)进行处理,并不会将每笔交易的数据同步到 L1 ,这也限制了它们称为通用型解决方案的能力。
Rollup 搭建在以太坊主网之上,它将多笔交易汇总起来,打包成一笔提交给以太坊主链,而不是让主链单独处理每一笔交易。Rollup 将运算和状态存储放到链下,但是每笔交易中的部分数据在链上,也就是对主网可用,因此每笔交易依然是回到 L1 进行结算。rollup 的高效之处在于将每笔交易的大小进行压缩,然后再在 L1 进行结算。这将大大增加可拓展性,但仍受 L1 数据可用性的限制。
数据可用性是指每笔交易的数据储存在链上,数据可用性的重要意义主要体现在两个方面:
这些数据是存在共识的 (利用 L1 的去中心化和安全性) ,任何人都可以处理 Rollup 中的交易来保证没有欺诈;
有了数据可用性,Rollup 才是通用型的方案,可以做到 EVM 兼容,并在修改很少代码的前提下轻松地对应用迁移;
这也是为何以太坊将 Rollup 作为主要的 L2 扩容方案—— Rollup 可以让用户在 L2 上体验 L1 层的各种应用,而且花费手续费更低,同时还能维持 L1 的去中心化和安全性。比如 Uniswap 就可以非常简单地迁移到 Optimism L2 上。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21a53fb-4bc5-4511-b953-57bdbf408a48_583x402.png
Rollups 的分类
目前,主要有两种类型的 Rollups: Optimistic Rollups (使用欺诈证明)和 ZK Rollups (使用零知识证明)

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe5fa395-3a35-4c18-b205-90c9a57960cb_691x214.png
在 Optimistic Rollup 中,L2 交易被验证人进行排序和分组,送到 L1 层进行结算。网络上的任何人都可以成为验证人,这些验证人提交以太坊等资产作为押金。任何网络的参与者都可以针对一笔交易提出异议,如果真的存在欺诈,那么发送这笔虚假交易的验证人的押金就会被没收。在一批交易得到处理后,有一个7天的异议提交窗口期。Optimistic Rollup 又被称为“欺诈证明”,在被证明是欺诈前,所有的交易都乐观地被假设是“有效的”。
Optimistic Rollup 二层扩容方案是由 Optimism 和 Arbitrum 提出并首先推向市场,但相对于其它新型的 L1 层区块链(Solana 或 Avalanche)并没有得到广泛采用和关注。L2 上的手续费依旧不算低廉,应用开发缓慢,用户迁移的动力不足。根据 DeFiLama 的数据,截至2021年11月30日,Arbitrum 和 Optimism 的 TVL 仅仅占以太坊 L1 总 TVL 的一小部分。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F82b41962-7188-42c5-9159-af1877e179e0_406x349.png
Zero Knowledge-Rollups (ZKR)
Zero Knowledge-Rollups (ZKR) 依赖零知识证明这项密码学技术。ZKR 将交易执行和共识、数据可用性分离开来,L2 上的多个交易打包之后会变成一个零知识证明(zkSNARK 或 zkSTARK)并可被 L1 快速验证,所以零知识证明验证的成本会分摊到每个交易上,这样能省 Gas Fee 和提高 TPS。
因为 Rollup 上的每笔交易的 input 数据都储存在 L1 ,其它节点可以验证这些交易的有效性,决定是否接受或拒绝这笔交易。因此,如果 zk Rollup 上的一个用户想要进行一次双花,L1 上的节点就会拒绝。
ZKR 的另外一个重要的特性是验证比运算成本低很多,这样的简洁性为扩容提供了条件。但零知识证明技术上复杂度非常高,需要大量的运算,交易的时延也会变长。
简单来说,相较于 Optimistic Rollup,ZKR 技术上更加复杂,每笔交易手续费更低,但是运算成本更高昂。

https://cdn.substack.com/image/fetch/w_1100,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5006702-1875-4ee9-bd6d-cd34d89f7baf_427x211.png
StarkWare 和 zkSync 是 ZKR 领域的两个主要选手,他们在通用型 ZKR 平台上的进展均比市场期望的更快。zkSync 采用的是零知识证明中的 SNARK 技术,StarkWare 采用的是更具可拓展性的 STARK 技术。后面我们会有专门的文章介绍这两个项目。
采用 STARK 技术的目前有 :
@StarkWareLtd
@0xPolygonMiden
采用 SNARK 技术的目前有 :
@zksync
@loopringorg
@0xPolygonHermez
@aztecnetwork
@0xPolygonZero
【References】
Twitter: ZK 爱好者 @ZKP101
No activity yet