IBM Hyperledger Fabric 架构、概念理解

刚从IBM实习回来,现在整理一下在公司做的云平台和区块链相关的项目,虽然理解不深,但是知道总比不知道好。这是在公司经常听到的名词Fabric...当时根本不知道这什么玩意,通过这篇文章能有个大概的概念。

区块链的架构如图:

Fabric架构的核心包括三部分:Identity, LedgerTransactions, Smart Contact.

Identity

身份管理,Fabric成员管理服务为整个区块链网络提供身份管理、隐私、保密和可审计的服务。

Ledger | Transcations

账本                交易

账本Ledger主要包含两块:blockchainstate,blockchain就是一系列连在一起的block,用来记录历史交易。state对应账本的当前最新状态,它是一个key-value数据库,举个例子。我们采用区块链实现一个珠宝交易的系统。我们开发了一个Chaincode,每个珠宝有以下几个属性:Name, owner, color, size.  可以定义一个JSON对象,用nameKEY, JSON对象做Value,存储在Level DB或者CouchDB中。

transction交易分两种,部署交易和调用交易。

部署交易:

Chaincode部署到peer节点上并准备好被调用,当一个部署交易成功执行时,Chaincode就被部署到各个peer节点上。

举个例子:把一个web service或者EJB部署到应用服务器上的不同实例上。

调用交易:

客户端应用程序通过Fabric提供的API调用先前已部署好的某个chaincode的某个函数执行交易,并相应地读取和写入KV数据库,返回是否成功或者失败。


Smart Contract

Fabric的智能合约smart contract称为链码chaincode,是一段代码,它处理网络成员所同意的业务逻辑。和以太坊相比,Fabric链码和底层账本是分开的,升级链码时并不需要迁移账本数据到新链码当中,真正实现了逻辑与数据的分离。

链码可采用GoJavaNode.js语言编写。链码被编译成一个独立的应用程序,fabricDocker容器来运行chaincode,里面的base镜像都是经过签名验证的安全镜像,包括OS层和开发chaincode的语言、runtimeSDK层。一旦chaincode容器被启动,它就会通过gRPC与启动这个chaincodePeer节点连接。


APIs, Events, SDKs

Fabric提供API方便应用开发,对服务端的ChainCode,目前支持用GoJava或者Node.js开发。对客户端应用,Fabric目前提供Node.jsJava SDK。未来计划提供Python Go SDKFabric还提供RESTAPI。对于开发者,还可以通过CLI快速去测试chaincode,或者去查询交易状态。在区块链网络里,节点和chaincode会发送events来触发一些监听动作,方便与其他外部系统的集成。


Fabric 应用开发流程

开发者创建客户端应用和智能合约(chaincode),Chaincode被部署到区块链网络的Peer节点上面。通过chaincode来操作账本,当你调用一个交易transaction时,你实际上是在调用Chaincode中的一个函数方法,它实现业务逻辑,并对账本进行get, put, delete操作。客户端应用提供用户交互界面,并提交交易到区块链网络上。



猜你喜欢

转载自blog.csdn.net/dennis_wu_/article/details/79890610
今日推荐