白话Cell模型之一

由于工作原因,最近经常接触 Cell 模型,发现很多人对 Cell 模型的理解比较费力。所以我也在思考是否可以通过一种简单的方式向普通人解释清楚 Cell 模型,让更多人有更直观的理解,于是就有了这篇文章的尝试。

首先我们从最早的区块链鼻祖 Bitcoin 开始。众所周知 Bitcoin 是一种点对点的电子支付系统,在 Bitcoin 中使用了一种叫做 UTXO 的模型,我们可以把 UTXO 看成一个盒子。是的,没错是个盒子,而不是一个账本,不要慌。这个盒子里存放的是一个数字,表示这个盒子的面值,另外这个盒子有一把锁,只有拥有对应钥匙的人可以打开这个盒子。在进行转账时,拥有者使用钥匙打开锁,重新找到另外一个空盒子,将新的面额放进去,并配上一把新拥有者的锁。这样,交易可以简单理解为打开盒子,取出里面的钱,销毁原来的盒子,放到另外的盒子里。

我们总结下,盒子表示 UTXO,数据保存在 UTXO 中,而锁用来表示所有权。密码学实在是一项伟大的发明,把物理世界的锁的概念映射到了虚拟世界,脑海里回忆起小时候带锁的笔记本和家里的保险柜。

介绍完 UTXO 模型,再介绍 Account 模型,最出名的当属 Account 模型的首创 Ethereum。在Ethereum 中 Account 模型存储的也是数据,不过与 UTXO 不同的是,Account 里面除了数据还有逻辑。以 ERC20 合约为例,它也是一个盒子!不过这个盒子里存的可不是钱,而是一套复杂的逻辑和数字。与 UTXO 不同,Account 模型的盒子是一直被重复利用的,且无法打开的。在出厂设置的时候,我们会把一套逻辑写到盒子里,然后只留几个固定的按钮给外界。比如如果你要转账,需要拿出标示你身份的卡片输入密码,然后将转账金额以及接受方等信息输入,然后点击转账。盒子接受到信息后,扣除你的金额并写入对方账号,更新内部的数据,用户的金额一直保存在盒子中。搞过编程的同学很快就明白 Account 模型就是现实世界中的面向对象模型,对外的操作界面就是暴露出来的接口。(我老婆说很像银行里的 ATM 机,她说的没错)

总结下 Account 模型,盒子保存逻辑和数据,出厂设置时将逻辑写入盒子后就永远无法更改了。如果需要修改数据,只能通过外部的按钮去操作。所有人的钱都集中记录在盒子里,每次交易只要输入交易信息就可以了,盒子处理完会更新最新的数据。

下面该主角 Cell 模型出场了,大家对它都还很陌生,不过很快就能熟悉了。在 Cell 模型中,我们也可以把 Cell 看成一个盒子!Cell 模型跟 UTXO 模型非常像,还记得我们开始的 UTXO 模型么?我们把它的概念全部照搬过来,然后施加一点小小的魔法。原来的盒子里放的只是数字,只能表示钱,在 Cell 模型里我们会为每个盒子都带上一套逻辑,也就是现在盒子里的数据不仅可以表示是钱还可以表示虚拟猫咪等等。另外原来的 UTXO 用的锁都是同一类型的,比如都是普通锁,而在 Cell模型里锁是可以让用户自己 DIY 的,可以玩出很多花样,可以有指纹的、刷脸的等等。

总结下,Cell 模型是更通用的 UTXO 模型,体现在两个方面:锁可以 DIY,数据是施了魔法的。所以说 CKB 是继承 Bitcoin 的模型,同时吸收了 Ethereum 可编程的优点。

可能有人会问,这样做的优点是什么或者说为什么要设计 Cell 模型呢?以及我们该怎样使用 Cell 模型呢?不急,后面我会继续更新两篇文章来做这方面的介绍。


刷个广告,原文见 https://mp.weixin.qq.com/s?__biz=Mzg4NzE2MjYzNg==&mid=2247483682&idx=1&sn=725e3694e4ba10335d14bc56c4f50058&chksm=cf8fd341f8f85a5701c571e3b80e0d13e75bdd75e4ffbc9435194c27f36ec74591885d709e7a&token=1005462854&lang=zh_CN#rd

4 Likes

哈哈哈 这个介绍不错 通俗易懂

1 Like

注意!还是完全公开透明的盒子 !