宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > DOT > 正文

有趣的 DApp 设计模式:First-class Asset

作者:

时间:1900/1/1 0:00:00

本篇文章的作者是Jan,文章阐述了Cell模型中支持的一种非常有趣的DApp设计模式:First-classAsset,它让加密资产变成区块链中的「一等公民」。喜欢函数式编程的工程师应该很熟悉一个名词:First-classFunction,翻译成中文应该叫「头等函数」或者「一等函数」。First-classFunction指的是一类编程语言,在这些语言中函数是一个完全独立的概念:函数可以被当作值赋给一个变量,可以被当作参数传递给其他函数,也可以被当作返回值从其它函数传出来。在这样的语言中我们可以像操纵数据一样操纵函数,所以在这些语言中函数和数据一样是「一等公民」。First-classFunction是函数式语言的一个关键特性,很多函数式编程的强大能力来源于此。NervosCKB使用Cell模型来构建整个共同知识库的状态。Cell模型是一个非常简单但是与现有区块链设计非常不同的状态模型,我们在设计Cell模型的时候已经意识到,基于Cell模型的DApp将拥有一些非常不同的性质,就像函数式编程和面向对象编程会产生风格迥异的设计模式和程序特性一样。在这篇文章中,我想阐述Cell模型可以支持的一种非常有趣的DApp设计模式,我们把它叫做First-classAsset,因为通过它我们可以将用户自定义的加密资产变成区块链中的「一等公民」。状态模型的快速入门

在Cell模型之前,各种区块链使用的状态模型基本上就是两种:UTXO模型和Account模型。使用UTXO模型的代表是比特币。UTXO是未被花费的交易输出的缩写,一个UTXO可以简单的理解为是一个比特币,然而和一般的硬币不同,每一个UTXO的面值都是不一样的。每个UTXO中都通过一段锁脚本记录了这枚硬币的所有者是谁,同时保证只有所有者能够花费这枚硬币。每一个比特币全节点都会维护当前所有UTXO的集合,这个集合我们就称为比特币账本的当前状态。每一次比特币转账都是一个从UTXO集合中删除几个硬币然后又增加几个新硬币的过程。由于整个账本状态是基于UTXO这个最小单元构建的,我们把它叫做UTXO模型。使用Account模型的代表是以太坊。Account就是账户,和银行账户类似,代表了资产的所有者,账户里面最重要的数据是余额,记录这个账户持有的以太币的数量。账户是资产所有者的代表,所有者可以是人或者智能合约,外部账户通过私钥签名来验证资产所有权,合约账户的所有权通过合约代码来确定,合约代码和状态都保存合约账户内部。外部账户要转账的时候,用户在交易中指明转账数量,账本中的付款方账户余额和收款方账户余额就会做相应的减少和增加。由于整个账本状态是基于账户这个最小单元构建的,我们把它叫做Account模型。First-classCoin

波卡创始人Gavin Wood:Web 3是“后斯诺登时代网络”,一个非常有趣的社会实验:金色财经报道,波卡Polkadot创始人Gavin Wood在BlockDown: DeData Conference大会上对互联网演变发表看法,他表示,因为爱德华·斯诺登事件,让互联网感到创建一个全新平台的紧迫性,他将这种在全球范围内进行人际互动的方式称为“后斯诺登时代网络”(Post-Snowden Web)。展望未来10年或20年,Gavin Wood未来大规模多用户应用程序框架可以为用户提供“实际”保证。当被要求预测十年后的Web 3,Gavin Wood回答说:“这将是一个非常有趣的社会实验,我们将看到世界对隐私、自我主权和透明度的关注,知道系统或服务规则如何运作,非常真实。”[2021/12/4 12:50:10]

UTXO模型和Account模型代表了构建账本状态的两种思路。账本是所有者与资产之间关系的集合。UTXO模型以资产为基础建模,先构建出「硬币」的概念,再给硬币赋予所有者的属性;Account模型以所有者为基础建模,先构建出「账户」的概念,再给账户赋予余额的属性。以哪种方式作为基础模型决定了系统中的操作的基本对象是资产还是账户。所以我们说,硬币是UTXO模型中的First-classCitizen,每一个UTXO都是一个具有独立标识符的对象,Coin是用户直接操作的对象,账户是基于Coin建立的上层概念。因此UTXO是First-classCoin。在Account模型中,账户是First-classCitizen,聚合在账户余额中的硬币没有独立的标识符。账户是用户直接操作的对象,资产的转移是由账户作为用户的代理实现的,这一点在接受方是合约账户时体现的最为明显。在这样的模型下,用户定义加密资产更像是通过第三方记账的方式,而非点对点的方式转移,这个差异会将第三方引入资产转移流程,增加智能合约的设计复杂度。为了降低这种复杂度,Account模型中的交易需要加入特殊的逻辑,但是这样的特殊逻辑只有助于原生资产,同时造成对原生资产和用户自定义资产的不同代码路径。对于这些问题,KelvinFitcher写过一篇LookingatownershipintheEVM进行了很好的分析,在此不再赘述。有了这些背景,我们应该更容易理解CKB的这一设计理念了:有了Cell模型,我们能够简化设计,并在NervosCKB上实现作为「一等公民」的用户定义资产,简称First-classAssets.First-classAssets与UTXO一样,具有独立标识符,可以被用户及脚本直接引用和操作。First-classState

Ripple CTO:“收集东西的动力”与“数字版权概念”是NFT有趣的两个点:Ripple首席技术官David Schwartz在最近的一次采访中表示,他认为与NFT相关的两个点很有趣,一个是“人们收集东西的动力”,另一个是数字版权的概念。Schwartz指出,尽管许多人目前拥有“捆绑的数字版权”(例如从谷歌Play商店购买的书籍或歌曲),但这些版权的用户体验并不好。(CryptoGlobe)[2021/3/22 19:06:28]

如何实现First-classAssets呢?无论用何种方式,我们都需要记录所有者和资产之间的关系。这些关系记录,本质上是经过共识的状态。要有First-classAssets,必须先有First-classState,而这正是Cell模型的出发点。NervosCKB的名字来自于CommonKnowledgeBase的缩写。我们之所以把Nervos网络中的区块链称为「共同知识库」,是因为它的责任是持续不断的对网络的共同状态形成全球共识,换句话说,CKB是一个由全球共识维护的状态库。一个状态库的基本模型,很自然的是将整个状态划分为更小的状态单元组织起来。这些更小的状态单元,就是Cell。由于Cell是一种状态单元,有独立的标识符,可以被直接引用,作为参数传递给脚本,它是CKB中的「一等公民」,也就是说状态是CKB中的「一等公民」。Cell不仅仅是一种First-classState,而且是最简单的一种First-classState:一个Cell中只有Capacity,Data,Lock以及Contract四个字段。如下图所示,Cell的所有者可以直接更新Cell中保存的状态,不需要经过任何中间方,而在Account模型中用户只能通过合约代码来操作账户内的状态,状态实际上是托管在合约手中的。值得指出的是,有了Cell,CKB实际上就获得了一种有状态的编程模型。一种普遍的观点是,以太坊编程模型的表达能力来自图灵完备的虚拟机,实际上通过账户使得智能合约能够保存计算状态是一个大过EVM的优点。CKB通过Cell和CKB-VM的组合实现了一种新的有状态的智能合约编程模型。这个编程模型更加适合Layer2,因为通过分析Layer2协议的共同模式我们可以看到,协议层之间的交互对象应该是状态对象而不是事件对象,Layer1应该是一个状态层而不是计算层。CKB编程模型的另一个特点是,不区分数据和代码。这句话的意思是,与Account模型不同,合约的状态和代码都可以储存在Cell的Data字段中,保存代码的Cell可以被其它Cell引用,合约的状态和代码不需要绑定在一起,存放在一个地方。开发者可以通过一条简单的指令把代码Cell或者数据Cell的内容载入运行时内存,然后根据需要自行将其解释为代码执行或者数据来读写。有了这些底层支持,我们就可以将一个合约的代码和状态分开保存在不同的地方:CodeCell的Code字段存放代码,而StateCell的State的字段则保存状态;在StateCell中通过Contractref引用CodeCell来建立对自身保存的State的业务逻辑约束,通过Lockref引用另外一个CodeCell来表达StateCell的所有权。每一个StateCell可以属于不同的用户,因此在Cell模型下独立的用户状态是非常容易实现的模式。如果想对CKB-VM上的合约编写有更多了解,请看这两篇文章:HelloCKB!AnIntroductiontoNervosCKB-VM有了这样一种编程模型,我们就能构造First-classAsset了。First-classAsset

马斯克:狗狗币是最有趣的加密货币:推特网友表示,人们把狗狗币当作笑话来取笑,却忽略了一个事实,那就是作为笑话是狗狗币最大的优点之一。对此,马斯克回复表示,它是最有趣的加密货币。[2021/2/7 19:09:16]

CKB中的用户定义资产可以这样来构造:设计资产定义合约,规定资产的主要约束;保存合约代码到AssetDefinitionCell中;在满足发行权限的情况下,发行者发行资产,并将资产状态保存在另外的StateCell中。StateCell的Contract字段引用保存了资产定义的CodeCell,保证StateCell的变化受到资产定义的约束;AssetCell的持有者可以通过更新Lock来改变AssetCell的所有者。可以看到,在这样的设计中,用户定义的资产是作为独立对象存在于系统中的,每一份资产都是一个Cell,每一份资产都拥有自己的标识符。我们完全可以认为AssetCell是UTXO的通用化版本。这样的First-classAsset有如下优点:AssetCell可以被引用,可以直接作为其它合约的参数传入。只要引用AssetCell的Input有正确的用户授权,合约就可以正常的使用用户的AssetCell;资产定义与资产状态分离。AssetDefinitionCell的所有者是资产的发行者,而AssetCell是属于每个用户的。AssetCell的授权逻辑和业务逻辑分离,所有权完全由自己的Lock决定,与AssetDefinition的逻辑无关,这意味着First-classAsset不是托管在资产发行者、开发者或是资产定义合约的手中,而是真正完全属于用户的;用户的资产相互隔离,用户资产状态独立。CKB的经济模型关注状态存储激励问题:用户在区块链上保存状态不仅需要支付写入费用,而且应该承担与存储时间成正比的存储成本。如果用户的资产状态混合在一个地方保存,这些状态的存储成本有谁来支付将是一个问题。;只要AssetDefinitionCell的Lock逻辑允许,资产定义可以独立更新。上面的示意图只是在CKB上实现First-classAsset的一种方式。除了上面讨论的方面,还有一些有趣的细节,例如,AssetDefinitionCell是不是可以有属于自己的状态?AssetDefinitionCell以及AssetCell的Capacity应该由谁来提供?对于这些问题,我们已经有了一些非常漂亮的想法。这些细节的设计、讨论和实现是我们现在正在进行的工作。Summary

The Block创始人:DeFi是当今加密货币和数字资产中最有趣的事情:推特网友Trolly McTrollface表示,批评DeFi是没有意义的,因为每个参与其中的人都知道这只是一堆名字听起来很滑稽的局,并且这其中每个人都相信自己能成功登上顶峰。The Block创始人Mike Dudas对此反驳称,这绝对不是真的,不要让没钱的人和永恒的怀疑论者使你相信这一点。DeFi是当今加密货币和数字资产中最有趣的事情(与CBDC/数字美元相比)。[2020/9/14]

Cell模型是一个高度抽象的模型,事实上,你不仅可以在Cell上实现First-classAsset,也可以在Cell上模拟Account。通过这篇文章的介绍我们可以看出,Cell模型是一个不同于UTXO模型和Account模型的新设计。除了状态模型的不同,CKB还将计算转移到了链外,在链上只需要对状态进行验证的逻辑。独特的状态模型和计算验证分离这两点决定了CKB的编程模型上必然会出现新的DApp范式和设计模式。从CKB白皮书完成到现在将近一年的时间中,我们看到越来越多的人开始关注和讨论First-classState和First-classAsset这两种新的思路,这些进展让我们非常兴奋。如果你有兴趣对First-classState和First-classAsset进行更多的探讨,或是在CKB的编程模型上有什么有趣的想法,欢迎联系我们讨论~CKB的代码已经完全开源,这篇文章介绍的内容在代码中都已经实现。欢迎给我们的代码提出各种意见:https://github.com/nervosnetwork/ckb-demo-ruby-sdkhttps://github.com/nervosnetwork/ckbhttps://github.com/nervosnetwork/ckb-vm感谢IanYang,XuejieXiao,KevinWang在CKB和Cell模型设计中提供的帮助~

声音 | DRW控股创始人:对我来说,更有趣的是比特币的应用方法:DRW控股公司的创始人兼交易商大亨Don Wilson称,有很多关于比特币存储价值的争论。但对我来说更有趣的是比特币的应用方法,在一个系统中没有信任的传输能力是具有巨大破坏性的。[2018/9/19]

标签:ASSCELCELLSETViva ClassicCELL价格一个比特币要挖多久CellETFPeseta Digital

DOT热门资讯
什么时候“比特币”将不再产生强烈的分裂?

本文来自:闪电HSL,作者:黄世亮;星球日报经授权转发。第0章引言在加密数字货币和区块链历史上,称得上巨大的分裂的事件有三次.

1900/1/1 0:00:00
星球日报 | 澳本聪推出比特币项目Metanet,吴忌寒称其是在羞辱“侧链”;V神与孙宇晨的论战疑似升级

头条 澳本聪推出比特币项目Metanet,称其为“互联网的替代品”澳本聪在CoinGeek周会议上推出一个新的比特币项目Metanet。澳本聪称:“Metanet本质上是一个商品分类账,它将会改变游戏规则.

1900/1/1 0:00:00
Smart Dubai(智慧迪拜)计划推行政府无纸化办公,并在未来几年落地20余项“区块链+政务”应用

提到迪拜,除了大胆的建筑、街头的超跑、帅气的王子,你还会想到什么?其实,迪拜还是全球前沿科技的应用中心。在自动驾驶公共交通服务计划、雨林酒店、机器人警察、太阳能塔、火星科学城之外,迪拜也在关注并积极布局区块链相关应用.

1900/1/1 0:00:00
判例获得司法认可,「保全网」想用区块链降低维权成本

在国内,内容版权受到侵犯,维权并不容易。一个最现实的原因就是维权成本高,如果你不是琼瑶阿姨,一部作品只几个亿,但光是证明“你的作品是你创作的”都得花个好几千,你也许就此望而却步.

1900/1/1 0:00:00
深度解读香港虚拟资产新政系列(四)之虚拟资产交易平台运营者

前言 香港新政深度解读系列第四篇会重点解读虚拟资产交易平台运营者将会被施加的监管要求。之前在第一篇宏观政策解读中提到,香港证监会对于交易所并没有非常确定的监管规定,而是在监管规定附录2上定义标题为《可能規管虛擬資產交易平台營運者的概念.

1900/1/1 0:00:00
资产上链与STO:通证化与证券化的异同

本文来自:哈希未来,作者:哈希未来,星球日报经授权转发。ICO、STO、资产上链的起源现代证券的“股份制”起源于古老的合伙制。最早在罗马时代.

1900/1/1 0:00:00