区块链的基础问题(八)

1、Fabric的账本(Ledger)包括哪些内容?

Fabric账本Ledger主要包含两块:Blockchain和State。Blockchain就是一系列连在一起的Block,用来记录历史交易。State对应账本的当前最新状态,它是一个Key-Value数据库。Fabric默认采用LevelDB, 可以替换成其他的Key-Value数据库,如CouchDB。在智能合约中对账本进行读写操作。

在这里插入图片描述

2、Fabric的Transactions是什么?

Fabric上的Transactions事务分两种,部署事务(Deploy Transactions)和调用事务(Invoke Transactions)。
(1) 部署事务把链码(Chaincode)部署到Peer节点上并准备好被调用,当一个部署交易成功执行时,Chaincode就被部署到各个Peer节点上,类似于把一个Web应用部署到应用服务器上的不同实例上。
(2) 调用事务在先前部署的链码的上下文中执行操作。客户端应用程序通过Fabric提供的API调用先前已部署好的某个Chaincode的某个函数执行事务,包括读取和写入状态数据库,返回结果等。

3、Fabric的智能合约Smart Contract是什么?

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

4、Fabric的账本(Ledger)数据是如何共享的?

Fabric的账本共享方式和比特币等有所不同。诸如比特币和以太坊,交易数据大家都可以查看,虽然不知道是谁的数据,但是数据本身是对所有人都可见共享的。但在 Fabric中,账本不是共享给所有人的。而是通过 Channel 隔离数据,虽然大家都在同一个区块链网络里,但是不在同一个Channel,也没办法共享账本。所以,通过建立不同的Channel可以达到按需共享的目的。

5、 Fabric的业务网络由什么组成?

业务网络,也叫共识网络或区块链网络,Fabric业务网络由不同的节点构成。节点是区块链的通信实体,节点是一个逻辑概念,不同类型的节点可以运行在同一台物理服务器上。这些节点可能部署在云上面或者本地。可能来自不同的公司或者组织。在区块链网络中有两种类型的节点:Peer节点和Orderer节点。

在这里插入图片描述

6、 Fabric里的Peer节点有哪些?

Peer节点目前有两种: 背书节点Endorser和提交节点Committer。
(1) Endorser 完成对交易提案的背书处理。主要工作是验证签名,进行权限和合法性检查,检查通过则模拟运行交易,对交易导致的状态变化(读写集)进行背书并返回结果给客户端。
(2) Committer 负责维护区块链和账本结构。对从Orderer发送来的批量交易区块数据结构,进行最终检查(包括交易消息结构、签名完整性、是否重复、读写集合版本是否匹配等),检查通过后执行合法的交易,将结果写入账本。

7、Fabric里的Orderer节点的作用是什么?

Orderer节点主要用于对事务进行排序(共识),批量打包,生成区块,发给Peer节点。一个区块链网络中会有多个Orderer节点,它们共同提供排序服务。排序服务可以实现为多种不同的方式,从一个中心化的服务(被用于开发和测试,如Solo),到分布式协议(如Kafka),再到PBFT的共识方式等。

8、Fabric的事务(Transaction)执行流程是怎样的?

事务执行主流程分四步,如下图:

在这里插入图片描述

(1) 首先由客户端通过SDK提交交易初始化给Peer节点,请求背书(Endorse)。
(2) Peer节点收到消息后,进行背书Endorse,并将背书结果通知应用程序。
(3) 应用程序收到背书结果将之提交Ordering服务节点进行排序(也就是执行共识)并生成Block。
(4) 然后Ordering服务通知Committing Peer, Committing Peer对该交易进行验证,验证通过,则写入账本。最后通知客户端交易成功。

9、Fabric的开发流程是什么?

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

在这里插入图片描述

10、 如何基于Fabric开发区块链智能合约?

Fabric的智能合约Smart Contract称为链码Chaincode,是一段代码,它处理网络成员所同意的业务逻辑。目前支持用Go、Java、Node.js语言进行开发。

猜你喜欢

转载自blog.csdn.net/qq_36294338/article/details/108676861