{"content":{"title":"BTC/ETH Layer2 本质解析","body":"我们都说Layer2解决了Layer1的扩容问题。从非常直观的理解上，我们很自然的认为就是以后在部署的智能合约的TPS提高了。但是这个TPS的提高需要用户执行哪些新增的步骤才能真正使用到layer2所带来的好处呐？\r\n\r\n我们以最主流的Rollup方式来解释，如果要利用到Layer2的来提升自己应用的TPS需要增加哪些步骤。\r\n\r\n如果要清楚的知道增加了哪些步骤，我们必须先知道在layer1上面进行交易需要哪些，然后两者对比就能知道增加了哪些步骤（复杂度）。\r\n\r\nlayer1上面部署合约和操作合约都只需要一笔交易就可以了。一个合约方法内部可以调用N多个合约的方法来实现目的。但是对于用户来说都是无感的。\r\n\r\n而layer2则不一样，首先我们把以太坊上面的交易做个分类。\r\n1. ETH资产的流转交易。\r\n2. ERC20代币类资产的流转交易\r\n3. 其他交易（uniswap，curv，dai，nft，others）\r\n\r\n我们常用的扩容其实就1，2两种资产的TPS提升。\r\n\r\n对于ETH和ERC20资产流转TPS扩容，方法是：\r\n1. 项目方先在Layer1上面部署一个资产托管合约（锁定合约），在layer2上面部署一个对应Layer1资产的合约。比如：如果跨链支持eth，uni，dai等layer1资产的话，可以在Layer2部署一个eth合约，一个uni合约，一个dai合约。\r\n2. 用户先把自己的ETH或者ERC20发送到资产托管合约（ERC20代币发送给资产托管合约地址，虽然智能合约地址没有私钥，但是却可以通过合约间调用的方式调用ERC20约会，从而实现对ERC20资产的控制）。\r\n3. 链下的多个relayer监控Layer1的事先定义好的event。通过多个relayer的多重签名的方式发送一个mint交易给Layer2上的合约。\r\n4. 在Layer2上对应的资产合约进行mint操作。比如：eth->layer2-eth, uni->layer2-uni;\r\n5. 后面所有的交易都在Layer2上面进行。\r\n6. Layer2会把每次的Tx打包和layer2的state root 一起发送到Layer2存储起来。\r\n\r\nZK rollup的安全性来自于，每次layer2向Layer1打包的交易和状态都会和一个proof一起提交给Layer1，这个proof保证了Layer2是老老实实按照合约代码运行的，没有作弊。Layer收到proof会做验证。这个有一个不明白的地方，如果验证失败了会怎么样？\r\n\r\nOptimistic rollup就不一样，他是假设Layer2都是诚实的，不会作弊。所以不会在Layer2提交打包交易和root时进行验证，而是有人举报Layer2作弊时，在Layer1上进行验证。\r\n\r\n这个里面就有一个有意思的问题。Layer1如何验证Layer2的交易。Optimism的方式是把Layer2上面执行的交易在layer1上面在执行一遍。即：输入pre-state+ txs == post-state？这种方式就必须保证要在Layer2和Layer1上都部署一个一摸一样的合约，还要解决gas费用，和block.timestamp不一致的问题。\r\n\r\n现在的Layer2都是中心化的，如果发现optimistic rollup的验证人是作恶的话，会惩罚7其质押的钱，但是如果Layer2上面有着巨量的资产的话，Layer2质押在Layer1上的抵押到底多少才是合适的呐？\r\n\r\n这里面还有一个问题，就是整个跨链的操作非常依赖中间的relayer的转发和签名，那对这些relayer的激励是什么呐？如果没有激励和惩罚的话，谁会去做relayer呐？\r\n\r\n  除非用另外一种方式，就是把relayer转发跨链消息和签名的功能分开。即：realyer只负责转发消息。而签名功能则取消，Layer1和Layer2都实现一个SPV验证的程序，收到跨链交易的时候，消息里面也要带着block header的tx的merkle root和merkle proof，根据proof，root，tx等验证跨链交易已经在对方网络上面已经上链，并打包进了区块。\r\n  \r\n  但是这样的方式很明显实现负责度很高，gas费用极高。\r\n  \r\n  跨链里面关于如何验证对方链是否成功，是一个极大的难题。\r\n  \r\n  关于从layer2如何提币到layer1也是一个问题。如果layer2的排序者作恶，永远不打包你的withdraw跨链交易，你就永远无法提币。\r\n  \r\n  storage-proof的含义是每条交易执行过程中读取的所有变量的key/value对；consensus chain拥有了domain交易的storage-proof，交易代码，wasm虚拟机，合约代码，就可以重新计算一遍交易，从而得到最新状态，再通过state-root和mmr格式的merkle证明，就可以证明交易是否被正确执行了。这是autonomys fraud proof的基础原理；\r\n\r\n\r\nlayer2面对的一种重要问题是，在layer2全部当机不可用的情况下，如果保证用户的资产可以提取到主链；这里最重要的一点就是需要主链有全量的数据，包括layer2的state-root，layer2的合约代码，layer2上面的所有交易；\r\n\r\n除了具有所有数据以外，还需要主链可以执行layer2的合约代码能力，即同样的虚拟机能力；和兼容的公私钥匙体系，从而保证签名兼容；"},"author":{"user":"https://learnblockchain.cn/people/808","address":null},"history":"bafkreiclknaen444zqa2fag6dwcrnd4fcv4xiordysevrdhzqhrwyvtese","timestamp":1725444672,"version":1}