当前位置:首页 > 企业新闻
在 CKB 上设计一个 UDT 标准的方法:Part 1
时间:2020-11-22 来源:夜猫电竞 浏览量 70447 次

本文基于Nervos Talk上公开发表的《关于UDT标准评价规范的讨论》(https://TALK.Nervos.ORG/t/discussion-on-UDT -标准- Evalue )。 本文主要讨论了哪些不同种类的用户不用于UDT模块、UDT模块应该设置在哪个抽象层、应该反对哪个操作者和检索功能,以及我们的标准不是像ERC20那样获得非常简单的功能性API。

然后,我们简单地讨论了一些体系结构方案,获取了关于Cell可行性、非正式性和高层的描述性文档,并反对UDT操作员和搜索功能。 作者: Tannr,Nervos工程师具有分布式和P2P网络的研发经验,讨厌自学分析哲学和形式系统。 原文链接:在https://talk.nervos.org/t/approach-to-designing-a-user-defined-token-standard CKB中,合同是脚本,将继续执行它们的阿卡这样的原作在设计UDT标准方面有两个意义。 含义1 :模块搜索标准化数据定位的第一个影响是合同可以从外部调用的催促——获取呼叫或基于事件的模块。

这些合同作为检索模块返回检索信息,作为账户模块产生连锁的副反应。 这意味着著在CKB上,为智能合同设置搜索模块是没有意义的。

毫无疑问,搜索Token信息的功能很重要,因此明确提出了如果不是通过智能合同取得的API,应该是什么的问题。 检索程序可以采访节点取得的RPC API,如果向这些RPC取得参数,向API服务器通报明确的查询方,节点就可以采访链数据。 因此,标准化智能合同的逻辑是合适的,但足以反对在CKB上搜索UDT。

为了使服务器能够成功地查询数据,需要将重要的UDT数据的保存位置标准化。 为了标准化UDT数据的存储位置,必须标准化比由Cell构成的适当体系结构更大的体系结构。

必须忘记标准必须是可扩展的,以便在这个设计过程中能够适应环境的各种用例。 像ERC20这样的标准,智能合同的功能手写签名和预期返回值都已注册,但构建细节几乎由开发者要求。

与此相反,CKB-UDT标准拒绝登录至少一个基础架构(和一些明确的构建细节),从而允许开发人员构建自定义Token。 灵活性和可扩展性是Nervos Network重视的价值观,因此需要基本的体系结构设计标准,但请尽量不要牺牲灵活性和可扩展性。 意思2 :编程模块账户规则集的第二个影响是CKB上的智能合同,写在CEL内,但实质上是账户级别的规则集。

这些合同——从现在开始称为“脚本”——,在帐户环境中继续运行。 你可以采访账户上的所有信息。 不仅仅是连接的单元格。 当然,帐户可以在其不同的Cell中包含多个脚本。

因此,可以将脚本视为整个帐户规则集的特定子集,这些规则集是每个脚本中规则的子集。 帐户在网络上而不是脚本上构建状态变化。

如果开发者希望在Ethereum的顶部部署自定义编程的不道德,他们的重点就在于智能合同的不道德。 另一方面,在CKB中,重点是账户的不道德(账户讲述了一系列状态的变更和不道德),通过取得研发脚本并继续执行账户规则,更有意义。 换句话说,许多智能合同平台关注定制编程的不道德智能合同的构建,但CKB使用了帐户优先的方法。

账户的设计是最重要的不存在脚本是为了保证遵守交易账户设计的规则。 因此,典型的智能合同平台上的自定义Token标准定义了智能合同的编程模块,用不同的合同函数与Token操作者相关联,而CKB上的自定义Token标准定义了帐户优先模块,不同的帐户拒绝UDT标准是设计CKB-UDT标准的第一步,是理解谁用于它,为什么用于它。

这表明必须反对什么具体的操作和搜索功能。 具体操作与帐户规则集同质化,与标准化数据的方向、大小和格式同质化。 由于帐户受规则集约束,规则集是帐户继续运行时的结构和内容规则,因此登录帐户规则集必须登录得比相应的结构大。 如前一节所述,鉴于CKB的编程模型,注册标准化结构是不可避免的。

夜猫电竞竞猜平台

用户主要是DApp开发者、钱包、交易所和其他代表性的最终用户继续状态分解或搜索的服务。 这里既没有提到Holder也没有提到DApp用户。

夜猫电竞竞猜平台

因为前者和后者都是通过其他接口用于UDT的。 因此,实质上,只有Token、DApp和链外软件服务的开发者不需要与CKB-UDT进行交互。 此外,用户分为三种不同类型中的一种或多种:开发者、生成器和查询。

这个上下文的开发人员是需要专门针对某个自定义Token的开发人员。 生成器是传递UDT-specific帐户的任何外部服务,查询是搜索UDT-specific信息的任何外部服务。

在进一步讨论UDT标准应该反对的实际搜索和状态变更之前,解读Nervos Network明确提出的特定规则必须受到整个系统的限制,这是最重要的。 成本允许UDT-specific帐户必须继续执行脚本的计算支出。

在链中存储UDT-specific状态的容量成本。 帐户成本是指继续运行一个操作员所需的帐户数量和每个帐户的大小(这不影响帐户手续费)。

可用性约束的可扩展性要求开发人员在标准兼容性的前提下构建和定制Token。 搜索的复杂性被用作查询,用于收集和分析相关信息。 还包括收集帐户中必须包括的信息。

UDT的使用程度各不相同,必须重新增加新功能反对新UDT,开展多少工作? 我们反对UDT标准的操作者和搜索功能最终必须符合各种不同的用例,包括定制货币政策、产品定制上市计划和与其他DApp的互操作性。 注意:鉴于CKB的编程模型,将UDT-specific帐户继续执行规则的脚本与用户的实际持有人Token解法结合起来。 用户在Cell中拥有的实际Token称为“UDT实例”,负责管理存储系统级信息和继续执行帐户规则集的元数据和脚本的子集由我统称为“UDT定义”。

详情后述。 检索操作者检索某个地址下的UDT余额提供UDT元数据提供UDT账户的委托项目取得UDT实例取得实际的使用者UDT定义从实际的作者定义取得UDT实例的实际创立者集约持有人该UDT实例下的地址操作批准UDT实例后发送给UDT实例的用户焚烧UDT实例改版UDT定义初始UDT实例创建具有新UDT供应的UDT定义架构规范设计的规范课题之一是所有决策都是后续的意思基本体系结构规范对于解释帐户的结构和规则、说明数据查询和搜索应该如何展开很重要。

我们必须建立规范来明确提出账户分解和搜索规则(因为账户和搜索并不意味着登录所涉及的单元格)。 但是我们必须交易分解和检索规则来解读什么样的结构决定。

从一开始就最有意义。 所以,我确认了一些可行性框架,用于这个可行性框架设计账户规则集,寻找操作者,然后改变这个框架的哪个部分,以便更好地反对实际规则。

CKB编程模型的第一个架构决定——或架构特征3354可能是状态改变的逻辑与受该逻辑约束的实际状态之间的分离。 对于状态的任何组件(例如Cell或Cell的子集),将来可能会发生变化,需要另一个状态组件,包括检查逻辑。 其中,请注意“状态组件”是逻辑组件,因为它指一个或多个Cell。

因此,如果有人使用UDT实例作为展开帐户的处置,则需要第二个CEL,包括这些UDT实例的验证逻辑。 我称之为“UDT定义”。

由于需要修订检查逻辑,例如在安全漏洞和UDT用户批准后允许更改策略,因此需要第三个CEL,包括修订这些UDT定义的检查逻辑。 这称为UDT标准。 除元数据外,UDT定义在某种程度上是验证逻辑,包括不属于UDT实例的所有元数据。

问题是:将这些元数据存储在哪里? 元数据应该有自己的单元格吗? UDT定义的脚本(“UDT标准”)中是否应该作为agrs存储? 即使是部分UDT的元数据和验证逻辑分割的Cell,这些CEL也统称为“UDT定义”。 因此,我使用的UDT分类法不一定是1:1与实际的Cell同体。 不是物理分类法,而是逻辑分类法。

因此,该体系结构分为三个级别。 UDT实例UDT定义UDT标准UDT标准允许与UDT定义关联的有效帐户,UDT定义允许每个UDT实例的有效帐户。 Nervos的取得和开发者取得的UDT标准Cell是UDT标准水平,一个UDT标准没有很多UDT定义。 在UDT定义级别,一个UDT定义中没有很多UDT实例。

问题是,如果开发者负责管理UDT定义的构建,他们也负责管理UDT标准的构建,还是Nervos Network应该取得? 我们的目标是允许灵活的货币管理发售政策,因此可以采取两种方法。 第一种方法是为社区开发者获取UDT标准单元格,并通过args使其具有足够的部署性。

第二种方法是大于为了取得UDT标准而必须强制执行的规则集。 开发人员只要遵守适当的规则,就可以用任何方法构建UDT标准单元格。

如果希望最终将元数据保存为args并发送到DUT标准Cell,则必须标准化args的顺序和含义,以便其他服务器可以检索元数据。 如果标准单元格是由Nervos Network检索的,这不容易,因为args可以通过编程构建。

但是,如果开发者允许自己构建UDT标准单元格,则无需部署以在args中停止使用,可以省略一些可选功能、互联网新闻网络。 Nervos Network取得的UDT标准CEL允许在初始供应后铸造新的Token,停止使用w/a布尔型arg,铸造的追加参数(例如,一次有无相关人员投票,批准后部分铸造者, 他们确实需要升级性,所以将升级性设定为true,在另一个arginclude展开其他装备。

现在,每次升级UDT定义时,UDT标准Cell都包含此验证代码,从而减少了不必要的帐户大小。 但是,如果他们构建自己的UDT标准单元,就可以省略与该用例相关的功能。

一个可能的解决方案是对args进行标准化,而不管UDT标准脚本中实际包含的代码如何。 因此,即使标准脚本不将第三个arg视为“可删除标志”,也必须在其中包含表示无法删除的“false”值。 此外,必须编写脚本来忽略标志。

夜猫电竞

但这是一个“陈腐”的解决办法。 元数据将元数据Cell的参数定义为UDT,但考虑元数据(例如总供给量)存储在元数据Cell中而不是脚本中的情况。 脚本需要这些元数据的一部分。

例如,减少或增加供给(铸造或档案)时,最重要的是为脚本展开采访提供总供给量。 因此,将总供给量作为args包含在脚本中比存储在几乎不同的Cell中更容易。

响应有两种解决方案。 第一个是创建元数据Cell,在arg中获取具有outpoint的脚本。 帐户必须在deps字段中将此outpoint设置为dep。 脚本就这样读取元数据,展开检查改版或创设。

这样做的问题是读取数据必须额外计算支出。 幸运的是,CKB编程反对部分数据读出。

第二个解决方案是整合元数据。 一部分存储在args中,一部分存储在元数据Cell中。

Args存储状态更改逻辑的重要元数据,其他元数据存储在元数据Cell中。 但是,这使整体的事情变得复杂。

现在,元数据存储在两个位置,因此与一个脚本的验证逻辑相关的一些元数据与其他脚本的验证逻辑相关。 例如,totalSupply对铸造和归档最重要,但归档也可以由Holder继续执行。

通过在Cell中保存元数据,开发人员可以将其他元数据保存到更简单的数据结构中,从而获得更大的可扩展性。 因此,对包含脚本相关数据的Cell (元数据Cell )的提及可以作为arg展开传输。 在设计元数据单元格的结构时,必须确保脚本中的字段是序列化的。

例如,如果数据作为从键到值的同源存储,那么读取一个或两个数据是很重要的,因此脚本是同源的列表结构允许部分读取,但需要确认选项数据的处理方法。 在同源方面,可以省略键。

在列表结构中,省略的密钥迁移其他元数据的字节地址,所以仍然必须读取整个列表。 一个解决方案是标准化字节地址及其含义(例如,第一个x位仅用于名称),省略其他元数据段,用“空字节序列”进行响应。

这里的折衷是,如果开发者想从元数据Cell中省略一部分数据,无论是否被指出追加一部分,都必须空闲与保存一部分元数据所需的容量相同的容量。 Hashmaps一开始就空出了更多的空间。 具有两个键值对的Hashmaps在空闲状态下比具有两个元素的数组更好。 因此,最坏的情况是,在包含所有附加元数据的情况下,基于数组的结构空闲的空间很少,反对部分读取,共同体不反对。

无论列表、同源还是其他数据结构,都需要请求用于什么样的数据结构。 正确的序列化方法可以解决这些问题中的一些问题是,在这种情况下,脚本和查询有额外的反序列化支出。 UDT标准UDT标准Cell是一个锁定和类型脚本,用于作为UDT定义中继续执行的操作者获取验证逻辑。

包括权限管理、有效的状态变更和数据完整性的保证。 根据CKB的编程模型,有效的状态更改由类型脚本展开,权限由锁定脚本处理。 因此,UDT标准在物理上由两个CEL组成——个锁定脚本和一种脚本。

出乎意料的是,这使开发者的工作变得复杂。 因为他们必须保存的小区越多,开发越少的UDT首先必须享受更好的容量。 但是,允许他们开发自己的UDT标准Cell,可以删除验证码,节约容量。

所以这是权衡。 最糟糕的解决方案可能是想用于标准单元的开发者获得标准单元(这也节省了开发时间)。 只要自定义脚本强制运行所需的规则集,开发者也可以有权开发适合想要反对的其他操作者的UDT标准单元格。

迄今为止的体系结构介绍了UDT实例UDT定义——型脚本Cell。 元数据单元UDT标准——型脚本Cell; 目标脚本CellPart 1总结本文说明了帐户是CKB开发的主要编程模块而不是脚本。

夜猫电竞竞猜平台

我明确提出了一组UDT标准应该反对的操作者和搜索,说明为什么我们的UDT标准必须为社区开发的UDT注册特定的架构,然后阐述上层UDT架构, 相反,该体系结构在需要的操作员和搜索所需的单元的下一篇文章中详细讨论了帐户规则集,并根据这些规则集更好地说明了UDT体系结构。 例如,UDT定义改版后,UDT实例对UDT定义的提及不应该维持有效性,因此UDT标准必须强制执行Type ID功能这样的操作者。 另一个例子是,UDT定义应该接受防伪维护,但初始供应的UDT创设必须超越。 如何设计UDT的创设操作者,包括不影响哪个args,发送给哪个脚本等。

_夜猫电竞竞猜平台。

本文来源:夜猫电竞APP下载-www.rvbuildernews.com

版权所有亳州市夜猫电竞科技有限公司 皖ICP备60830988号-5

公司地址: 安徽省亳州市谯城区傲瑞大楼5148号 联系电话:0719-46744691

Copyright © 2018 Corporation,All Rights Reserved.

熊猫生活志熊猫生活志微信公众号
成都鑫华成都鑫华微信公众号