联盟链基础应用和区块服务架构

概念理解:

 

联盟链

 

Fabric

  • Fabric是许可制区块链平台,因为它要求每个参与者必须持有可信证书
  • Fabric支持在同一个物理网络之上建立多个不同的区块链,每个区块链都有自己的访问控制机制

包括三大组件:区块链服务(Blockchain)、链码服务(Chaincode)、成员权限管理(Membership)

Fabric架构设计

  • 客户端:客户端应用使用 SDK 来跟 Fabric 打交道,构造合法的交易提案提交给 endorser;收集到足够多 endorser 支持后可以构造合法的交易请求,发给 orderer 或代理节点。
  • Endorser peer:负责对来自客户端的交易进行合法性和 ACL 权限检查(模拟交易),通过则签名并返回结果给客户端。
  • Committer peer:负责维护账本,将达成一致顺序的批量交易结果进行状态检查,生成区块,执行合法的交易,并写入账本,同一个物理节点可以同时担任 endorser 和 committer 的 角色。
  • Orderer:仅负责排序,给交易们一个全局的排序,一般不需要跟账本和交易内容打交道。
  • CA:负责所有证书的维护,遵循 PKI。

 

 

 

智能合约,

 

  • 部署合约
  • 从合约中读取数据
  • 与合约互动(交易)
  • 通过地址实例化已部署的合约

 

共识机制

 

基于Fabric 1.0.0以后版本,目前fabric提供的共识算法有三种:solo,kafka和PBFT

  • solo模式
    用于开发测试的单点共识。
  • kafka模式
    其是一种支持多通道分区的集群时序服务,可以容忍部分节点失效(crash),但不能容忍恶意节点,其基于zookeeper进行Paxos算法选举,支持2f+1节点集群,f代表失效节点个数。即kafka可以容忍少于半数的共识节点失效。
  • PBFT算法
    其是以前版本的主流共识算法,也就是拜占庭共识算法。拜占庭算法支持(3f+1)的节点集群,f代表恶意节点的数量。恶意节点可能会做一些恶意伪造时序或者返回相反的错误的结果等,注意这里与上面失效的区别。

Kafka 作为共识插件为例,讲解 Orderer 节点的核心过程。

 

工作原理

Orderer 节点(Ordering Service Node,OSN)在网络中起到代理作用,多个 Orderer 节点会连接到 Kafka 集群,利用 Kafka 的共识功能,完成对网络中交易的排序和打包成区块的工作。

 

Fabric 网络提供了多通道特性,为了支持这一特性,同时保障每个 Orderer 节点上数据的一致性,排序服务进行了一些特殊设计。

 

对于每个通道,Orderer 将其映射到 Kafka 集群中的一个 topic (topic 名称与 channelID 相同)上。由于 Orderer 目前并没有使用 Kafka Topic 的多分区负载均衡特性,默认每个 topic 只创建了一个分区(0 号分区)。

 

此外,Orderer 还在本地维护了针对每个通道的账本(区块链)结构,其中每个区块包括了一组排序后的交易消息,并且被分割为独立区块。

 

核心过程

客户端通过 gRPC 连接发送交易信息到 Orderer 节点的 Broadcast() 接口。

Orderer节点收到请求后,提取消息进行解析、检查,通过检查后封装为 Kafka 消息,通过 Produce 接口发送到 Kakfa 集群对应的 topic 分区中。当前消息数达到 BatchSize.MaxMessageCount 或消息尺寸过大,或超时时间达到 BatchTimeout,则发送分块消息 TTC-X 到 Kafka。

Kafka 集群维护多个 topic 分区,通过共识算法来确保写入到分区后的消息的一致性。即一旦写入分区,任何 Orderer 节点看到的都是相同的消息队列。

Orderer节点在启动后,还默认对本地账本对应的 Kafka 分区数据进行监听,不断从 Kafka 拉取(Consume)新的交易消息,并对消息进行处理。满足一定策略情况下(收到 TTX-C 或配置消息)还会将消息打包为区块。

 

 

默克尔树

完整性校验是一种二叉树,由一个根节点、一组中间节点和一组叶节点组成。最下面的叶节点包含存储数据或其哈希值,每个中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值