新一代商用级基础公链BUMO介绍
扫描二维码
随时随地手机看文章
通过创新的共识算法(BU Firework)、主链-子链多链结构(BU Orbits)、主链-主链跨链结构(BU Canal)、开发者友好的智能合约(BU CodeMach)等核心技术,构建泛在价值流通的互联网基础设施。BUMO也为开发者提供完善技术文档及开发工具,用以提高开发者的开发效率,更易于生态的应用接入。
多资产原子操作的可扩展账本结构
账本结构是区块链的数据存储的重要表现形式,随着区块链应用场景变得越来越复杂,用户对账本结构设计的要求也越来越高。BUMO账本结构的设计,重点考虑如下几个因素:
●提高账本结构数据的可扩展性
在账户、区块、交易、合约的数据结构设计中,重点提高它们的可扩展性,支持更多承载信息,增强数据处理的灵活性,为应用提供更多的数据支持能力。
●降低账本数据操作的复杂度
账本数据操作的复杂程度,直接影响到各行业使用区块链的]槛,在账本层面内置许多关键操作功能,并融合诸多业务模型的抽象,提供给上层应用接口。
●内置多资产及原了性操作能力
数字资产及其操作是区块链账本的最典型应用方式,将在账本层面支持多资产服务模式,同时,保障对资产操作的原子性,从而增强账本的操作控制功能。
BU Bambook是BUMO的账本结构,主要包括:多资产的账户结构,全局的区块结构,原子性的交易结构,高效的账本数据存储,以及多签名的联名账户。
1. 多资产的账户结构
在Bambook的设计中,账户结构主要包含如下字段信息:
●账户地址
区块链账户的唯一标识, 当查询某个账户的信息或向某个账户转账时,需要使用账户地址定位到该账户。
●账户余额
该账户内的原生BU-Token的数量。
●智能合约代码 :
如果该字段不为空,则账户为智能合约账户,用于存储相应的智能合约代码体。
●交易序号
为了避免账户下的交易乱序,每次处理一个交易时,账户的交易序号递增,以此记录当前最大序号。每个账户都有自己的交易序号,账户之间互不影响。
● 资产列表
资产列表用于记录该账户下的各种数字资产的资产代码、资产发行方和资产余额等信息。Bambook还提供了-整套链_上交易的接口,在符合系统安全性和可靠性要求的前提下,最大程度实现了资产发行、流通的可扩展性和便利性。
●元数据
元数据字段为每个账户提供了一个Key-Value字典结构的私有数据存储,用于扩展对上层业务的自定义数据处理。Bambook 为元数据提供了一整套 操作接口,方便对元数据进行处理。同时,元数据的设计提供智能合约代码执行状态数据存取。
●权重及门限
在账户操作中,权限控制是一项很重要的需求,因为现实业务中往往不同主体具有不同的角色和权限。Bambook提出了一种多权重的操作权限控制方法,它能够为不同成员账户设置不同的操作权重,并为操作执行设置一定的i 限值,从而达到多成员账户按累计权重控制操作的目标。
2. 状态索引的区块结构
区块包括区块头和区块体两部分,区块头主要包含以下字段:
●区块号:区块在整个账本中的序号,号按区块生成的先后顺序递增。
●区块的哈希: 对区块序列化后的文本做哈希运算得到的哈希值。
●前一区块的哈希: 区块的前一区块的哈希值。
●区块生成时间: 区块生成的时间。
●账户树的哈希: 用MPT构建的账户树的根哈希,MPT, 上每个节点任何比特级的数据更改,都能反馈到树的根哈希上,如果在区块比对时,发现账户树哈希不一致,可以从根节点开始对子节点层层对比,快速找到不一致的账户。
●共识信息的哈希: 在区块生成之前,验证节点集合需要对交易进行打包生成提案,然 后对提案进行共识并达成一致, 共识信息哈希即对共识的提案做哈希运算得到的值。
●验证节点集的哈希: 对所有参与共识的验证节点的地址做哈希运算后得到的值。
●费用的哈希: 对当前区块的费用配置,包括燃料价格和最小预留费用等,做哈希运算后得到的值。
●区块版本:区块结构的版本号,用于实现向下兼容性。
●交易数量: 区块所包含的交易总数。
区块体主要包含交易的信息和签名。
由上可知,各类关键信息都通过哈希索引至区块的字段中,使得在整个账本中,各部分的数据变动,都能反映到区块字段值,使得这些信息的验证、比较非常便利。同时,一旦出现不一致的情况,能够根据区字段的索引哈希值,有针对性地快速定位问题。
3. 原子性的交易操作
相互关联的多个操作形成一个交易整体, 交易整体要么被完整执行、要么完全不执行,是一种常见的现实资产交易需求。BUMO在交易结构设计中,增加了子操作数组属性,可以将一笔或多笔资产子操作放入同一笔交易执行。任何-笔子操作的失败均会导致整体交易的失败,并触发该交易已执行操作的回滚,避免对相关账户产生影响。
比如Alice创建一笔向Bob购买产品的交易,该交易至少包括两个关联操作:一是 Alice向Bob支付货币操作,二是Bob向Alice交付产品操作。任一操作的失败都应该造成交易的失败,否则会产生交易纠纷。通过BUMO的原子性交易操作功能,可以较好地避免交易纠纷产生。
BUMO的原子性交易操作执行流程如下图所示:
如图所示,存在执行失败子操作的交易将被移出交易队列,不会提交到最终区块链验证存储。
4. 高效的账本数据存储
BUMO采用MPT (Merkle Patricia Tree)树进行账本数据的存储,MPT树是Trie树和Merkle树优点融合的产物,可以有效减少账本树的深度、增加树的平衡性、提树的安全性和可验证性。基于MPT树的账本数据结构,使得BUMO在数据对比查找、数据插入修改操作等方面,均可以做到高效而低耗,比如仅通过根哈希的对比就可以发现整个区块链账本比特级的差异、通过短路径分支遍历即可实现数据精确检素等。
5. 多签名的联名账户控制
在账户设计中,考虑了多权重的操作门限控制属性,能够为不同成员账户设置不同的操作权重,并为操作执行设置门限值。账户权重指拥有者和签名者针对该账户所拥有的操作权重,操作门限指针对账户进行操作所需的权重阈值,只有账户达到权重阈值才具备操作权限。通过上述方式,可以实现多方用户联合控制账户,并按照操作门限进行精确操作的目标,满足用户协作多样化、操作模式精细化、业务模式丰富化的需要。
当前,BUMO提供了以下几种典型门限操作类型:
●创建账户: 可创建普通账户、联名账户和智能合约账户。
●发行ATP资产: 提供资产代码和发行数量作为参数进行新资产发行,发行者和资产代 码组成区块链内全局唯一资产标识符。
●转移ATP资产: 向其他账户转移资产,用资产代码和发行者地址标识该资产。设置元数据: 通过设置元数据可实现对各类自定义数据的增删改操作。
●设置权重: 设置账户拥有者和签名者在源账号的权重。
●设置门限: 设置账户的操作门限,如交易中涉及的操作没有达到其操作门限值,该操作将被拒绝。
●转移 BU:向其他用户支付原生内置BU币。
●记录上链:通过此操作将重要的日志数据等记录在区块链,实现不可篡改性,该操作不会修改账户树。
联名账户结构和操作流程如下图所示:
如上图示例,用户A、用户B、用户C想要对联名账户进行操作,首先需计算用户的权重之和,进而将权重之和与操作门限进行对比,如果不小于操作门限,则具备操作权限,可以对联名账户进行操作,否则操作被拒绝。
BUMO通过体系化设计、模块协作和丰富的操作类型,构建了多资产原子操作的可扩展账本结构,为多种类型的业务操作提供强大数据支持,满足用户复杂应用场景下的个性需求,同时也尽可能兼顾用户对高性能和低消耗的需求。