区块链认知fabric

Posted 小雨zzzzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链认知fabric相关的知识,希望对你有一定的参考价值。

网络组成

组织:业务相关组织

身份认证:证明自己的身份

组成联盟:一起做业务

创建通道:与某业务相关的组织划在一个通道中

智能合约:一起约定做什么

背书策略:需要哪个组织为交易背书

重要术语

交易和账本:交易对应资产键值(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:主要的业务逻辑实现

导入依赖包:

 

以上是关于区块链认知fabric的主要内容,如果未能解决你的问题,请参考以下文章

关于Hyperledger Fabric 学习资源

区块链开源实现hyperledger fabric架构详解

区块链教程Fabric1.0源代码分析配置交易-生成通道配置二

用Java为Hyperledger Fabric(超级账本)编写区块链智能合约链代码

IBM 区块链平台 VS 代码扩展 - 无法创建新的新 Fabric 环境/钱包

Hyperledger Fabric 2.x Java区块链应用