BTC/ETH Layer2 本质解析

我们都说Layer2解决了Layer1的扩容问题。从非常直观的理解上,我们很自然的认为就是以后在部署的智能合约的TPS提高了。但是这个TPS的提高需要用户执行哪些新增的步骤才能真正使用到layer2所带来的好处呐?我们以最主流的Rollup方式来解释,如果要利用到Layer2的来提升自己应用的TP

我们都说Layer2解决了Layer1的扩容问题。从非常直观的理解上,我们很自然的认为就是以后在部署的智能合约的TPS提高了。但是这个TPS的提高需要用户执行哪些新增的步骤才能真正使用到layer2所带来的好处呐?

我们以最主流的Rollup方式来解释,如果要利用到Layer2的来提升自己应用的TPS需要增加哪些步骤。

如果要清楚的知道增加了哪些步骤,我们必须先知道在layer1上面进行交易需要哪些,然后两者对比就能知道增加了哪些步骤(复杂度)。

layer1上面部署合约和操作合约都只需要一笔交易就可以了。一个合约方法内部可以调用N多个合约的方法来实现目的。但是对于用户来说都是无感的。

而layer2则不一样,首先我们把以太坊上面的交易做个分类。

  1. ETH资产的流转交易。
  2. ERC20代币类资产的流转交易
  3. 其他交易(uniswap,curv,dai,nft,others)

我们常用的扩容其实就1,2两种资产的TPS提升。

对于ETH和ERC20资产流转TPS扩容,方法是:

  1. 项目方先在Layer1上面部署一个资产托管合约(锁定合约),在layer2上面部署一个对应Layer1资产的合约。比如:如果跨链支持eth,uni,dai等layer1资产的话,可以在Layer2部署一个eth合约,一个uni合约,一个dai合约。
  2. 用户先把自己的ETH或者ERC20发送到资产托管合约(ERC20代币发送给资产托管合约地址,虽然智能合约地址没有私钥,但是却可以通过合约间调用的方式调用ERC20约会,从而实现对ERC20资产的控制)。
  3. 链下的多个relayer监控Layer1的事先定义好的event。通过多个relayer的多重签名的方式发送一个mint交易给Layer2上的合约。
  4. 在Layer2上对应的资产合约进行mint操作。比如:eth->layer2-eth, uni->layer2-uni;
  5. 后面所有的交易都在Layer2上面进行。
  6. Layer2会把每次的Tx打包和layer2的state root 一起发送到Layer2存储起来。

ZK rollup的安全性来自于,每次layer2向Layer1打包的交易和状态都会和一个proof一起提交给Layer1,这个proof保证了Layer2是老老实实按照合约代码运行的,没有作弊。Layer收到proof会做验证。这个有一个不明白的地方,如果验证失败了会怎么样?

Optimistic rollup就不一样,他是假设Layer2都是诚实的,不会作弊。所以不会在Layer2提交打包交易和root时进行验证,而是有人举报Layer2作弊时,在Layer1上进行验证。

这个里面就有一个有意思的问题。Layer1如何验证Layer2的交易。Optimism的方式是把Layer2上面执行的交易在layer1上面在执行一遍。即:输入pre-state+ txs == post-state?这种方式就必须保证要在Layer2和Layer1上都部署一个一摸一样的合约,还要解决gas费用,和block.timestamp不一致的问题。

现在的Layer2都是中心化的,如果发现optimistic rollup的验证人是作恶的话,会惩罚7其质押的钱,但是如果Layer2上面有着巨量的资产的话,Layer2质押在Layer1上的抵押到底多少才是合适的呐?

这里面还有一个问题,就是整个跨链的操作非常依赖中间的relayer的转发和签名,那对这些relayer的激励是什么呐?如果没有激励和惩罚的话,谁会去做relayer呐?

除非用另外一种方式,就是把relayer转发跨链消息和签名的功能分开。即:realyer只负责转发消息。而签名功能则取消,Layer1和Layer2都实现一个SPV验证的程序,收到跨链交易的时候,消息里面也要带着block header的tx的merkle root和merkle proof,根据proof,root,tx等验证跨链交易已经在对方网络上面已经上链,并打包进了区块。

但是这样的方式很明显实现负责度很高,gas费用极高。

跨链里面关于如何验证对方链是否成功,是一个极大的难题。

关于从layer2如何提币到layer1也是一个问题。如果layer2的排序者作恶,永远不打包你的withdraw跨链交易,你就永远无法提币。

storage-proof的含义是每条交易执行过程中读取的所有变量的key/value对;consensus chain拥有了domain交易的storage-proof,交易代码,wasm虚拟机,合约代码,就可以重新计算一遍交易,从而得到最新状态,再通过state-root和mmr格式的merkle证明,就可以证明交易是否被正确执行了。这是autonomys fraud proof的基础原理;

layer2面对的一种重要问题是,在layer2全部当机不可用的情况下,如果保证用户的资产可以提取到主链;这里最重要的一点就是需要主链有全量的数据,包括layer2的state-root,layer2的合约代码,layer2上面的所有交易;

除了具有所有数据以外,还需要主链可以执行layer2的合约代码能力,即同样的虚拟机能力;和兼容的公私钥匙体系,从而保证签名兼容;

点赞 1
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
杜满想Elvin
杜满想Elvin
老程序员,区块链架构师