美文网首页小白学习区块链
Hyperledger-fabric实战0x00开发环境(Mac

Hyperledger-fabric实战0x00开发环境(Mac

作者: WallisW | 来源:发表于2018-07-25 20:21 被阅读160次

Hyperledger-fabric是区块链中联盟链的优秀实现,所以从今天开始也想学习下fabric,顺便用一个系列将我学习的点滴记录下来。

准备环境

注:本fabric实战系列基于MacOS。

1.git
brew install git
2.curl

下载安装最新版本的curl,macOS 本身已经安装了curl

3.Docker

下载Docker-CE for Mac,安装好后可以确认Docker和Docker Compose的版本:

➜  go docker --version
Docker version 18.03.1-ce, build 9ee9f40
➜  go docker-compose --version
docker-compose version 1.21.1, build 5a3f1a3
4.go

brew安装go开发包,或者前往官网下载安装包

brew install go

并在./bash_profile配置go环境变量:

// go安装路径
export GOROOT=/usr/local/go
// go工作路径
export GOPATH=/Users/chaors/go
export GOBIN=$GOPATH/bin

建立fabric源码路径

// 进入go工作目录创建hyperledger牡蛎
cd $GOPATH
mkdir -p src/github.com/hyperledger
// 进入该目录,拉取fabric源代码
cd $GOPATH/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
5.Node & npm
// 安装node
brew install node
// 查看node版本
➜  go node -v
v8.11.1
// 查看npm版本
➜  go npm -v
5.6.0

fabric Sample

上面我们就已经安装了fabric需要的一些依赖环境,并将fabric拉取到了本地,进入fabric项目:

查看fabric版本,选择稳定版本1.2.0

➜  go cd src/github.com/hyperledger/fabric
➜  fabric git:(cae2ad445) ✗ git tag
baseimage-v0.0.11
v0.6.0-preview
v0.6.1-preview
v1.0.0
v1.0.0-alpha
v1.0.0-alpha2
v1.0.0-beta
v1.0.0-rc1
v1.0.1
v1.0.2
v1.0.3
v1.0.4
v1.0.5
v1.0.6
v1.1.0
v1.1.0-alpha
v1.1.0-preview
v1.1.0-rc1
v1.1.1
v1.2.0
v1.2.0-rc1

➜  fabric git:(cae2ad445) ✗ git checkout v1.2.0
M   examples/e2e_cli/docker-compose-e2e.yaml
M   examples/e2e_cli/download-dockerimages.sh
HEAD is now at cae2ad445 Merge "Prepare release-1.2 branch for release" into release-1.2
➜  fabric git:(cae2ad445) ✗ git branch
* (HEAD detached at v1.2.0)
  release-1.2

我们新建一个目录,用于子存放下载的fabric Sample。

// 新建fabric_Sample目录
➜  mkdir fabric_Sample
➜  cd fabric_Sample
➜  ls
// 拷贝fabric/scripts下的bootstrap.sh脚本
➜  cp ../fabric/scripts/bootstrap.sh bootstrap.sh
// 赋予脚本拷贝的可执行属性
➜  chmod +x bootstrap.sh

在执行脚本前,为了使下载过程更快,我们需要配置下Docker加速器,我们可以利用DaoClound平台来获取Docker加速器。

首先,打开网址注册一个账号,然后登录选择加速器:

Docker加速器_0.png Docker加速器_1.png

按上图方式重启Docker服务后执行脚本:

// 执行脚本
➜  sudo ./bootstrap.sh

成功执行后,会列出所有安装的镜像:

bootstrap.sh执行成功.png

最后一步,添加环境变量:

export PATH=$Home/go/src/github.com/hyperledger/fabric_Sample/fabric-samples/bin:$PATH

fabric-samples目录分析

目录 作用
chaincode fabric示例链码目录
chaincode-docker-devmode 链码开发测试模式 测试模式下链码存放目录
config 关于orderer和peer配置信息
config/configtx.yaml 初始区块及应用通道交易配置文件的参考
config/core.yaml peer配置信息的参考
config/ orderer.yaml orderer配置信息的参考
fabcar 测试Node环境所在目录,有一个小汽车的测试用例
fabric-ca fabric基础环境提供的一个简单ca
first-network 与网络相关的所有内容

fabric三大核心工具

1.根据指定的配置文件生成组织结构及身份证书的工具。

fabric-samples/bin/cryptogen

2.配置交易的一个工具,主要生成三种配置文件:
1)生成orderer初始区块
2)生成应用通道交易配置文件
3)锚节点更新配置文件

fabric-samples/bin/cryptogen/configtxgen

3.在正在运行的网络联盟链中添加一个新的组织

fabric-samples/bin/cryptogen/configtxlator

网络环境的启动

自动化脚本byfn.sh

fabric提供了一个脚本来自动初始化并启动网络

// 查看脚本命令使用方法
./byfn.sh --help

// 1.生成相应的组织结构和身份证书,orderer初始区块配置文件,应用通道交易配置文件,锚节点更新配置文件
./byfn.sh generate

// 2.启动网络
./byfn.sh up

// 2.关闭网络
./byfn.sh down

手动启动网络

1.生成相应的组织结构和身份证书

我们知道可以借助cryptogen工具来生成相应的组织结构和身份证书。

// 显示默认的配置文件模板
../bin/cryptogen showtemplate

我们查看默认的配置文件模板,主要内容有:

// Orderer组织节点的定义
OrdererOrgs:
  - Name: Orderer
    Domain: example.com
    Specs:
      - Hostname: orderer
// 对等组织节点的定义 
PeerOrgs:
 // 组织1
  - Name: Org1
    Domain: org1.example.com
    EnableNodeOUs: false
    Template:
       // 节点数
      Count: 1
    Users:
      // 用户数
      Count: 1
   // 组织2
  - Name: Org2
    Domain: org2.example.com
    EnableNodeOUs: false
    Template:
      Count: 1
    Users:
      Count: 1

我们需要修改该配置文件,来自定义实现我们的组织结构。由于网络是在first-network目录下启动网络的,我们发现该目录下的crypto-config.yaml内容和上面默认配置文件相同。因此,我们可以通过修改并指定该文件为配置文件来实现目的。

假设我们在默认基础上新增两个组织:组织3和组织4,其组织结构与组织2相同

// 编辑配置文件
vi vi crypto-config.yaml

// i
// 末尾添加
- Name: Org3
    Domain: org3.example.com
    EnableNodeOUs: false
    Template:
      Count: 1
    Users:
      Count: 1
- Name: Org4
    Domain: org4.example.com
    EnableNodeOUs: false
    Template:
      Count: 1
    Users:
      Count: 1
// esc,:,wq! 

然后指定该文件为配置文件生成组织结构。

➜  first-network git:(1745c99) ✗ ../bin/cryptogen generate --config crypto-config.yaml
org1.example.com
org2.example.com
org3.example.com
org4.example.com

这里,特别注意在编辑crypto-config.yaml文件时一定不要使用tab键缩进,必须用空格键。否则会报错:

➜  first-network git:(1745c99) ✗ ../bin/cryptogen generate --config crypto-config.yaml
Error reading config: Error Unmarshaling YAML: yaml: line 95: found a tab character that violates indentation%
2.生成orserer创世区块

使用configtxgen工具,同样使用--help命令查看工具使用方法。

../bin/configtxgen --help

-chanelID 指定的通道ID(必须指定)
-profile (TwoOrgsOrdererGenesis)configtx.yaml配置文件profiles
-outputBlock 输出的区块地址,一般在channel-artifacts目录下

完整的命令:

// 生成创世区块
../bin/configtxgen -profile TwoOrgsOrdererGenesis -channelID mychannel -outputBlock ./channel-artifacts/genesis.block

// 查看发现生成成功
➜  first-network git:(1745c99) ✗ ll ./channel-artifacts
total 32
-rw-r--r--  1 chaors  staff    12K  7 24 23:50 genesis.block
3.生成应用通道配置文件

依旧使用configtxgen工具。

// 生成应用通道配置文件
../bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychanne

// 查看生成的文件
➜  first-network git:(1745c99) ✗ ll ./channel-artifacts
total 40
-rw-r--r--  1 chaors  staff   346B  7 25 00:05 channel.tx
-rw-r--r--  1 chaors  staff    12K  7 24 23:50 genesis.block
4.生成锚节点更新配置文件
../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/org1MSPanchors.tx -channelID mychannel

➜  first-network git:(1745c99) ✗ ll ./channel-artifacts
total 48
-rw-r--r--  1 chaors  staff   346B  7 25 00:05 channel.tx
-rw-r--r--  1 chaors  staff    12K  7 24 23:50 genesis.block
-rw-r--r--  1 chaors  staff   284B  7 25 00:12 org1MSPanchors.tx
5.启动网络

这里需要使用docker-compose工具。

// -f:启动网络时的配置文件,它描述了应该有哪些容器被启动
// -d:不显示详细的启动过程
// up:启动网络
docker-compose -f docker-compose-cli.yaml up -d

// 关闭网络
docker-compose -f docker-compose-cli.yaml down

.
.
.
.

互联网颠覆世界,区块链颠覆互联网!

---------------------------------------------20180725 20:21

相关文章

网友评论

  • Randy_ed88::clap: 写的很好,我也刚准备写点fabirc方面的文章,记录自己的学习成果。
    WallisW:@Randy_ed88 谢谢
    WallisW:@Randy_ed88 谢谢

本文标题:Hyperledger-fabric实战0x00开发环境(Mac

本文链接:https://www.haomeiwen.com/subject/ubhsmftx.html