比特币中使用UTXO编程模型的好处是什么
扫描二维码
随时随地手机看文章
有了分层的架构,就可以创建负担得起的通用基础设施,在我看来,这是区块链驱动世界唯一可行的未来。通过我的工作,我意识到人们很难理解Cell模型的概念。本文试图以一种简化的方式来解释Cell模型,以便于大多数人都能访问。
首先,从比特币开始,向前推进是很重要的。比特币被称为点对点电子支付系统,使用一种名为UTXO的编程模型。
将UTXO看作一个盒子是最简单的方法。(没错,不是账本,是箱子。)该框包含一个表示货币价值的数字,并有一个锁。只有拿着相应钥匙的人才能打开盒子。当进行转账时,持有钥匙的所有者/个人使用钥匙解锁锁,找到另一个空盒子,将新面值放入新盒子中,并附加一个新所有者的锁。
比特币的工作原理就像一个锁着的盒子,里面有一些钱:一个拿着钥匙的人可以打开盒子花一些钱。每次取出钱的时候,旧的盒子就会被销毁,剩下的钱就需要一个新的盒子来存放。
整个交易可以概括为打开盒子,取出里面的钱,毁掉原来的盒子,然后把它放进另一个盒子里。
总而言之,盒子表示存储数据的UTXO模型,锁表示所有权。密码学是一项伟大的发明,它将物理世界中的锁的概念映射到虚拟世界。
除了UTXO模型,还有account模型。这个模型最著名的例子是以太坊。除了数据,以太坊账户模型中还有计算逻辑。你可以把ERC20合约想象成一个盒子,里面不是钱,而是一组复杂的逻辑和数字。
与UTXO不同,account模型的框总是被重用,并且不能在其生命周期内打开。一套规则会被写进盒子里,当它们被制作出来的时候,一些按钮会被放置到位,这样人们就可以和盒子互动了。例如,规则可能会这样说: 如果一方想转账,那么她或他或它需要出示身份证明的一种形式,并输入密码。一旦完成前面的步骤,就需要以下信息: 转账金额、收件人和其他信息。输入后,她或他或它需要按下transfer按钮来完成传输。在接收到信息后,它会从您的金额中扣除,并对另一方的账户进行更改,然后更新所有内部数据。熟悉编程的人很快就会发现,account模型类似于现实世界中的面向对象编程,按钮的概念类似于API。)我妻子说,听起来像自动取款机。她是对的。)
如果我们扩展盒子的比喻,以太坊的功能更像是一台ATM机。
在account模型中,该框保存逻辑和数据。在将逻辑写入工厂设置的方框后,永远不能更改它。您只能在需要修改数据时使用外部按钮。每个人的钱都记录在盒子里。要进行交易只需要输入交易信息。该框根据规则处理请求并更新数据。
在cell模型中,我们也可以将cell看作一个盒子,因为它与UTXO模型非常相似。您可以对该框执行一些魔术,并编写一组规则来指定该框可以存储什么。通过这种方式,单元内的数据可以表示货币和/或加密猫之类的资产。此外,UTXO中的锁也是相同的。但是在cell格模型中,用户可以自由地更改和使用定制的锁。(你可以想想简单的挂锁vs指纹锁或数字锁)
Cell就像一个盒子,可以包含具有任意锁的任意对象。
总的来说,cell模型是一个广义的UTXO模型,具有以下两个意义:第一,锁是可定制的;其次,盒子可以存储用户定义的数据。Nervos的CKB有一个结合了比特币编程模型和以太坊编程模型优点的编程模型。
有些人可能会好奇在什么意义上cell模型是高级的,以及如何使用它的编程模型。
首先理解区块链系统的演化是很重要的。比特币诞生了p2p支付系统,后来又诞生了更广义的分散式应用平台以太坊。区块链的进一步发展带来了各种各样的新项目,而且越来越多样化。
由于需要全网络一致同意和存储成本高昂,区块链不可避免地将采用一种架构,这种架构允许在一致同意的范围内实现灵活性,允许它们大规模交付低成本的交易。
两个主要的障碍
继续阻碍区块链开发的一个障碍是可伸缩性问题。如果我们不能缓解这个问题,区块链的能力将是有限的,我们将不会看到开发健壮的高级应用程序,从而释放分散式经济的真正潜力。
可伸缩性是“区块链三重困境”的一部分,其中还包括安全性和分散性。
第二个障碍是交易成本问题。一个社会整体交易成本的降低是衡量一项技术在规模上可行性的最有力指标之一。由于需要全网络一致同意的交易和存储成本高昂,区块链不可避免地将采用一种架构,这种架构允许在一致同意的范围内实现灵活性,允许它们大规模交付低成本的交易。
解决方案: 分层架构
计算机爱好者知道他们的设备包含一个复杂的分层架构,包括内存、硬盘、多级缓存和各种寄存器。这种体系结构允许普通大众以低成本使用,以及可伸缩的能力,以满足不断增长的计算挑战。
我们可以将相同的设计原则应用于区块链。有了分层的架构,就可以创建负担得起的通用基础设施,在我看来,这是区块链驱动的世界唯一可行的未来。随着Lightning、Plasma和state/payment通道的兴起,我们已经可以看到这种体系结构的出现,以及它所促进的用例。
在接近这个分层的区块链架构时,研究区块链系统的三个不同数据模型之间的关系非常重要:比特币的UTXO模型、 account模型和我们的贡献——cell 模型。
验证与计算模型
Cell单元模型由UTXO模型派生而来,因此是一个验证模型。相反,帐户模型是一个计算模型。
当前的第2层解决方案,如闪电网络,在资产从第2层返回到第1层时,使用一个提交证明和验证机制。由于第1层扮演的是验证角色,而不是计算角色,我们可以看到UTXO或cell模型是这种构造的合适方法。
解决方案
目前,以太坊和“下一代”区块链面临着国家规模不断增长的严峻挑战。虽然大规模采用仍然遥遥领先,但全节点的数据存储成本已经很高,包括各种僵尸帐户,这让情况变得更糟。
使用 account模型,所有用户的资产都存储在一个合约中。如果没有为每个用户划分状态的直接方法,就很难根据每个用户占用状态的容量和持续时间向他们收费。
这对收费的实施提出了挑战,目前在以太坊,交易费用是一次性支付,授予永久的州存储。考虑到区块链是公共基础设施,这种模式是不可持续的。我们可以看出,连续支付仓储空间租金是一种更加合理的方式。
在cell模型中,每个用户的数字资产分别存储在各自的单元中。如果用户不想继续持有资产,则可以释放单元中的数据,并将存储容量出售或借给其他用户。这种设计确保了第1层不会无限期地存储废弃的资产,并为状态存储开辟了新的可能性。
结论
总的来说,很明显,当考虑到存储和验证需求时,cell模型最适合分层区块链体系结构的需求。