具体而言,Rollup 将交易数据进行压缩编制成梅克尔树,并存储在链上;同时在智能合约中保存梅克尔树的树根(状态根)。Rollup 的运营方可以将发布一批汇总交易(Batch),该交易即压缩过的交易集合,而且包含之前的状态根和新状态根 (处理交易之后的新梅克尔树根)。智能合约会对状态根进行检查并更新,由此实现资产的转移。 当然,从上我们可以看出,Rollup 并不是一种纯粹的 Layer 2 方案,而是更像 Layer 1 和 Layer 2 的混合体:数据在链下进行计算打包,但在链上进行存储。因此将 Rollup 称为半链下扩容或 semi-layer 2 方案更为合适。 图 6. Rollup 扩容原理,资料来源:Vitalik. An Incomplete Guide to Rollups,欧易 OKEx 研究院 用一个形象的比喻,现在我们要保存很多电影,Plasma 类似于我们将电影存储在电脑上,然后只在 U 盘上保存一个目录文件,根据这个目录文件的指引,我们可以方便地找到任何一部电影在电脑中的位置;而 Rollup 的方法则是先将电影进行压缩,随后再全部保存到 U 盘中。这样一来,我们就可以在 U 盘中存储更多的电影。 那么 Rollup 是如何实现压缩的呢?---主要是对交易的参数进行压缩,主要包括 Nonce,Gasprice,Gas,To,Value,Signature,如下表所示: 表 2. Rollup 压缩方式,资料来源:Vitalik. An Incomplete Guide to Rollups,欧易 OKEx 研究院 在过去,一笔交易需要占用 112 字节的存储空间,现在只需要 12 字节的空间,一个字节大约花费 16 Gas;而在以太坊上,Gas 上限是 1250 万,我们假设 Rollup 需要花费 50 万 Gas,那么在 Rollup 上,其交易处理能力是: (区块 Gas 消耗量上限 – Rollup Gas 消耗量)/ 每字节的 Gas 消耗量 / 一笔交易字节数 / 出块时间 =(12,500,000 – 500,000)/ 16 / 12 /14= 4464 笔 / 秒 目前在以太坊上进行一次转账需要消耗约 21,000 Gas,这意味着如果全部用来转账,那么以太坊的最大交易处理能力为:区块 Gas 消耗量上限 / 单笔转账 Gas 消耗量 / 出块时间 = 12,500,000 / 21,000 /13 = 45 笔 / 秒 这意味着 Rollup 在转账场景下降以太坊的 TPS 提升了 100 倍。同样地,根据 Vitalik 的计算,在 ERC20 转账、Uniswap 运用场景,可实现同条件下以太坊 TPS 扩展 100-400 倍。 前面的分析一直很顺利,但我们忽略了一个与侧链技术类似的重要问题:如何防止 Rollup 运营方伪造数据进行盗取资产呢?以太坊社区提出了两个方案:使用「有效性证明」的 ZK-Rollup,以及沿用 Plasma「欺诈证明」的 Optimistic Rollup。 (责任编辑:admin) |