6.3 应用范例

1808标准在Cocos-BCX中已经内置到链系统当中,对外扩展基于Lua的合约接口,方便程序对资产进行操作。具体可以见合约API

针对具体的应用场景,我们下面给出一些相关的示例。

游戏场景

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

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

--合约函数:初始化穿越世界的游戏道具
-- item_id:道具ID
--Project Cocos-BCX
-- 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 中实现这三种业务模式的设计思路。

租赁

合约设计:

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

流程:

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

抵押

合约设计:

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

流程:

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

典当

合约设计:

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

推演流程:

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

6.3 应用范例


Suggested Edits are limited on API Reference Pages

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