区块链与云技术将如何构建新型游戏生态系统
扫描二维码
随时随地手机看文章
近日,2019第二届全球石墨烯区块链开发者大会在上海召开,作为基于石墨烯开发的知名项目 Cocos-BCX 参与了会议并做了相关分享。
Cocos-BCX 首席技术顾问 Kevin Yin 做了主题为“做最好的链游开发和运营解决方案”分享,其中, Kevin 做了 Cocos-BCX 基于区块链、云等新技术构建新型游戏生态系统的设想:
“区块链与云技术在游戏领域能够取长补短,一方面能够大幅度降低区块链系统的资源开销,也为游戏、应用提供更为可信的承载容器,一方面也能充分发挥区块链技术流通、公正透明、渠道等领域的优势。
上述方案结合 layer-2 和 TEE 技术的优点,在 Arcadia 框架提供的链信任机制下实现更加安全高效友好的游戏环境,链与云技术在未来将结合为一个面向用户的虚拟化游戏运行容器,能够为用户带来不受终端性能限制的各类游戏业务。”
以下为 Kevin 演讲实录。
大家好!
今天是开发者大会,我将给大家带来的是区块链游戏开发解决方案。我自己是开发者,同时也是区块链投资人,我们在2016年开始基于石墨烯框架做区块链游戏引擎框架的开发。
我们希望为开发者提供一套完整的技术方案支持,希望该方案是低门槛、安全易用的。
1. 智能合约系统
原版的石墨烯框架是没有智能合约的,是在 EOS 时代才引入了附加了智能合约的体系,让石墨烯框架具有了处理游戏逻辑的能力。我们的技术路线和 EOS 有一些区别,首先不是用和框架自身强结合的模式做的,而是类似组件的方式在框架外挂一系列的智能合约系统,目前支持Lua语言。我们提供的智能合约编译方案不是在本地编译完,把编译之后的中间语言代码上传到区块链。而是使用全链上编译,一份脚本代码实际上被完整地传到了某个节点,在节点上用专门的线程做编译。
2、3个月前有过一次黑客盗币事故,据我们分析是开发者在智能合约里留了后门,但很巧妙的是避开了链上和链下的智能合约校验机制,实际存在于在链上的合约与链下开源给大家看的不是同一份合约,而链上编译后的合约中留有后门,使得用户手里的资产存在被转移的隐患。
但如果智能合约是全链上编译的话这个问题完全可以避免的。因为你想代码写出来什么样子,上传就必须什么样子,这让区块链的节点是具备智能合约原版智能文件的,所以会更加安全。
现在的智能合约系统不支持合约的迭代更新,发布一份合约如果需要更新的话只能创造新的合约,这种方式听起来是合理的,保障了合约的不可篡改性,但实际这在工程开发中是有问题的。我们做游戏很多年了,游戏演进到现在的已经不像当初以 K 为单位,现在的游戏是非常庞杂的。区块链游戏往往需要非常多的智能合约共同组成游戏,这个时候问题来了,如果智能合约只能重新发布而不能覆盖迭代更新的话,那我要修改其中任何一份智能合约,是不是智能合约之间的引用关系会发生变化?这意味着每次在调试的时候必须整个工程重新发布重新上链,这个代价是非常大的。在座很多都是开发者,我们知道一个程序写出来花不了多少时间,调试的时间才是花的最多的。
当然可能大家也会有问题,如果你们的智能合约是可以覆盖的,怎么保证不可篡改呢?在这当中我们有开关,当开发者完成开发以后把开关拨动一下,智能合约就变成了和以太坊、EOS 一样不可篡改的。当有资产被锁定在智能合约管控的帐号里,这时候智能合约哪怕处于开发者模式也是不能修改的。
这些设定在 Cocos-BCX 网络里都是生效的。
2. 原子合并操作特性
我们都知道原子是不可分隔的,如果有一把剑,这把剑上镶嵌了宝石、符文等等,当我们需要转账这把剑的时候实际上需要同时多笔转账才能把剑转出去。
但如果剑的本体转出去同时,网络出现了故障或是黑客故意攻击,导致宝石和浮文并没有转出去,我是不是可以认为这一次交易是失败的?但这在现在的区块链系统中很难确认,因为很难判定交易的关联性。但如果有原子合并的话可以有原子合并包,道具在包中以平等的方式结合在一起,如果任何一笔记账出现失误的话整个包都会回滚。
区块链网络是去中心的,按道理不存在中间裁决机构。当做同质数字资产与非同质数字资产交易的时候,比如说用一组比特币买一只加密猫的时候没有中间机构保证付完钱以后卖家一定发货。在这种情况下原子也可以解决这个问题,把转帐转钱的操作和资产所有权合并在一个包里同时生效,如果转了钱但对方并没有转加密猫的时候可以认为整笔操作都是失效的。这种交易可以极大地促进区块链上去中心同质资产和非同质资产相互换手的场景。
3. 可信随机过程
游戏中用的最多的就是随机数,在游戏里开宝箱、抽卡、摇骰子、打麻将都会用到随机数。区块链本身是输出可预测系统,在传统的区块链项目中(EOS、以太坊)都是不支持随机数的。现在的随机数方案现存可以归纳成两种形式:第一种是外源的,在外部有一个服务器、一组服务器,把随机数投送到目标链、智能合约里,作为随机数的种子来运行;第二种是变相的随机数方案,用区块的块高度、块 ID 再附以在合约代码里写出很鬼畜的逻辑,演算出一个看起来像随机数一样的东西。第二种方案还有衍生型,比如说 AB 两个人,A 和 B 各自持有随机数的种子,各自互相算对方的哈希摘要。
但这几种方式都是有问题的,第一种方式是中心化的。第二种方式AB互相摘要的只能用在掷骰子这种随机性的,但如果用随机方式洗出来一幅牌,牌在没有打开的时候也应该处在黑盒中,这种场景就无力应对了。
为了应对前面方案造成的一系列盗币、黑客通过推算的方式选准了时间点阻塞别的用户让别的用户无法投中,我们提供了去中心的随机数解决方案,是完全可信的,它的产生是在所有节点相同规则下一并做的,对普通开发者而言、对 Cocos 引擎的开发者而言用起来非常简单,只需要引用(随机)函数就可以使用。
当中除了随机数外还包含了怎么防止 BT 发者作弊,怎么隐藏过程变量。比如说掷骰子随机数执行完以后要打一幅麻将,按道理麻将牌都是盖在桌面上的,怎么隐藏由随机数产生的过程,这一组也有方案并且封装到了引擎中。Cocos 是开源引擎,如果大家对此技术感兴趣的话可以关注 Cocos 引擎的开源网站。
4. BCX-NHAS-1808非同质数字资产与世界观
在技术特性的支持下我们做了新的非同质数字资产,非同质资产的使用价值无需讨论。Cocos-BCX 是支持世界观穿越的,在屏幕上数据被分成了很多小块,为什么会这样设计呢?这是经常发生在小学生中的争论,《火影忍者》里的主角和《七龙珠》的主角谁更厉害,我们知道《七龙珠》里的世界观武力值设置是非常变态的,如果他穿越到《火影忍者》里一拳就把世界打爆了。但事实上游戏穿越真的这么搞的话就没有意思了。我们认为世界和世界之间是存在很多屏障的,世界在穿越的时候需要有高低模转换符合他要穿越的世界世界观。
数字资产是支持原子交易的,是可以嵌套的数字资产。像现在在传统游戏里玩的道具一样,屠龙刀上可以镶符文、宝石。并且数字资产是全区块链世界通用的,数字资产的设计方式和 ERC-721 的逻辑和数据混在一起有非常大的不同,(在Cocos-BCX里)逻辑和数据部分是完全分离的。我们知道写代码行业发展到现在已经非常完善了,我们看到大部分成熟应用的数据、逻辑、UI都是分开的,而区块链还比较早期,所以有很多原始时代的产物,比如说逻辑和数据混在一起。如果要把 ERC-721 合约表达的意思翻译到其他网络上,就需要做两个不同合约体系语言之间的两两翻译,这太痛苦了。即使现在是2019年了,Basic语言想要完美翻译成C语言也非常困难,更何况这种。
我现在演示的是在 Cocos--BCX 区块链浏览器里用可视化的方式创造非同质数字资产,发送到以太坊网络里,我们是支持非同质资产的跨链转移的,在以太坊浏览器中已经可以看到这笔转账了。现在把资产发回 Cocos-BCX 网络,在 Cocos-BCX 中已经收到了从以太坊转回来的数字资产。
本身我们是游戏引擎,要为游戏生态考虑问题。我们把资产权属做了拆分,这有点像现实世界里的房产证,房产的所有权和使用权是分开的,可以抵押、典当、租押。可以衍生出新的行业,比如说一种新的代练游戏,可以把屠龙刀交给一个人打造成神器以后再通过智能合约还给我。同时也可以做抵押,抵押是把使用权留在我手里,屠龙刀我继续使用,但是所有权先抵押给当铺,先把钱换回来。
5. Cocos-BCX 配套设施
之后给大家介绍一下我们提供的配套环境,目前已经比较全面了,以 Cocos-Terminal 为 例,提供了以图形模式进入区块链世界的入口,不需要用户自己记密钥,只需要用户记密码,没有任何服务器保存密码。如果大家在会后试玩的话可以发现 Cocos-BCX 的区块链游戏不需要用户自己记钱包私钥的,只需要记住自己的账户密码像传统游戏一样登录就可以了。
Cocos-BCX 也是集成去中心交易所的,并且支持传统的 BD 交易、道具交易,并且提供了方便游戏开发者和运营者使用的专用区块链浏览器,浏览器里包含了流水统计、运营数据分析等功能,并且也为理事会设置了整套图形界面,可以用图形界面的方式来操作提议等内容了。
左边是同质资产交易所,这没有什么奇怪的,右边是非同质数字资产交易所。并且需要注意的是我们把非同质数字资产的链上交易做成了 API,所有的第三方在游戏里都可以通过引入 API 做资产交易,并且资产交易的订单是全网深度共享的。
在 Cocos-BCX 网络上发行资产是非常容易的,包括非同质数字资产都可以用纯图形化的方式做出来。
传统游戏展示的是抽卡逻辑在链上怎么实现,其次还会给大家看到刚才我讲的数字资产道具是怎么在游戏中穿越的,包括道具怎么打造、怎么升级。在游戏里直接访问区块链的交易接口,把道具在游戏里直接卖出去,卖到交易所里,可以看到我们提供的环境已经相当完善了。
我们把刚才说的所有特性、开发环境集成到了可视化开发 IDE,Cocos 程序员可以使用以往用了十几年的游戏用于区块链开发。
6. Cocos-BCX 基于区块链、云等新技术构建新型游戏生态系统的设想
讲一下愿景预期,刚才公信宝的黄总提到了关于 TEE 的事情,Cocos 引擎是华为的合作伙伴,我们在想现在是5G 时代了,网络延迟可以变的越来越小,而且我们国家本来就是5G 时代的领跑者。有没有可能性把 TEE 可信执行环节放在云上,云主机是区块链的节点。我们认为未来的游戏有没有可能越来越多是云渲染游戏,游戏是没有客户端的,渲染、绘图都是在云端完成的。手机的硬件是否强大已经无所谓了,现在手机上也可以玩 PC 游戏。这种游戏已经很多了,华为的云游戏在 4G 网络下都可以运行的很好,更何况 5G 了。
在这种情况下如果智能合约的节点自身就是渲染的节点,如果在云集群中存在合约池,我们把它当做 Layer2 的网络,在执行智能合约的时候从池子里随机分配一个,在云端直接渲染游戏,由于都在一个云集群中,他们之间互相通信的门槛是相当低的。是不是可以认为如此一来区块链的TPS 问题、安全性问题、可信执行环境问题都不再是问题?这是我们的下一阶段方案。方案的 Demo 预期会在今年9月份拿出来给开发者试用。
我们把图像数字水印技术结合在素材编辑,如图游戏是由很多素材组成的,贴图、视频、音频、建模,如果素材上里面都存在肉眼看不到的水印和声纹的话,这些水印和声纹存在在区块链里登记,是不是意味着游戏的版权从上链发布的那一刻起已经被 Cocos-BCX 进行了保护?