联盟链——02.Fabric 快速入门

版权声明:忠于祖国,忠于人民 https://blog.csdn.net/boss2967/article/details/85091969

1.1 Fabric 介绍

  • Fabric Hyperledger 项目组中的核心项目,Fabric 的特性以及 Hyperledger 项目组中与 Fabric 相关的项目的基本属性,重点介绍 Fabric 的编译 安装 使用等内容

1.2 Fabric 的技术特性

  • 使用基于 町的查询、范围查询、复合键查询来查询或更新账本
  • 只读查询支持丰富的查询语句( CouchDB
  • 只读的历史查询一一实现数据追溯场景
  • 交易包含读取链码键值对(读集),以及写入链码键值对(写集)的版本
  • 交易包含所有背书节点提交至排序服务的签名
  • 交易被打包排序成区块,井通过通道从共识节点传至对 节点
  • 对等节点通过背书政策标准来验证交易
  • 在增加区块前,需要执行版本检查以确保数据在链码执行时间段没有被篡改
  • 当交易被验证并承诺后,便不可改变
  • 每个通道的账本都包含配置区块,它定义了政策标准、访问控制列表与其他相关信息
  • 通道包含了会员服务提供商实例,因此加密证书能传递到不同的证书颁发机构

1.3 Fabric 的智能合约

  • Fabric 中的智能合约称为链码(英文名为: Chaincode ,链码英文名的中文直译,统称为 Chain code), Chain code 是一段用计算机语言编写的程序 Chaincode运行在容器中, Fabric 通过 Chain code 可以读取和修改账本数据,同时会把交易的日志保存
  • 在状态数据库中 Chaincode 可以通过多种编程语言来开发,目前支持 Go Java Node.js等语言 但是目前支持最完善的还是 Go 语言版本的 Chaincode ,建议读者在实际的项目中使用 Go 语言来开发 Chain code ,除非超级账本的官方发出其他语言版本的 Chaincode 已经成熟可用的信息。Chaincode Fabric 的重要组成部分,在 Fabric 的技术架构中 Chaincode 的设计常重要的一个环节。
    在这里插入图片描述

1.4 Fabic 的权限系统

  • Fabric 和其他区块链的最大区别是: Fabric 的网络是不公开的,如想进入网络中必须获取授权,因此 Fabr 可以说是前面所提到的联盟链 通过前面的介绍我们知道类似比特以太坊等区块链是没有身份验证系统的,任何人都可以在任何时间、任何能够接人网络的点加入区块链中,这样的区块链称为公有链 在公有链区块链网络中任何人都可以加入网络中,但是如想要获取交易的记账权需要付出代价(算力),这个代价就是我们经常提到的POW (工作量证明算法),通过这种方式使得单个节点的造假成本被无限扩大,从而达到防止单个节点造假的目的。

  • Fabric 中没有采用类似 POW 这样的算法,因此成员如果想加入网络必须获取授权,否则不论算力多大都无法进入网络 为了解决成员授权加入的问题, Fabric 有一个会员服务系统( Membership Service Provider, MSP MSP 是基于 PKI 规范而建立的一个用户证书和私钥体系 MSP Fabric 中非常重要的内容。

1.5 Fabri 的共识算法

  • Fabric 中不同 员发起的 易是按照 定的顺序写入区块中, 块链之间连接起来之后形成 块链 在交易排序的过程需要防止恶意篡改,这不只在区块链系统中,在所有的分布式系统中都存在这个问题 在比特币中通过 POW 证明)部分解决了这个问Fabric 提供的官方文档 Fabric 支持 Solo (单节点 识) Kafka (分布式队列SBFT (简单拜占庭容错) 种共识方式 但是在目前最新 Fabric 版本中只 Solo Kafka 这两种 算法 ,在未来 Fabric 会支 PBFT 算。

1.6 Fabric 相关的项目

在这里插入图片描述
2

  • 以上项目的源代码都可以从 Hyperledger Github 上面的项目中寻找井下载,Hyperledger Github 中的项目 组的地址如下所示:
https ://github . com/ hyperledger 

2.1 Fabric 的模块、安装和使用

- Fabric 并不是一个单独 程序 是由一组模块组成 ,这些模块中的每一个都是一个可独立运行的可执行文件 。

1

2.2 Fabic 的编译和安装

  • 第一步:创建目录并下载代码
mkdir -p $GOPATH/src/g thub.com/hyperledger
cd $GOPATH/src/github.com/hype rledger 
git clone http : //gerrit . hyperledger.org/r/fabric 
  • 第二步:安装相关依赖软件
go ge t github . com/golang/protobuf/protoc gen- go 
mkdir -p $GOPATH/src/github com/hyperledger/fabric/build/docker/gotools/bin
cp $GOPATH/bi 口/ protoc-gen-go $GOPATH/src/github.com/hyperledger/fabric/build/ 
docker/gotools/bin 
  • go get 后编译好的文件会存放到环境变量 G O B I N GOBIN 应的目录中 ,如果没有设置 GOBIN 的值, 系统默认将生成的文体存放到 $GOPATH/bin 下面

  • 第三步 编译 Fabric 模块(mac系统的联系博主获取资料)
    进入 Fabric 源码所在的文件夹,执行以下命令可以一次完成 Fabrics 个主要模块的编译过程,具体的命令如下所示:

cd $GOPATH/src/github com/hyperledger/fabr
make release 
make docker 

上述命 执行完成之后,会自动将编译好的 进制文件存放在以下路径中:

$GOPATH/src/g thub.com/hyperledger/fabric/release/linux-amd64/bin
  • 第四步 Fabric 模块的安装
    编译 成之后,这些模块就可以被运行了,但是目前只能在编译文件所在的文件夹中运行这些模块,这样是非常不方便的 为了更加方便地使用这些模块,可以通过下面的命令将这些模块的可执行文件 制到系统目 中,这样在系统中的任何路径下面都能运行这些可执行这些模块

Ubuntu CentOS Fabric 模块编译后的文件复制到系统文件夹中的方法如下:

cp $GOPATH/src/github com/hyperledger/fabric/release/l 工口ux-amd64 /bin/ * /usr I 
local/bin 

复制成功之后通过以下命令修改文件的执行权限,否则无法执行

sudo chmod R 775 /usr/local/bin/configtxge
sudo chmod R 775 /usr/local/bin/configtxlator 
sudo chmod R 775 /usr/local/bin/cryptogen 
sudo chmod -R 775 /usr/local/bin/peer 
sudo chmod -R 775 /usr/local/b n/orderer

2.3 Fabric 模块安装结果检查

通过 组命令来检查安装过程是否成功执行命令

peer version 
peer: 
Version : l . 1 . 0-snapshot-900850f 
Go version : gol.8 . 3 
OS/Arch : nux/amd64
Exp er me al features : true 
Chaincode : 
Base mage Ver 0口 0 4 . 1 
Ba s e Docker Namespace hyperledger 
Base Docker Label : org . hyperledger . fabric 
Docker Namespace : hyperledger

orderer version 
orderer : 
Version : 1 . 1 0-snapshot 900850f 
Go vers gol . 8 . 3 
OS /Ar c h: l inux/amd64 
Experi me ntal features : true 

cryptogen version
cryptogen : 
Ve rs on development build 
Go versi on : gol . 8 . 3 
OS/Arch : li 口ux/amd64

configtxgen-version
confi gtxgen: 
Version : development build 
Go version : gol . 8 . 3 
OS/Arch : nux/amd64

configtxlator version
configtxlator : 
Versio development build 
Go version : gol . 8 . 3 
OS/Arch : li 口ux/amd64
  • 只能正确地显示版本信息且没有抛出异常,则表示这些 Fabric 的模块编译和安装是正确的, 则说明安装 程存在问题。

  • 必须正确安装成功,否则一切都是白瞎,白瞎,白瞎…

2.4 利用 Docker 运行 Fabric 相关模块

本地源代码生成Fabric 模块的 Docker 镜像文件

cd $GOPATH/src/github.com/hyperledger/fabric 
make docker 

保持网络畅通

  • Docker 仓库中下载 Fabric 模块的 Docke 镜像文件
    //设置环境变量
export set ARCH=x86 64 
export set BASEIMAGE RELEASE=0.4 . 1 
export set PROJECT_VERSION=l 1.0 
export set MG TAG=l.1.0

//获取 Docker 镜像

docker pull hyperledger/fabr -peer : $ARCH-$IMG_ TAG 
docker pull hyperledger/fabric-orderer : $ARCH-$IMG_TAG 
docker pull hyperledger/fabric-ca : $ARCH-$IMG_TAG 
docker pull hyperledger/fabric-tool : $ARCH-$IMG_ TAG 
docker pull hyperledger/fabric-ccenv : $ARCH-$PROJECT_VERSION 
docker pull hyperledger/fabric-baseimage : $ARCH-$BASEIMAGE_RELEASE 
docker pull hyperledger/fabric baseos : $ARCH $BASEIMAGE_RELEASE 

docker ps 查看镜像文件
​​
​​在这里插入图片描述

2

示例代码

$GOPATH/src/g thub com/hyperledger/fabric/examples/e2e_ll 
  • Docker Compose 是在使用 Docker 容器部署分布式应用时的工具,可以定义哪个容器运行哪个应用 使用 Docker Compose ,你只需定义 个多容器应用的yml 文件,然后使用一条命令即可部署运行所有容器

2.5 行一个简单的 Fabric 网络的步骤

  1. Fabric 环境准备
  2. 生成 Fabric 需要的证书文件
  3. 创始块的生成
  4. Orderer 节点的启动
  5. Peer 节点的启动
  6. 创建通道
  7. Chaincode 的部署和调用
  • 这就是一个简单的fabric的部署大步骤。

2.6 小结

主要介绍了运行一 Fabric 系统所需要的步骤,包括 Fabric 核心模块的编译行和配置 同时-还介绍了 Fabric 核心概 Channel 的创建和使用, 最后介绍了 Fa 的智能合约 Chaincode 安装、实例化以及调用的方法。

猜你喜欢

转载自blog.csdn.net/boss2967/article/details/85091969