6.1 BCX-NHAS-1808标准

本章主要讲述,在支持非同质数字资产的Cocos-BCX链上,我们考察了现有的多种非同质数字资产标准,并结合游戏行业需求定义了BCX-NHAS-1808非同质数字资产标准用于规范所有将在BCX链上发布和流通的非同质数字资产。

标准特性

泛用的唯一价值表达

1808标准定义的非同质数字资产支持丰富的数据自定义、扩展方法,对各类游戏中的资产类型有良好的兼容性,可作为各类游戏数据的泛用表达。

跨越多个使用场景而互不影响(世界墙)

扩展数据区域以域为单位组合,每一个域绑定一个或若干仅对自己负责的合约,代表的是一个使用场景(游戏世界)所专有的数据区域,域展开之后的键值对信息代表了一系列游戏业务相关的数据,而不同域之间的数据可互读但互不可写,即不同使用场景间的数据变更不会互相影响,游戏间的“世界墙”会阻止这些属性进入其他的世界,不会存在“A游戏中降级的装备到了B游戏发现居然也降级了”的情况。

世界观兼容设计

1808标准定义的非同质数字资产允许在同一世界观下的数字资产在不同的业务场景中使用,因此需要有一定的规则用于在不同业务实体中平衡该资产价值(能力值)。
在1808标准中,资产实例在新的业务场景中引用时会确定一个相对属性,该属性以某一个确定的其他域数据作为参考,代表该资产的基本价值,并且该数据能够在同一世界观下的其他业务实体中识别,当该资产实例进入不同的业务实体时,会根据此属性确定在本业务实体中的价值,而其他属性例如装备技能等信息由业务实体的域数据形式补充。

跨网络跨标准兼容设计

本标准定义的数字资产具备兼容其他网络非同质数字资产标准的设计,包括ERC-721、ERC-1155、ERC-998等,其中针对通过合约定义的单一非同质数字资产类型(ERC-721等),可藉由定义一个具备相同自定义数据结构的资产类型完成资产实例的兼容;针对合约定义的可嵌套/组合资产类型(ERC-998等),可藉由在扩展数据区域中添加资产组合关系数据完成兼容。

允许资产所有者放弃特定域数据

1808标准数字资产的域数据会随着经历的游戏数量增加而留下游戏的记录,当所有者因为道具强化错误、被赋予负面属性、希望重新挑战游戏等原因不再需要某个游戏中产生的数据时,可以选择删除这个游戏对应的域数据,使资产重新以初始的状态进入游戏。
资产所有者对资产域数据的控制权限仅限于对指定域数据的完全移除,而非对域数据进行修改,以免所有者通过修改这些域数据达到作弊效果。此外,域数据的删除权限也可以有效防止恶意合约向特定资产写入大量垃圾数据导致数据冗余。

在链内将资产作为镶嵌品或模块组合使用

1808标准非同质资产的嵌套组合设计

1808标准非同质资产的嵌套组合设计

以游戏为例,装备道具可能是由更多的组件、物品组合而成的,因此区块链游戏的非同质数字资产也应该具备能够嵌套包含的特性。这一情况下每一个非同质资产都可以由多个非同质资产组成,父级资产可以包含一个或多个子级资产,子级资产又可以包含其他的子级资产。

对于具有装备建造或组合的游戏场景,1808标准提供支持资产组合的设计,扩展数据中包含记录组合关系的区域,区域数据在资产组合时记录此次嵌套关系的信息,在此关系解除前,被嵌套的子级资产将无法发生所有权转移的行为。

非同质资产标准对比

目前较为流行的非同质数字资产标准有以太坊网络的ERC-721、ERC-1155、ERC-998等,这些标准非同质资产用于以太坊网络上不同的使用场景和需求:

ERC-721
以太坊网络中被官方正式接受的一种通过智能合约定义的非同质数字资产标准,具备可自定义的数据区,为物品或记录的数字化提供了可能。 代表应用:加密猫、加密名人等。

ERC-1155
由Enjin提出的一种在以太坊的单一智能合约中定义多个非同质资产的标准接口,主要服务于区块链游戏中的虚拟道具。 代表应用:War of Crypto。

ERC-998
由Matt Lockyer提出的一种在以太坊的智能合约中定义的可组合非同质代币标准(CNFT, Composable NFTs) 。

非同质资产标准对比

非同质资产标准对比

上述三种非同质资产标准与1808标准的对比图,该图就非同质资产在链和游戏上可能涉及的要点作了简单对比,其中红色的差异部分正是COCOS-BCX针对链上游戏运行需求对1808标准设计的特性,这些特性除了与BCX链网络自身的特性有关外,也与1808标准资产的数据结构设计有关。

数据结构

1808标准非同质资产的数据结构

1808标准非同质资产的数据结构

如上图所示,1808标准非同质资产的数据结构分为两个基本功能区:固有数据区域用来存储非同质数字资产的基本信息,分为资产ID、世界观申明以及基础数据区域三段;扩展数据区域是为非同质数字资产属性扩展专门设计的功能性数据区域,包括组合关系数据和域数据两部分。

固有数据定义该非同质数字资产ID、世界观及其他基础数据,其中资产ID是该资产实例在分布记账式网络中的唯一标识,是该资产实例在进行访问、查询、修改等动作时的唯一凭据;世界观包括该资产生效和支持的游戏类型、世界,以及此资产在网络中流通需要使用的世界流通货币类型;基础数据包括资产所有者ID、制作者ID、制作时间和该资产的基本属性(例如装备描述等)。

数据包括资产所有者ID、制作者ID、制作时间和该资产的基本属性(例如装备描述等)。 扩展数据区域是该资产支持的世界观内各业务数据的存储区域,不同业务实体在该区域拥有专属的域标识和数据区,不同业务实体间的数据区相互隔离,域数据以域标识和数据的键值对形式存储,扩展区域同时包含一个用于表达资产组合、嵌套关系的数据区域,用于描述资产的组合和从属关系。

数据结构对照

本标准定义的非同质数字资产固有数据区域各字段类型和标识对照表。

Asset_ID字段类型为asset_id_type,该类型的设计原则为保持网络中的唯一性即可,对ID长度没有硬性要求,但从多网络兼容性考虑,ID的最大样本数量应能够覆盖现有各式去中心分布账本式网络中的非同质数字资产实例的最大预期数量,例如以太坊网络中的资产ID为40字节长度的hash地址,可支持的最大样本数为1.462*10^48个,则在应用此标准的网络中设计此资产ID时应考虑使用样本容量大于该数值的hash地址或其他唯一标识方式。

World_view字段类型为world_view_type,包含此资产适用的世界观ID与该世界观对应的世界流通货币,其中世界观ID为网络唯一标识,流通货币为该货币的唯一符号(使用符号作为唯一凭证的网络)或地址(使用地址作为唯一凭证的网络)。

Asset_owner与Asset_creator字段类型为account_id_type,应采用具备唯一性和足够样本容量的数据类型

Asset_create_time字段类型为time_point_sec,用以标识此资产实例创造的日期,由该实例化事务完成时的账本时间戳决定

Asset_description字段类型为string,是一段可用于表达资产实例基本属性的数据,可采用自定的解析或加密方式处理该段数据以匹配特定的业务实体和应用场景

 Mod_data字段类型为id列表,是一个由标识父级资产ID和子级资产ID列表组成的关系表,用于描述不同业务实体中资产的组合、嵌套关系

 World_view字段类型为map,是一个由域标识和域数据组成的键值对映射表,其中域标识为业务实体的类型标记,对应一个或若干合约,该业务对此资产实例的所有数据交互将在此区域内进行

 Session_key字段类型为contract_id_type,为该业务应包含的一个或多核合约的id,该id应与其他唯一标识一样具备唯一性与充足的样本容量

 Session_data字段类型为map,由域内键inner_key和域内值inner_value这一键和值都为字符串的键值对组成,键与值的具体数据均由负责此域的业务实体自行定义,并可以根据其需求使用结构化或加密的字符串作为其中数据。


6.1 BCX-NHAS-1808标准


本章主要讲述,在支持非同质数字资产的Cocos-BCX链上,我们考察了现有的多种非同质数字资产标准,并结合游戏行业需求定义了BCX-NHAS-1808非同质数字资产标准用于规范所有将在BCX链上发布和流通的非同质数字资产。

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.