「火星公开课」第215期 |Cocos-BCX首席技术顾问:通用数字资产标准的设计与游戏逻辑的链上表达

栏目: 后端 · 发布时间: 6年前

内容简介:要点速览:1.未来区块链技术会在游戏中得到普遍应用,但区块链游戏不会形成单独的行业分支

「火星公开课」第215期 |Cocos-BCX首席技术顾问:通用数字资产标准的设计与游戏逻辑的链上表达

要点速览:

1.未来区块链技术会在游戏中得到普遍应用,但区块链游戏不会形成单独的行业分支

2.目前大多数ETH、EOS链游,包括现在流行的EOS资金盘和菠菜应用,还处在“中心与去中心结合”的阶段。

3.用于未来游戏资产与链技术深度结合的数字资产标准,必须具备成为资产“泛用的唯一价值表达”的特性。

11月1日16:00,Cocos-BCX首席技术顾问Kevin Yin做客「火星财经创始学习群」,分享了“通用数字资产标准的设计与游戏逻辑的链上表达”,同时与群主DappReview CEO 牛凤轩进行了深度对话。

Kevin称,越来越多的传统游戏(或游戏平台)在向类区块链特性的方向发展,但未来可能不会出现专门的“区块链游戏”分类,区块链技术会成为多数游戏为实现公正、透明、可追溯、可流通而具备的一种必要属性。

Kevin同时表示,游戏逻辑上链表达的基本要素包含范围见证和随机数、链内定时器、会话和心跳检测等。至于通用数字资产标准的设计,他认为应以游戏资产最终顺利在链上参与业务、流通和其他市场行为为出发点,非同质数字资产应具备对多种业务(游戏、合约)的良好兼容性,同时提供足够的特性、设计来支持可能会出现的复杂业务。

以下为Kevin Yin分享内容,由火星财经(微信:hxcj24h)整理:

一、区块链游戏不会“自成一派”

因为我也担任Cocos的技术顾问,所以分享中的例子会主要以Cocos-BCX这一区块链项目,和它的技术联盟(包含5173和一些知名公链项目)的一些探索和成果为例子。

先来段老生常谈的,为什么需要将逻辑(特别是游戏逻辑)的实现放到链内完成?或者说,现在大量的链游或者DApp,逻辑部分其实并不是全在链上的,要做到“纯链逻辑”,从技术实现上,需要做到哪些关键特性?以及,为什么需要通用的数字资产标准,什么样的资产标准才能够在技术上满足“通用”的定义?

先以游戏行业为例。可以看到的,包含网易、腾讯在内,越来越多的传统游戏(或游戏平台)在向类区块链特性的方向发展,我们认为, 未来可能不会出现专门的“区块链游戏”分类,而是区块链技术会作为多数游戏为了实现公正、透明、可追溯、可流通而具备的一种必要属性。

总结一下,大致是“会得到普遍应用,但不会形成单独的行业分支”。

从技术层面上看,游戏逻辑上链是需要一些充要条件的。 目前我们看到的大多数 ETH EOS 链游,包括现在流行的 EOS 资金盘和菠菜应用,还处在“中心与去中心结合”的阶段。

相当一部分应用除了未将关键的逻辑放到链内执行以外,甚至核心的业务逻辑例如发牌、抽卡等概率部分,依然依赖链外的服务器,或者在链上以合约方式编写的某段“可推导的随机因子生成器”。

在第三方服务器生成随机数这种场景不用过多赘述。

用块高度、时间戳等作为参数,在合约代码中运算,产生随机数的方案实际上也是不太可靠的,它不能满足几个基本诉求:1.阻止节点作弊;2.阻止开发者作弊;3.过程不可推导;4.业务过程的封闭性。

以一局德州扑克为例,除了使用内源随机生成每人手上的牌面外,在游戏结束前,不应该有牌局外的人知晓牌局内的情况,而牌局内的人也不应该知道其他人手上有哪些牌,这些都依赖随机过程这个“关键业务”在整个业务流程中的封闭性,以及业务如何在一个“会话”内的持续运行。

还有一点就是心跳和上下文,这也是一个非常关键的特性,在对局过程中可能会有玩家掉线,但众所周知的,区块链系统其实没有真正意义上的“在线”与“离线”状态区别,因此要让这局牌能顺利的玩下去,链系统还必须实现上下文(或者称之为“会话”)与心跳机制,用来判断参与牌局的玩家是否还在线。(其中,合约上下文环境的保持,在实现层面可以理解为用户代码可以通过某种途径,在调用时恢复上次运行时的环境数据)

这里用EOS举一个反面例子,它有一个范例合约,“井字棋游戏”。这个游戏在原本的代码上并没有“房间”的概念。它要实现在公共网络中任意两个人(EOS账户)持续的对局,实际上的做法是在数据表中加入了一个用于表达房间ID的字段,然后每走一步,皆记录下棋者和房间ID,用于区分对局的范围,变相的实现“会话”。

一方面我们可以看到,这种做法的额外开销在正式的、规模化的应用中,是不可接受的;同时,这种在短连接中用额外的I/O模拟长连的方案,也会导致第三者能在每一个事务周期看到棋局的每一步。这在棋局中或许可以接受,但在牌局中是万万不可的。

牌局是一个典型的、需要封闭的、以随机因子作为源头、持续执行的会话场景,第三者只应看到一部分操作记录——出牌,而不能在会话结束前,切入随机部分和发牌部分。

所以用COCOS路演材料中的内容来补充和归纳,游戏逻辑上链表达的基本要素如下:

「火星公开课」第215期 |Cocos-BCX首席技术顾问:通用数字资产标准的设计与游戏逻辑的链上表达

二、区块链游戏中的通用数字资产

对于通用数字资产标准的设计,我们的理解如下:

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

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

但我们理解中的“通用”,可能会更加广泛一些, 在对复杂“世界观”和多链场景的支持上, ERC-721 是不充裕的。 在后面的分享中,我会比较详细的阐述我们的思路。

以游戏资产为例,这里先引入一个“世界墙”的概念,以及“高低魔转换”。

如果这里有漫画爱好者的话,应该看过Gantz--杀戮都市,小说爱好者可能看过无限恐怖,这两个其实是头号玩家的前身。

大家可以带着“贝吉塔和九尾谁更强”这样的娱乐向问题,看我们接下来的分享。

以游戏资产最终能够顺利地在链上参与业务、流通和其他市场行为为出发点,非同质数字资产应该具备对多种业务(游戏、合约)的良好兼容性,同时提供足够的特性、设计来支持可能会出现的复杂业务,概括成一点就是—— 用于未来游戏资产与链技术深度结合的数字资产标准,必须具备成为资产“泛用的唯一价值表达”的特性。

在这样的指导思想下进行设计非同质数字资产标准,对游戏资产及其交互模式应该有很好的兼容性,但仅凭这些还不足以达到“泛用表达”的程度,标准所指的数字资产并非狭义的游戏道具,而是应该能够涵盖道具、装备、角色数据甚至剧情包、MOD、DLC等类型的,甚至可以超出游戏资产的定义,才能被称为是一种“泛用的唯一价值表达”。

需要重点说明的是,有关业务场景的考虑前提是资产能够在多种场景下使用,可以理解为能够在世界观下的不同世界穿越(资产穿过“世界墙”),这带来许多需要考虑的问题,例如不同业务场景对数据规格的需求不同,界定标准不同, 就像《龙珠》里的角色如果保持和原作完全一样的能力进入了《火影》的世界那肯定是会破坏平衡的。为了不出现“贝吉塔一拳锤爆木叶村”这样的乌龙剧情,所以在COCOS和5173联合推广的NHAS-1808标准中,提出了“世界观”和“域”的概念。

世界观是对资产可使用范围的规定,同一世界观下的资产才有穿越的可能性,例如一个“暴雪宇宙”世界观下的“古尔丹之颅”可以在同世界观下的《魔兽世界》、《魔兽争霸》、《风暴英雄》等游戏中参与其合约并使用,即使这些游戏的开发运营都可能是不同的公司和组织,此外多种业务场景也不仅限于同世界观内的游戏合约,也包括同世界观下的矮人铁匠铺、地精镶嵌所等使用合约表达的资产使用场景。

域则是“世界墙”,每一个域和对自己负责的合约绑定,不同域之间的数据可互读但互不可写,也就是说即便《龙珠》里的角色真的穿越到《火影》中,也会因为域的隔离作用使角色数据符合《火影》的设定。

从实现的层面来看,一个道具或人物在不同游戏中获取的属性实际上是写在一个新增加的名为《龙珠》或者《火影》的独立数据域中的,而不是在道具或人物的基础数据上直接更改,因为如果在基础数据上直接改的话,必然会破坏该道具在其他承认它的游戏中的平衡性。

三、游戏逻辑上链和通用资产标准设计

以下是Cocos与5173的联合设计,与NEO、ONT、波场等公链的联合开发中,对游戏逻辑上链和通用资产标准设计这两项重点任务的一些要点的归纳和理解:

最重要的还是安全,其次是效率。

一、玩家将素材、金币交给去中心的锻造所,制作一件装备。这个业务过程其实包含很多步操作,包括同质/非同质资产转账、非同质资产创建、非同质资产权属移交等,传统游戏中骗掉玩家/制作者资产,恶意中断业务流程的非法侵占他人资产事件屡见不鲜。

在链系统中需要考虑如何避免这种事故的发生,例如将完整业务流程涉及的所有操作打包为一个原子操作,只会全部成功或者全部失败两种状态,就能解决这个问题,这是Cocos目前的解决方案。

二、资产的扩展数据区会自动追加新合约(游戏)的域数据,如果有人恶意写很多垃圾合约,给别人的资产写入大量无意义的域数据,降低别人的资产价值同时也降低链系统的整体效率,又或者黑客通过分析合约接口,恶意调用敏感操作接口强制操作别人的资产等。

因此链系统需要提供处理这些行为的方法,让用户能够删除特定的域数据,当然这只是一种额外的保险措施,对恶意干涉数据的行为有更多的事前防御机制,包括完善、改进业务场景的审计、验证等设计。

例如为了实现更安全的资产保障机制,设计合约权限的多重验证机制,即开启验证的合约只有符合对应的用户与合约签名才能调用,其他人无法越过用户私自改动数据。

表现起来大致是一些关键的动作除了合约发布者签名外,还需要得到用户签名后才能执行,大幅减少数据被恶意修改的可能。

三、资产的所有权和使用权“两权分立”带来的租赁、抵押、代练等业务形态。这些业务形态显然不是传统资产交易模型能够满足的,一方面链系统需要提供足够的特性支持和权限系统,另一方面资产本身也需要更加细化的设计,例如拆分所有权和使用权,设置访问名单……开发者才能够通过合约合理的安排各种操作实现这些业务模式。

我们和5173认为,这是基于区块链的数字资产和基于中心服务的数字资产的一个显著的区别,未来可能的行业切入点。

四、将资产定义、存储与合约分离开来是非常有必要的。

举例而言,一个ERC-721的典型游戏《谜恋猫》,它的每一个数据项其实都是用以太坊中的专用脚本并且写在合约中,最终来描述和实现可视化。理论上,这些猫是可以实现跨链的,可是由于不同公链的“语法”不同,开发人员需要更多地完成公链之间的“翻译”工作,而如此数量繁多的公链使用的编程语言不尽相同,在不同的链中用不同的语言翻译来翻译去非常困难,难以完全自动化。

降低游戏资产跨链、跨标准的翻译成本是NHAS-1808标准的初衷之一。兼容的方法解释起来并不复杂,核心在于将资产数据与合约逻辑解绑,“还资产数据自由”。

资产数据和合约分离,独立存在于链网络中有主要两个方面的优势:第一是更加高效,独立的数据结构可以减少链系统在处理事务信息读写资产数据时无关数据访问和解释成本,能大幅提高非同质资产操作效率;第二是更安全,不合理的合约设计可能会导致在缺乏权限验证的情况下,合约的所有者能够擅自调取合约内资产数据并改变资产的归属,这对用户而言是有非常大风险的,ETH/EOS以前发生的几次黑客事件正是因为这样的原因。

而在分离的数据存储设计下,合约除非得到资产所有者/使用者的授权,任何人都无法擅自改变资产的归属 。

问答环节:

Q1:从Kevin的分享来看,1808是一个把游戏道具的使用逻辑进行高度抽象之后,更适用于游戏的标准,下面是否有些代表性的区块链游戏在使用1808或者在开发中?

A1:目前在Cocos内测网中的Cocos Shooting,和开罗游戏的游戏发展国,以及名游的资产交易所、水果机、5173的资产交易平台,就是使用1808作为互通媒介的。Cocos官网上有路演的录像,内有真机演示。

再就是目前和NEO、ONT、波场、ZIL在做非同质资产承兑网关的对接,这里也是用同一种资产表述标准。表现效果大致是这样:

「火星公开课」第215期 |Cocos-BCX首席技术顾问:通用数字资产标准的设计与游戏逻辑的链上表达

Q2:现在EOS上最高菠菜游戏日活过两万。Cocos这个系统大约多久能有游戏真正用起来,出来一个爆款?

A2:目前已有6家以上游戏开发商和交易平台在内测。在12月底会放开内测申请,并向公众释出第一批内测产品。

嘉宾简介

Kevin Yin /Cocos-BCX首席技术顾问

一粟资本管理合伙人、INB资本技术合伙人。算法和产品专家,NOI获奖选手、ACM嘉宾,具有多年编译和分布式计算行业经验,是资深的区块链技术开发者和行业投资人。

对话发起人

牛凤轩/ DappReview CEO

文章声明:本文根据「火星财经创始学习群」嘉宾分享内容整理,不代表火星财经立场,转载须在文章标题后注明“文章来源:火星财经(微信:hxcj24h)”。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

转型之战

转型之战

吴晓波 / 2015-7-1

互联网时代大潮席卷而来,互联网究竟是“魔法手杖”,还是“效率金箍棒”?传统企业如何正确借助和利用互联网思维帮助自身转变思维、完成企业转型升级?本书分两篇,上篇为传统行业互联网转型极具代表性和借鉴意义的案例,下篇精选吴晓波转型大课的独 家内容,梳理了吴晓波、刘伟、刘润、金霞、刘博、赵峰、张蕴蓝、张荣耀、李嘉聪、曾玉波等各行业10位导师关于互联网思维的精华理念和观点,其中囊括各传统行业互联网转型成功的......一起来看看 《转型之战》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码