准备工具:
1.安装curl(cURL是一个利用URL语法在命令行下工作的文件传输工具)
2.安装docker(每个节点需要单独放到单独的docker中启动)
3.docker-compose(管理多个docker的管理工具 docker-compose k8s)
4.安装go
5.安装node.js(写链码但是不成熟,主要用来写客户端)
6.安装Python(一些运行环境需要)
部署环境:
1.创建hyperledger-fabric
2.下载fabric包含三个版本(fabric版本,fabric-ca版本,第三方库版本)
下载fabric-ca-linux-amd64
peer中存放区块
order:数据打包
ccenv:Go语言依赖所需
fafka:排序
将hyperledger-fabric/fabric-samples/bin目录文件下的拷贝到环境变量中/usr/local/bin
进入first-network,执行:./byfn.sh generate (生成证书文件)
./byfn.sh up(启动,安装链码)
./byfn.sh down(关闭)
每个peer节点都要安装一次链代码,在一个节点上做一次就行
成员管理:
会员注册(联盟链,私有链)
身份保护
交易审计
内容保密
账本管理
区块链(保存所有的交易记录)
世界状态
(最新交易状态)
(数据存储在当前节点的数据库中,自带的数据库levelDB,也可以使用couchDB)
交易管理
部署交易(部署的是链码,给节点安装链码chaincode)
调用交易(invoke)
智能合约
处理网络成员需要的业务
实现链码和账本分离(逻辑和数据分离)
基础概念:
组织:
有用户
有进行数据处理的节点=》peer
put 写入到区块链中
get 数据查询
节点
client
进行交易管理(cli,node sdk,java sdk)
cli ->通过Linux命令,使用的是shell命令对数据进行提交和查询
node.js (Java,go)->通过node.js实现客户端
peer
储存和同步账本数据
用户通过客户端工具对数据进行put操作 ,写入到数据
数据同步是fabric框架实现的
orderer
排序和分发交易
排序:解决双花问题
没发起一般交易都会在orderer节点中排序
交易数据先打包,再写入区块
通道
通道是由共识服务提供的通讯机制,将peer和orderer连接在一起,形成具有保密性的通讯线路(虚拟),实现业务的隔离,通道与账本和状态紧密相关
交易流程
application/SDK:充当的是客户端角色
写数据
客户端发起一个提案给peer节点
peer节点发起交易预演,得到结果
peer节点将预演结果发送给客户端
模拟失败,交易终止
模拟成功,继续
客户端将交易提交给排序节点
排序节点进行交易打包
oderer节点将打包数据发送给peer,peer节点将数据写入区块链中
打包数据的发送不是实时的(旷工)
有设定条件在配置文件中