Fabric 和其他区块链的最大区别是: Fabric 的网络是不公开的,如想进入网络中必须获取授权,因此 Fabr 可以说是前面所提到的联盟链 通过前面的介绍我们知道类似比特以太坊等区块链是没有身份验证系统的,任何人都可以在任何时间、任何能够接人网络的点加入区块链中,这样的区块链称为公有链 在公有链区块链网络中任何人都可以加入网络中,但是如想要获取交易的记账权需要付出代价(算力),这个代价就是我们经常提到的POW (工作量证明算法),通过这种方式使得单个节点的造假成本被无限扩大,从而达到防止单个节点造假的目的。
Fabric 中没有采用类似 POW 这样的算法,因此成员如果想加入网络必须获取授权,否则不论算力多大都无法进入网络 为了解决成员授权加入的问题, Fabric 有一个会员服务系统( Membership Service Provider, MSP MSP 是基于 PKI 规范而建立的一个用户证书和私钥体系 MSP Fabric 中非常重要的内容。
https ://github . com/ hyperledger
- Fabric 并不是一个单独 程序 是由一组模块组成 ,这些模块中的每一个都是一个可独立运行的可执行文件 。
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应的目录中,如果没有设置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
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
通过 组命令来检查安装过程是否成功执行命令
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 的模块编译和安装是正确的, 则说明安装 程存在问题。
必须正确安装成功,否则一切都是白瞎,白瞎,白瞎…
本地源代码生成Fabric 模块的 Docker 镜像文件
cd $GOPATH/src/github.com/hyperledger/fabric
make docker
保持网络畅通
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
示例代码
$GOPATH/src/g thub com/hyperledger/fabric/examples/e2e_ll
主要介绍了运行一 Fabric 系统所需要的步骤,包括 Fabric 核心模块的编译行和配置 同时-还介绍了 Fabric 核心概 Channel 的创建和使用, 最后介绍了 Fa 的智能合约 Chaincode 安装、实例化以及调用的方法。