原文标题:《从 zkSync 看以太坊 Layer2 网络的问题和挑战》 这两天我们忙着在 Ownbit 钱包上原生接入 zkSync,各个技术环节已经打通。从我们的经验来看,zkSync 有其非常优秀的一面,也有其不足的一面。而其中的很多不足是 Layer2 网络所共有的问题和挑战。 zkSync 主要优点1. 手续费确实便宜,实测当前 zkSync 网络上进行一次 token 转账大致手续费为 1.5 元 人民币左右,而当前 ETH 主网进行一次 token 转账大致手续费为 75 元 人民币左右; 2. 支持 token 支付手续费,例如你在 zkSync 网络上转账 USDC token 时可以选择 USDC 进行手续费支付(无需 ETH),这对用户来说是友好的; 3. 提币到 ETH 主网所需时间短。当前实测一次提币,花费手续费约 150 元 人民币,大约到账时间为 3 个小时。因为当前总交易量比较少,根据设计,越多的交易量会让提币所需时间变得越少。预计以后提币到 ETH 主网时间一般在几十分钟之内。 zkSync 主要的问题或挑战1. zkSync 网络本身的安全性。为了实现本网络更快的确认速度,Layer2 网络一般采用 PBFT、DPoS 等共识协议。这些协议可以支持更快的出块速度,但是它们通常更加中心化。 在 zkSync 官方宣传语中:和 ETH 主网一样安全。那是有前提的。前提是你需要等待转账交易进入 verified 状态,才和 ETH 主网一样安全。这通常需要等待十几分钟以上。因此,相对而言,Layer2 网络本身普遍具有更中心化、相对不安全的问题。 调用 ETH 主网合约进行 block verify 后进入 Verified 状态 2. 合约账户的 Layer2 映射问题,这是一个通用的问题。如果你在 zkSync 二层网络中,把 token 发送到了只是在 ETH 主网存在的地址上,那会发生什么? 币会丢失吗?为了解决这个问题 zkSync 专门设计了 changePubKey 的交易类型,让你去认领某个地址。如果该地址是一个外部地址(EOA),你可以通过私钥进行签名,在 zkSync 网络中发送一个 changePubKey 的交易,便可以认领该地址。 但是如果该地址是个合约地址,那么就会有问题。因为合约地址不存在对应的私钥。这时就面临着资产永久丢失的风险。zkSync 设计的方案是在该合约上执行一个「onChain」类型的 changePubKey 交易。这就要求该合约地址拥有执行任意代码的能力,否则 Layer2 的资产依然面临丢失。 提示:如果合约提供如下代码调用接口,则表示可以执行任意代码(其中 data 是任意 bytes): destination.call.value(value)(data) (责任编辑:admin) |