fabric入门
linux基金会在2015年创建了Hyperledger项目
用来推进跨行业的区块链技术
它有一个账本,使用智能合约
是参与者管理交易的系统
Hyperledger Fabric和其他区块链系统不同的地方是
1.私有
2.许可
Hyperledger Fabric的成员通信通过可信赖的会员服务提供商MSP注册
而不是开放式的无权限系统
Hyperledger Fabric支持隐私,提供了创建通道的功能
允许一组参与者创建单独的交易账本
身份管理
用户身份
1.orderer节点 -> 排序节点,矿工
2.peer节点 -> 账本,存储数据
3.客户端程序
1.访问orderer,peer
2.普通用户
3.管理员
账本管理
1.账本在peer节点上,由两个部分组成
1.区块链
所有的交易记录
2.世界状态
数据库,存储最新的记录
默认数据库:levelDB
交易管理
部署交易
1.编写链码,业务逻辑
2.将链码安装到peer节点上
调用交易
1.对链码中的业务逻辑进程调用
2.链码中有对应的接口
节点
客户端 -> client
1.连接peer节点
2.连接orderer节点
peer节点
1.作用-账本
2.交易记录-区块链
3.世界状态
4.在整个分布式区块链网络中,分布着很多peer节点
5.每个peer节点中的数据都相同
peer节点职责
1.背书节点
2.提交节点
3.主节点
4.锚节点
orderer节点
1.没有账本
2.矿工
3.对数据排序,打包-区块
4.orderer节点将打包的区块发送给peer节点
5.peer节点收到区块后,将数据写入账本中
数据排序
1.解决双花问题
2.调用排序服务器
3.排序算法有2种
1.solo-测试用的,慢
2.kafka
分布式排序服务器,企业级
Peer,Ledger和ChainCode
节点,账本和链码
在一个区块链网络中
有P1,P2,P3,三个节点
那么,
账本
1.账本在peer节点上
2.默认就有
智能合约
1.安装在peer节点上
2.默认没有,需要安装
3.编写完智能合约,安装到peer节点
peer节点想要正常工作
必须安装智能合约
客户端调用链码,
链码修改账本
在一个peer节点上
1.可以同时有多个账本
2.一个账本可以对应一个合约,也可以多个合约
3.账本和账本之间数据不可见,互相隔离
channel-通道
通道是用来隔离数据的
用户在不同的通道中,使用的数据是不同的
而且数据不共享,理解为群
1.P1,P2属于同一个通道
2.P1,P2节点上账本的内容是一样的
3.P1,P2安装的智能合约一样,也可以不一样
4.A客户端也属于通道C
5.节点必须在同一个通道中才能通信
一个peer节点可以同时加入到多个通道中
1.组织1中有2个peer节点
2.没有部署在同一个地方
背书策略
交易被执行的操作步骤
当前网络中有2个组织
1.org1
peer1
peer2
2.org2
peer1
peer2
交易策略:
1.组织1的peer1同意并且组织2的peer2同意
2.两个组织的所有节点都同意
背书策略执行的结果不会写入账本
这是一个模拟交易
交易过程:
1.客户端向peer节点发起交易请求
2.peer节点收到请求,进行模拟交易,得到结果
3.peer节点将模拟结果发送给客户端
4.客户端连接orderer节点,将交易请求和模拟交易的结果发送
5.orderer节点接收数据,先排序,再打包
6.orderer节点将打包数据发送给peer节点
7.peer节点接收数据,首先要校验模拟交易的结果
8.判断模拟交易的结果,如果没问题,写入账本,如果有问题,就不写
9.操作完成,会给客户端发送一个结果
区块链中的数据
1.一个区块中有n条数据,以链状结构连接
2.fabric中的创始区块是不存储交易数据的
3.存储的是网络信息
1.通道
2.组织
4.第二个区块和后边的区块才存储数据
1.区块头
2.区块数据
3.区块的元数据
peer节点
1.运行在docker
排序服务器
1.orderer
2.运行在docker
通道
1.代码创建
2.指定名字
Fabric证书颁发机构-MSP
1.fabric网络中需要身份认证
2.密钥对,数字证书
搭建fabric网络的步骤
1.生成证书
1.组织的,节点的,用户的,证书
2.需要写一个yaml的配置文件
2.创建 生成创始区块和通道的文件
1.运行在docker
3.启动节点
1.orderer,peer,客户端
2.都是运行在docker
3.为了方便管理编写docker-compose配置文件,批量启动节点
4.通过当前组织的客户端,连接到当前组织的peer节点
1.创建通道-创建一次就好了
2.加入到通道中
3.每个节点都需要加入
4.安装链码,每个节点都需要安装
5.对链码进行初始化,只需要做一次,在任意节点上做
6.初始化完成,才可以调用
7.测试-链码调用,读数据,写数据
生成fabric证书
1.命令
$cryptogen --help
2.证书文件 -yaml
配置文件,一般叫 crypto-config.yaml
配置组织信息
1.peer节点
2.用户
fabric入门
linux基金会在2015年创建了Hyperle