至于数据可用性,我们通过把处理后的数据放到以太坊的 calldata 里面来保证。那么为什么是 calldata 而不是智能合约呢?这是因为在同等安全性的前提下,放在 calldata 比放在智能合约更便宜。 由于 zkRollup 会将每笔交易压缩后的数据传到以太坊主网上,因此 zkRollup 的数据有效性和可用性都得到了保证,并且和以太坊是同等程度的。 zkPorter zkPorter 和 zkRollup 的主要区别是数据可用性。大家想想,为什么 Rollup 不能达到我们希望的可拓展性?这是因为我们要把每笔交易压缩后的数据都放在以太坊上面,但是以太坊的区块大小是有上限的。 那该怎么办呢?这时候,我们可以选择提供链下数据可用性的 zkPorter,这样就能达到我们所期望的可扩展性。 zkPorter 账户的数据可用性由 zkSync 代币持有者保障。在 zkSync 2.0,你可以享受 zkRollup 和 zkPorter 账户的混合体验(你们可以自由选择,而且是完全可互操作的)。守护人(guardian)将通过质押其 zkSync 代币参与权益证明,并通过对区块签名来确认 zkPorter 账户的数据可用性。 当然,天下没有免费的午餐,由于 zkPorter 依靠 zkSync 代币持有者(即守护人)来保障数据可用性,所以 zkPorter 的安全性将会比以太坊略低。但是需要强调的是,zkRollup 的安全性不会变,仍然具备和以太坊一样的安全性。你可以看下图中的蓝点,这蓝点是 zkRollup 的数据可用性。绿点显示的是由 zkSync 代币持有者组成的守护人(guardian)网络里面的数据可用性。 对应上图中高一点的蓝点,在数据有效性上,zkPorter 和 zkRollup 的有效性都是由 zkSNARK 保证的,并且账户状态的正确性有着和以太坊主网相同的安全保证。这也就意味着没有人可以移动你账户的资产。 那么数据可用性在 zkPorter 上具体是怎么样的呢?通常我们讲区块链安全的时候,需要考虑最坏的情况。看看在最坏的情况下,系统安全性如何保证。我们先看 zkSync 的代币持有者,即守护人(guardian),他们需要签字确认每一个 zkSync 区块的数据可用性。即便 ⅓ 的 zkSync 持有者拒绝生产区块,这对 zkSync 网络来说也是没有太大影响的。因为 zkRollup 和 zkPorter 还可以去找另外的 ⅔ 问其数据可用性。 最差的情况是网络遭遇 ⅔ 多数攻击。在这种情况下,攻击者可以去签字确认最后的区块,即它仍有有效性。但在这种情况下,攻击者会让数据不可用。此时,普通用户不能证明自己所拥有的资产,因此无法正常管理这些资产。但同时,对攻击者来说,他也无法证明他拥有这些资产,同样无法动用这些钱。 (责任编辑:admin) |