fabric基础概念
节点
peer
节点
1.存储账本
2.安装智能合约
3.接收并处理客户端的请求
4.使用的镜像: hyperledger/fabric-peer
5.分为四个角色
客户端节点
1.连接peer节点、 orderer节点
2.发送请求给peer节点
3.镜像: hyperledger/fabric-tools
orderer
节点
1.对交易排序:解决双花问题
使用的排序算法:
solo用于环境测试:
(1)只需要一个orderer节点
(2)这个orderer节点运行在docker中
(3)使用的镜像: hyperledger/fabric-orderer
kafka工作环境中使用,分布式的消息处理系统:
(1)需要orderer节点:运行在docker中, 使用的镜像: hyperledger/fabric-orderer
(2)需要kafka节点: 运行在docker中, 使用的镜像: hyperledger/fabric-kafka
(3)需要zookeeper节点:运行在docker中, 使用的镜像: hyperledger/fabric-zookeeper
2.对交易打包,出块频率可设置
3.镜像: hyperledger/fabric-orderer
关于peer,ledger和chaincode
peer
:节点
ledger
:账本
chaincode
:链码
每个peer
节点上都有智能合约, 对账本进行管理
- 一个peer上可以有多个账本,通过加入到不同的通道
- 一个peer可以有多个合约
关于channel
channel:通道
- 用来隔离数据的, 用户在不同的通道中, 使用的数据是不同的, 而且数据不共享, 理解为群.
- 通道是由共识服务(ordering)提供的一种通讯机制,将peer和orderer连接在一起,形成一个具有保密性的通讯链路(虚拟),实现了业务隔离的要求.
- 每个通道有一个唯一的名字.
4. peer
节点如果要共享数据, 必须要加入到同一个通道
5. 加入到同一个通道的节点上的账本数据的相同的
6. P1和P2上的智能合约可以不同(P1
卖家,P2
买家)
7. 对peer节点上账本数据的操作, 是通过客户端完成的
发送查询请求
交易的请求
组织
fabric中的组织是通过职能划分的, 每个组织中可以有很多用户.
一个组织里边有:
1 - N个用户
存储账本的peer节点
Org1-org4
: 组织
A1-A4
: 客户端
不同的组织的客户端不同, 不同组织处理的业务逻辑不同
交易流程
- 客户端发送请求到
peer
节点 peer
节点收到请求, 通过安装的智能合约对请求进行处理peer
将处理 的结果发送给客户端 -> 客户端拿到了请求的结果- 以上三步只是进行交易的模拟, 账本数据并没有被修改
- 客户端收集到了所有参与交易的节点的回复
- 有一部分同意
- 有一部分不同意
- 客户端将交易请求和模拟交易的结果发送给
orderer
节点 orderer
将得到的数据进行排序打包orderer
将打包的数据发送给peer
节点- 得到区块的
peer
对其中的交易进行校验 - 因为有一部分模拟结果失败了, 因此交易失败
失败: 账本数据数据是不会被修改的 - 校验没问题
修改账本数据 peer
将校验的结果发送给客户端
账本
在peer节点上,通过智能合约操作链码相关的 API ,完成读写账本.
账本分为:
-
世界状态
最后一个交易完成之后的状态 通过key:value结构存储数据 世界状态的变更是通过读区块链数据来完成的
-
区块链
所有交易的历史记录
区块链中的数据:
D1 - Dn
: 数据块
H1 - Hn
: 区块头
-
第一个区块: 创始(世)区块
不存储数据 存储通道节点信息
-
之后的区块:
上一个区块的哈希 当前区块的哈希 T1 - Tn: 交易