Skip to content

Latest commit

 

History

History
384 lines (269 loc) · 31.8 KB

README_cn.md

File metadata and controls

384 lines (269 loc) · 31.8 KB

English

1808 非同质数字资产标准和世界观系统 v1.0

1. 前言

介绍

COCOS 1808 标准(下文简称“1808 标准”)是一种面向去中心分布记账式网络的非同质数字 资产标准。非同质数字资产是表达各类非可替代事物的最佳选择,在游戏行业,非同质资产可以表 达的领域涵盖游戏道具、装备、人物角色、地图数据、甚至是数据扩展包。本手册同样对基于 1808 标准设计的世界观系统展开了讲解,例如世界穿越与多元宇宙等。

我们尽力通过本手册使读者更容易理解和运用 1808 标准与世界观系统,但并不意味着手册上的 所有描述都会与实际使用的标准、世界观系统永远一致,当发现文中描述与实施产生差异时,请即 时更新本手册或联系官方获取资讯。

编写目的

本手册的阅读对象为:使用 Cocos-BCX 区块链网络进行游戏开发、资产设计与发行、游戏世 界设计与管理等工作的从业者。阅读本手册,更好的理解 1808标准及其使用规范,以便在 BCX网络 上设计体验良好的数字资产和游戏世界。

COCOS 1808 标准

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

1808 标准的特性

泛用的唯一价值表达

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

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

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

世界观兼容设计

1808 标准定义的非同质数字资产允许在同一世界观下的数字资产在不同的业务场景中使用,因 此需要有一定的规则用于在不同业务实体中平衡该资产价值(能力值)。

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

跨网络跨标准兼容设计

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

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

1808 标准数字资产的域数据会随着经历的游戏数量增加而留下游戏的记录,当所有者因为道具 强化错误、被赋予负面属性、希望重新挑战游戏等原因不再需要某个游戏中产生的数据时,可以选 择删除这个游戏对应的域数据,使资产重新以初始的状态进入游戏。

资产所有者对资产域数据的控制权限仅限于对指定域数据的完全移除,而非对域数据进行修 改,以免所有者通过修改这些域数据达到作弊效果。此外,域数据的删除权限也可以有效防止恶意 合约向特定资产写入大量垃圾数据导致数据冗余。

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

图1

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

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

支持复杂的流通模型设计

未来资产在链上的市场行为将远不限于传统的交易和流通,因此势必需要为更加丰富的业务类 型打好基础。Cocos-BCX在设计时细化了资产的权限系统,将资产的使用权与所有权进行了划分。

图2

1808 标准数字资产的权属设计包含使用权和所有权两部分,两者的权限相互分离又有所关联。 使用权决定用户是否具备资产的大部分操作权限,而所有权决定用户是否具备资产的实际归属权和 关键操作权,并且特定操作在进行时可能需要所有者与使用者共同授权才可进行。
配合链系统对相关权属操作的细化,1808 标准数字资产能够支持传统链/合约系统无法做到的业 务逻辑,例如:资产租赁、抵押、典当等。

1808 标准与其他非同质资产标准的区别

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

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

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

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

    图3

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

1808 标准数据结构

图4

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

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

扩展数据区域是该资产支持的世界观内各业务数据的存储区域,包含组合关系数据区与域数据 两个部分,其中组合关系数据区包含两个表用于表达资产之间的嵌套组合关系;域数据区域则是不 同业务实体在该区域拥有的专属数据区,不同业务实体间的数据区相互隔离,域数据以域标识和数 据的键值对形式存储。

1808 标准数据结构对照

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

项名称 基础标识 数据类型
资产 id nh_asset_id asset_id_type
世界观申明 world_view world_view_type
所有者 nh_asset_owner account_id_type
制作者 nh_asset_creator account_id_type
制作时间 nh_asset_create_time time_point_sec
资产基本描述 nh_asset_description string
使用权名单 limit_list string vector<contract_id_type>
使用权名单模式 limit_type nh_asset_lease_limit_type

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

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

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

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

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

limit_list 字段类型为 vector<contract_id_type>,是一段用于表达资产使用权范围控制的列表,可 根据 limit_type 中规定的限制模式采用白名单模式或黑名单模式。白名单模式下,资产的域数据将仅 能在名单中添加的游戏中发生修改行为,而黑名单模式下,资产的域数据将无法在名单中添加的游戏里发生修改行为;

limit_type 字段类型为 nh_asset_lease_limit_type,是使用权名单模式的模式枚举,包含白名单模 式和黑名单模式两种状态。

表 1-3-2是本标准定义的非同质数字资产扩展数据区域各字段类型和标识对照表。

项名称 扩展区标识 数据类型
组合关系数据 mod_data list, list
域数据列表 describe_with_contract map<contract_id_type, Map>
域标识 session_key contract_id_type
域数据 session_data map<string, string>
域内键 inner_key string
域内值 inner_value string

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

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

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

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

非同质数字资产标准

何谓非同质数字资产

非同质数字资产是相较于传统货币类同质数字资产的一种分类,指一种应用于分布记账式网络 中的资产类型,该类型的资产实例具备唯一性,具备除唯一标识外不同的数据项及内容,同一类型 的非同质资产实例也无法直接合并且不可分割。

以更接近现实的举例做对比:比特币是典型的同质数字资产,无差别且可以相互替换,某一账 户在转走一个比特币的同时接收到一个,那么账户上的余额并不会改变,也不会引起任何价值变 化,这也即是同质资产的另一个特征——可拆分与合并。

与之相对的,非同质数字资产具有唯一性,不可拆分或简单合并,每一个非同质数字资产在生 产之初即具备特定的属性,特别是 1808 标准下的非同质数字资产,具有更加复杂的扩展数据设计与 资产嵌套、穿越等设计(见 1.3 中关于 1808 标准资产的特性描述)。

假设将游戏《魔兽世界》以区块链的方式类比,其所有的游戏道具均可设定为非同质数字资 产,当玩家完成任务后可以获得传奇装备“逐风者的祝福之剑”,该装备除了基本的攻击、速度、 重量等数值外也包含诸多技能效果,这些信息都能够在非同质数字资产的可扩展数据中表达,而如 果玩家再次获得这把武器时并不会使这两把武器合并,而是分别以独立的资产数据存在,即便它们 的属性、技能甚至描述都一样。此外,该装备可以由拥有者出让或者与其他玩家进行道具交换以及 销毁,装备的信息始终以链上可追溯的形式独立存在。

也就是说,非同质资产是一种适用于游戏道具、真实物品等唯一性事物的数字化描述形式,这 一特点将对区块链游戏产业的发展产生决定性的作用。

非同质数字资产对游戏的意义

从 Cocos-BCX的白皮书中可以得知,区块链游戏的发展历程可以被划分为四个阶段:

  1. 使用同质资产做游戏“金币”的结算
  2. 游戏“金币”和道具的自由兑换
  3. 关键规则上链运行
  4. 游戏整体上链运行

其中第二阶段的“道具”并非仅指游戏内的道具,而是进一步指游戏内的各类唯一性数字资 产,这些广义“道具”的涵盖范围包括道具物品、装备、角色信息、关卡数据等,而在第三、四阶 段时这一概念甚至可以拓展到游戏资源、地图场景、剧情数据、DLC等。
可以认为,一个定义充分的标准化非同质数字资产将为区块链游戏行业带来阶段性飞跃的基石。

为什么需要标准化的非同质资产

数字资产的标准化是一项基础工作,是链网络可持续、可扩展、科学运行的重要组成部分,设 计标准化的非同质资产具有如下意义:

  • 非同质资产标准化在资产的生命周期中起到定义、格式、结构规范化的保障作用,标准化 的数字资产之间具备良好的兼容性和可解读性,为第三方的非同质数字资产交流提供了基础;

  • 标准化的非同质资产可以免去冗杂的自定义结构解析,为提高链网络运行效率、通行能力 提供了有力的支撑;

  • 标准化的资产更有利于初始化、检索、解析等操作的设计,开发者无需在如何与不同资产 交互上消耗工作量,只需遵循标准定义的规范即可,因此能够将注意力更加专注地投入资产内容本身的设计上。

    以ERC-721非同质数字资产标准为例,任何使用 ERC-721标准定义的非同数字资产都可以使用同 样模式的合约/服务完成解析、检索、修改,当操作对象为不同的 ERC-721 资产时,开发者甚至不需要修改合约/服务代码,只需要在接口调用中改变传入资产实例的识别信息即可完成对新资产的完全兼容。

世界观系统

游戏世界与世界观系统

与传统游戏行业的概念不同,BCX 的区块链游戏并非完全相互独立的业务场景,每一个链游戏 可认为是一个游戏世界,而数个具有相似基本设定的游戏世界组合在一起即可以认为这几个游戏世 界拥有一个共同的世界观。

图5

世界观这一概念并非区块链游戏首创,现代游戏行业已经有许多游戏具备了这一特性,例如 《魔兽争霸》、《魔兽世界》、《炉石传说》、《风暴传说》拥有共同的暴雪宇宙世界观,其中有 相当部分的游戏道具、角色、资产是共通的,虽然这些资产在各自的游戏中有不同的具体属性、技 能等解释,但这些资产的设计基础源于共同的基本规则。

区块链游戏的世界观是一种用于区分游戏故事设定、角色/道具/规则设定和效用范围的标识。游 戏道具在世界观中遵循统一的世界规范,能够通过支付迁移费用在本世界观下的不同游戏世界中迁 移,即游戏道具的“穿越”。

世界线穿越、多元宇宙与平行世界

游戏道具是一种用于链上游戏的非同质数字资产,而道具“穿越”世界线的过程即某一非同质数 字资产在同一世界观下不同游戏、业务里应用、变化的过程。

1808 标准非同质资产提供了链上游戏设计多元宇宙/平行宇宙的可能性,不同的游戏世界观也是 不同的游戏宇宙,百家齐鸣的游戏世界观也将构成链上游戏的多元宇宙,这些宇宙内拥有可以自由流通的游戏道具,这些道具在不同游戏中被写上了不同的属性、技能等,它们各自存在又互不影 响,即“平行世界”中的道具设计。

可扩展的自定义数据能够让游戏设计者创造各具特色的游戏资产,互不干涉的域数据设计让游 戏资产在“穿越”世界、宇宙时允许被赋予不受干扰的全新属性,同时也为游戏间数据联动(例如 技能增益/减益)设计提供了可能,下图将是一个链上游戏资产在穿越世界线/平行世界的示例:

图6

根据游戏运营设计,1808 标准非同质资产支持通过特定的第三方有偿穿越世界线的设计,这一 机制有助于游戏运营在道具平衡性和资产流通量控制上作出符合需求的设计。

世界观系统中的数据管控方式

1808 标准非同质数字资产在链上完成初始定义并通过智能合约操作,且 1808 标准本身包含较为 复杂的数据结构和组合设计,因此世界观系统下的资产数据安全设计显得更为重要,Cocos-BCX 针对链上数据操作过程中可能发生的风险和隐患进行了分析,并着手修复和改进。

  • 资产与其他数据分离
    分离的数据存储可以保证资产所有者拥有对资产的完全所有权,而若合约与资产使用合并 的存储,则特定的合约可以在合约开发者的权限下调用合约拥有的他人资产,这是非常不 安全的。在 Cocos-BCX 中,同质、非同质资产和智能合约的数据均为分离存储式设计, 这除了有助于减少数据流转消耗、提高链效率外,是一种更具备数据安全性的设计。

  • 带有身份核验的合约执行验证机制
    对于涉及敏感操作的合约函数,Cocos-BCX 允许开发者定义具有身份验证的合约执行机 制,设有验证的合约函数只会在满足要求的调用者调取时才会执行,避免黑客恶意执行特 定合约接口进行非法资产操作的风险;

  • 以域设计对合约权限进行控制
    合约能够获取 1808 标准资产扩展数据中的所有域数据,但对资产数据的修改将被限定在标 记为当前合约的域中,即 A 游戏可以知道资产在 B 游戏中的属性数据,但对资产的改动只 会保存在 A域中,且 A合约无法修改 B域中的任何数据;

  • 资产所有者对域数据的管理模式
    域数据随着游戏的增加不断补充,而追加的域数据过多或收到恶意合约故意追加无效域数 据时会影响业务的执行效率,导致用户资产数据冗余,为了避免这种情况的出现,1808 标 准资产允许用户删除资产扩展数据中特定的域,但此权限仅赋予用户删除域数据的权力而 不包括修改这些域数据的权力,以防用户通过修改这些数据而作弊。

1808 标准与世界观系统应用范例

本章将主要说明在 Cocos-BCX 链中,使用合约对 1808 非同质数字资产操作,以及世界观内非 同质数字资产如何穿越、联动的示例,更多介绍请参阅《Cocos-BCX智能合约使用引导》。

合约对 1808 标准资产的操作

非同质资产所有权转移

非同质资产转移 – 调用者

  • 函数原型
    void transfer_nht_from_caller(string to, string token_hash_or_id)
  • 调用说明
    从合约调用者转移非同质资产到账户 to
  • 参数说明
    to:目标账户,token_hash_or_id:指定的非同质资产 hash值或者 id编号

非同质资产转移 – 所有者

  • 函数原型
    void transfer_nht_from_owner(string to, string token_hash_or_id)
  • 调用说明
    从合约所有者转移非同质资产到账户 to
  • 参数说明
    to:目标账户,token_hash_or_id:指定的非同质资产 hash值或者 id编号

修改非同质资产数据(特定数据域内)

非同质资产转移 – 所有者

  • 函数原型
    void nht_describe_change(string nht_hash_or_id, string key, string value)
  • 调用说明
    修改非同质资产的合约相关描述,修改部分为合约对应的域
  • 参数说明
    token_hash_or_id:指定的非同质资产 hash 值或者 id 编号,key:描述项索引,value:索引 对应的描述信息

场景范例

游戏(合约)内强化装备

本例是一个游戏中强化装备属性的合约函数代码范例,这个函数代表常见的 RPG 游戏中对装备 的强化动作,玩家可以选择需要升级的装备与升级的属性类别(STR 力量、AGI 敏捷、INT 智力等), 游戏服务会解析域数据并计算出该属性升级的目标属性值传入此合约函数,由于 COCOS-BCX 的合 约系统支持内源随机过程,因此可以将这一场景中升级的成功率以随机方式展现。

--合约函数:装备升级 
-- equipment_id:装备资产 ID 
-- upgrade_name:升级属性项名称 
-- target_value:目标属性值 
-- success_rate:本次升级成功率(1-100) 
function equipment_upgrade( equipment_id, upgrade_name, target_value, success_rate)  --对升级项名称的判断 
 assert(upgrade_name=='STR' or upgrade_name=='AGI' or upgrade_name=='INT', 'upgrade name error') 
 --对升级成功率输入的判断 
 assert(success_rate>=0 and success_rate<=100, 'success rate should between 0 and 100') 
  
 --升级成功判定,通过内源随机函数获取随机概率 
 local success_judge=random()%100 
 if(success_judge<=success_rate)then 
  --将目标属性值写入域数据 
  nht_describe_change( equipment_id, upgrade_name, target_value) 
 end   
end 

道具在世界中穿越并做数值联动

本例是一个游戏道具穿越游戏世界的范例。本范例场景下,游戏服务有偿授权玩家道具穿越到 自己的游戏世界,玩家通过支付穿越所需的资产后游戏服务将允许玩家的指定道具进入到游戏世界(合约系统)中。

游戏服务在玩家道具的域信息中提取需要的信息并提交至合约,由于与之前的游戏有联动活动,开发者在合约中设计了与以往游戏技能联动的设计(如下文代码中所示'eyes of hawk'等),使穿越到本世界中的道具一开始便可获得技能属性等。

  --合约函数:初始化穿越世界的游戏道具 
  -- item_id:道具 ID 
  -- original_skill:原游戏中的技能信息 
  -- add_skill:本游戏中追加联动技能 
  -- add_description:在本游戏域数据中追加的描述 
  function init_item_from_another_world( item_id, original_skill, add_skill, add_description)  
  --信息的非空判断  
  assert(original_skill!=nil,'null original skill info')  
  assert(add_skill!=nil,'null add skill info')  
  assert(add_description!=nil,'null description info')   
  local add_skill_value='null'  
  --对原游戏中的技能信息的判断并得出本游戏中联动的技能信息  
  local switch={   
      ['eyes of hawk']=function() add_skill_value='{"VIT_UP":25}' end   
      ['heart of lion']=function() add_skill_value='{"STR_UP":50}' end   
      ['speed of pard']=function() add_skill_value='{"AGI_UP":40}' end   
      ['wisdom of dwarf']=function() add_skill_value='{"INT_UP":30}' end  
  }   
  local res=switch[original_skill]  
  if(res)then   
      res()   
      --将联动的技能信息更新到域数据中   
      nht_describe_change( item_id, add_skill, add_skill_value)   
      nht_describe_change( item_id, 'another_world_message', add_description)  
  else   
      assert(res,'unexpected original game skill type') 
  

复杂业务模式的实现

改进的 Cocos-BCX 链新增了多种原子 OP 和数据结构用于实现可能的新型业务,结合自身合约系统,开发者能轻松实现链上的复杂金融业务模式,例如:资产租赁、抵押、典当等。这些新型业务模式将极大改善传统链系统经济模式单一缺少流动性的弊端,进一步活化市场行为。下面简单介绍在BCX中实现这三种业务模式的设计思路。

租赁

图7

合约设计:

  • 定义发起租赁、转移使用权、收回使用权、库存状态查询、库存更新等租赁业务各流程的函数。
  • 定义一个可供租用的资产池,带有标价等信息。

流程:

  • 所有者在合约中通过库存更新函数加入需要出租的资产信息,并规定租金/计算规则;
  • 租户通过发起租赁的函数交纳租金等资产后租约成立;
  • 合约通过转移使用权函数定义资产使用权黑白名单并将使用权转交至租户,随后将租金转 至所有者账户,将库存资产的状态标记为已出租,同时定义一个定时任务——在到期时调 用收回使用权函数;
  • 定时任务到期时,调用合约收回使用权函数,将资产使用权转回所有者。

抵押

图8

合约设计:

  • 定义发起抵押、转移所有权、收回使用权、抵押品状态查询、设置可抵押清单等抵押业务 各流程的函数;
  • 定义一个抵押物记录结构,带有可供抵押资产的信息与已抵押当的资产信息。

流程:

  • 抵押权人通过设置可抵押清单函数设置可供抵押的物品信息,标记抵押价格或计算规则等;
  • 抵押人通过发起抵押的函数将资产所有权转至抵押权人,并收到抵押权人支付的押金,更 新抵押拼记录清单中,同时发布一个定时任务——期限到达时根据赎回与否转移物品使用权;
  • 定时任务到期时,若押金支付等条件未满足,则调用合约的收回使用权函数,通过使用权 变更函数将资产使用权转到抵押权人账户,若完成赎回,则调用合约的转移所有权函数, 将所有权转还至抵押人。

典当

图9

合约设计:

  • 定义发起典当、转移使用权、收回所有权、当品状态查询、设置典当清单等典当业务各流 程的函数;
  • 定义一个典当品记录结构,带有可供典当资产的信息与已经典当的资产信息。

推演流程:

  • 典当权人通过设置典当清单函数设置可供典当的物品信息,标记典当价格或计算规则等;
  • 典当人通过发起典当的函数将资产使用权转至典当权人,并收到典当权人支付的押金,更 新典当清单中的记录,同时发布一个定时任务——根据需要可以设计为定期返还押金/按期 支付利息/两者兼有的模式;
  • 定时任务到期时,若押金支付等条件未满足,则调用合约的收回所有权函数,通过所有权变更 OP 将资产所有权转到典当权人账户,若达成条件,则通过使用权变更 OP 将使用权转移至典当人。