{"content":{"title":"RollUp - 区块链大规模使用的基石","body":"比特币以创新性的设计解决了在去中心化世界中达成共识的问题，这创造了区块链技术。在区块链技术的发展中，扩展性一直是个难以解决的问题，因为我们需要在保证区块链安全，去中心化的前提下，达到扩展性。但这几个要求在技术层面是冲突的，人们称之为三难问题，即你无法在一条区块链上同时达到安全，去中心化，高性能。这一问题阻止了区块链的大规模使用，因为在人们对基于区块链的产品的预期中，安全和去中心化是不能妥协的（否则跟中心化应用有何区别？），而低扩展性会导致高昂的使用成本。因此这些年中我们并未见到基于区块链技术的大规模应用。\r\n\r\n区块链社区多年来努力解决三难问题，终于通过模块化公链技术解决了该问题。模块化公链将区块链分层，在不同层上解决不同问题。一般来说安全性和去中心化在一层上解决（Layer1），扩展性问题在另一层上解决（Layer2），L2的安全性和去中心化依赖于L1，最终状态的裁决也在L1完成，L2仅仅完成交易执行和状态细节的保存。即使L2的所有节点都消失，社区也可以通过L1上保存的信息正确地重建L2。\r\n\r\n模块化区块链一般分为如下几个核心模块：\r\n1. 共识：决定哪些交易被纳入区块链，以及这些交易的顺序。\r\n2. 执行：执行交易，并获得交易执行完成后的状态。\r\n3. 结算：对执行交易后的最终状态进行确认，如果确认中对执行结果有分歧，需要解决分歧。\r\n4. 数据可用性：保证交易历史总是可以被正确获取，可用于结算时的参考以及重建区块链。\r\n\r\n\r\n听上去有些混乱？让我们站在以太坊的角度来思考问题。如果有另外一条区块链L2声称可以帮助我扩展性能，将一些交易的执行和状态的存储外包给它，我会希望它如何做？\r\n1. 它需要告诉我那条链上发生的所有交易及其排序\r\n2. 需要告诉我交易执行完成后，最新的状态是什么，并且有办法证明这个状态是正确的\r\n3. 它和我之间能够互相调用，发送交易；\r\n\r\n\r\n让我们来看下RollUp是如何完成这三件任务的。\r\n\r\n首先我们需要发送一些ETH到L2上，这样我们在L2上才能够支付gas费。这是通过L1->L2跨链桥完成的，称为deposit。一般L2都会运行L1节点，因此仅需等待包含deposit交易的区块达到确定，即可认为deposit交易是安全的。\r\n\r\n然后我们便可向L2节点发送交易。L2上的Sequencer节点会接收并处理我们的交易。它会把L2用户的交易收集起来，构建成区块，就像普通区块链做的那样。每经过一定时间（如2min），或积累了足够多的L2交易，便会将这些交易打包发送至L1，如此L1便了解了L2上发生了哪些交易，以及这些交易的顺序\r\n\r\n发送到L1时这些交易进行了高强度的压缩，并且交易发送至L1时仅使用calldata，不进行状态存储，因此gas费非常节省。L2上的其他节点会从L1上监听并获取这些交易，而不是从L2的p2p网络中接收区块和交易，因此所有节点都只会认可已经提交到L1上的交易。\r\n\r\n每隔一段时间（如1h），L2上的Sequencer节点便会将L2上的状态根提交至L1的合约中，因此L1便知道了L2的最新状态。但此时L1并不信任这个最新的状态根。L2一般有两种方法来向L1证明这个状态根是正确的：OP和ZK。我们后面再详细描述它们。\r\n\r\n当我们完成在L2上的任务后，我们会希望将ETH取回至L1上，这个过程称为withdraw，它与其他的跨链交易类似，但因为withdraw交易来自rollup的L2，因此它的安全保障与普通跨链方式有所不同。对L1来说这是个需要很谨慎的动作，因为它会触发L1上的交易（如转账），一旦错误执行便会对L1的世界状态造成改变。它的流程为：\r\n1. 在L2上发起withdraw交易（与其他跨链类似）\r\n2. 等待该交易被提交至L1上（交易内容和状态分别被提交），并且在L1上包含该交易的状态被证明是正确的（via OP或ZK）\r\n3. 在L1上提交一笔交易，证明当前withdraw交易包含在某笔来自L2的，已经被证明正确的批量交易中（与其他跨链类似）\r\n4. 在L1上执行这笔withdraw交易（与其他跨链类似）\r\n\r\n现在让我们来仔细看下OP和ZK这两种证明L2提交的状态正确性的方法。\r\n\r\nOP是Optimism，它乐观地认为L2的Sequencer节点不会撒谎提供错误的状态根，但会谨慎地将其公示在L1上，等待是否有L2节点对这个状态根发起挑战，挑战期一般为7天。如果有L2节点认为Sequencer提供的状态根是错误的，可以在L1上的挑战合约中向错误的状态根发起挑战。挑战合约中使用了有很多有趣且高效的方法来保证挑战可以被正确地完成。一旦挑战者挑战成功，便可以取走Sequencer抵押在L1中的资金。并且链的状态会从被挑战的地方开始被重置，重新替换为正确的状态。请注意只有状态被重置，交易列表不会发生改变，因此交易列表一旦被提交到L1就确定了，不会回退（除非L1自身发生回退）。\r\n\r\n通常L2上的DApp运营方都会运行自己的L2节点，因此存在相当数量的潜在的挑战者。从挑战者角度来说，如果Sequencer真的说谎了，挑战一定能成功，可以获得Sequencer抵押的大量代币，因此当发现作弊行为时一定会发起挑战。从Sequencer角度来说，作弊一定会被发现，被挑战，会损失抵押的token，且作弊行为会被回退，因此没有作弊的动机。因此OP方案是安全的。\r\n\r\nOP方案的弊端是：挑战期有7天，因此如果通过rollup的withdraw方式取款的话，在L2上发起withdraw交易后，需要等7天才能从L1取出token，这太久了。不过有很多同时运行L1和L2节点，且在两条链上都有资金的DApp可以提供非官方跨链桥来帮助大大缩短这个过程。\r\n        \r\n\r\nZK是Zero Knowledge，它通过基于密码学的zero knowledge proof，在L2上运行zk-EVM，生成从旧状态应用交易后，达到新状态的ZKP，将该ZKP提交至L1，在L1上验证这个ZKP，从而直接证明新状态是正确的。ZK RollUp的开发难度较高，且生成ZKP的过程中需要消耗大量算力。但对新状态的验证仅需几小时便可完成，所以与OP相比，withdraw交易的时延被缩短为生成ZKP的时间，即仅仅几小时，且随着算力水平的提高，这个时延会进一步降低。\r\n        \r\n\r\n通过OP和ZK，我们可发现它们均能完成L1对扩展性的要求，且所有的信任都是源于对L1的信任，而不是对L2的信任。因此我们可以认为RollUP的安全性和去中心化程度几乎等同于L1，而性能获得了极大的提升。一般认为通过使用RollUp，以太坊的性能可以达到数千TPS。此时的瓶颈主要取决于DA消耗了大量gas，如果使用三方DA，则可以获得近乎无限的扩展能力，但此时安全性就会发生变化，需要考虑DA能提供的安全性。通过使用RollUp，以太坊可以安全地获得极高的性能提升，为大规模使用提供支持。\r\n\r\n\r\nDePIN是Decentralized physical infracture network，它使用区块链提供的经济激励来促进物理基础设施的建设。以Arkreen举例，它使用区块链技术激励人们构建清洁能源网络。矿工们搭建太阳能板，将太阳能板上的发电数据传输至Arkreen网络。Arkreen网络鉴别筛选出诚实有效的数据后，根据奖励算法将奖励发放给矿工，从而激励矿工进一步构建清洁能源网络。Arkreen网络的建设是去中心化的，因此它需要基于区块链技术方能维持其信任；Arkreen网络的矿工可能有上千，甚至百万，因此需要极高的链上吞吐量才能支持其运行和发展。在过去，这样的需求在技术上和经济上是不现实的，而在模块化区块链带来的链上扩展能力的支持下，这一切成为可能。\r\n\r\n我们可以想象DePIN项目构建于RollUp等模块化区块链上，以低成本获得极高的吞吐量，同时从更底层的区块链(如L1)获得足够的安全性和去中心化。DePIN项目发行的token属于RWA(Real World Asset)，具有现实资产价值的支撑，可以通过参与链上交易快速转换为可提取的资产，激励矿工进一步建设DePIN网络，形成价值飞轮。甚至多个DePIN项目间可以在现实世界和链上协作，形成DePIN生态，进一步提高DePIN的价值。从而为区块链服务于实体经济找到落脚点，也为区块链带来新的增长点。\r\n\r\n\r\n总结：\r\n    模块化区块链（如RollUp）可以解决区块链三难问题，带来极高的扩展性，为大规模使用带来可能性。DePIN项目需要高性能，低成本的区块链服务，模块化区块链可以提供这种服务。DePIN项目的发展在模块化区块链的支持下拥有美好的前景。"},"author":{"user":"https://learnblockchain.cn/people/13806","address":null},"history":null,"timestamp":1709954818,"version":1}