快捷搜索:  as  ???  空调  创意文化园  test  ???????  ?????  ??????

usdt不用实名买入卖出(www.caibao.it):V神发文简析种种二层扩容方案 Optimistic rollup vs. ZK rollup?

Rollups解决方案在以太坊社区中正风靡一时,并有望在未来成为以太坊的要害扩容解决方案。然则这项手艺究竟是怎样的呢?它能给我们带来什么?我们将若何使用这项手艺呢?本文将尽量回覆其中一些要害问题

靠山:作甚一层、二层扩容?

区块链扩容方式有两种。第一种,可以提高区块链自己的买卖容量。这种手艺的主要挑战就是:当区块容量越来越大时,区块链将越来越难验证,且中央化水平越来越高。为了制止此类风险,开发者可以提高客户端软件的效率。或者选择另一种更为可连续的方式:行使诸如分片这类手艺,使得区块链上的构建区块和验证事情可以涣散至许多节点 (Eth2 升级中就会将此手艺引入以太坊)。

第二种,可以改变使用区块链的方式。即用户不是将所有买卖都直接在区块链上举行,而是通过二层协议在链下执行大部门买卖。好比链上有一个智能合约,该合约只有两个义务:处置存款和提款买卖、以及验证所有链下买卖的有效性。对链下买卖举行验证的方式有多种,但他们都具有同一个特征:在链上验证证实比在链下举行原始盘算的成本要低得多。

状态通道 vs Plasma vs Rollups

二层扩容方案的三种主要类型是:状态通道、Plasma 和 rollups。他们是三种差别的范式,具有差别的优劣势。我们可以把所有二层扩容解决方案大致地归为这三类 (只管有的方案因分类模糊而存在命名争议,如 validium)。

状态通道的原理

更多资料请参考:

https://www.jeffcoleman.ca/state-channels and statechannels.org

假设 Alice 正给 Bob 提供互联网毗邻,作为交流,Bob 每兆字节向她支付 0.001 美元。他们不需要每一次支付都执行买卖,而是使用下面的二层解决方案。

首先,Bob 向一个智能合约中存入 1 美元 (或等值的 ETH 或稳固币)。Bob 在一张写着 “0.001美元” 的票上举行署名 (一条链下信息),然后发给 Alice,这样就完成了对 Alice 的第一笔支付。而第二次支付时,Bob 在另一张写着 “0.002美元” 的票上举行署名,然后发给 Alice。以此类推,可以根据需要举行多次付款。当他们完成买卖了,Alice 可以将数值最高的票单宣布到链上,并对其举行署名。链上的智能合约将验证 Alice 和 Bob 的署名,然后向 Alice 支付 Bob 票据上的金额,并将剩余的钱退还给 Bob。

若是 Alice 不愿意关闭他们之间的状态通道 (出于恶意行为或由于手艺故障),则 Bob 可以启动提款期 (withdrawal period),若是 Alice 在这段时代内 (好比7天) 照样没有向 Bob 提供票据,那么 Bob 就可以拿回他的所有钱。

该手艺功效壮大:可以对其举行调整,以举行双向支付、处置智能合约关系 (如,Alice 和 Bob 在通道中签订金融合约)、以及对通道举行组合 (好比,当 Alice 和 Bob、Bob 和 Charlie 之间有一条开放通道时,Alice 和 Charlie 也可以举行去信托买卖)。

但状态通道的作用是有限的:无法将资金在链外发送给没有介入进来的用户;通道不能代表那些逻辑上没有明确所有者的工具 (如 Uniswap);而且若是要举行更为庞大的买卖,需要在通道内锁定大量资金。

Plasma 的原理

更多资料请参考?

最早的 Plasma 论文 :

http://plasma.io/plasma-deprecated.pdf

Plasma Cash:

https://ethresear.ch/t/plasma-cash-plasma-with-much-less-per-user-data-checking/1298

用户向某个 Plasma 链的智能合约中发送一笔资产以完成存款。Plasma 链给该资产分配一个唯一的 ID (如 537)。每条 Plasma 链都有一名运营者 “operator” (他可以是一个中央化的角色、一个多署名者、或诸如 PoS/DPoS 此类更为庞大的器械)。每隔一段时间 (可以是15秒至1小时),运营者便会天生一个守候批量处置的汇总买卖 (由他们在链下收集到的所有 Plasma 买卖组成)。

这些运营者会天生一个默克尔树,树中每个索引 X 处,若有存在买卖的话,会显示某笔转移买卖资产 ID X,若是没有买卖,叶子值为零。随后他们将该默克尔树的默克尔根发送到链上,同时还会将每个索引 X 的默克尔分支发送给其资产的当前所有者。

若是用户想要举行提款,那么就要宣布其最近向其发送资产的买卖的默克尔分支。然后智能合约就将启动挑战期,在此时代,任何人都可以实验使用其他默克尔分支来证实该提款无效。需要至少证实其中一项:(i) 发送方在发送资产时并不是该资产的所有者;(ii) 发送方在厥后将资产发给了其他人。若是在某个时间段内 (如七天) 没有人证实该提款是敲诈性的,用户便可以取出他的资产。

Plasma 比状态通道拥有加倍壮大的性能:使用 Plasma,用户可以将资产发送给从未加入其系统的介入者;对资源的要求也低许多。但 Plasma 也是有瑕玷的:在“正常操作”时代,通道不需要任何数据就可以在链上举行传输,而 Plasma 要求每条链定期宣布一个哈希。此外,在 Plasma 上转账不是即时的:用户需要等一段时间而且等到区块被宣布之后。

再者,Plasma 和通道都有一个要害弱点:确保这两种方案平安的条件是,这两种系统所控制的工具都有逻辑上的“所有者”。若是该资产的所有者不关心其资产,那么可能会导致证实其资产无效的效果。这对许多应用程序来说是可以接受的,然则对于许多其他应用来说 (如 Uniswap) 来说是损坏买卖原则的。甚至在一些系统中若是工具的状态不经其所有者的赞成就可以被改变 (如基于账户的系统,你可以不经某人的赞成就可以提升其余额),这些系统也不适用 Plasma。

这意味着,当部署任何现实 Plasma 或通道时,都需要大量的“某个特定应用程序的推理”,而且不可能建立一个模拟完全的以太坊环境 (或“EVM”) 的 Plasma 或者状态通道系统。为领会决此问题,种种 rollup 方案泛起了。

Rollups

其他资源参见?

EthHub on optimistic rollups:

https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/optimistic_rollups/

ZK rollups:

https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/zk-rollups/

Plasma 和通道类是“纯粹”的二层方案,由于其将数据和盘算都移至链下。然而,围绕“数据可用性”的基本博弈论问题意味着这些方案不一定对于所有应用来说都是平安的。Plasma 和通道方案的解决方式是依赖所有者完全知晓状态,但这使得此类方案无法完全通用化。Rollups,则是一种“混合型”二层方案。Rollups 将盘算 (以及状态存储) 移至链下,但将每笔买卖的一些数据放在链上。

为了提高效率,这类方案借助了许多庞大的压缩技巧以尽可能使用盘算替换数据。效果是系统的扩容性仍然受到底层区块链的数据带宽限制,但对照来看仍十分有利:以太坊基础层 ERC20 通证的转移成本约为 45000 gas,而 rollup 中的 ERC20 通证仅转移占用 16 字节的链上空间,成本不到 300 gas。

数据在链上这一点很要害 (请注意:将数据“放在 IPFS 上”是行不通的,由于 IPFS 不能就任何给定的数据是否可用提供共识;数据必须被记录在链上)。将数据放在链上并对此杀青共识,使得任何人都可以根据需要在内陆处置 rollup 中的所有操作,从而允许其对敲诈举行监测、提议提款或亲自最先批量天生买卖。缺乏数据可用性意味着一名恶意的或是离线的运营者能够发生的影响甚至会更小 (例如他们无法造成一周的延迟),从而为有权宣布批量买卖的人打开更大的设计空间,并使 rollup 更容易有理可循。

更主要的是,缺乏数据可用性意味着不再需要映射资产到所有者,从而我们能得出以太坊社区相较之前的二层扩容方案对 rollups 加倍期待的要害缘故原由之一:rollups 是完全通用的,我们甚至还可以在 rollup 内部运行 EVM,使得既有的以太坊应用险些不需要编写新代码就能迁徙到 rollups 上。

Rollup 的原理到底是什么?

在链上存在一份智能合约,其中包罗一个状态根,即 rollup 状态的默克尔根 (也就是 rollup 内部的账户余额、合约代码等等)。

任何人都可以宣布一批汇总买卖 (batch),这是一个经由高度压缩的买卖聚集,其中包罗之前的状态根和新状态根 (处置买卖之后的新默克尔根)。该合约会检查 batch 中的旧状态根是否匹配其当前的状态根,若是匹配的话,合约会对状态根举行更新。

为了支持存款和提款,我们增添了输入和输出在 rollup 状态“外部”的买卖的功效。若是一个 batch 中包罗来自外部的输入,则提交到该 batch 的买卖也需要将资产转移到 rollup 合约。若是一个 batch 中包罗来自外部的输出,则智能合约在处置该 batch 时会提议提款。

这就是 rollup 的事情原理了。但另有一个主要细节:若何得知 batches 里的后状态根 (post-state root) 是准确的呢?若是某人能够提交一个具备随便后状态根的 batch,而无需承担任何结果,他们完全可以将 rollup 中的所有代币都转移给自己。这个问题很要害,由于由此诞生了两种差别的解决方案,这两种解决方案又衍生出了两种差别的 rollups。

Optimistic rollups 与 ZK rollups

这两种 rollups 为:

1. Optimistic rollups其解决方案为敲诈证实 (fraud proofs):这类 rollup 会追踪所有历史状态根以及每个 batch 的哈希值。若是任何人发现某个 batch 的后状态根不准确,他可以向区块链宣布一个证实,证实该 batch 盘算错误。合约会对证实举行验证,而且对该 batch 及其之后的 batches 举行回滚。

2. ZK rollups其解决方案为有效性证实 (validity proofs):每个 batch 都包罗一个称作 ZK-SNARK 的密码学证实 (例如使用 PLONK 协议),以证实后状态根是准确执行 batch 的效果。无论盘算量有多大,该证实都能在链上获得极速验证。

这两种 rollup 之间存在庞大的权衡:

,

皇冠体育APP

:www.huangguan.us是一个开放皇冠代理APP下载、皇冠会员APP下载、皇冠线路APP下载、皇冠登录APP下载的平台,皇冠体育APP上最新登录线路、新2皇冠网址更新最快,皇冠体育APP开放皇冠会员注册、皇冠代理开户等业务。

,

总的来说,我小我私家的看法是,在短期内,optimistic rollup 的显著优势在于其通用的 EVM 盘算,而 ZK rollup 更可能被用于支付、买卖和其他特定用例。但中历久来看,随着 ZK-SNARK 手艺的成熟,ZK rollup 会在所有用例中发挥出优势。

解构敲诈证实

Optimistic rollup 的平安性保障主要来自于:若是有人在 rollup 中宣布了一个无效的 batch,其他任何跟进该链的用户监测到敲诈行为都可以宣布敲诈证实,向合约证实该 batch 的无效性,并举行回滚。

在上图中,声称某 batch  无效的敲诈证实会包罗绿色的数据:若是要证实特定账户被该 batch 读取和/或被修改,则需要该 batch 自己 (可以对照存储在链上的哈希值举行检查) 以及 Merkle 树的各个部门。不需要提供图中黄色的节点,由于他们能够被绿色的节点重构。该数据已经足够执行 batch 并盘算后状态根了 (这与 无状态客户端 验证单个区块的方式险些相同)。若是经盘算的后状态根以及获得的 batch 中的后状态根不一致,那么该 batch 就是无效的。

可以保证若是某个 batch 不准确,但之前所有的 batches 都是准确的,那么就能够建立一个敲诈证实以示意该 batch 是不准确的。请注意对之前 batch 的声明:若是有跨越一个无效的 batch 被宣布到 rollup 中,那么最好实验证实最早的无效 batch。也可以说,若是某个 batch 是准确的,那么永远都无法建立一个敲诈证实示意其无效。

若何举行压缩?

一笔简朴的以太坊买卖 (发送 ETH) 巨细约为 110 字节。而在 rollup 上举行 ETH 转账,巨细仅为约 12 字节:

其中一部门只是简朴的高级编码:以太坊的 RLP 编码方式在每个值上会虚耗 1 字节。然则其中还包罗一些机智的压缩技巧:

ZK rollups 特有的一个主要压缩技巧是:若是买卖的一部门信息仅用于验证,而且不用于盘算状态更新,那么该部门可以移至链下。Optimistic rollup 无法做到这一点,由于该数据仍然需要存在链上,以备需要在敲诈证实中举行检查的不时之需。而在 ZK rollup 中,SNARK 已经证实了 batch 的准确性,也就是说验证所需的数据已经齐全。

具备隐私珍爱功效的 rollups 是一个主要例子:在 optimistic rollup 中,每笔买卖中用于隐私珍爱的 ZK-SNARK 证实需要在链上,需要占有约 500 字节。而在 ZK rollup 中,包罗整个 batch 的 ZK-SNARK 已经证实了“内部” ZK-SNARK 的有效性。

这些压缩技巧是 rollups 扩容性的要害,否则 rollups 扩容性相较底层连只能提高约 10 倍 (虽然对于某些特定的盘算密集型应用来说,简朴的 rollups 方案已经足够),而对数据举行压缩后,险些对所有应用来说,扩容性都可以实现 100 倍以上的提升。

谁能批量打包买卖并提交?

对于 optimistic rollups 和 ZK rollups 中买卖的打包权有许多说法。一般来说,任何想要打包买卖而且提交的用户,必须要锁定大量存款。若是用户提交了包罗敲诈/无效买卖的 batch (例如包罗无效状态根),那么该用户的存款的一部门会被销毁,另一部门则作为敲诈证实者的奖励。除此之外,还存在其他可能性:

  • 中央化处置:存在一个行为者即排序者 (sequencer) 提交 batches (但提款存在破例:通常来说一个用户可以首先提交提款请求,若是排序这没有在下个 batch 中处置该提款,那么该用户能够自己提交一个 batch)。这是最“高效”的方式,然则依赖于一个中央化的角色。

  • 排序者拍卖:通过定期举行拍卖的形式来确定谁有权成为下一个周期的排序者。其优点在于它可以筹集资金,并通过例如由 rollup 控制的机制 (例如 DAO) 来举行分配。(参见 MEV 拍卖)

  • PoS 集随机选择:任何人都可以将 ETH (或是 rollup 协议的代币) 存入 rollup 合约,然后在存款人中随机选择每个 batch 的排序者,被选中的可能性与锁定资产成一定比例。这个方式的主要瑕玷在于会有大量资源被锁定,而这是不必要的。

  • DPoS 投票:通过拍卖确定一个排序者,若是该行为人显示不佳,那么代币持有者可以通过投票将其驱逐,并提议新的拍卖。

将批量打包和状态根处置相自力

现在正在开发的一些 rollup 项目采用了“自力批量打包”的方式,也就是将提交二层买卖的 batch 和提交状态根的历程星散。这种做法的优势在于:

1. 使得多个排序者能够同时宣布 batches,以提高扛审查性,而制止了由于一些 batches 被首先打包而导致其他 batches 无效的问题。

2.若是某个状态根是无效的,我们不需要回滚整个 batch,可以只回滚状态根,并守候他人提供该 batch 的新状态根。这保障了买卖发送方的买卖不会被回滚。

总之,在效率、简洁性和抗审查性等方面的权衡十分庞大,许多方案也在举行探索。现在要判断哪些观点是最佳组合还为时尚早,时间会证实一切。

rollup能在多大水平上实现扩容?

在现有的以太坊链上,gas 上限是1250万,一笔买卖里,每个字节的数据破费 16 gas。这意味着若是一个区块只包罗一个batch (我们说相当于打包了一个 zk rollup,在证实验证上破费 50 万 gas),那一个 batch 可以包罗  (1200 万 / 16) 750,000 字节的数据。如上文所示,对于一个以太坊转账的rollup,每一次用户操作只需 12 个字节,也就是说该批买卖可以包罗高达 6.25 万笔买卖。现在平均出块时间为 13 秒,即相当于约莫每秒 4807 笔买卖 (相比之下,现在直接在以太坊上转账是每秒 1250万/21000/13~=45笔买卖 )

以下表格是其他用例的例子:

扩容的最高水平是这样盘算的:(一层的 gas消耗)/(rollup所占的字节 *16)*1200万/1250万万

现在,值得注意的是这些数据都过于乐观了,缘故原由有几个。最主要的是,一个区块险些不可能只包罗一个 batch,由于最起码会有多个 rollup。第二,存款和提款行为会一直存在。第三,在短期,使用率会对照低,以是固定成本会占主导。但纵然这些因素都思量到了,跨越 100 倍的扩容水平也有望成为常态。

若是我们想每秒买卖量到达 1000-4000 呢 (取决于特定的用例)?这就是eth2 数据分片发挥作用的时刻了。分片协议为每 12 秒提供 16MB 的空间来容纳任何数据,且系统确保数据可用性的共识。数据空间可以被 rollup 使用。这约莫每秒 1398kb 的空间比现在以太坊链上每秒约莫 60kb 提高了23倍,且在更历久来看,数据容量有望继续增添。因此,使用 eth2 分片数据的rollup可以以每秒约 10 万笔买卖的吞吐量批量处置,在未来可能更多。

Rollup上另有哪些未解决的难题?

只管 rollup 的基本观点现在已为人所领会,我们确信它们是完全可行且平安的,现在多种 rollup 已经部署到主网上,但 rollup 设计另有许多领域未被充实探索,以及在实现桥接以太坊生态上大部门的活动到 rollup 上,以行使它们的可扩容性这件事上,还存在不少难题。一些要害的难题包罗:

  • 用户和生态的入驻——使用 rollup 的应用不多,用户也不熟悉 rollup,只有少数钱包最先集成 rollup。商家与慈善机构也还不支持这种支付方式。

  • 跨 rollup 买卖——高效地从一个 rollup 移动资产与数据 (例如:预言机输出) 到另一个,而无须发生经由基础层的用度。

  • 审计激励——若何最大水平提高至少有一个老实节点完整验证一个 optimistic rollup 的机遇,使得泛起问题时他们会宣布敲诈证实?对于小规模 rollup (高至每秒几百笔买卖),这个问题不大,由于对矿工来说只是举手之劳,但对于大规模的 rollup 来说,还需要更充实的理由以说服矿工去做验证。

  • 探索 plasma 和 rollup 之间的设计空间——是否有手艺可以放一些 状态更新相关数据到链上而不是所有的数据,且这些数据会发生有用的器械?

  • 最大水平提高提前确认的平安性——许多 rollup 都市为了更快的用户体验 (UX) 提供“提前确认 (pre-confirmation)”,这里排序者 (sequencer) 会马上答应某笔买卖会被打包到下一个batch里,而若是此答应没有被兑现,该排序者将损失其保证金。但这个方案的经济平安性是有限的,由于排序者可以同时对异常多的人作出异常多的答应。这个机制可以改善吗?

  • 提高缺席排序者的回应速率——若是一个 rollup 的排序者突然离线了,在最短的时间内以最低的成本从这种情形恢复过来是很主要的,方式不是快速且低成内陆大规模退出到另一个 rollup,就是换一个排序者。

  • 高效 ZK-VM——天生一个 ZK-SNARK 证实,证实通用的 EVM 代码 (或一些现有的智能合约可以编译成的差别 VM) 已被准确执行和有一个给定效果的。

结论

Rollup 是一个壮大、新颖的二层扩容范式,并有望成为以太坊在中短期未来 (也可能是历久) 扩容的基石。以太坊社区已经显示出对 rollup 的强烈兴趣,由于不像之前在二层扩容的实验,它们可以支持通用的EVM代码,使得现有的应用可以容易迁徙。Rollup 有一个主要的妥协:买卖处置不是完全在链下举行,而是每笔买卖留下一小部门数据在链上。

Rollup 有许多种,在设计空间上有许多选择:可以是使用敲诈证实的 optimistic rollup,也可以是使用有效性证实 (即 ZK-SNARKs) 的 ZK rollup。排序者 (可以宣布打包好的 batch 到链上的用户) 可以是中央化的行动者、自由放任者、或两者间的许多可能性。Rollup 照样早期的手艺,其开发在不停快速地举行中,但它们是可行的,且其中有些 (对照著名的是路印、ZKSync、和DeversiFi) 已经运行数月了。期待今年 rollup 会有更多令人振奋的功效。

发表评论
sunbet声明:该文看法仅代表作者自己,与本平台无关。请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

您可能还会对下面的文章感兴趣: