超级账本入门

Fabric

Fabric是一个支持智能合约的分布式账本系统。

Fabric是私有的,只有通过MSP认证的成员才可以进入到系统,参与合约的缔造与执行。

Fabric是插件式设计,账本数据有多种存放方式,共识机制可以切换,支持不同类型的MSP。

Fabric开发了channel功能,一个channel对应一个账本,只有加入channel的成员可见,可以防止竞争对手知晓交易的细节。

账本由两部分组成:全局状态(word state)和交易日志(transaction log)。 全局状态中记录的是当前状态,交易日志中记录了所有的交易记录,全局状态是这些交易记录的执行结果。

智能合约(Smart Contracts)用chaincode编写,由区块链外部的应用调用执行,chaincode通常是用来更新账本的。

概念

Assets:           交易的资产
ChainCode:        描述交易逻辑的代码 
Ledger Features:  账本功能
Privacy through Channels: channel的私密性,可以对全网开发,也可以只对部分成员开放
                          包含交易逻辑的ChainCode可以只部署在特定用户端,实现部分公开的效果
                          还可以在ChainCode中对数据进行加密
Security & Membership Services: 参与交易的用户都经过认证的可信用户
Consensus:  交易从发起到被提交到账本的过程中的检验

 

四种服务节点

背书节点(Endorser)

确认节点(Committer)

排序节点(Orderer)

证书节点(CA)

关于Peers

是整个网络的基础,账本和智能合约的载体。

创建时无账本和链码。

超级账本入门

账本与链码

  • 智能合约:chaincode,可以访问账本的代码
  • peer持有账本和链码的实例(一对多)
  • 允许一个账本没有链码:意味着无法访问和更改账本
  • 不管用户是否已经安装了自己的链码,每一个peer都有一些系统链码(据我所知,channel的建立以及lead节点的确定就是通过系统链码来完成的)
  • 链码数量与账本数量也没有必然关系

超级账本入门

  • 由于一个Peer可能持有多个账本和多个链码,超级账本中通道(channel)就显得尤为重要了。

Application与Peers

  • Application与Peer的交互主要包括账本查询与账本更新,账本查询只需要简单的三次会话;而账本更新需要额外的两次会话。

超级账本入门

orderer用来确保所有的Peer持有的账本同步更新。在上图中,查询账本的步骤可以做如下的简单描述:

(上图的前三点)

  1. application连接到peer。
  2. application生成提案,并将提案提交给peer。
  3. peer根据提案调用相应的链码执行。
  4. 链码根据提案查询对应的超级账本。
  5. 向application返回提案应答。

至此,账本查询的完成。更新账本还需要接下来完成下面的步骤:

(下面两点)

  1. application根据查询的返回结果生成一个交易并发送给排序服务模块(Orderer)。
  2. orderer将交易发给网络内的所有节点(peers) :因为账本更新要与其他peer达成共识。​
  3. peer根据交易调用相关的链码完成账本更新(此处图中可能产生误导,P1不可以直接调用L1,应该先调用S1,再通过S1调用L1)。
  4. 账本更新完成后产生事件通知application更新完成。

Peers与通道(Channel)

基本上,一个链由1个通道+ 1个账本+ N个成员组成。非链的成员无法访问该链上的交易。链的成员可以由应用程序动态指定。

类似与发布——订阅模式消息传递方式

超级账本入门

通道为网络中的所有模块提供了私有的沟通与交易渠道。

这些模块包括peer节点、oderder节点、application。

加入通道后,这些模块可以共享或管理通道内的所有账本。

一个节点可以加入到多个通道中(即,拥有多个账本),

每个通道的账本是隔离的。

通道是一个逻辑结构,它由物理存在的各种节点组成。

peers提供了访问通道或者管理通道的接口(个人觉得,通道就是一个区块链,一个区块链有一个账本,一个账本可能有一个或者多个链码)。

Peers与组织

一个区块链网络由多个组织组成
超级账本入门

未完待续

 

 

上一篇:HCIP第六天作业


下一篇:成都办成都证书