链上编译、支持迭代更新的智能合约见过没?聊聊Cocos-BCX智
作者| 明观
出品| 比特魔方(BitMoreFun)
01
大家好,作为一个有丰富经验和强劲实力的游戏项目方,Cocos-BCX带来了一套完整的区块链游戏开发解决方案。在前两周的文章中,我也就原子合并操作特性和BCX-NHAS-1808非同质数字资产与世界观这两方面进行了简单的阐述,这里就不重复赘述了。有兴趣的朋友可以点击下方链接阅读,也欢迎大家加入比特魔方群中讨论交流~
关于原子合并操作特性:
打开游戏资产复用大门的钥匙——原子合并操作特性
关于NHAS-1808非同质数字资产与世界观
BCX-NHAS-1808非同质数字资产与世界观——合约数据分离,助力游戏资产流通互联
无论是原子合并特性,还是BCX-NHAS-1808非同质数字资产与世界观,这两者都主要是为了游戏资产复用这一功能来服务的。这里要说一下,虽然游戏资产复用是未来区块链游戏的一个重要发展方向,但是一套完整的区块链游戏开发解决方案不应该仅仅包含或者仅仅着眼于游戏资产复用这一功能。可以看到,现阶段多数链游中仍存在的许多问题:智能合约系统存在缺陷、抽奖过程不透明、交易不方便、配套设施不齐全等。这些问题不考虑解决,链游行业的量级无法提升,所有忽略基础的的长远目标不过是一场镜花水月。
所以这周开始,我们来聊聊Cocos-BCX是如何来解决这些问题的。今天的主题:智能合约系统。
02 智能合约
关于智能合约,相信大部分人都是从V神和以太坊时代开始接触到这个概念,其实智能合约的概念早在以太坊出现以前就已经存在了。1993年计算机科学家、加密大师尼克·萨博(Nick Szabo)提出“智能合约(Smart contract)”的概念,1994年他写成了《智能合约》论文,这是智能合约的开山之作。而后的故事大家应该都知道了,V神,对,就是辣个男人,在尼克·萨博的研究成果上将智能合约概念引入以太坊,开创了区块链2.0时代。
怎样简单的理解智能合约?简单来说,可以把智能合约看做是一套基于区块链的软件程序,智能合约一旦部署就不会被人为操控,只有在检测到某些特定数据条件时,才会触发。可以看出,智能合约的特性与区块链的去中心化、公开性以及不可篡改的特性相当契合,并且在应用智能合约之后,也可以极大拓展区块链的应用范畴。
但是,智能合约就真的很智能吗,智能合约就不会存在漏洞吗?答案显然是否定的。
03 智能合约的隐患
首先,智能合约的本质还是一行行代码,程序员在编写程序时,必然存在留有BUG或者逻辑漏洞的可能。所以,我们可以看到很多交易所和项目都会与慢雾科技这类比较权威的第三方检测机构达成合作关系。
其次一些居心不良的项目或者程序员会在智能合约里预留后门。这种项目方及相关人员的主动作恶难以防范,即使是经过第三方检测机构,也难以确保其在足够的利益下不会作恶。这里最常见的一种操作就是,实际存在于在链上的合约与链下在GITHUB开源给大家看的不是同一份合约,而链上编译后的合约中留有后门,使得用户手里的资产存在被转移的隐患。去年9月,某EOS项目因为不小心给用户发了太多的代币,居然在并未提前告知的情况下进入用户钱包撤回了交易的事件仍然历历在目。
最后一点,其实也算不上隐患,不过也需要考虑。现在的智能合约系统不支持合约的迭代更新,发布一份合约如果需要更新的话只能创造新的合约,这种方式听起来是合理的,保障了合约的不可篡改性,但实际这在工程开发中是有问题的。大家应该都知道,很多APP都是在不停迭代升级的,这点对游戏来说十分重要。游戏的平衡性调整、游戏的新增内容以及BUG处理等操作都需要通过更新来实现。可以试想,未来的玩法复杂的区块链游戏往往需要非常多的智能合约共同实现,这个时候问题来了,如果智能合约只能重新发布而不能覆盖迭代更新的话,那我要修改其中任何一份智能合约,是不是智能合约之间的引用关系会发生变化?这意味着每次在调试的时候必须整个工程重新发布重新上链,这个代价是非常大的。
针对以上问题,Cocos-BCX提出了自己的解决的方案:Cocos-BCX智能合约系统——智能合约链上编译,支持迭代更新。
04 Cocos-BCX智能合约系统
Cocos-BCX区块链游戏引擎框架是基于石墨烯框架做的。要知道,原版的石墨烯框架是没有智能合约的,是在 EOS 时代才引入了附加了智能合约的体系,让石墨烯框架具有了处理游戏逻辑的能力。
Cocos-BCX的技术路线和 EOS 有一些区别,首先不是用和框架自身强结合的模式做的,而是类似组件的方式在框架外挂一系列的智能合约系统,目前支持Lua语言。Cocos-BCX提供的智能合约编译方案不是在本地编译完,把编译之后的中间语言代码上传到区块链。而是使用全链上编译,一份脚本代码实际上被完整地传到了某个节点,在节点上用专门的线程做编译。智能合约实现全链上编译,你想代码写出来什么样子,上传就必须什么样子,这让区块链的节点是具备智能合约原版智能文件的,所以会更加安全。
同时,Cocos-BCX支持智能合约的覆盖操作。当然可能大家也会有问题,如果Cocos-BCX的智能合约是可以覆盖的,怎么保证不可篡改呢?Cocos-BCX 首席技术顾问 Kevin Yin给出了答案:“这当中我们有开关,当开发者完成开发以后把开关拨动一下,智能合约就变成了和以太坊、EOS 一样不可篡改的。当有资产被锁定在智能合约管控的帐号里,这时候智能合约哪怕处于开发者模式也是不能修改的。”