新一代商用級(jí)基礎(chǔ)公鏈BUMO介紹
掃描二維碼
隨時(shí)隨地手機(jī)看文章
通過(guò)創(chuàng)新的共識(shí)算法(BU Firework)、主鏈-子鏈多鏈結(jié)構(gòu)(BU Orbits)、主鏈-主鏈跨鏈結(jié)構(gòu)(BU Canal)、開(kāi)發(fā)者友好的智能合約(BU CodeMach)等核心技術(shù),構(gòu)建泛在價(jià)值流通的互聯(lián)網(wǎng)基礎(chǔ)設(shè)施。BUMO也為開(kāi)發(fā)者提供完善技術(shù)文檔及開(kāi)發(fā)工具,用以提高開(kāi)發(fā)者的開(kāi)發(fā)效率,更易于生態(tài)的應(yīng)用接入。
多資產(chǎn)原子操作的可擴(kuò)展賬本結(jié)構(gòu)
賬本結(jié)構(gòu)是區(qū)塊鏈的數(shù)據(jù)存儲(chǔ)的重要表現(xiàn)形式,隨著區(qū)塊鏈應(yīng)用場(chǎng)景變得越來(lái)越復(fù)雜,用戶對(duì)賬本結(jié)構(gòu)設(shè)計(jì)的要求也越來(lái)越高。BUMO賬本結(jié)構(gòu)的設(shè)計(jì),重點(diǎn)考慮如下幾個(gè)因素:
●提高賬本結(jié)構(gòu)數(shù)據(jù)的可擴(kuò)展性
在賬戶、區(qū)塊、交易、合約的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)中,重點(diǎn)提高它們的可擴(kuò)展性,支持更多承載信息,增強(qiáng)數(shù)據(jù)處理的靈活性,為應(yīng)用提供更多的數(shù)據(jù)支持能力。
●降低賬本數(shù)據(jù)操作的復(fù)雜度
賬本數(shù)據(jù)操作的復(fù)雜程度,直接影響到各行業(yè)使用區(qū)塊鏈的]檻,在賬本層面內(nèi)置許多關(guān)鍵操作功能,并融合諸多業(yè)務(wù)模型的抽象,提供給上層應(yīng)用接口。
●內(nèi)置多資產(chǎn)及原了性操作能力
數(shù)字資產(chǎn)及其操作是區(qū)塊鏈賬本的最典型應(yīng)用方式,將在賬本層面支持多資產(chǎn)服務(wù)模式,同時(shí),保障對(duì)資產(chǎn)操作的原子性,從而增強(qiáng)賬本的操作控制功能。
BU Bambook是BUMO的賬本結(jié)構(gòu),主要包括:多資產(chǎn)的賬戶結(jié)構(gòu),全局的區(qū)塊結(jié)構(gòu),原子性的交易結(jié)構(gòu),高效的賬本數(shù)據(jù)存儲(chǔ),以及多簽名的聯(lián)名賬戶。
1. 多資產(chǎn)的賬戶結(jié)構(gòu)
在Bambook的設(shè)計(jì)中,賬戶結(jié)構(gòu)主要包含如下字段信息:
●賬戶地址
區(qū)塊鏈賬戶的唯一標(biāo)識(shí), 當(dāng)查詢某個(gè)賬戶的信息或向某個(gè)賬戶轉(zhuǎn)賬時(shí),需要使用賬戶地址定位到該賬戶。
●賬戶余額
該賬戶內(nèi)的原生BU-Token的數(shù)量。
●智能合約代碼 :
如果該字段不為空,則賬戶為智能合約賬戶,用于存儲(chǔ)相應(yīng)的智能合約代碼體。
●交易序號(hào)
為了避免賬戶下的交易亂序,每次處理一個(gè)交易時(shí),賬戶的交易序號(hào)遞增,以此記錄當(dāng)前最大序號(hào)。每個(gè)賬戶都有自己的交易序號(hào),賬戶之間互不影響。
● 資產(chǎn)列表
資產(chǎn)列表用于記錄該賬戶下的各種數(shù)字資產(chǎn)的資產(chǎn)代碼、資產(chǎn)發(fā)行方和資產(chǎn)余額等信息。Bambook還提供了-整套鏈_上交易的接口,在符合系統(tǒng)安全性和可靠性要求的前提下,最大程度實(shí)現(xiàn)了資產(chǎn)發(fā)行、流通的可擴(kuò)展性和便利性。
●元數(shù)據(jù)
元數(shù)據(jù)字段為每個(gè)賬戶提供了一個(gè)Key-Value字典結(jié)構(gòu)的私有數(shù)據(jù)存儲(chǔ),用于擴(kuò)展對(duì)上層業(yè)務(wù)的自定義數(shù)據(jù)處理。Bambook 為元數(shù)據(jù)提供了一整套 操作接口,方便對(duì)元數(shù)據(jù)進(jìn)行處理。同時(shí),元數(shù)據(jù)的設(shè)計(jì)提供智能合約代碼執(zhí)行狀態(tài)數(shù)據(jù)存取。
●權(quán)重及門限
在賬戶操作中,權(quán)限控制是一項(xiàng)很重要的需求,因?yàn)楝F(xiàn)實(shí)業(yè)務(wù)中往往不同主體具有不同的角色和權(quán)限。Bambook提出了一種多權(quán)重的操作權(quán)限控制方法,它能夠?yàn)椴煌蓡T賬戶設(shè)置不同的操作權(quán)重,并為操作執(zhí)行設(shè)置一定的i 限值,從而達(dá)到多成員賬戶按累計(jì)權(quán)重控制操作的目標(biāo)。
2. 狀態(tài)索引的區(qū)塊結(jié)構(gòu)
區(qū)塊包括區(qū)塊頭和區(qū)塊體兩部分,區(qū)塊頭主要包含以下字段:
●區(qū)塊號(hào):區(qū)塊在整個(gè)賬本中的序號(hào),號(hào)按區(qū)塊生成的先后順序遞增。
●區(qū)塊的哈希: 對(duì)區(qū)塊序列化后的文本做哈希運(yùn)算得到的哈希值。
●前一區(qū)塊的哈希: 區(qū)塊的前一區(qū)塊的哈希值。
●區(qū)塊生成時(shí)間: 區(qū)塊生成的時(shí)間。
●賬戶樹(shù)的哈希: 用MPT構(gòu)建的賬戶樹(shù)的根哈希,MPT, 上每個(gè)節(jié)點(diǎn)任何比特級(jí)的數(shù)據(jù)更改,都能反饋到樹(shù)的根哈希上,如果在區(qū)塊比對(duì)時(shí),發(fā)現(xiàn)賬戶樹(shù)哈希不一致,可以從根節(jié)點(diǎn)開(kāi)始對(duì)子節(jié)點(diǎn)層層對(duì)比,快速找到不一致的賬戶。
●共識(shí)信息的哈希: 在區(qū)塊生成之前,驗(yàn)證節(jié)點(diǎn)集合需要對(duì)交易進(jìn)行打包生成提案,然 后對(duì)提案進(jìn)行共識(shí)并達(dá)成一致, 共識(shí)信息哈希即對(duì)共識(shí)的提案做哈希運(yùn)算得到的值。
●驗(yàn)證節(jié)點(diǎn)集的哈希: 對(duì)所有參與共識(shí)的驗(yàn)證節(jié)點(diǎn)的地址做哈希運(yùn)算后得到的值。
●費(fèi)用的哈希: 對(duì)當(dāng)前區(qū)塊的費(fèi)用配置,包括燃料價(jià)格和最小預(yù)留費(fèi)用等,做哈希運(yùn)算后得到的值。
●區(qū)塊版本:區(qū)塊結(jié)構(gòu)的版本號(hào),用于實(shí)現(xiàn)向下兼容性。
●交易數(shù)量: 區(qū)塊所包含的交易總數(shù)。
區(qū)塊體主要包含交易的信息和簽名。
由上可知,各類關(guān)鍵信息都通過(guò)哈希索引至區(qū)塊的字段中,使得在整個(gè)賬本中,各部分的數(shù)據(jù)變動(dòng),都能反映到區(qū)塊字段值,使得這些信息的驗(yàn)證、比較非常便利。同時(shí),一旦出現(xiàn)不一致的情況,能夠根據(jù)區(qū)字段的索引哈希值,有針對(duì)性地快速定位問(wèn)題。
3. 原子性的交易操作
相互關(guān)聯(lián)的多個(gè)操作形成一個(gè)交易整體, 交易整體要么被完整執(zhí)行、要么完全不執(zhí)行,是一種常見(jiàn)的現(xiàn)實(shí)資產(chǎn)交易需求。BUMO在交易結(jié)構(gòu)設(shè)計(jì)中,增加了子操作數(shù)組屬性,可以將一筆或多筆資產(chǎn)子操作放入同一筆交易執(zhí)行。任何-筆子操作的失敗均會(huì)導(dǎo)致整體交易的失敗,并觸發(fā)該交易已執(zhí)行操作的回滾,避免對(duì)相關(guān)賬戶產(chǎn)生影響。
比如Alice創(chuàng)建一筆向Bob購(gòu)買產(chǎn)品的交易,該交易至少包括兩個(gè)關(guān)聯(lián)操作:一是 Alice向Bob支付貨幣操作,二是Bob向Alice交付產(chǎn)品操作。任一操作的失敗都應(yīng)該造成交易的失敗,否則會(huì)產(chǎn)生交易糾紛。通過(guò)BUMO的原子性交易操作功能,可以較好地避免交易糾紛產(chǎn)生。
BUMO的原子性交易操作執(zhí)行流程如下圖所示:
如圖所示,存在執(zhí)行失敗子操作的交易將被移出交易隊(duì)列,不會(huì)提交到最終區(qū)塊鏈驗(yàn)證存儲(chǔ)。
4. 高效的賬本數(shù)據(jù)存儲(chǔ)
BUMO采用MPT (Merkle Patricia Tree)樹(shù)進(jìn)行賬本數(shù)據(jù)的存儲(chǔ),MPT樹(shù)是Trie樹(shù)和Merkle樹(shù)優(yōu)點(diǎn)融合的產(chǎn)物,可以有效減少賬本樹(shù)的深度、增加樹(shù)的平衡性、提樹(shù)的安全性和可驗(yàn)證性。基于MPT樹(shù)的賬本數(shù)據(jù)結(jié)構(gòu),使得BUMO在數(shù)據(jù)對(duì)比查找、數(shù)據(jù)插入修改操作等方面,均可以做到高效而低耗,比如僅通過(guò)根哈希的對(duì)比就可以發(fā)現(xiàn)整個(gè)區(qū)塊鏈賬本比特級(jí)的差異、通過(guò)短路徑分支遍歷即可實(shí)現(xiàn)數(shù)據(jù)精確檢素等。
5. 多簽名的聯(lián)名賬戶控制
在賬戶設(shè)計(jì)中,考慮了多權(quán)重的操作門限控制屬性,能夠?yàn)椴煌蓡T賬戶設(shè)置不同的操作權(quán)重,并為操作執(zhí)行設(shè)置門限值。賬戶權(quán)重指擁有者和簽名者針對(duì)該賬戶所擁有的操作權(quán)重,操作門限指針對(duì)賬戶進(jìn)行操作所需的權(quán)重閾值,只有賬戶達(dá)到權(quán)重閾值才具備操作權(quán)限。通過(guò)上述方式,可以實(shí)現(xiàn)多方用戶聯(lián)合控制賬戶,并按照操作門限進(jìn)行精確操作的目標(biāo),滿足用戶協(xié)作多樣化、操作模式精細(xì)化、業(yè)務(wù)模式豐富化的需要。
當(dāng)前,BUMO提供了以下幾種典型門限操作類型:
●創(chuàng)建賬戶: 可創(chuàng)建普通賬戶、聯(lián)名賬戶和智能合約賬戶。
●發(fā)行ATP資產(chǎn): 提供資產(chǎn)代碼和發(fā)行數(shù)量作為參數(shù)進(jìn)行新資產(chǎn)發(fā)行,發(fā)行者和資產(chǎn)代 碼組成區(qū)塊鏈內(nèi)全局唯一資產(chǎn)標(biāo)識(shí)符。
●轉(zhuǎn)移ATP資產(chǎn): 向其他賬戶轉(zhuǎn)移資產(chǎn),用資產(chǎn)代碼和發(fā)行者地址標(biāo)識(shí)該資產(chǎn)。設(shè)置元數(shù)據(jù): 通過(guò)設(shè)置元數(shù)據(jù)可實(shí)現(xiàn)對(duì)各類自定義數(shù)據(jù)的增刪改操作。
●設(shè)置權(quán)重: 設(shè)置賬戶擁有者和簽名者在源賬號(hào)的權(quán)重。
●設(shè)置門限: 設(shè)置賬戶的操作門限,如交易中涉及的操作沒(méi)有達(dá)到其操作門限值,該操作將被拒絕。
●轉(zhuǎn)移 BU:向其他用戶支付原生內(nèi)置BU幣。
●記錄上鏈:通過(guò)此操作將重要的日志數(shù)據(jù)等記錄在區(qū)塊鏈,實(shí)現(xiàn)不可篡改性,該操作不會(huì)修改賬戶樹(shù)。
聯(lián)名賬戶結(jié)構(gòu)和操作流程如下圖所示:
如上圖示例,用戶A、用戶B、用戶C想要對(duì)聯(lián)名賬戶進(jìn)行操作,首先需計(jì)算用戶的權(quán)重之和,進(jìn)而將權(quán)重之和與操作門限進(jìn)行對(duì)比,如果不小于操作門限,則具備操作權(quán)限,可以對(duì)聯(lián)名賬戶進(jìn)行操作,否則操作被拒絕。
BUMO通過(guò)體系化設(shè)計(jì)、模塊協(xié)作和豐富的操作類型,構(gòu)建了多資產(chǎn)原子操作的可擴(kuò)展賬本結(jié)構(gòu),為多種類型的業(yè)務(wù)操作提供強(qiáng)大數(shù)據(jù)支持,滿足用戶復(fù)雜應(yīng)用場(chǎng)景下的個(gè)性需求,同時(shí)也盡可能兼顧用戶對(duì)高性能和低消耗的需求。