区块链,联盟链之Hyperledger Fabric

一 概述

Hyperledger Fabric是一个基于模块化架构的分布式账本解决方案平台,是IBM带头发起的一个开源的联盟链项目,后来成为了Hyperledger基金会的一个开源项目,Hyperledger基金会是由IBM,Intel,思科等大公司组成。除了Fabric之外,该基金会还孵化了很多区块链项目,但是Fabric是最出名的一个项目,所以一般说的超级账本(Hyperledger)基本上是指Fabric。

二 Hyperledger开源项目概览

                               

三 Hyperledger fabric的组成成份

fabric是中分布式账本,保证每个节点都保存了完整的数据,从而实现数据的不可篡改,而且在区块链中的数据只能被添加和修改,而不能被删除,数据修改后会在每个节点中同步。

Chaincode(链码),其实Chaincode就是智能合约,chaincode定义business logic,同时也是是读取,修改数据的唯一途径,也就是Ledger的变化只能调用Chaincode完成,而且Chaincode属于某个channel,channel中的peer都需要安装Chaincode,否则会导致数据不一致。

Chaincode的声明周期包括,install,init,invoke等。

Channel(信道),channel是数据的通道,也可以理解为独立于hyperledger fabric的实例,不同的channel之间是被隔离的从而保证区块链上的数据隐私问题。

Ledger(账本),ledger记录的是当前世界状态(world state),而且会保存数据所有的历史世界状态。除此之外,ledger从底层设计上保证了数据的一致性,有效性和不可篡改性,同时leger是hyperledger中的一个具有授权管理的共享帐本系统。

world state(世界状态),世界状态是指当前ledger中以key和value形式保存的数据,会以version来区别,当前是通过couchdb和leveldb来实现。

network(网络),此处的网络是指由peer组成的网络,在同一个网络中的peer,实时同步记账,保证ledger数据的一致性。

ordering service(排序服务),通过排序,验证transaction,最终提交invocation并把数据写入peer的ledger。

msp(Membership Service Provider),msp是用来管理peer的身份和访问许可,具有相同msp的peer才可以进行通信。

四 Hyperledger fabric的工作流程


 

如图所示,SDK是为客户端提供操作的api,使得客户端能够通过SDK与chaincode沟通。SDK的实现是与语言无关的。

peer0,peer1,peer2在同一个channel中,而且他们拥有相同的MSP(Memebership Service Provider),只有这样他们才能够进行通信。

此时,1。SDK接受到客户端的请求,并发送一个提案,可以是修改某条数据。当每个peer接收到提案后,进行模拟执行,会产生读写集,内部采用version的机制来记录修改前后的状态。此后各个peer将模拟执行后的结果以及签名发送给SDK,此时如果SDK收集到的背书达到一定数量之后,将发送正式的更新申请给orderer。

orderer接收到请求的内容之后,会对请求的内容以及签名做校验。如果校验成完成没有问题就会发送一个真正的调用更新给各个peer,各个peer才真正的执行更新。如果非法请求,也会保存到chaincode中,以提供后续的审查,除此外,能够将并行问题转化成串行执行。

猜你喜欢

转载自blog.csdn.net/calm_encode/article/details/107694315