《BMW白皮书》解读四:BMW核心技术适用于商业数据价值流通

BMW (www.bmwlab.org)技术全景包括基础数据层、中间协议层及应用服务层,实现端到端的数据透明度,降低成本和风险,同时有效解决信息孤岛现象,实现数据价值全球流通。

BMW 基础数据层由数据层、网络层、组件层组成,其中数据层包括了底层数据区块以及相关的数据加密和时间戮等技术;网络层则包括分布式组网机制、数据传播机制和数据验证机制等;组件层则包括了计算组件、存储组件、通信组件、资源调度和管理组件。

中间协议层由共识层、激励层、合约层组成,其中共识层主要包括网络节点的各类共识算法;激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;合约层主要包括各类脚本、算法和智能合约,是区块链编程特性的基础。

BMW 应用服务层作为数字经济中最重要的应用环节,则包括区块链的各种应用场景和案例。应用层是 BMW 应用生态的底层技术架构,为建立全球数字经济应用生态提供了技术保障。

BMW 采用的是基于 RTXP 开源协议的区块链 P2P 网络,让用户能够进行点对点的货币交易与即时结算,更便捷地转换交易资产(传统货币、电子货币以及其他各种形式的资产),就像发送邮件一样简单,大幅降低了跨行转账尤其是国际转账过程中的风险与手续费。

不同于中心化网络模式,BMW P2P 网络中各节点的计算机地位平等,每个节点有相同的网络权力,不存在中心化的服务器。所有节点间通过特定的软件协议共享部分计算资源、软件或者信息内容。P2P 网络技术是构成 BMW 技术架构的核心技术之一。

RTXP 协议与传统的银行 SWIFT 电汇协议对比:通过传统的银行 SWIFT 转账要被收取高额的手续费并耗时 3 到 5 天,用 RTXP 跨境转账和支付手续费几乎为 0,而且是实时到达。

非对称加密算法

BMW 采用非对称式加密算法构建节点间的信任。非对称式加密算法将密钥分为了私钥和公钥两部分,私钥用来个人解密,而公钥则用于对明文加密与身份代表。所有在网络中进行的数据与文字都是用公钥加密后进行传输的,发送者无需提供个人私钥,只需要交换公钥给指定接受者即可完成数据传输工作。其特点就是可以将用户身份隐匿起来,对外公开的身份只是用户提供的公钥,其实的个人信息永远不会 在网络中暴露出来。

Merkle Patricia Tree

BMW 的内部数据是存放于 Merkle Patricia Tree 的数据结构中的。Merkle Patricia Tree通过节点的 hash 值进行树的节点的链接,有助于提高树的安全性和可验证性。

1)加密安全

首先,为了保证树的加密安全,每个节点通过他的 hash 被引用,而非 32bit 或 64bit 的内存地址,即树的 Merkle 部分是一个节点的确定性加密的 hash。一个非叶节点存储在leveldb 关系型数据库中,数据库中的 key 是节点的 RLP 编码的 sha3 哈希,value 是节点的 RLP 编码。

想要获得一个非叶节点的子节点,只需要根据子节点的 hash 访问数据库获得节点的 RLP编码,然后解码就行了。通过这种模式,根节点就成为了整个树的加密签名。

2)提高效率

BMW 引入了很多节点类型来提高效率。MPT 树中的节点包括空节点、叶子节点、扩展节点和分支节点。其中有空节点,简单的表示空,在代码中是一个空串。标准的叶子节点,表示为[key,value]的一个 list,其中 key 是 key 的一种特殊十六进制编码,value 是value 的 RLP 编码。扩展节点,也是[key,value]的列表,但是这里的 value 是其他节点的 hash,这个 hash 可以被用来查询数据库中的节点。也就是说通过 hash 链接到其他节点。最后分支节点,因为 MPT 树中的 key 被编码成一种特殊的 16 进制的表示,再加上最后的 value,所以分支节点是一个长度为 17 的 list,前 16 个元素对应着 key 中的 16 个可能的十六进制字符,如果有一个[key,value]对在这个分支节点终止,最后一个元素代表一个值,即分支节点既可以搜索路径的终止也可以是路径的中间节点。

除了四种节点,MPT 树中另外一个重要的概念是一个特殊的十六进制前缀(hex-prefix,HP)编码,用来对 key 进行编码。因为字母表是 16 进制的,所以每个节点可能有 16 个可能。因为有两种[key,value]节点(叶节点和扩展节点),引进一种特殊的终止符标识来标识 key 所对应的是值是真实的值,还是其他节点的 hash。如果终止符标记被打开,那么 key 对应的是叶节点,对应的值是真实的 value。如果终止符标记被关闭,那么值就是用于在数据块中查询对应的节点的 hash 无论 key 奇数长度还是偶数长度,HP 都可以对其进行编码。

最后我们注意到一个单独的 hex 字符或者 4bit 二进制数字,即一个 nibble。HP 编码很简单。一个 nibble 被加到 key 前,对终止符的状态和奇偶性进行编码。最低位表示奇偶性,第二低位编码终止符状态。如果 key 是偶数长度,那么加上另外一个 nubble,值为 0 来保持整体的偶特性。BMW 帐户的交易信息、状态以及相应的状态变更,还有相关的交易信息等都使用 MPT 来进行管理。

一致共识

BMW 遵 循 Ripple 提 岀 的RTXP 协议。所以,在分布式节点之间,有相似的协商一致性的重要步骤。“一致共识(Consensus)”是整个网络就同一总账达成一致的过程。

如果每个人选择了一套完全不相干的验证者,网络将不会达成一致共识,总账的特殊版本就是唯一正确的总账。但实际上,人们的 UNL 列表会重复。这种重复导致可靠的验证者达成同样的协商。

每个人可靠的系统用户都想让系统达成协商。验证者会选择其他验证者格外相信的,因为他们也想达成协商。基本上,所有可靠的系统用户合作保证协商是可以达成的且可维持的。当然,缺乏一致性共识是很容易发觉的。

在一致共识中,每个节点评估来自特定同等节点组的提议,被称为“被选择的验证者”。当共同运行时,被选择的验证者代表一个被信任不会串通欺骗节点评估提议的子集。“信任”的定义不要求单个被选中的验证者被信任。更确切地说,选中这些验证者是希望它们不会串通伪造转发到网络的数据。

通常来说,没有通过一致共识的交易会在下一轮成功。然而,在某种情况下,交易会无限期地不能实现一致共识。有一种情况是网络增加基础费用且比交易提供的费用高。如果未来交易费在某种程度上变低,交易很可能成功。

BMW 提供防止交易无限期可行的途径,确保交易进程及时发生。应用需包含每个交易的Last Ledger Sequence 参数。这保证交易在规定的总账序列号(或之前)成功或失败,从而限制了在获取最后交易结果前的等待时间。

数据安全共享

1) BMW 通用数字身份

BMW 通用数字身份将是区块链世界的通行证,打通联盟链上所有应用,让用户在 BMW 建立的生态世界畅通无阻。数字身份的背后锚定的是资产所有权、个人信息、个人背景、信用记录以及社会关系等,它和货币一样是需要强信任的。

2) BMW 数据上链

区块链作为分布式不可篡改的可信账本,提供了很好的价值存储手段,然而区块链技术本身只是提供了键上数据的不可篡改性,忽略了数据从链下到链上的过程。如何保证这一过程的可信,是 BMW 可信数 据组件要去研究和解决的重要课题之一。

当我们讨论数据本身的可信度的时候,我们会想到通过一些可信的验证方来实现,如在中国个人身份的验证,我们可能会使用公安提供的二要素(姓名+身份证号)验证接口;或者说我们的银行卡信息,需要通过银行的接口来进行验证。所以我们认识到,银行和公安这样的中心化信任机构,在某种程度上是不可替代的存在,直到区块链技术的出现。

3) BMW 数据存储过程

采用了的双层数据存储,其中关系数据库采用了 HA 的热备份模型,通过Master 和 Slave 节点共同存储,自动实时同步,从而保障关系数据安全。还在其中引入了 Sharding Group 作为查询主要接口,通过引入索引机制,加快查询速度。

非关系型数据库则通过 IPFS 模式进行存储,通过双层数据存储模型的建立,有效提高了数据查询的效率,在保障数据质量的情况下,大大提高了工作效率。在关系型数据库和非关系型数据库中取其优点摒弃缺点,做到两者的最优组合。

猜你喜欢

转载自blog.csdn.net/m3o3n3/article/details/109115701
今日推荐