區(qū)塊鏈與云技術(shù)將如何構(gòu)建新型游戲生態(tài)系統(tǒng)
近日,2019第二屆全球石墨烯區(qū)塊鏈開發(fā)者大會(huì)在上海召開,作為基于石墨烯開發(fā)的知名項(xiàng)目 Cocos-BCX 參與了會(huì)議并做了相關(guān)分享。
Cocos-BCX 首席技術(shù)顧問 Kevin Yin 做了主題為“做最好的鏈游開發(fā)和運(yùn)營(yíng)解決方案”分享,其中, Kevin 做了 Cocos-BCX 基于區(qū)塊鏈、云等新技術(shù)構(gòu)建新型游戲生態(tài)系統(tǒng)的設(shè)想:
“區(qū)塊鏈與云技術(shù)在游戲領(lǐng)域能夠取長(zhǎng)補(bǔ)短,一方面能夠大幅度降低區(qū)塊鏈系統(tǒng)的資源開銷,也為游戲、應(yīng)用提供更為可信的承載容器,一方面也能充分發(fā)揮區(qū)塊鏈技術(shù)流通、公正透明、渠道等領(lǐng)域的優(yōu)勢(shì)。
上述方案結(jié)合 layer-2 和 TEE 技術(shù)的優(yōu)點(diǎn),在 Arcadia 框架提供的鏈信任機(jī)制下實(shí)現(xiàn)更加安全高效友好的游戲環(huán)境,鏈與云技術(shù)在未來將結(jié)合為一個(gè)面向用戶的虛擬化游戲運(yùn)行容器,能夠?yàn)橛脩魩聿皇芙K端性能限制的各類游戲業(yè)務(wù)?!?/p>
以下為 Kevin 演講實(shí)錄。
大家好!
今天是開發(fā)者大會(huì),我將給大家?guī)淼氖菂^(qū)塊鏈游戲開發(fā)解決方案。我自己是開發(fā)者,同時(shí)也是區(qū)塊鏈投資人,我們?cè)?016年開始基于石墨烯框架做區(qū)塊鏈游戲引擎框架的開發(fā)。
我們希望為開發(fā)者提供一套完整的技術(shù)方案支持,希望該方案是低門檻、安全易用的。
1. 智能合約系統(tǒng)
原版的石墨烯框架是沒有智能合約的,是在 EOS 時(shí)代才引入了附加了智能合約的體系,讓石墨烯框架具有了處理游戲邏輯的能力。我們的技術(shù)路線和 EOS 有一些區(qū)別,首先不是用和框架自身強(qiáng)結(jié)合的模式做的,而是類似組件的方式在框架外掛一系列的智能合約系統(tǒng),目前支持Lua語言。我們提供的智能合約編譯方案不是在本地編譯完,把編譯之后的中間語言代碼上傳到區(qū)塊鏈。而是使用全鏈上編譯,一份腳本代碼實(shí)際上被完整地傳到了某個(gè)節(jié)點(diǎn),在節(jié)點(diǎn)上用專門的線程做編譯。
2、3個(gè)月前有過一次黑客盜幣事故,據(jù)我們分析是開發(fā)者在智能合約里留了后門,但很巧妙的是避開了鏈上和鏈下的智能合約校驗(yàn)機(jī)制,實(shí)際存在于在鏈上的合約與鏈下開源給大家看的不是同一份合約,而鏈上編譯后的合約中留有后門,使得用戶手里的資產(chǎn)存在被轉(zhuǎn)移的隱患。
但如果智能合約是全鏈上編譯的話這個(gè)問題完全可以避免的。因?yàn)槟阆氪a寫出來什么樣子,上傳就必須什么樣子,這讓區(qū)塊鏈的節(jié)點(diǎn)是具備智能合約原版智能文件的,所以會(huì)更加安全。
現(xiàn)在的智能合約系統(tǒng)不支持合約的迭代更新,發(fā)布一份合約如果需要更新的話只能創(chuàng)造新的合約,這種方式聽起來是合理的,保障了合約的不可篡改性,但實(shí)際這在工程開發(fā)中是有問題的。我們做游戲很多年了,游戲演進(jìn)到現(xiàn)在的已經(jīng)不像當(dāng)初以 K 為單位,現(xiàn)在的游戲是非常龐雜的。區(qū)塊鏈游戲往往需要非常多的智能合約共同組成游戲,這個(gè)時(shí)候問題來了,如果智能合約只能重新發(fā)布而不能覆蓋迭代更新的話,那我要修改其中任何一份智能合約,是不是智能合約之間的引用關(guān)系會(huì)發(fā)生變化?這意味著每次在調(diào)試的時(shí)候必須整個(gè)工程重新發(fā)布重新上鏈,這個(gè)代價(jià)是非常大的。在座很多都是開發(fā)者,我們知道一個(gè)程序?qū)懗鰜砘ú涣硕嗌贂r(shí)間,調(diào)試的時(shí)間才是花的最多的。
當(dāng)然可能大家也會(huì)有問題,如果你們的智能合約是可以覆蓋的,怎么保證不可篡改呢?在這當(dāng)中我們有開關(guān),當(dāng)開發(fā)者完成開發(fā)以后把開關(guān)撥動(dòng)一下,智能合約就變成了和以太坊、EOS 一樣不可篡改的。當(dāng)有資產(chǎn)被鎖定在智能合約管控的帳號(hào)里,這時(shí)候智能合約哪怕處于開發(fā)者模式也是不能修改的。
這些設(shè)定在 Cocos-BCX 網(wǎng)絡(luò)里都是生效的。
2. 原子合并操作特性
我們都知道原子是不可分隔的,如果有一把劍,這把劍上鑲嵌了寶石、符文等等,當(dāng)我們需要轉(zhuǎn)賬這把劍的時(shí)候?qū)嶋H上需要同時(shí)多筆轉(zhuǎn)賬才能把劍轉(zhuǎn)出去。
但如果劍的本體轉(zhuǎn)出去同時(shí),網(wǎng)絡(luò)出現(xiàn)了故障或是黑客故意攻擊,導(dǎo)致寶石和浮文并沒有轉(zhuǎn)出去,我是不是可以認(rèn)為這一次交易是失敗的?但這在現(xiàn)在的區(qū)塊鏈系統(tǒng)中很難確認(rèn),因?yàn)楹茈y判定交易的關(guān)聯(lián)性。但如果有原子合并的話可以有原子合并包,道具在包中以平等的方式結(jié)合在一起,如果任何一筆記賬出現(xiàn)失誤的話整個(gè)包都會(huì)回滾。
區(qū)塊鏈網(wǎng)絡(luò)是去中心的,按道理不存在中間裁決機(jī)構(gòu)。當(dāng)做同質(zhì)數(shù)字資產(chǎn)與非同質(zhì)數(shù)字資產(chǎn)交易的時(shí)候,比如說用一組比特幣買一只加密貓的時(shí)候沒有中間機(jī)構(gòu)保證付完錢以后賣家一定發(fā)貨。在這種情況下原子也可以解決這個(gè)問題,把轉(zhuǎn)帳轉(zhuǎn)錢的操作和資產(chǎn)所有權(quán)合并在一個(gè)包里同時(shí)生效,如果轉(zhuǎn)了錢但對(duì)方并沒有轉(zhuǎn)加密貓的時(shí)候可以認(rèn)為整筆操作都是失效的。這種交易可以極大地促進(jìn)區(qū)塊鏈上去中心同質(zhì)資產(chǎn)和非同質(zhì)資產(chǎn)相互換手的場(chǎng)景。
3. 可信隨機(jī)過程
游戲中用的最多的就是隨機(jī)數(shù),在游戲里開寶箱、抽卡、搖骰子、打麻將都會(huì)用到隨機(jī)數(shù)。區(qū)塊鏈本身是輸出可預(yù)測(cè)系統(tǒng),在傳統(tǒng)的區(qū)塊鏈項(xiàng)目中(EOS、以太坊)都是不支持隨機(jī)數(shù)的。現(xiàn)在的隨機(jī)數(shù)方案現(xiàn)存可以歸納成兩種形式:第一種是外源的,在外部有一個(gè)服務(wù)器、一組服務(wù)器,把隨機(jī)數(shù)投送到目標(biāo)鏈、智能合約里,作為隨機(jī)數(shù)的種子來運(yùn)行;第二種是變相的隨機(jī)數(shù)方案,用區(qū)塊的塊高度、塊 ID 再附以在合約代碼里寫出很鬼畜的邏輯,演算出一個(gè)看起來像隨機(jī)數(shù)一樣的東西。第二種方案還有衍生型,比如說 AB 兩個(gè)人,A 和 B 各自持有隨機(jī)數(shù)的種子,各自互相算對(duì)方的哈希摘要。
但這幾種方式都是有問題的,第一種方式是中心化的。第二種方式AB互相摘要的只能用在擲骰子這種隨機(jī)性的,但如果用隨機(jī)方式洗出來一幅牌,牌在沒有打開的時(shí)候也應(yīng)該處在黑盒中,這種場(chǎng)景就無力應(yīng)對(duì)了。
為了應(yīng)對(duì)前面方案造成的一系列盜幣、黑客通過推算的方式選準(zhǔn)了時(shí)間點(diǎn)阻塞別的用戶讓別的用戶無法投中,我們提供了去中心的隨機(jī)數(shù)解決方案,是完全可信的,它的產(chǎn)生是在所有節(jié)點(diǎn)相同規(guī)則下一并做的,對(duì)普通開發(fā)者而言、對(duì) Cocos 引擎的開發(fā)者而言用起來非常簡(jiǎn)單,只需要引用(隨機(jī))函數(shù)就可以使用。
當(dāng)中除了隨機(jī)數(shù)外還包含了怎么防止 BT 發(fā)者作弊,怎么隱藏過程變量。比如說擲骰子隨機(jī)數(shù)執(zhí)行完以后要打一幅麻將,按道理麻將牌都是蓋在桌面上的,怎么隱藏由隨機(jī)數(shù)產(chǎn)生的過程,這一組也有方案并且封裝到了引擎中。Cocos 是開源引擎,如果大家對(duì)此技術(shù)感興趣的話可以關(guān)注 Cocos 引擎的開源網(wǎng)站。
4. BCX-NHAS-1808非同質(zhì)數(shù)字資產(chǎn)與世界觀
在技術(shù)特性的支持下我們做了新的非同質(zhì)數(shù)字資產(chǎn),非同質(zhì)資產(chǎn)的使用價(jià)值無需討論。Cocos-BCX 是支持世界觀穿越的,在屏幕上數(shù)據(jù)被分成了很多小塊,為什么會(huì)這樣設(shè)計(jì)呢?這是經(jīng)常發(fā)生在小學(xué)生中的爭(zhēng)論,《火影忍者》里的主角和《七龍珠》的主角誰更厲害,我們知道《七龍珠》里的世界觀武力值設(shè)置是非常變態(tài)的,如果他穿越到《火影忍者》里一拳就把世界打爆了。但事實(shí)上游戲穿越真的這么搞的話就沒有意思了。我們認(rèn)為世界和世界之間是存在很多屏障的,世界在穿越的時(shí)候需要有高低模轉(zhuǎn)換符合他要穿越的世界世界觀。
數(shù)字資產(chǎn)是支持原子交易的,是可以嵌套的數(shù)字資產(chǎn)。像現(xiàn)在在傳統(tǒng)游戲里玩的道具一樣,屠龍刀上可以鑲符文、寶石。并且數(shù)字資產(chǎn)是全區(qū)塊鏈?zhǔn)澜缤ㄓ玫?,?shù)字資產(chǎn)的設(shè)計(jì)方式和 ERC-721 的邏輯和數(shù)據(jù)混在一起有非常大的不同,(在Cocos-BCX里)邏輯和數(shù)據(jù)部分是完全分離的。我們知道寫代碼行業(yè)發(fā)展到現(xiàn)在已經(jīng)非常完善了,我們看到大部分成熟應(yīng)用的數(shù)據(jù)、邏輯、UI都是分開的,而區(qū)塊鏈還比較早期,所以有很多原始時(shí)代的產(chǎn)物,比如說邏輯和數(shù)據(jù)混在一起。如果要把 ERC-721 合約表達(dá)的意思翻譯到其他網(wǎng)絡(luò)上,就需要做兩個(gè)不同合約體系語言之間的兩兩翻譯,這太痛苦了。即使現(xiàn)在是2019年了,Basic語言想要完美翻譯成C語言也非常困難,更何況這種。
我現(xiàn)在演示的是在 Cocos--BCX 區(qū)塊鏈瀏覽器里用可視化的方式創(chuàng)造非同質(zhì)數(shù)字資產(chǎn),發(fā)送到以太坊網(wǎng)絡(luò)里,我們是支持非同質(zhì)資產(chǎn)的跨鏈轉(zhuǎn)移的,在以太坊瀏覽器中已經(jīng)可以看到這筆轉(zhuǎn)賬了?,F(xiàn)在把資產(chǎn)發(fā)回 Cocos-BCX 網(wǎng)絡(luò),在 Cocos-BCX 中已經(jīng)收到了從以太坊轉(zhuǎn)回來的數(shù)字資產(chǎn)。
本身我們是游戲引擎,要為游戲生態(tài)考慮問題。我們把資產(chǎn)權(quán)屬做了拆分,這有點(diǎn)像現(xiàn)實(shí)世界里的房產(chǎn)證,房產(chǎn)的所有權(quán)和使用權(quán)是分開的,可以抵押、典當(dāng)、租押。可以衍生出新的行業(yè),比如說一種新的代練游戲,可以把屠龍刀交給一個(gè)人打造成神器以后再通過智能合約還給我。同時(shí)也可以做抵押,抵押是把使用權(quán)留在我手里,屠龍刀我繼續(xù)使用,但是所有權(quán)先抵押給當(dāng)鋪,先把錢換回來。
5. Cocos-BCX 配套設(shè)施
之后給大家介紹一下我們提供的配套環(huán)境,目前已經(jīng)比較全面了,以 Cocos-Terminal 為 例,提供了以圖形模式進(jìn)入?yún)^(qū)塊鏈?zhǔn)澜绲娜肟?,不需要用戶自己記密鑰,只需要用戶記密碼,沒有任何服務(wù)器保存密碼。如果大家在會(huì)后試玩的話可以發(fā)現(xiàn) Cocos-BCX 的區(qū)塊鏈游戲不需要用戶自己記錢包私鑰的,只需要記住自己的賬戶密碼像傳統(tǒng)游戲一樣登錄就可以了。
Cocos-BCX 也是集成去中心交易所的,并且支持傳統(tǒng)的 BD 交易、道具交易,并且提供了方便游戲開發(fā)者和運(yùn)營(yíng)者使用的專用區(qū)塊鏈瀏覽器,瀏覽器里包含了流水統(tǒng)計(jì)、運(yùn)營(yíng)數(shù)據(jù)分析等功能,并且也為理事會(huì)設(shè)置了整套圖形界面,可以用圖形界面的方式來操作提議等內(nèi)容了。
左邊是同質(zhì)資產(chǎn)交易所,這沒有什么奇怪的,右邊是非同質(zhì)數(shù)字資產(chǎn)交易所。并且需要注意的是我們把非同質(zhì)數(shù)字資產(chǎn)的鏈上交易做成了 API,所有的第三方在游戲里都可以通過引入 API 做資產(chǎn)交易,并且資產(chǎn)交易的訂單是全網(wǎng)深度共享的。
在 Cocos-BCX 網(wǎng)絡(luò)上發(fā)行資產(chǎn)是非常容易的,包括非同質(zhì)數(shù)字資產(chǎn)都可以用純圖形化的方式做出來。
傳統(tǒng)游戲展示的是抽卡邏輯在鏈上怎么實(shí)現(xiàn),其次還會(huì)給大家看到剛才我講的數(shù)字資產(chǎn)道具是怎么在游戲中穿越的,包括道具怎么打造、怎么升級(jí)。在游戲里直接訪問區(qū)塊鏈的交易接口,把道具在游戲里直接賣出去,賣到交易所里,可以看到我們提供的環(huán)境已經(jīng)相當(dāng)完善了。
我們把剛才說的所有特性、開發(fā)環(huán)境集成到了可視化開發(fā) IDE,Cocos 程序員可以使用以往用了十幾年的游戲用于區(qū)塊鏈開發(fā)。
6. Cocos-BCX 基于區(qū)塊鏈、云等新技術(shù)構(gòu)建新型游戲生態(tài)系統(tǒng)的設(shè)想
講一下愿景預(yù)期,剛才公信寶的黃總提到了關(guān)于 TEE 的事情,Cocos 引擎是華為的合作伙伴,我們?cè)谙氍F(xiàn)在是5G 時(shí)代了,網(wǎng)絡(luò)延遲可以變的越來越小,而且我們國家本來就是5G 時(shí)代的領(lǐng)跑者。有沒有可能性把 TEE 可信執(zhí)行環(huán)節(jié)放在云上,云主機(jī)是區(qū)塊鏈的節(jié)點(diǎn)。我們認(rèn)為未來的游戲有沒有可能越來越多是云渲染游戲,游戲是沒有客戶端的,渲染、繪圖都是在云端完成的。手機(jī)的硬件是否強(qiáng)大已經(jīng)無所謂了,現(xiàn)在手機(jī)上也可以玩 PC 游戲。這種游戲已經(jīng)很多了,華為的云游戲在 4G 網(wǎng)絡(luò)下都可以運(yùn)行的很好,更何況 5G 了。
在這種情況下如果智能合約的節(jié)點(diǎn)自身就是渲染的節(jié)點(diǎn),如果在云集群中存在合約池,我們把它當(dāng)做 Layer2 的網(wǎng)絡(luò),在執(zhí)行智能合約的時(shí)候從池子里隨機(jī)分配一個(gè),在云端直接渲染游戲,由于都在一個(gè)云集群中,他們之間互相通信的門檻是相當(dāng)?shù)偷摹J遣皇强梢哉J(rèn)為如此一來區(qū)塊鏈的TPS 問題、安全性問題、可信執(zhí)行環(huán)境問題都不再是問題?這是我們的下一階段方案。方案的 Demo 預(yù)期會(huì)在今年9月份拿出來給開發(fā)者試用。
我們把圖像數(shù)字水印技術(shù)結(jié)合在素材編輯,如圖游戲是由很多素材組成的,貼圖、視頻、音頻、建模,如果素材上里面都存在肉眼看不到的水印和聲紋的話,這些水印和聲紋存在在區(qū)塊鏈里登記,是不是意味著游戲的版權(quán)從上鏈發(fā)布的那一刻起已經(jīng)被 Cocos-BCX 進(jìn)行了保護(hù)?