1.解决比特币区块问题:
吞吐量低、交易公开无隐私性、无最终确定性以及共识算法低效等问题。
2.本质
权限区块链的底层基础框架
模块化架构提供可切换和可扩展的共识算法、加密安全、数字资产、智能合约和身份鉴权等服务。支持不同的模块组件直接拔插启用。
局限性
共识算法尚不支持BFT类型,交易过程还有并发控制的局限性。
3.名词解释
成员服务Membership Services:用来许可区块链的网络服务。例如:认证、授权和管理身份。
排序或者共识服务Ordering Service:确认交易并将交易排序放入交易列表。
节点Node:实体用户,合约执行的容器。
SDK:节点和开发者用于和区块链交互的工具包。
4.链码智能合约
系统链码
对开发系统进行部署、对用户使用者权限的智能合约部署、用户交易签名处理的设置和部署。(原因:支持可切换和可扩展的共识算法、加密安全、数字资产、智能合约和身份鉴权等服务)
用户链码
由开发者决定用户的应用功能。用户终端可以调用链码实现应用功能。链码智能合约在节点的本地虚拟机Docker容器中执行,通过gRPC协议来被相应的 VP 记账节点调用和查询。
5.fabric通道
实质
节点用来划分自身信息传递广播的通道,可以使得通道内的信息制备本通道人员的子网观看,外界只知其人不知内容。实现了区块链条上的隐私性。没有主区块链的概念,整个底层框架存在多条并行的区块通道
创建
1.创建通道时需要定义参加通道的组织成员、负责与其他组织交换共享账本的数据的锚节点、管理通道的排序服务节点。每一个区块通道的产生就相应产生一个区块链,由一个初始创世区块存储初始配置信息,而新产生的配置信息可以通过新增一个区块来存放。
2.作为用户,一个参与通道的组织可以拥有多个参与通道的节点。锚节点是唯一的,但是可以选择多个节点作为锚节点的备份,负责节点间信息的交互和传递。另外,同一个组织中会有一个自己的主导节点,主导节点负责接收排序服务传递来的交易信息并将其传递给组织内部的其他节点。主导节点是通过共识算法统一选出的。
配置
通道可以使用配置区块来更新配置,因此在账本中每新添加一个配置区块,通道就按照最新配置区块的定义来修改配置。
管理
排序服务节点负责管理规定判断哪些节点可以进入通道。进入的原则是:能追溯到相同的根CA、保证自身的ID验证正确。
6.分布式账本
区块
账本的世界状态:账本中的数据是以键值对的状态进行存储的,对账本的访问需要通过链码实现对账本键值对的增加、删除、更新和查询等的操作。
账本由区块链和状态数据库两部分组成。账本的区块链和其他存储的区块链相似,都是在区块中存储交易的哈希值,以及上一个交易区块头的哈希值。
状态数据库
账本的数据库以文件存储在区块的各节点中,状态数据库记录了这个区块中的交易键值对的当前值。状态数据库实质上就是对区块链上的当前交易历史的一个键值目录索引。链码执行交易的时候需要读取账本的当前状态,从状态数据库可以迅速获取键值的最新状态。
状态数据库的作用就是,使得链码在读取键值状态时,不需要遍历整个整个区块链中和该键值相关的交易就能在索引中找到所需处理的交易键值现状态。
状态数据库如果发生损坏,那么可以通过整个区块链交易键值找回。如果区块中的有效交易修改了键值对,则会在状态数据库中作相应的更新,这样区块链和状态数据库始终保持一致。
7.Fabric点对点Gossip算法
Fabric P2P算法用的是Gossip算法。Gossip算法的作用:
1.管理整个通道内部的节点信息。检测节点的在线存活和离线状态。
2.广播节点信息,使得同级对等节点获取相同的同步信息。
3.管理处理新加入的节点,并同步历史数据。
Gossip算法优点:
1.Gossip不要求节点知道所有其他节点,节点之间完全对等,不需要任何的中心节点。
2.Gossip是一个最终一致性算法。虽然无法保证在某个时刻所有节点状态一致,但可以保证在“最终”所有节点一致,这里所谓的“最终”是理论计算中存在,但现实中随机出现或不出现的时刻。
Gossip算法缺点:
冗余通信会对网络带宽、CPU资源造成很大的负载,而这些负载又受限于通信频率,该频率又影响着算法收敛的速度。
8.总结
综上所述,Hyperledger Fabric适用于吞吐量不高但是对个人或商家隐私性有一定要求的区块链交易或应用的情景。正如趣医医疗平台采用了Hyperledger Fabric底层架构,考虑到医疗领域数据的敏感性,但是该情景对于交易速率的要求远不如数据稳定性的要求。
由此可推,如果我们所开发DAPP应用的使用用户,既关注自身信息同时注意交易公开透明,也需要对自身数据信息进行个人保护时。或区块链上商家为了避免商业信息向竞争对手的暴露,Hyperledger Fabric的多通道式的区块链底层平台思想就值得我们去借鉴。
网友评论