CocosBCX :1808標準和世界觀系統

買賣虛擬貨幣
BCX-NHAS-1808標準本章主要講述,在支援非同質數字資產的Cocos-BCX鏈上,我們考察了現有的多種非同質數字資產標準,並結合遊戲行業需求定義了BCX-NHAS-1808非同質數字資產標準用於規範所有將在BCX鏈上釋出和流通的非同質數字資產。1. 標準特性泛用的唯一價值表達1808標準定義的非同質數字資產支援豐富的資料自定義、擴充套件方法,對各類遊戲中的資產型別有良好的相容性,可作為各類遊戲資料的泛用表達。跨越多個使用場景而互不影響(世界牆)
擴充套件資料區域以域為單位組合,每一個域繫結一個或若干僅對自己負責的合約,代表的是一個使用場景(遊戲世界)所專有的資料區域,域展開之後的鍵值對資訊代表了一系列遊戲業務相關的資料,而不同域之間的資料可互讀但互不可寫,即不同使用場景間的資料變更不會互相影響,遊戲間的“世界牆”會阻止這些屬性進入其他的世界,不會存在“A遊戲中降級的裝備到了B遊戲發現居然也降級了”的情況。世界觀相容設計1808標準定義的非同質數字資產允許在同一世界觀下的數字資產在不同的業務場景中使用,因此需要有一定的規則用於在不同業務實體中平衡該資產價值(能力值)。在1808標準中,資產例項在新的業務場景中引用時會確定一個相對屬性,該屬性以某一個確定的其他域資料作為參考,代表該資產的基本價值,並且該資料能夠在同一世界觀下的其他業務實體中識別,當該資產例項進入不同的業務實體時,會根據此屬性確定在本業務實體中的價值,而其他屬性例如裝備技能等資訊由業務實體的域資料形式補充。跨網路跨標準相容設計本標準定義的數字資產具備相容其他網路非同質數字資產標準的設計,包括ERC-721、ERC-1155、ERC-998等,其中針對透過合約定義的單一非同質數字資產型別(ERC-721等),可藉由定義一個具備相同自定義資料結構的資產型別完成資產例項的相容;針對合約定義的可巢狀/組合資產型別(ERC-998等),可藉由在擴充套件資料區域中新增資產組合關係資料完成相容。允許資產所有者放棄特定域資料
1808標準數字資產的域資料會隨著經歷的遊戲數量增加而留下游戲的記錄,當所有者因為道具強化錯誤、被賦予負面屬性、希望重新挑戰遊戲等原因不再需要某個遊戲中產生的資料時,可以選擇刪除這個遊戲對應的域資料,使資產重新以初始的狀態進入遊戲。資產所有者對資產域資料的控制許可權僅限於對指定域資料的完全移除,而非對域資料進行修改,以免所有者透過修改這些域資料達到作弊效果。此外,域資料的刪除許可權也可以有效防止惡意合約向特定資產寫入大量垃圾資料導致資料冗餘。

在鏈內將資產作為鑲嵌品或模組組合使用

808標準非同質資產的巢狀組合設計
以遊戲為例,裝備道具可能是由更多的元件、物品組合而成的,因此區塊鏈遊戲的非同質數字資產也應該具備能夠巢狀包含的特性。這一情況下每一個非同質資產都可以由多個非同質資產組成,父級資產可以包含一個或多個子級資產,子級資產又可以包含其他的子級資產。對於具有裝備建造或組合的遊戲場景,1808標準提供支援資產組合的設計,擴充套件資料中包含記錄組合關係的區域,區域資料在資產組合時記錄此次巢狀關係的資訊,在此關係解除前,被巢狀的子級資產將無法發生所有權轉移的行為。
2. 非同質資產標準對比目前較為流行的非同質數字資產標準有以太坊網路的ERC-721、ERC-1155、ERC-998等,這些標準非同質資產用於以太坊網路上不同的使用場景和需求:ERC-721以太坊網路中被官方正式接受的一種透過智慧合約定義的非同質數字資產標準,具備可自定義的資料區,為物品或記錄的數字化提供了可能。 代表應用:加密貓、加密名人等。ERC-1155由Enjin提出的一種在以太坊的單一智慧合約中定義多個非同質資產的標準介面,主要服務於區塊鏈遊戲中的虛擬道具。 代表應用:War of Crypto。
ERC-998由Matt Lockyer提出的一種在以太坊的智慧合約中定義的可組合非同質代幣標準(CNFT, Composable NFTs) 。
非同質資產標準對比
上述三種非同質資產標準與1808標準的對比圖,該圖就非同質資產在鏈和遊戲上可能涉及的要點作了簡單對比,其中紅色的差異部分正是COCOS-BCX針對鏈上游戲執行需求對1808標準設計的特性,這些特性除了與BCX鏈網路自身的特性有關外,也與1808標準資產的資料結構設計有關。3. 資料結構

1808標準非同質資產的資料結構
如上圖所示,1808標準非同質資產的資料結構分為兩個基本功能區:固有資料區域用來儲存非同質數字資產的基本資訊,分為資產ID、世界觀申明以及基礎資料區域三段;擴充套件資料區域是為非同質數字資產屬性擴充套件專門設計的功能性資料區域,包括組合關係資料和域資料兩部分。固有資料定義該非同質數字資產ID、世界觀及其他基礎資料,其中資產ID是該資產例項在分佈記賬式網路中的唯一標識,是該資產例項在進行訪問、查詢、修改等動作時的唯一憑據;世界觀包括該資產生效和支援的遊戲型別、世界,以及此資產在網路中流通需要使用的世界流通貨幣型別;基礎資料包括資產所有者ID、製作者ID、製作時間和該資產的基本屬性(例如裝備描述等)。資料包括資產所有者ID、製作者ID、製作時間和該資產的基本屬性(例如裝備描述等)。 擴充套件資料區域是該資產支援的世界觀內各業務資料的儲存區域,不同業務實體在該區域擁有專屬的域標識和資料區,不同業務實體間的資料區相互隔離,域資料以域標識和資料的鍵值對形式儲存,擴充套件區域同時包含一個用於表達資產組合、巢狀關係的資料區域,用於描述資產的組合和從屬關係。4. 資料結構對照
本標準定義的非同質數字資產固有資料區域各欄位型別和標識對照表。

Asset_ID欄位型別為asset_id_type,該型別的設計原則為保持網路中的唯一性即可,對ID長度沒有硬性要求,但從多網路相容性考慮,ID的最大樣本數量應能夠覆蓋現有各式去中心分佈賬本式網路中的非同質數字資產例項的最大預期數量,例如以太坊網路中的資產ID為40位元組長度的hash地址,可支援的最大樣本數為1.462*10^48個,則在應用此標準的網路中設計此資產ID時應考慮使用樣本容量大於該數值的hash地址或其他唯一標識方式。

World_view欄位型別為world_view_type,包含此資產適用的世界觀ID與該世界觀對應的世界流通貨幣,其中世界觀ID為網路唯一標識,流通貨幣為該貨幣的唯一符號(使用符號作為唯一憑證的網路)或地址(使用地址作為唯一憑證的網路)。

Asset_owner與Asset_creator欄位型別為account_id_type,應採用具備唯一性和足夠樣本容量的資料型別

Asset_create_time欄位型別為time_point_sec,用以標識此資產例項創造的日期,由該例項化事務完成時的賬本時間戳決定

Asset_description欄位型別為string,是一段可用於表達資產例項基本屬性的資料,可採用自定的解析或加密方式處理該段資料以匹配特定的業務實體和應用場景

· Mod_data欄位型別為id列表,是一個由標識父級資產ID和子級資產ID列表組成的關係表,用於描述不同業務實體中資產的組合、巢狀關係

· World_view欄位型別為map,是一個由域標識和域資料組成的鍵值對對映表,其中域標識為業務實體的型別標記,對應一個或若干合約,該業務對此資產例項的所有資料互動將在此區域內進行

· Session_key欄位型別為contract_id_type,為該業務應包含的一個或多核合約的id,該id應與其他唯一標識一樣具備唯一性與充足的樣本容量

· Session_data欄位型別為map,由域內鍵inner_key和域內值inner_value這一鍵和值都為字串的鍵值對組成,鍵與值的具體資料均由負責此域的業務實體自行定義,並可以根據其需求使用結構化或加密的字串作為其中資料。

需求與認證設計

BCX-NHAS-1808標準非同質資產設計需求與鏈內認證設計

1. 非同質數字資產設計需求

差異性

· 不同型別的資產
· 同型別的資產在固有資料區域具備唯一標識
· 同型別的資產在固有資料區域可宣告不同的世界觀
· 同型別的資產在擴充套件資料區域可具備不同的域
· 同型別的資產在擴充套件資料區域的同一個域中可具備不同的具體資料

資產域資料的保密性

原則上分佈記賬式網路中數字資產資料應保持儘可能的公開和透明,但因為遊戲開發、執行上的需求,本標準中定義的非同質數字資產在域資料的內容上,應支援自定義加密後的資料

資產資料安全性

· 分佈記賬式網路上的資產資料安全性需求包含以下方面:
· 資產的世界觀等基礎資料一旦釋出不可修改
· 可擴充套件資料中某一域的所有者能且僅能更改自己域中的資料
· 合約對擴充套件資料的修改僅表現在該合約對應的域下
· 對於參與組合的非同質數字資產,其業務導致的所有權變更等行為應對組合的整體生效,且被組合的資產在接觸之前無法單獨進行此類操作
· 該資產的所有者有權刪除可擴充套件資料中的域

認證資訊的機密性

合約的所有權認證及認證過程應使用包括ECC、AES在內的加密手段以保證其機密性

跨網路數字資產流通性

基於本標準釋出的非同質數字資產應具備能夠透過一定方式相容其他分佈記賬式網路的非同質數字資產,如ERC 721或ERC 875

2. 認證設計

認證需求

數字資產應包含對例項內所有資料的許可權認證,包含以下規定的各種條件與場景:

· 數字資產建立時固有資料的認證設計
· 數字資產由合約修改時的認證設計
· 數字資產由所有者修改時的認證設計
· 數字資產之間進行組合、巢狀時的認證設計

認證模型

分佈賬本式網路的非同質數字資產相關認證參考模型
本標準定義的非同質數字資產在分佈賬本式網路中設計的認證包括:釋出認證、訪問/執行認證、所有權認證和域許可權認證。

分佈賬本式網路中的非同質數字資產相關認證模型

· 釋出認證用於資產完成定義後在網路中釋出時的認證,包括髮布者身份和操作許可權認
· 訪問/執行認證為業務實體對資產資料進行訪問/修改時的認證,包括業務實體對資產中的業務資料的 訪問或修改時的角色、操作許可權認證和身份認證等
· 所有權認證用於判定資產例項所有者的身份,發生在資產轉移、交易、刪除域資料等場景
· 域許可權認證用於判定業務實體是否具備修改某一特定域資料的許可權,發生在業務實體對資產例項資料進行操作
· 處於組合狀態的數字資產,其父級資產的所有權變更與子資產繫結,子資產在完成解除繫結前,無法進行所有權變更操
· 對認證資訊的要求
· 對於認證資訊中的私密性資訊,包括各方(釋出者、業務實體、資產所有者等)的金鑰材料、授權與臨時授權金鑰及· 其他衍生金鑰,業務實體的臨時身份標識等,都需要儲存在各自的安全介質
· 簽名資訊應該安全地儲存在分佈記賬式網路中,只有透過網路的授權訪問可以查詢簽名資訊
· 事務的簽名應採用儘可能安全的、隔離的環境進行,如隔絕網路的離線環境等
· 臨時授權及衍生授權資訊應該具有抗猜解冗餘設定

世界觀系統

遊戲世界與世界觀系統

與傳統遊戲行業的概念不同,BCX的區塊鏈遊戲並非完全相互獨立的業務場景,每一個鏈遊戲可認為是一個遊戲世界,而數個具有相似基本設定的遊戲世界組合在一起即可以認為這幾個遊戲世界擁有一個共同的世界觀。

在不同遊戲世界中使用的世界觀道具
世界觀這一概念並非區塊鏈遊戲首創,現代遊戲行業已經有許多遊戲具備了這一特性,例如《魔獸爭霸》、《魔獸世界》、《爐石傳說》、《風暴傳說》擁有共同的暴雪宇宙世界觀,其中有相當部分的遊戲道具、角色、資產是共通的,雖然這些資產在各自的遊戲中有不同的具體屬性、技能等解釋,但這些資產的設計基礎源於共同的基本規則。區塊鏈遊戲的世界觀是一種用於區分遊戲故事設定、角色/道具/規則設定和效用範圍的標識。遊戲道具在世界觀中遵循統一的世界規範,能夠透過支付遷移費用在本世界觀下的不同遊戲世界中遷移,即遊戲道具的“穿越”。世界線穿越、多元宇宙與平行世界
遊戲道具是一種用於鏈上游戲的非同質數字資產,而道具“穿越”世界線的過程即某一非同質數字資產在同一世界觀下不同遊戲、業務裡應用、變化的過程。1808標準非同質資產提供了鏈上游戲設計多元宇宙/平行宇宙的可能性,不同的遊戲世界觀也是不同的遊戲宇宙,百家齊鳴的遊戲世界觀也將構成鏈上游戲的多元宇宙,這些宇宙內擁有可以自由流通的遊戲道具,這些道具在不同遊戲中被寫上了不同的屬性、技能等,它們各自存在又互不影響,即“平行世界”中的道具設計。可擴充套件的自定義資料能夠讓遊戲設計者創造各具特色的遊戲資產,互不干涉的域資料設計讓遊戲資產在“穿越”世界、宇宙時允許被賦予不受干擾的全新屬性,同時也為遊戲間資料聯動(例如技能增益/減益)設計提供了可能,下圖將是一個鏈上游戲資產在穿越世界線/平行世界的示例:

道具穿越世界線設計的示例
根據遊戲運營設計,1808標準非同質資產支援透過特定的第三方有償穿越世界線的設計,這一機制有助於遊戲運營在道具平衡性和資產流通量控制上作出符合需求的設計。
世界觀系統中的資料管控方式1808標準非同質數字資產在鏈上完成初始定義並透過智慧合約操作,且1808標準本身包含較為複雜的資料結構和組合設計,因此世界觀系統下的資產資料安全設計顯得更為重要,COCOS-BCX針對鏈上資料操作過程中可能發生的風險和隱患進行了分析,並著手修復和改進。資產與其他資料分離分離的資料儲存可以保證資產所有者擁有對資產的完全所有權,而若合約與資產使用合併的儲存,則特定的合約可以在合約開發者的許可權下呼叫合約擁有的他人資產,這是非常不安全的。在COCOS-BCX中,同質、非同質資產和智慧合約的資料均為分離儲存式設計,這除了有助於減少資料流轉消耗、提高鏈效率外,是一種更具備資料安全性的設計。帶有身份核驗的合約執行驗證機制對於涉及敏感操作的合約函式,COCOS-BCX允許開發者定義具有身份驗證的合約執行機制,設有驗證的合約函式只會在滿足要求的呼叫者調取時才會執行,避免駭客惡意執行特定合約介面進行非法資產操作的風險。
以域設計對合約許可權進行控制合約能夠獲取1808標準資產擴充套件資料中的所有域資料,但對資產資料的修改將被限定在標記為當前合約的域中,即A遊戲可以知道資產在B遊戲中的屬性資料,但對資產的改動只會儲存在A域中,且A合約無法修改B域中的任何資料。資產所有者對域資料的管理模式域資料隨著遊戲的增加不斷補充,而追加的域資料過多或收到惡意合約故意追加無效域資料時會影響業務的執行效率,導致使用者資產資料冗餘,為了避免這種情況的出現,1808標準資產允許使用者刪除資產擴充套件資料中特定的域,但此許可權僅賦予使用者刪除域資料的權力而不包括修改這些域資料的權力,以防使用者透過修改這些資料而作弊。1808 標準與世界觀系統應用範例本章將主要說明在Cocos-BCX 鏈中,使用合約對1808 非同質數字資產操作,以及世界觀內非同質數字資產如何穿越、聯動的示例。
1. 合約對1808 標準資產的操作非同質資產所有權轉移非同質資產轉移 – 呼叫者◼ 函式原型void transfer_nht_from_caller(string to, string token_hash_or_id)◼ 呼叫說明
從合約呼叫者轉移非同質資產到賬戶to◼ 引數說明to:目標賬戶,token_hash_or_id:指定的非同質資產hash 值或者id 編號非同質資產轉移 – 所有者◼ 函式原型void transfer_nht_from_owner(string to, string token_hash_or_id)
◼ 呼叫說明從合約所有者轉移非同質資產到賬戶to◼ 引數說明to:目標賬戶,token_hash_or_id:指定的非同質資產hash 值或者id 編號4.1.2. 修改非同質資產資料(特定資料域內)非同質資產轉移 – 所有者◼ 函式原型
void nht_describe_change(string nht_hash_or_id, string key, string value)◼ 呼叫說明修改非同質資產的合約相關描述,修改部分為合約對應的域◼ 引數說明token_hash_or_id:指定的非同質資產hash 值或者id 編號,key:描述項索引,value:索引對應的描述資訊2. 場景範例
遊戲(合約)內強化裝備本例是一個遊戲道具穿越遊戲世界的範例。本範例場景下,遊戲服務有償授權玩家道具穿越到自己的遊戲世界,玩家透過支付穿越所需的資產後遊戲服務將允許玩家的指定道具進入到遊戲世界(合約系統)中。遊戲服務在玩家道具的域資訊中提取需要的資訊並提交至合約,由於與之前的遊戲有聯動活動,開發者在合約中設計了與以往遊戲技能聯動的設計(如下文程式碼中所示'eyes of hawk'等),使穿越到本世界中的道具一開始便可獲得技能屬性等。JavaScript--合約函式:初始化穿越世界的遊戲道具-- item_id:道具ID
Project Cocos-BCX16-- 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)thenres()--將聯動的技能資訊更新到域資料中nht_describe_change( item_id, add_skill, add_skill_value)nht_describe_change( item_id, 'another_world_message', add_description)
elseassert(res,'unexpected original game skill type')3. 複雜業務模式的實現改進的Cocos-BCX 鏈新增了多種原子OP 和資料結構用於實現可能的新型業務,結合自身合約系統,開發者能輕鬆實現鏈上的複雜金融業務模式,例如:資產租賃、抵押、典當等。這些新型業務模式將極大改善傳統鏈系統經濟模式單一缺少流動性的弊端,進一步活化市場行為。下面簡單介紹在BCX 中實現這三種業務模式的設計思路。租賃

合約設計:

⚫ 定義發起租賃、轉移使用權、收回使用權、庫存狀態查詢、庫存更新等租賃業務各流程的函式。
⚫ 定義一個可供租用的資產池,帶有標價等資訊。流程:
⚫ 所有者在合約中透過庫存更新函式加入需要出租的資產資訊,並規定租金/計算規則;
⚫ 租戶透過發起租賃的函式交納租金等資產後租約成立;
⚫ 合約透過轉移使用權函式定義資產使用權黑白名單並將使用權轉交至租戶,隨後將租金轉至所有者賬戶,將庫存資產的狀態標記為已出租,同時定義一個定時任務——在到期時呼叫收回使用權函式;
⚫ 定時任務到期時,呼叫合約收回使用權函式,將資產使用權轉回所有者。

抵押

合約設計:

⚫ 定義發起抵押、轉移所有權、收回使用權、抵押品狀態查詢、設定可抵押清單等抵押業務各流程的函式;
⚫ 定義一個抵押物記錄結構,帶有可供抵押資產的資訊與已抵押當的資產資訊。流程:
⚫ 抵押權人透過設定可抵押清單函式設定可供抵押的物品資訊,標記抵押價格或計算規則等;
⚫ 抵押人透過發起抵押的函式將資產所有權轉至抵押權人,並收到抵押權人支付的押金,更新抵押拼記錄清單中,同時釋出一個定時任務——期限到達時根據贖回與否轉移物品使用權;
⚫ 定時任務到期時,若押金支付等條件未滿足,則呼叫合約的收回使用權函式,透過使用權變更函式將資產使用權轉到抵押權人賬戶,若完成贖回,則呼叫合約的轉移所有權函式,將所有權轉還至抵押人。

典當

合約設計:

⚫ 定義發起典當、轉移使用權、收回所有權、當品狀態查詢、設定典當清單等典當業務各流程的函式;
⚫ 定義一個典當品記錄結構,帶有可供典當資產的資訊與已經典當的資產資訊。推演流程:
⚫ 典當權人透過設定典當清單函式設定可供典當的物品資訊,標記典當價格或計算規則等;
⚫ 典當人透過發起典當的函式將資產使用權轉至典當權人,並收到典當權人支付的押金,更新典當清單中的記錄,同時釋出一個定時任務——根據需要可以設計為定期返還押金/按期支付利息/兩者兼有的模式;
⚫ 定時任務到期時,若押金支付等條件未滿足,則呼叫合約的收回所有權函式,透過所有權變更OP 將資產所有權轉到典當權人賬戶,若達成條件,則透過使用權變更OP 將使用權轉移至典當人。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;