Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
零知识 (Zk) 汇总是一种第 2 层扩展解决方案,它通过将计算和状态存储移至链下来提高以太坊的吞吐量。
它可以批量处理数千笔交易,然后将最少的摘要数据发布到主网。
他们通过将多个交易捆绑到一个证明中来实现这一点,然后将其提交到主链。
zk-rollups 背后的技术依赖于零知识证明,这是一种加密技术,允许一方在不泄露任何附加信息的情况下证明声明的有效性。
零知识证明是一种在不透露任何相关信息的情况下证明某件事是真实的方法。名称中的“零知识”部分是指证明不会透露超出声明有效性的任何信息。但如何呢?
阿里巴巴实例| 交互式零知识证明
假设您想向您的朋友证明您知道打开山洞中秘密门的魔法词。洞穴有两个入口,A 和 B,通向秘密门所在的同一点。只能通过念咒语才能打开洞内的门。你不想告诉你的朋友这个神奇的词或带他出去。
这个问题的零知识证明方法是这样的:
零知识证明对于保护许多应用程序中的隐私和安全非常有用,例如身份验证、密码学、区块链等。
零知识证明有不同类型,例如交互式和非交互式。交互式零知识证明需要证明者和验证者之间进行通信,而非交互式零知识证明则不需要。上面的阿里巴巴洞穴场景就是交互式 ZKP 的一个例子。
非交互式零知识证明更加高效和方便,但它们依赖于更强的假设和更复杂的技术。
优点:
缺点:
项目 | 描述 |
---|---|
零克同步 | 一个以用户为中心的 zk Rollup 平台,已在主网上活跃 |
zk交换 | 基于零知识汇总的 AMM 模型的 Layer-2 DEX |
zk管 | 为用户和开发人员使用 ZK Rollup 解决方案生成零知识证明的协议 |
多边形赫尔梅兹 | 开源零知识汇总,针对安全、低成本且可用的以太坊代币传输进行了优化 |
米尔协议 | 一个开源平台,用户可以在其中创建安全、可扩展和私有的去中心化应用程序 |
路印协议 | 实现以太坊上高效、低成本交易和交易的第 2 层 |
总而言之,zk-rollups 是一种很有前途的 Layer-2 可扩展性解决方案,它利用零知识证明将多个交易捆绑到一个证明中,从而提高交易吞吐量并降低 Gas 费用。虽然它们具有多种优势,但其复杂性和有限的支持可能会对广泛采用带来挑战。下面我们去了解了解加密货币中的“Rollups”是如何减少费用和拥堵?
目前,以太坊每秒只能处理大约 15 笔交易;这意味着验证者会从交易池中选择一组尚未确认的交易,而他们选择这些交易的方式实际上与他们的利润有关。因此,您必须争取将您的交易纳入其中,因为一次可以处理的交易数量有限。
您知道,当验证者将您的交易包含在区块中时,他们会获得费用。现在从验证者的角度思考;当前有两笔交易位于交易池中等待验证器接收。一笔交易愿意支付 10 美元,另一笔交易只支付 1 美元作为费用。 您会选择哪种交易?
10 美元的,对吗?因为如果您将此交易包含在区块中,您将获得 10 美元的费用。
但这是否意味着只有当我将费用设置得较高时我的交易才会被接受?
让我简单地解释一下。当与以太坊网络交互时,您通常会调用某些智能合约。智能合约是一组指令;将它们视为一个程序。每条指令都需要一定的计算能力。
以下是一个用 Solidity 语言编写的简单合约。
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract HelloWorld { string public message; constructor() { message = "Hello World"; } function getMessage() public view returns (string memory) { return message; } function setMessage(string memory newMessage) public { message = newMessage; } }
如果你是一个 坚固性 开发人员,您可以估算该合约部署在 EVM 上所需的 Gas 量。
当您部署此合约时,首先调用的是其 构造函数,它将 message
变量设置为 “Hello World”。这改变了区块链的状态。任何状态变更都需要付费。 假设将字符串存储在变量中的成本为 1 美元。
如果您想将消息设置为其他内容,例如 “欢迎来到 Kishan 的文章”,您需要调用 setMessage()
合约中的方法,传递您所需的消息,这将再次需要一些费用,因为您正在更改状态。假设再次需要 1 美元。
如果我想查看消息内容该怎么办? 您可以简单地调用 getMessage();
它,不需要任何费用,因为它不会改变状态。解释完之后,让我们回到我们的讨论。
假设,由于某种原因,您当前位于交易池中的交易调用此 HelloWorld
智能合约并将消息设置为您的名字。
现在假设验证者假设选择了您的交易,他会看到您已将费用设置为 1 美元,并且智能合约本身的调用将花费 1 美元。所以,他自己也没有得到什么回报。所有费用均通过与智能合约交互使用。 那他为什么要捡起来呢? 该交易将被拒绝,因为验证者没有动力处理它并将其包含在链中。因此,您必须以更高的费用重试,以便吸引验证者选择您的交易。
当大量用户在以太坊上进行交易时,汽油费会变得非常有竞争力。是的,您可以手动设置费用,但请注意,这可能需要大量时间才能得到确认,因为验证者只会选择对他们有利的交易。
如果您的交易对时间敏感,例如您希望尽快结束交易,那么就会存在被清算的风险。在这种情况下,您最好将费用设置得尽可能高,或者使用一个可以为您提供费用估算的钱包,以便在几秒钟内确认您的交易。因为节省天然气可能会导致您的整个投资组合被抹去。
高额费用阻碍了许多加密货币爱好者在以太坊上进行交易,并且引入了许多其他第一层来解决这个问题。但它们都缺乏去中心化,这就是为什么有人会转向 web3。
那么,有没有办法解决这个问题呢?
我们希望利用以太坊提供的去中心化和安全性,但同时,又不想因为这些高额费用而损失我们的口袋。
解决这些问题的一种方法是 Rollups,一种第 2 层扩展解决方案。
Rollup是一种聚合交易并在链外处理交易并将结果发布回链上的方法。
所有这些链下和链上可能会给理解带来疑问,所以让我进一步澄清一下。将 Rollup 视为可以显着减少以太坊区块链费用和拥塞的过程。这项工作的方式是将大量交易Rollup(聚合)在一起,并将它们移动到链外,例如平行链、VM 等。这些平行链由第 2 层网络(例如 Arbitrum、zkSync)操作,乐观主义等
聚合是由称为 Rollup 操作员的实体完成的 , 其主要工作是收集来自不同用户的交易并在链下环境中执行它们。同样,链下可能意味着很多东西,具体取决于实现,例如虚拟机、侧链或其他第 2 层协议。
一旦执行了交易,它就会将聚合数据(Rollup块)作为 调用数据提交到以太坊链, 并附上其已正确执行的证明。到这里,我们就清楚了,但是 calldata 是什么?
将 calldata 视为一种特殊类型的数据,可以存储在以太坊上而不会被执行或影响其状态。
Rollup 运营商需要向以太坊验证器支付费用,以将通话数据包含在区块中。一旦它被包含在内。Rollup 操作员监视 Rollup 合约 (在下一节中解释)是否存在来自其他用户或验证者的任何质疑或争议。如有争议,将作出相应回应。
Rollup 合约负责 验证 Rollup 操作员提交的调用数据中存在的交易数据和证明。它是部署在以太坊上的智能合约,用于管理Rollup的状态和逻辑。
Rollup 合约从 rollup 操作者处接收交易数据和证明作为 calldata,验证它们,更新 rollup 的状态,并针对任何状态更改发出事件。
让我们结合我们所学到的所有知识并用一个例子来总结一下:
Optimistic Rollup 是Optimistic的。我的意思是他们假设批次中的每笔交易都是有效的。但是有一个问题!他们给出了一个宽限期,认为交易无效的用户或验证者可以通过提交防欺诈来质疑该交易。然后以太坊主网对其进行验证,如果挑战成功,则rollup区块被拒绝,不诚实的运营商将受到严厉惩罚。
如果宽限期结束后没有争议,则该交易批次将锚定到以太坊,并且其包含的状态更改将被最终确定。
尽管它提供了更高的可扩展性并降低了汽油费,但它会导致交易最终结果延迟,因为人们必须等待宽限期。
比赛中有两匹主要马匹:
我写了一篇详细的文章解释zk-rollups,你可以参考一下。不管怎样,我会向您简要介绍一下它是什么以及它是如何工作的。
-END-