Web3.0时代,互联网底层不会全部基于区块链构建,数据计算也不会全部跑在公链的“独木桥”上。考虑到数据计算的效率问题、以及不同底层程序语言环境,Web3.0时代的数据计算基础层将是复杂多样的环境。因此,如何破解区块链时代数据计算效率成为下一代计算范式的重点方向。 Web3.0时代的区块链基础设施,光靠共识机制创新以及跨链是远远不够的,脱链/链外计算(off-chain)目前已经成为解决问题的大趋势。由于不可能三角的束缚,探索链外计算采用偏中心化等手段能够得到更高的扩展性,这种方案的关键是如何将链外计算结果在链上得到一致共识,通过TEE、零知识证明等技术手段实现链外数据计算结果回到主链上达成一致共识和安全。本报告分析以Oasis、Arweave、Mina等链下计算模式为案例,分析了Web3.0时代数据计算的可能范式,以及如何实现链上链下、链间数据计算协同的可能方式。 围绕性能的升级,公链的演进大致经历了如下历程: 1)共识机制的探索。共识机制经历了从POW到POS、再到各类POS机制的改进版本,无非是想解决公链的扩展性问题,但依然受不可能三角束缚; 2)跨链试图以多链来承载应用。跨链则是为了考虑一条公链不能适用于所有场景,需要多个公链来解决数据承载和计算运行。跨链依旧要对束缚行业的不可能三角进行相应的平衡; 3)Off-chain(脱链计算、链外计算)来解放主链负担正在成为趋势。从以太坊2.0的分片到L2网络,全部工作无非围绕如何解放主链负担来进行。 整体上的思路就是脱链/链外计算,把计算(存储等资源消耗)与存证分开。 脱链计算最核心的问题就是链上链下数据验证问题,或者说,如何使链下的数据计算在链上得到共识,使得这种方式能够被去中心化用户相信。 本章节介绍Oasis、Arweave的SCP模式以及MINA生态的Snapp三个典型的脱链计算项目案例。从这些不尽相同的实现方式,可以窥见Web3.0世界的数据计算实现方案繁杂的真实一面。未来Web3.0世界,也许不是理想的公链独木桥,而是纷繁复杂的百花齐放。 在Web2.5时代,如何将数据在两个生态之间共享、程序如何跨两个生态运行、两个生态系统融合将是时代的刚需。将数据在中心化世界和去中心化世界共享,将催生预言机类应用的巨大需求。Web2.0时代的数据和应用将在通往Web3.0时代的路上长期存在,并将不断与Web3.0进行融合——数据将在所谓的新的Web3.0应用生态和当西Web2.0生态之间共享,应用程序将横跨Web3.0和Web2.0系统之间运行(Web2.5时代),用户将同时属于两个生态世界。另外,庞大的Web2.0时代的数据资产和计算方式将会继续长期存在,这些势必构成了Web3.0时代的一部分。对于这部分数据和计算如何与区块链主导的新生态进行融合,同时数据的存储、网络和计算内存等互联网基础资源的调用该如何协调,这些都是巨大的挑战。这方面的问题不是光靠跨链、预言机就能够解决的。 风险提示:区块链商业模式落地不及预期;监管政策的不确定性。 1.核心观点 Web3.0时代,互联网底层不会全部基于区块链构建,数据计算也不会全部跑在公链的独木桥上。考虑到数据计算的效率问题、以及不同底层程序语言环境,Web3.0时代的数据计算基础层将是复杂多样的环境。因此,如何破解区块链时代数据计算效率成为下一代计算范式的重点方向。 对于去中心化系统,光靠共识机制创新以及跨链是远远不够的,脱链/链外计算(off-chain)目前已经成为解决问题的大趋势。由于不可能三角的束缚,探索链外计算采用偏中心化等手段能够得到更高的扩展性,这种方案的关键是如何将链外计算结果在链上得到一致共识,通过TEE、零知识证明等技术手段实现链外数据计算结果回到主链上达成一致共识和安全。本报告分析以Oasis、Arweave、Mina等链下计算模式为案例,分析了Web3.0时代数据计算的可能范式,以及如何实现链上链下、链间数据计算协同的可能方式。 2.Web3.0的共识:公链独木桥外可以做很多事 以以太坊为代表的公链在基础性能方面的限制,光靠共识机制方面的创新是不够的,靠多链之间的跨接亦不足以承载web3.0的数据和计算。于是以太坊2.0的分片、L2、波卡平行链等各类扩展方案成为当下现实的解决方案。这些方案细节尽不相同,但最终都传递了一种市场共识:即,Web3.0数据和计算不会都跑在公链这个独木桥上,大量数据和计算处理会在公链之外实现(可以是L2、平行链,甚至可以是其他非区块链方式)。也就是说,脱(主)链计算(off-chain)已经成为行业的共识,尤其是对于大量的数据处理和计算,会在主链之外完成。 本文暂时称各类在底层公链主链之外的方式为链外计算。如何在公链之外建立有效的数据和计算平台,承载Web3.0各类应用成为未来重要的问题。 2.1.通往Web3.0之路:从共识机制、跨链、模块化公链的探索 公链基础性能是行业一个绕不开的终极问题。围绕性能的升级,公链的演进大致经历了如下历程: 1)共识机制的探索。共识机制经历了从POW到POS机制,再到各类POS机制的改进版本,无非是想解决公链的扩展性问题。但无论怎样的共识机制,完成一致性的共识势必牺牲系统的工作性能,这是牢不可破的不可能三角; 2)跨链试图以多链来承载应用。跨链则是为了考虑一条公链不能适用于所有场景,需要多个公链来解决数据承载和计算运行。例如,波卡(Polkadot)作为一个可伸缩的异构多链系统,能够传递任何数据(不只限于代币)到所有区块链,实现各个链之间资产与数据的互相流通。这对于区块链网络的扩展性和应用多样性来说非常重要,单独一条区块链的性能毕竟有限,且在专用和通用之间难以平衡。同时,束缚行业的不可能三角(即扩展性、安全和去中心化不可能同时达到)也要进行相应的平衡。 3)Off-chain(脱链计算、链外计算)来解放主链负担。从以太坊2.0的分片到L2网络,全部工作无非围绕如何解放主链负担来进行。即,繁重的数据计算交给主链之外进行——可能是分片这类划分任务群组的方式,或者L2、甚至是非区块链系统来承载数据计算,最终结果返回到主链存证。主链的一致性共识提供数据结果的验证,保证充分的去中心化和安全,而繁重的数据计算交给主链之外的平台进行。 虽然这些性能卓越的平台工作时牺牲了一些去中心化或者安全,但可以通过零知识证明、TEE等技术手段实现主链对链外平台的监督和验证。整体上的思路就是脱链/链外计算,把计算(存储等资源消耗)与存证分开。 近期,行业出现一个新提法:模块化公链。类似互联网协议分层,未来公链会分执行层 (Execution Layer)、 结算层 (Settlement Layer)、 数据可用性层 (Data Availability Layer)。在以太坊上,执行层就是运行各类Dapp的L2,然后将打包的的交易数据(Rollup)返回到以太坊主链上做验证上链,目前数据同样是存储到以太坊上(当然是做Rollup打包后),但对于日益膨胀的原始数据,有人考虑设立数据可用性层来存储数据,进一步解放以太坊主链,使其只做验证计算工作(共识)——毕竟,庞大的链上链下数据验证问题数据存储会进一步限制以太坊的性能。 当然,这种理想的分层方法还未得到验证,包括Vitalik也对数据可用性层安全性提出了质疑的声音。脱链计算最核心的问题就是链上链下数据验证问题,或者说,如何使链下的数据计算在链上得到共识,使得这种方式能够被去中心化用户相信。 图表1:公链通往Web3.0之演进历程 对于分片、L2和链外计算,公链就好比是货物运输管理严格的主干道(一致共识),不可能所有数据都跑在主干道上,支路的运输车辆,通过零知识证明等手段证明自己工作严谨、可信的前提下,可以将繁复的乡村毛细小路上的货物打包装箱后运行在主干道上。 如何向主链证明其数据结果可信,则要借助零知识证明、TEE等灵活的技术手段,以适应不同的工作场景。 图表2:脱链/链下计算的核心是与主链完成共识验证 另外,庞大的Web2.0时代的数据资产和计算方式将会继续长期存在,这些势必构成了Web3.0时代的一部分。对于这部分数据和计算如何与区块链主导的新生态进行融合,同时数据的存储、网络和计算内存等互联网基础资源的调用该如何协调,这些都是巨大的挑战。这方面的问题不是光靠跨链、预言机就能够解决的。 3.Web3.0数据计算:链外计算的三种模式 虽然数据计算脱离了主链,但分片、L2等技术手段还是考虑基础数据计算依托区块链,兼顾了去中心化的考虑。由于不可能三角的束缚,探索链外计算采用偏中心化等手段能够得到更高的扩展性,这种方案的关键是如何将链外计算结果在链上得到一致共识,通过TEE、零知识证明等技术手段实现链外数据计算结果回到主链上达成一致共识和安全。 链外计算的核心问题是是脱离主链,数据计算如何获得共识?也就是说,如何使得用户相信主链之外的计算? 本章节介绍三个典型案例。从这些不尽相同的实现方式,可以窥见Web3.0世界的数据计算实现方案繁杂的真实一面。未来Web3.0世界,也许不是理想的公链独木桥,而是纷繁复杂的百花齐放。 3.1.Oasis:共识层与执行层(ParaTime)分离的模块化分层设计 Oasis网络是一个运用权益证明(POS)、去中心化的Layer1区块链网络,其使用的模块化架构实现了共识层和智能合约执行层ParaTime层两部分的解耦合,即数据计算(合约执行)脱离了L1主链(即共识层),放在ParaTime层执行,且充分考虑了隐私计算。 同时在设计上,对共识层进行了尽可能简单化的设计,共识层仅处理Token的转移、质押以及解绑定等较为简单的操作,这一设计类似于以太坊Layer2项目将智能合约的执行与共识操作隔离相类似,均有助于提高网络的安全性与效率。而在ParaTime层的设计上,Oasis将该层的各个ParaTime模块相分离,不同的ParaTime模块可针对不同的需求做出相应的优化调整,彼此之间互相独立的完成运行。 图表3:Oasis平台体系结构 运行时,不同的ParaTime构建各自不同的执行环境、验证机制以及加密机制,智能合约在ParaTime层完成执行后,将其结果值提交至共识层。共识层则从ParaTime层中接受各类参数值,并将这些值写入下一个区块之中,同时处理较为基础的操作。而在运行过程中,若存在某个ParaTime的运行超载或出错,其仅会影响出错ParaTime提交到共识层的状态更新,不会对其他ParaTime的运行产生影响。为防止某一ParaTime层恶意向共识层发送过多的垃圾信息导致共识层运行速度降低,每一ParaTime层必须向共识层支付交易费用,从而增加负载攻击的成本。 图表4:ParaTime层与共识层工作流程 那么ParaTime层如何与L1主链完成对接以及达成共识呢?在执行结果的验证方面,Oasis采用差异检测来对ParaTime的执行结果进行验证。在执行差异检测时,会从节点中随机选择计算节点组成计算委员会,当委员会所有成员同意结果时,则会接受结果。如若检测到差异,则使用差异解析协议对其进行处理。差异检测成本更低执行更快,而差异解析则往往会耗费更多的成本。具体执行过程中,计算节点首先将执行结果通过Gossip协议网络发送到差异检测器,检测结果若无异常,则由验证器提交至共识层完成处理和出块。若是存在争议,则会启动差异解析协议来确定正确结果,并对产生争议结果的节点进行惩罚,由争议节点支付差异解析的成本。 不同的ParaTime在进行并行运算时,可以将每个结果同步提交至共识层,也可定期提交多个结果的融合值,以此实现ParaTime结果产出量与共识层出块数量的解耦合。但其缺点在于无法确定不同ParaTime之间的相对顺序,如ParaTime A产出的结果TA与ParaTime B产出的结果TB被同时提交至同一区块,则无法判断TA与TB的发生顺序。 除此以外,Oasis还支持通过IBC协议(链间通信协议,In