网络组成
组织:业务相关组织
身份认证:证明自己的身份
组成联盟:一起做业务
创建通道:与某业务相关的组织划在一个通道中
智能合约:一起约定做什么
背书策略:需要哪个组织为交易背书
重要术语
交易和账本:交易对应资产键值(key,value),账本由世界状态和区块链组成
背书策略:由智能合约选择哪些peer节点参与到背书环节中
节点:背书节点,记账节点,证书节点
排序节点:负责对网络所有交易按规则来进行排序,并生成区块,分发给各记账节点
世界状态:对同一个key多次交易形成的最终value,就是世界状态
交易流程:
1、客户端提出交易请求
2、相关背书节点执行交易请求
3、将执行结果的读写集结果返回给客户端
4、客户端把返回的读写集提交给orderer节点
5、orderer节点对接收到的读写集按规则进行排序,再打包成区块
6、orderer节点把区块分发给各peer节点
7、记账节点验证交易
8、记账节点通知客户端交易结果
Channel通道
通道就是私有的子网络,为了隔离不同业务应用。一个fabric联盟网络中可以有多个通道
通道提供了基础设施的有效共享,同时维护数据和通信隐私。
通道管理私密数据:公开数据和私密数据,私密数据指定哪些成员可见,私密数据只在可见成员的peer节点内共享,不可见成员只能看到hash
世界状态
将业务对象属性当前值保存为唯一的账本状态
为什么存在:因为程序通常需要一个对象的当前值,而不是遍历整个区块链来计算对象的当前值
成员服务MSP的功能
MSP提供身份信息(peer,orderer,client,admin)
身份信息可以从机构颁发(fabric-ca,外部ca)
MSP可以提供:身份校验,权限校验,签名,身份证明颁发
安装部署
Docker,Docker Compose,Go语言环境,Fabric示例和二进制文件,Docker镜像
sudo apt-get install git #安装git
sudo apt-get install curl #安装curl
apt install docker.io #安装docker
docker --version #查看docker是否安装可运行
apt install docker-compose #安装docker-compose(docker模板引擎,管理由多个docker容器组成的服务)
docker-compose --version #查看docker—compose是否安装成功
tar xzvf go1.11.linux-amd64.tar.gz -C /usr/local #安装go语言环境
go version #查看go语言是否生效
配置系统变量使Go语言环境生效
安装Fabric
git clone https://github.com/hyperledger/fabric.git #下载Fabric源码
git checkout V2.0.0 #切换2.0版本命令
ls #查看Fabirc目录的命令
git clone https://github.com/hyperledger/fabric-samples.git #安装平台特定的二进制文件
curl -sSL https://bit.ly/2ysbOFE|bash -s -- 2.0.0 1.4.4 0.4.18 #配置文件(保证Fabric正确运行)
ls #查看Fabric—samples目录
./bootstrap.sh 2.0.0 -b -s #下载Fabric镜像
docker images #查验下载Fabric镜像结果
启动fabric网络
./network.sh up #启动Fabric测试网络
docker ps -a #通过查看所有Docker容器命令查看
./network,sh createChannel #创建通道
部署智能合约
./network.sh deployCC #启动智能合约
peer chaincode query -C mychannel -n fabcar -c #d
智能合约开发Chaincode链码
智能合约规定了管理交易方之间所有交互的业务模型
链码部署在peer节点上,运行在docker容器内,通过一系列peer命令对链码进行管理
链码设计与开发
链码设计:
type Chaincode interface(接口)包括init与invoke
init:在链码初始化或升级时被调用,仅被调用一次
invoke:主要的业务逻辑实现
导入依赖包: