Rollup 在以太坊社区中非常流行,在可预见的未来,它将成为以太坊的要害可扩展性处理方案。可是这项技能到底是什么,你能从它中期望什么,你将怎么运用它? 这篇文章将企图答复其间的一些要害问题。

布景:什么是 Layer1 和 Layer 2 扩展?

有两种办法能够扩展区块链生态体系。首要,您能够使区块链自身具有更高的业务容量。这种技能的首要应战是,具有「更大区块」的区块链自身会更难验证,而且或许变得更加中心化。为了避免此类危险,开发人员能够进步客户端软件的功率,或许更可持续地运用分片等技能,将构建和验证链的作业拆分到多个节点上;众所周知,「ETH2.0」现在正在努力构建对以太坊的晋级。

其次,您能够更改运用区块链的办法。用户不是把一切的活动都直接放到区块链上,而是在「Layer 2」协议中履行链外的大部分活动。有一个链上的智能合约,它只有两个任务:处理存取款,以及验证链下发生的一切事情都遵守规则的证明。有多种办法能够实现这些证明,但它们都有一个一起的特性,即验证链上的证明比在链下进行原始核算要廉价得多。

状况通道(State channels)比照 Plasma 比照 Rollup

Layer 2 的可扩展办法首要有三种,State channels、Plasma、Rollup。它们是三种不同的办法,各有优缺点,在这一点上,咱们适当有信心一切的 Layer 2 扩展大致都能够归入这三种类别。(虽然在命名方面存在争议,例如有叫「validium」)。

状况通道(State channels)是怎么运作的?

能够点击看这儿: https://www.jeffcoleman.ca/state-channels以及statechannels.org

假设 Alice 向 Bob 供给互联网连接,作为交换,Bob 每兆付出她 0.001 美元。Alice 和 Bob 运用了下面的 Layer 2 方案,而不是每次付款都进行买卖。

首要,Bob 将 1 美元 (或一些 ETH 或稳定币等价物) 放入智能合约。为了向 Alice 付出他的第一次付款,Bob 签署了一张「票(ticket)」(一条链外音讯),上面只写着「$0.001」,并将它发送给 Alice。为了进行第2次付款,Bob 会在另一张写着「0.002 美元」的收据上签字,然后把它寄给 Alice。以此类推,需求多少付款就付出多少。当 Alice 和 Bob 完成买卖后,Alice 能够将价值最高的收据发布到链上,该收据包裹在来自她自己的另一个签名中。

智能合约验证 Alice 和 Bob 的签名,向 Alice 付出 Bob 收据上的金额,并将其余部分返回给 Bob。假如 Alice 不乐意封闭通道 (由于歹意或技能故障),Bob 能够发动一个退出期 (例如 7 天);假如 Alice 在这段时间内没有供给新收据,那么 Bob 就能够拿回他一切的钱。

这种技能是强壮的:它能够被调整以处理双向付出、智能合约关系 (例如。Alice 和 Bob 在通道内拟定了一个金融合约),以及组合 (假如 Alice 和 Bob 有一个公开的通道,Bob 和 Charlie 也有,那么 Alice 能够与 Charlie 进行无需信任的交互)。

可是通道的作用是有限的。通道不能用于将资金在链外发送给没有参与的人。通道不能用于表明没有清晰逻辑一切者的方针 (例如。Uniswap)。通道在用于做比简略的经常性付出更杂乱的事情时,需求确定许多资金。

Plasma 是怎么作业的?

点击这儿查看: original Plasma paper 和 Plasma Cash.

为了存入财物,用户将其发送到办理 Plasma 链的智能合约。

Plasma 链为该财物分配一个独立的 ID(比方 537)。每一个 Plasma 链有一个操作员 (这能够是一个的中心化的人物,或一个多重签名,或更杂乱的东西,如 PoS 或 DPoS)。每隔一段时间 (能够是 15 秒,或 1 小时,或两者之间的任何时间),操作员会生成一个「批次处理」,包括他们在链下收到的一切 Plasma 买卖。

它们生成一个默克尔树(Merkle tree),在树中的每个指数 X 处,如有一个买卖,那就存在一个搬运财物 ID X 的买卖,否则则为零。他们把这个默尔克树根发送到链上。他们还将每个指数 X 的默克尔分支发送给该财物的当时一切者。为了撤回财物,用户发布发送财物给他们的最新买卖的 Merkle 分支。律动注: Merkle tree,中文称为默克尔树或哈希树。在密码学及核算机科学中是一种树形数据结构,每个叶节点均以数据块的哈希作为标签,而除了叶节点以外的节点则以其子节点标签的加密哈希作为标签。Merkle Tree 的明显的一个优点是能够独自拿出一个分支来(作为一个小树)对部分数据进行校验,这个许多运用场合就带来了哈希列表所不能比较的方便和高效。

合约开端是应战期,在此期间,任何人都能够测验运用其他 Merkle 分支来使退出无效,办法能够是通过证明 (1) 发送者在发送时并不具有财物, 或 (2) 他们在之后的某个时间点把财物发给了其他人。假如在 (例如)7 天内没有人证明此笔退出是不真实的,则用户能够撤回财物。

Plasma 供给了比状况通道更强壮的特点:您能够将财物发送给从未归于体系的参与者,而且本钱要求也低得多。但这是有代价的:通道在「正常运转」期间不需求任何数据在链上运转,而等 Plasma 需求每个链定时发布一个哈希值。此外,等 Plasma 转账不是立即的:您必须等候距离完毕和区块被发布出来。

此外,Plasma 和状况通道有一个一起的缺点:为什么它们是安全的?这背面的博弈论依赖于这样的主意:两个体系控制的每个方针都有一些逻辑上的「一切者」。假如该一切者不关心他们的财物,那么或许会导致涉及该财物的「无效」结果。这关于许多应用程序来说是能够承受的,但关于许多其他应用程序 (例如。Uniswap)。即便是发送财物方针的状况能够在没有一切者赞同的情况下改动的体系,(如。依据账户的体系,在那里你能够添加某人的余额,而无需他们的赞同) 也不能很好的通过 Plasma 进行处理。

这一切都意味着,在任何现实的 Plasma 或状况通道部署中,都需求许多的「应用特定推理」,而且不或许制造一个 Plasma 或通道体系来模仿整个以太坊环境 (或「EVM」)。

为了处理这个问题,咱们能够看下……rollup。

Rollup

详细能够点击这儿查看:EthHub on optimistic rollups 以及 ZK rollups.

Plasma 和状况通道是完好的 Layer 2 方案,他们企图将数据和核算都移出链外。可是,环绕数据可用性的根本博弈论问题意味着不或许对一切应用程序都安全地做到这一点。Plasma 和通道依靠清晰的一切者概念来处理这个问题,但这阻止了它们的通用性。另一方面呢,rollup 是一种「混合」Layer 2 方案。

Rollup 将核算 (和状况存储) 移到链外,但在链上保留每个业务的一些数据。为了进步功率,他们运用一大堆花哨的紧缩技巧,尽或许用核算替代数据。其结果是,体系的可扩展性依然遭到底层区块链数据带宽的约束,但以一个非常有利的比率:一个以太坊底层 ERC20 代币搬运成本约为 45000 gas,而一个 ERC20 代币在 rollup 中搬运占用 16 字节的链上空间,成本低于 300 gas。

数据链上的事实是要害 (留意:将数据「放在 IPFS 上」是行不通的,由于 IPFS 没有便是否有任何特定数据供给达到共同意见;数据必须放在区块链上)将数据放到链上并就这一事实达到共同,答应任何人在本地处理汇总中的一切操作 (假如他们乐意的话),从而答应他们检测诈骗行为,开端提款,或亲身开端出产买卖批次。缺少数据可用性的问题意味着歹意的或离线的运营商能够做更少的伤害 (例如。它们不会造成 1 周的延迟),从而为那些有权发布批次的人打开了一个更大的规划空间,并使汇总变得更简略进行推理。

最重要的是,缺少数据可用性问题意味着不再需求将财物映射到一切者,这便是为什么以太坊社区相比曾经的 Layer 2 扩展办法,更热衷于 rollup 的要害原因:rollup 是彻底通用的,乃至能够在 rollup 中运转 EVM,答应现有的以太坊应用程序迁移到 Rollup,简直不需求编写任何新代码。

好的,那么 rollup 的作业有多棒呢?

链上有一个智能合约,它维护一个状况根:rollup 状况的 Merkle 根 (意思是,账户余额、合约代码等,位于 rollup「内部」)。

任何人都能够发布批次处理,这是一个高度紧缩办法的业务集合,以及曾经的状况根和新的状况根 (处理业务后的 Merkle 根)。合约查看批处理中的前一个状况根是否与当时状况根匹配;假如有,则将状况根切换为新的状况根。

V神带你读懂以太坊扩展性解决方案Rollup

为了支持存取款,咱们添加了让业务的输入或输出「超出」rollup 状况的能力。假如批处理有来自外部的输入,提交批处理的业务也需求将这些财物搬运到 rollup 合约。假如批处理有输出到外部,那么智能合约在处理批处理时就会发动提取。

 V神带你读懂以太坊扩展性解决方案Rollup

那么,只是这就有一个首要的细节:怎么知道批次处理中的后状况根是正确的? 假如有人能够提交带有任何后状况根的批处理,而不会发生任何后果,那么他们就能够将 rollup 中的一切代币搬运给自己。

这个问题很要害,由于这个问题有两组非常不同的处理方案,这两组处理方案会导致两种类型的 rollup。

Optimistic rollup 比照 ZK rollup

这两种 rollup 便是 Optimistic rollup 和 ZK rollup。

Optimistic rollup, 它们运用诈骗证明:rollup 合约盯梢其状况根的整个前史和每个批的哈希。假如有人发现一个批次处理有一个不正确的后状况根,他们能够向链上发布一个证明,证明批处理核算错误。合约将验证证明,并康复该批次和之后的一切批次。

ZK rollup, 运用有用性证明:每个批包括一个称为 ZK-SNARK 的加密证明 (例如,运用 PLONK 协议),证明后状况根是履行批次处理的正确结果。不管核算量有多大,证明都能够在链上快速验证。

这两种类型的 rollup 之间存在杂乱的权衡:

V神带你读懂以太坊扩展性解决方案Rollup

总的来说,我的观念是在短期内,Optimistic rollup 有机会赢得多用途的 EVM 核算,ZKrollup 则有望在简略付出层面、买卖平台以及其他特定于应用程序的用例上更胜一筹。不过在中长时间来看,ZK rollup 会跟着 ZK-SNARK 技能的改进,在一切用例中胜出。

分析诈骗证明

optimistic rollup 的安全性取决于是否有人将无效的批处理发布到 rollup 中,任何盯梢该链并发现诈骗的人都能够发布诈骗证明,向合同证明该批产品是无效的,应该康复。

V神带你读懂以太坊扩展性解决方案Rollup

宣称批次无效的诈骗证明将包括绿色的数据:批处理自身 (能够依据存储在链上的哈希值进行查看) 和 Merkle 树的部分只需求证明批处理读取和/或修改的特定帐户。

黄色树中的节点能够由绿色节点重构,因而不需求供给(数据)。这些数据足以履行批处理和核算后状况根 (留意,这与无状况客户端验证单个块的办法彻底相同)。假如在批处理中核算的后状况根和供给的后状况根不相同,则批次处理是诈骗的。

能够保证,假如一个批次被错误地构建,而且一切曾经的批次都被正确地构建,然后,就有或许创立一个诈骗证明,显示批次结构是不正确的。留意关于曾经批次的声明:假如有多个无效批次发布到 rollup 中,那么最好测验证明最早的一个无效。当然,假如一个批次处理被正确地构建出来,那么就永久不或许创立一个证明该批次处理无效的诈骗证据。

紧缩是怎么作业的?

一个简略的以太坊买卖 (发送 ETH) 需求大约 110 字节。可是,在 rollup 上的一次 ETH 传输只需求大约 12 个字节:

V神带你读懂以太坊扩展性解决方案Rollup

部分原因是更高级的编码:以太坊的 RLP 在每个值的长度上糟蹋了 1 个字节。但也有一些非常聪明的紧缩技巧正在进行:

Nonce:避免重播。假如一个帐户的当时 nonce 是 5,那么该帐户的下一个业务必须有 nonce 5,可是一旦业务被处理,帐户中的 nonce 将添加到 6,因而该业务不能再次处理。在 rollup 中,咱们能够彻底疏忽 nonce,由于咱们只是从 pre-state 康复 nonce;假如有人企图用一个较早的 nonce 重放业务,签名将无法验证,由于签名将依据包括新的更高 nonce 的数据进行查看

gas 价格:咱们能够答应用户在固定的 gas 价格范围内付款,例如,进行 2 的 16 次方。或许,咱们能够在每个批次中设置一个固定的费用水平,或许乃至将 gas 付出彻底搬运到 rollup 协议之外,让业务处理人员通过一个通道向批次创立人员付出。

gas:类似地,咱们能够把 gas 总量写成 2 的次方。或许,咱们能够只在批次设定 gas 约束。

To:咱们能够用一个索引替代 20 字节的地址。假如一个地址是添加到树中的 4527 地址,咱们只需运用索引 4527 来引用它。咱们将向状况添加一个子树来存储索引到地址的映射)。

价值: 咱们能够用科学计数法来储存价值。在大多数情况下,传输只需求 1-3 位有用数字

Signature: 咱们能够运用 BLS 聚合签名,它答应将许多签名聚组成一个单个~32-96 字节 (取决于协议) 的签名。然后能够一次针对批处理中的整个音讯集和发送者查看此签名。表中的~0.5 表明一个聚合中能够包括多少个签名是有约束的,由于需求在单个诈骗证明中验证签名。

ZK rollup 特有的一个重要紧缩技巧是,假如业务的一部分仅用于验证,而与核算状况更新无关,那么能够将该部分留在链外。这个 optimistic rollup 是不能达到的,由于这些数据依然需求包括在链上,以备日后需求在诈骗证明中进行查看,而在 ZK rollup 中,证明批次正确性的 SNARK 现已证明供给了任何验证所需的数据。

一个重要的例子是维护隐私的 ollps 总:在 optimistic rollup 中,用于每个业务的隐私的约 500 字节的 ZK- snark 需求放在链上,而在 ZK rollup 中,覆盖整个批处理的 ZK- snark 现已毫无疑问地表明「内部的」ZK- snark 是有用的。

这些紧缩技巧是 rollup 可扩展性的要害;假如没有它们,rollup 或许只会在根本链的可扩展性上进步约 10 倍 (虽然有一些核算量很大的应用程序,其间乃至简略的 rollup 也很强壮),而运用紧缩技巧,简直一切应用程序的缩放系数都能够超越 100 倍。

谁能够提交批次买卖审核?

关于 optimistic 或许 ZK rollup 中谁能够提交批次买卖的观念有许多。一般来说,每个人都赞同,为了能够提交一批,用户必须提交一大笔存款。假如用户曾经提交了一个诈骗性的批次买卖 (例如,无效的状况根),那笔存款将一部分烧掉,一部分作为对诈骗证明者的奖励。但除了这种办法之外,还有许多或许性:

彻底无秩序办法:任何人都能够在任何时候提交批次买卖。这是最简略的办法,但它有一些很严重缺点。特别是,存在一种危险:即多个参与者将生成并测验一起提交批次买卖,而这些批次买卖中只有一个能够被成功处理。这导致许多的精力糟蹋在生成证明上,且也会由于需求将批次买卖上链而导致糟蹋 gas。

中心化的排序者(Sequencer):有一个独自的参与者:排序者。他能够提交批次买卖 (提款除外:一般的技能是,用户能够首要提交一个提款恳求,然后假如排序者在下一批中不处理该提款恳求,那么用户能够自己提交一个单操作批次处理)。这是最「有用」的,但它依赖于一个中心化的人物来保持运作。

排序者拍卖:举办拍卖决议谁有权成为(比方第二天)的排序者,这种技能的优点是它筹集的资金能够由比方 rollup 控制的 DAO 分配 (拜见:MEV 拍卖)

从 PoS 集中随机挑选:任何人都能够将 ETH(或许 rollup 自己的协议代币) 存入 rollup 合约,每个批的排序者都是从一个存款人中随机挑选的,被选中的概率与存入的金额成份额。这种技能的首要缺点是它会导致许多不必要的本钱确定。

DPoS 投票:有一个独自的排序者通过拍卖被选中,但假如他们体现欠安,代币持有者能够投票将他们踢出去,并举办新的拍卖来取代他们

分摊批次处理和状况根供应

现在正在开发的一些 rollup 运用的是「分摊批次处理」办法,其间提交一批 Layer 2 业务的操作和提交状况根的操作是分隔进行的。这种办法有一些要害的优点:

您能够答应许多排序者并行发布批次买卖,以进步检查阻力,而不用忧虑一些批次会由于其他批次被先包括进去而失效。

假如一个状况根是存在诈骗行为的,您不需求康复整个批次,您能够只康复状况根就行了,并等候某人为同一个批次处理供给一个新的状况根。这为业务发送方供给了更好的保证,确保他们的业务不会被复原。

因而,总而言之,有一个适当杂乱的技能园,企图在杂乱的权衡之间获得平衡,包括功率、简略性、抵抗检查和其他方针。现在说哪种组合最有用还为时过早;时间会告知咱们。

rollup 能给你多大的可扩展性空间?

在现有的以太坊链上,gas 的上限是 1250 万,买卖中的每字节数据花费 16 gas。这意味着,假如一个块只包括单个批次 (咱们说运用了 ZK rollup,在证明验证上花费了 500k gas),那么该批次 (1200 万/ 16)= 750000 字节的数据。

如上所示,关于每个用户操作来说,ETH 转账的汇总只需求 12 个字节,这意味着批次处理最多能够包括 62500 个业务。在均匀区块时间为 13 秒时,这意味着大约 4807 TPS(相比之下,直接在以太坊自身上进行 ETH 转账的 TPS 为 1250 万/ 21000 / 13 ~= 45 TPS)。

下面是其他一些用例的图表:

V神带你读懂以太坊扩展性解决方案Rollup

最大可扩展性增益核算为 (L1 gas cost) / (rollup 字节数* 16)* 1200 万/ 1250 万。

现在,值得记住的是这些数据过于乐观,原因有几个。最重要的是,一个区块简直永久不会只包括一个批次,至少会有多个 rollup。其次,存取款将继续一向会发生。第三,短期内运用率会很低,因而固定成本将占主导地位。但即便考虑到这些因素,超越 100 倍的可扩展性也有望成为标准。

现在,假如咱们想要超越 1000-4000 TPS(取决于具体的用例),该怎么办? 这便是 eth2 数据分片的切入点。分片方案每 12 秒就会敞开 16mb 的空间,能够填充任何数据,而且体系保证对数据的可用性达到共同。此数据空间可用于 rollup。这个约 1398k 字节/秒比现有以太坊链的约 60kb /秒进步了 23 倍,从长远来看,数据容量预计还会进一步增加。因而,运用 eth2 分片数据的 rollup 最多能够处理 100k TPS,将来乃至更多。

在 rollup 中还有哪些没有彻底处理的应战?

虽然 rollup 现在是能够易于理解的根本概念了, 咱们非常坚信他们本质上是可行和安全的, 多个 rollup 方案现已部署到主网,但 rollup 规划仍有许多地区还没有很好地开发, 假如要彻底把大部分以太坊生态体系迁移到 rollup 以利用他们的可扩展性,仍是存在不小的应战的。

一些要害的应战包括:

用户和生态体系的适应:很少有应用程序运用 rollup,用户对 rollup 并不了解,很少有钱包开端集成 rollup。商户和慈善机构还不承受这种办法的付款。

跨 Rollup 买卖:有用地移动财物和数据 (例如通过预言机输出) 从一个 rollup 到另一个 rollup,而不需求通过基础层。

审计激励机制:怎么最大极限地进步至少一个诚笃节点实际将彻底验证 optimistic rollup 的或许性,以便在呈现问题时发布诈骗证明? 关于小规模的 rollup(多达几百个 TPS),这不是一个重要的问题,人们能够简略地依赖利他主义,但关于大规模 rollup,仍是需求更清晰的推理。

探究 Plasma 和 Rollup 之间的规划空间:有没有技能能够把一些,但不是全部的与状况更新相关的数据放到链上,从中能得出什么有用的定论吗?

最大化预承认的安全性:许多 rollup 为更快的用户体会供给了「预承认」的概念,其间排序者立即供给了一个许诺,即买卖将包括在下一批中,而假如他们违反他们的许诺,排序者存款将被销毁。可是这个方案的经济安全性是有限的,由于有或许在同一时间对许多参与者做出许多许诺。这种机制还能改进吗?

进步对缺席的排序者的响应速度:假如一个 rollup 的排序者忽然脱机,那么遇到这种情况的时候,最大程度地快速和低价地康复排序者作用是非常有价值的,办法要么便是快速和廉价地许多退出到一个不同的 rollup,要么便是赶紧换一个排序者。

高效的 zk:生成一个 ZK-SNARK 证明,证明通用 EVM 代码 (或现有智能合约能够编译到的某些不同 VM) 已正确履行,并具有给定的结果。

定论

Rollup 是一个强壮的新的 Layer 2 扩展范例,预计在短期和中期 (也或许是长时间) 将成为以太坊扩展的基石。他们现已看到了以太坊社区关于这件事的巨大兴趣,与之前的 Layer2 扩展测验不同,他们能够支持通用 EVM 代码,答应现有的应用程序轻松迁移。为了做到这一点,他们做出了一个要害的妥协:不测验彻底脱离链,而是把每个买卖的少数数据留在链上。

有许多种 Rollup,在规划领域也有许多挑选:比方运用 optimistic rollup 的诈骗证明,或许运用 ZK rollup 的有用性证明 (也便是 ZK-SNARKs)。排序者 (能够向链发布买卖批次的用户) 能够是一个中心化的参与者,也能够是一个自由参与者,或许是介于两者之间的许多其他挑选。Rollup 依然是一项早期技能,开发仍在快速进行中,但它们的确有用,其间一些 (特别是 Loopring、ZKSync 和 DeversiFi) 现已运转了几个月。在未来的几年里,Rollup 空间将会呈现更多令人兴奋的作业。

视野开拓

A fim's owes ae able to absob geate isks if they acquie a chate that gives them the pivilege of limited liability; which is whe the fim is called a copoatio.-《大众经济学》

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注