在上一篇《
小白都能看懂的 Cell 模型》中,我们用大白话简单介绍了 Cell 模型。在这篇文章中,我们将会从「验证模型」和「状态存储」两个方面来介绍 Cell 模型——一个适合分层架构的区块链设计
秘猿科技区块链小课堂第 21 期
首先我们来简单回顾一下区块链的发展历史:Bitcoin 作为一种点对点的电子现金系统应运而生,而后出现了更通用的去中心化应用平台 Ethereum,随着区块链的发展,各种各样的新项目也涌现了出来。在分析 Cell 模型设计之前,我们先了解一下区块链的分层理念。
为什么选择了分层?
扩展性问题
在区块链的发展过程中,始终有一座大山横亘在我们面前:扩展性问题。区块链如果不能解决扩展性问题,将会严重限制链上应用的发展。因为安全、扩展性、去中心化这个不可能三角问题的存在,在不牺牲安全和去中心化的前提下,要在 Layer 1 上解决扩展性问题几乎是不可能完成的任务,因此我们只能绕道而行,选择分层方案。
状态爆炸问题
随着区块链慢慢被更多人使用,它必然会面临状态爆炸的问题,若是将所有的信息都存储在区块链上显然是不合理的。
交易费用问题
在经济学上判断一项技术能否被大规模使用的标准是:是否节约了全社会的交易成本。在区块链中所有交易和存储都需要经过全网共识,这就使得交易费用相对昂贵。从这个角度来讲,分层架构也是必然的选择。
这里类比一个计算机的例子:在计算机中有各种存储设备,包括寄存器、多级缓存、内存、硬盘,运行速度越快的设备价格越高,但正是计算机充分利用了分层设计,才使得它以更低成本被制造并被大众所接受。
在区块链中同样如此,安全和去中心化是非常昂贵的,分层可以降低成本,使其成为一种更普世的基础设施。所以当我们在思考如何去设计区块链时,就需要设想未来的场景,它应该是一个分层的区块链。
不知道以上的分析是否会帮助你理解区块链的分层呢?在此基础之上,我们来介绍为什么选择使用 Cell 模型的设计。
Account 模型与 Cell 模型
Bitcoin 的 UTXO 模型只能作为数字货币,并非通用的模型,所以这里我们主要对比 Account 模型和 Cell 模型。
Cell 模型继承了 UTXO 的衣钵,是一种验证模型;而 Account 模型是一种计算模型。关于验证模型和计算模型的论战从来没有停止过,今天我们就从另外一个角度来审视这个问题。
现有的 Layer 2 方案,包括闪电网络,雷电网络,Plasma 等,在将其 Layer 2 上的资产退回到 Layer 1 时,都采用了提交证明、验证挑战的机制。所以 Layer 1 更像是一个法院的角色,通过对用户提交的证明来进行审判。在这种模式下,Layer 1 更多的是担任了验证者的角色,而非计算者。从这一层面来讲,Layer 1 更适合采用 Cell 模型,而 Account 模型在计算上更胜一筹。
在 Ethereum 中状态存储的问题已经非常严重,全节点的数据存储代价已经很高,且其中保存有大量的僵尸账号。在 Account 模型中,同一合约的所有用户的资产都是保存在一个账号中的,将用户的状态拆分非常困难。在 Ethereum 中,交易采用的一次付费永久保存的方式,显然是不合理的。
区块链作为一种公共基础设施,更适合以租用的方式来进行付费,即数据的存储需要持续付费。
- 对于 Account 模型,同一合约所有的用户数据都是存储在一起,这种情况下针对不同用户按照容量和时间进行收费非常困难。
- 对于 Cell 模型,每个用户的虚拟资产是单独存储在各自的 Cell 中。这种情况下如果用户不想继续持有资产,可以将 Cell 中的数据释放,这样就不需要继续付费, Layer 1 就不会保存大量无用的资产, Layer 1 的数据存储将会保持在一个良性的增长状态。
从上面的分析中我们可以看出,Cell 模型是适合分层架构的区块链设计,拥有灵活验证、合理的状态存储制度的特性。