
Hyperledger Fabric 10架构及原理.docx
13页IDENTITYChain-codeContitnerSMARTCONTFIACTMembershipDistributedLedgerOrdering ServiceNetworkProtocolEndorsementValidationSecurity and Crypto ServicesHyperledger Fabric 1.0 架构及原理如果说以比特币为代表的货币区块链技术为1.0,以以太坊为代表的合同区块链技术为2.0, 那么实现了完备的权限控制和安全保障的Fabric项目毫无疑问代表着区块链技术3.0时 代的到来Hyperledger 项目目前主要包括 Fabric, Sawtooth Lake,lroha,Blockchain-explorer 四个子 项目下面我们来了解一下核心子项目Fabric最新版本是1.0的架构,原理及一个典型的 交易过程,最后总结一下Fabric的优点Fabric 1.0 架构简介Distributed Ledger Technology Services如上图所示,Fabric架构的核心包括三部分:de ntity, Ledger及Tran sactio ns, Smart Co ntact.IdentityIdentity,也就是身份管理,Fabric是目前为止在设计上最贴近联盟链思想的区块链。
联盟 链考虑到商业应用对安全、隐私、监管、审计、性能的需求,提高准入门槛,成员必须被 许可才能加入网络Fabric成员管理服务为整个区块链网络提供身份管理、隐私、保密和 可审计的服务成员管理服务通过公钥基础设施PKI和去中心化共识机制使得非许可的区 块链变成许可制的区块链Smart Con tractFabric的智能合约smart con tract称为链码chai ncode,是一段代码,它处理网络成员所 同意的业务逻辑和以太坊相比,Fabric链码和底层账本是分开的,升级链码时并不需要 迁移账本数据到新链码当中,真正实现了逻辑与数据的分离链码可采用Go、Java、Node.js语言编写链码被编译成一个独立的应用程序‘fabric用 Docker容器来运行cha in code,里面的base镜像都是经过签名验证的安全镜像,包括OS层和开发chai ncode的语言、run time和SDK层一旦chai ncode容器被启动,它就 会通过gRPC与启动这个cha in code的Peer节点连接Ledger | Tra nscati onsFabric使用建立在HTTP/2上的P2P协议来管理分布式账本。
采取可插拔的方式来根据具 体需求来设置共识协议,比如PBFT, Raft,PoW和PoS等LedgerReplaceableState Data baseTransaction Logtx arrayLatesi 讥i iken key.'values for use in trans a 匚 lion simulalionLast written key/valueTX ReadsQ V.'rcte&nR前凸[]Writes)]Stipporls keye
blockchain就是一系列连在一起的block,用来记录历史交易state对应账本的当前最新状态,它是一个key-value 数据库,Fabric默认采用Level DB,可以替换成其他的Key-value数据库,如CouchDB举个例子我们采用区块链实现一个弹珠交易的系统我们开发了一个Chain code, 每个弹珠有以下几个属性:Name, owner, color, size.可以定义一个JSON对象,用 name 做 KEY JSON 对象做 Value,存储在 Level DB 或者 Couch DB 中transcationFabric上的transction交易分两种,部署交易和调用交易部署交易: 把Chaincode部署到peer节点上并准备好被调用,当一个部署交易成功执行时,Cha in code就被部署到各个peer节点上好比把一个web service或者EJB部署到应用 服务器上的不同实例上调用交易:客户端应用程序通过Fabric提供的API调用先前已部署好的某个cha in code的某个函数执 行交易,并相应地读取和写入KV数据库,返回是否成功或者失败APIs, Even ts, SDKsFabric提供API方便应用开发,对服务端的Cha in Code, 目前支持用Go、Java或者 Node.js开发。
对客户端应用,Fabric目前提供Node.js和Java SDK未来计划提供 Python和Go SDK,Fabric还提供REST API对于开发者,还可以通过CLI快速去测试 chai ncode,或者去查询交易状态在区块链网络里,节点和cha in code会发送eve nts来 触发一些监听动作,方便与其他外部系统的集成Fabric 架构同传统应用架构的区别区块链从业务层面的本质是去中心化,那么在技术层面的本质是去数据库化如下图所示: 传统的三层架构应用一般就是实现UI的客户端,实现业务逻辑的业务层,和存储数据的数 据库层并不断演进,如客户端从字符终端到GUI图形界面到Web浏览器到如今的移动终 端业务逻辑的实现也从最开始的 Tuxedo 服务, J2EE 的 EJB,Servlet 到 Web service, Java Bean,REST,但后端的数据库一直没有变化最近几年,随着并发访问的增大和改善用户体验 的需要,对响应时间要求越来越高增加了缓存层(采用memcache, Redis,Coherence等等)区块链应用VS传统应用-去数据库化空从架构应用 :圧架构+環弃城州 就典饋应用从部署架构看,如下图,区块链应用是完全的分布式部署。
区块链把数据放到账本中,并且 账本是分布在各个节点上的,如何保证数据的原子操作和一致性我们知道数据库通过行级 锁,事务等机制保证数据的原子操作和一致性区块链通过共识机制来保证数据的原子操作 和一致性pno-区块链应用vs传统应用-完全分布式部署3+申客户塔客户端实例lj买靴买何卜Fabric 1.0应用开发流程如下图所示,开发者创建客户端应用和智能合约(chaincode), Chaincode被部署到区块链网 络的Peer节点上面通过chaincode来操作账本,当你调用一个交易transaction时,你 实际上是在调用Chaincode中的一个函数方法,它实现业务逻辑,并对账本进行get, put, delete 操作客户端应用提供用户交互界面,并提交交易到区块链网络上emitsgetBlockchain developer(M developsO―5Accessesdev etopsInvokes/querteseve nlpul deieieemits [BlockchaiSmart Cortiractcached slate.成■ history, txblockApplicationFabric 1.0业务网络业务网络,也叫共识网络或区块链网络,由不同的节点构成。
节点是区块链的通信实体, 节点是一个逻辑概念,不同类型的节点可以运行在同一台物理服务器上这些节点可能部 署在云上面或者本地可能来自不同的公司或者组织在区块链网络中有两种类型的节 点:Peer节点和Orderer节点,如下图所示Fabric v1.0 ArchitecturemembershrpNoSPcTpeerEndorser CommitterLedger Events ChaincodeOrder TXs in 皐 batch according to consensus—ordererPeer节点:chaincode部署在Peer节点上,它对账本进行读写操作一个Peer节点可以 充当多种角色,如背书者endorser,提交者committer一个区块链网络中会有多个Peer 节点Orderer节点:对交易进行排序,批量打包,生成区块,发给Peer节点一个区块链网络 中会有多个Orderer节点,它们共同提供排序服务排序服务可以别实现为多种不同的方 式,从一个中心化的服务(被用于开发和测试,如Solo),到分布式协议(如Kafka)排序服务提供了通向客户端和Peer节点的共享通信通道。
提供了包含交易的消息广播服 务(broadcast和deliver)客户端可以通过这个通道向所有的节点广播(broadcast)消 息通道可以向连接到该通道的节点投递(deliver)消息排序服务支持多通道,类似于发布/订阅消息系统中的主题topic客户端和Peer节点可以 连接到一个给点的通道,并通过给定的通道发送和接收消息多通道使得Peer节点可以 基于应用访问控制策略来订阅任意数量的通道;也就是说,应用程序在指定Peer节点的子 集中架设通道这些peer组成提交到该通道交易的相关者集合,而且只有这些peer可以 接收包含相关交易的区块,与其他交易完全隔离,实现数据隔离和保密此外,peers的子集将这些私有块提交到不同的账本上,允许它们保护这些私有交易,与 其他peers子集的账本隔离开来应用程序根据业务逻辑决定将交易发送到1个或多个通 道ordering■servicePeer N订阅也就例如,如上图所示,peer 1,2和N订阅红色通道,并共同维护红色账本;peer 1和N 蓝色通道并维护蓝色账本;类似地,peer 2和peer N在黑色通道上并维护黑色账本在这个例子中,peer N在订阅了所有通道,我们看到每个通道都有一个相关的账本。
是说在一个区块链网络中,每个节点上面可以有多个账本Fabric 1.0交易流程Fabric 1.0 一个典型的交易流程如下图所示:Hyperledger Fabric v1 Transaction flow












