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