Hyperledger Fabric 学习联盟链 2 -- fabric 尝鲜

请先看这篇  Hyperledger Fabric 实战联盟链 1 -- Mac下Hyperledger Fabric(超级账本)环境搭建
 
1.准备工作
上一章拉取fabric 和 fabric-samples 之后,目录结构如下:
 
appledeMacBook-Air:hyperledger apple$ ll
total 0
drwxr-xr-x   4 apple  staff   128 11 20 14:38 ./
drwxr-xr-x   5 apple  staff   160 11 19 16:55 ../
drwxr-xr-x  46 apple  staff  1472 11 20 14:47 fabric/
drwxr-xr-x  15 apple  staff   480 11 19 20:16 fabric-samples/
 
进入fabric 目录,并将relese 版本切换到 1.0
 
appledeMacBook-Air:hyperledger apple$ cd fabric
appledeMacBook-Air:fabric apple$ git checkout release-1.0
正在检出文件: 100% (5064/5064), 完成.
分支 'release-1.0' 设置为跟踪来自 'origin' 的远程分支 'release-1.0'。
切换到一个新分支 'release-1.0'
 
接下来安装两个工具 configtxgen 和 cryptogen
 
appledeMacBook-Air:fabric apple$ cd common/configtx/tool/configtxgen/
appledeMacBook-Air:configtxgen apple$ ll
total 48
drwxr-xr-x  5 apple  staff    160 11 20 14:59 ./
drwxr-xr-x  5 apple  staff    160 11 20 14:59 ../
-rw-r--r--  1 apple  staff  14341 11 20 14:59 main.go
-rw-r--r--  1 apple  staff   4531 11 20 14:59 main_test.go
drwxr-xr-x  4 apple  staff    128 11 20 14:59 metadata/
appledeMacBook-Air:configtxgen apple$ go install --tags=nopkcs11
 
 
appledeMacBook-Air:cryptogen apple$ pwd
/Users/apple/go/src/github.com/hyperledger/fabric/common/tools/cryptogen
appledeMacBook-Air:cryptogen apple$ go install --tags=nopkcs11
appledeMacBook-Air:cryptogen apple$
 
这两个工具都被安装到了 $GOPATH的bin 目录下,可以查看一下,cd $GOPATH/bin
 
appledeMacBook-Air:cryptogen apple$ cd /Users/apple/go/bin/
appledeMacBook-Air:bin apple$ ll
total 77584
drwxr-xr-x  6 apple  staff       192 11 20 15:07 ./
drwxr-xr-x  5 apple  staff       160 10  4 20:35 ../
-rwxr-xr-x  1 apple  staff  15860660 11 20 15:03 configtxgen*
-rwxr-xr-x  1 apple  staff   8037116 11 20 15:07 cryptogen*
-rwxr-xr-x  1 apple  staff   5147152 10  4 20:36 goimports*
-rwxr-xr-x  1 apple  staff   9876156 10  7 21:15 gopm*
appledeMacBook-Air:bin apple$
 
2.搭建第一条网络
 
进入fabric-samples ,切换分支
 
appledeMacBook-Air:fabric-samples apple$ pwd
/Users/apple/go/src/github.com/hyperledger/fabric-samples
appledeMacBook-Air:fabric-samples apple$ git checkout release-1.0
已经位于 'release-1.0'
您的分支与上游分支 'origin/release-1.0' 一致。
 
进入 first-network
 
appledeMacBook-Air:fabric-samples apple$ cd first-network/
appledeMacBook-Air:first-network apple$ ll
total 112
drwxr-xr-x  15 apple  staff    480 11 20 14:10 ./
drwxr-xr-x  15 apple  staff    480 11 19 20:16 ../
-rw-r--r--   1 apple  staff     42 11 19 20:07 .env    //环境变量
-rw-r--r--   1 apple  staff    335 11 19 20:07 README.md
drwxr-xr-x   4 apple  staff    128 11 19 20:16 base/    //公共服务
-rwxr-xr-x   1 apple  staff  15108 11 19 20:16 byfn.sh*  //启动脚本
drwxr-xr-x   7 apple  staff    224 11 19 20:19 channel-artifacts/
-rw-r--r--   1 apple  staff   5013 11 19 20:16 configtx.yaml   //可以根据configtxgen生成配置文件,放入到channel-artifacts/目录
drwxr-xr-x   4 apple  staff    128 11 20 14:10 crypto-config/ 
-rw-r--r--   1 apple  staff   3858 11 19 20:16 crypto-config.yaml  //可以根据cryptogen生成配置文件,放入到crypto-config/ 目录
-rw-r--r--   1 apple  staff   3015 11 19 20:16 docker-compose-cli.yaml  //四个compose 文件用于驱动网络
-rw-r--r--   1 apple  staff   4604 11 19 20:16 docker-compose-couch.yaml
-rw-r--r--   1 apple  staff   2883 11 19 20:07 docker-compose-e2e-template.yaml
-rw-r--r--   1 apple  staff   3091 11 20 14:10 docker-compose-e2e.yaml 
drwxr-xr-x   3 apple  staff     96 11 19 20:16 scripts/    //测试脚本目录
appledeMacBook-Air:first-network apple$
 
 
查看启动脚本提供的方法
 
appledeMacBook-Air:first-network apple$ ./byfn.sh -h
Usage:
  byfn.sh -m up|down|restart|generate [-c <channel name>] [-t <timeout>] [-d <delay>] [-f <docker-compose-file>] [-s <dbtype>] [-i <imagetag>]
  byfn.sh -h|--help (print this message)
    -m <mode> - one of 'up', 'down', 'restart' or 'generate'
      - 'up' - bring up the network with docker-compose up        //启动网络
      - 'down' - clear the network with docker-compose down       //关闭网络
      - 'restart' - restart the network                           //重启网络
      - 'generate' - generate required certificates and genesis block      //根据之前的两个工具生成证书和创世区块
    -c <channel name> - channel name to use (defaults to "mychannel”)     //通道名字 默认是mychannel
    -t <timeout> - CLI timeout duration in microseconds (defaults to 10000)  //客户端超时时间,默认10秒
    -d <delay> - delay duration in seconds (defaults to 3)  
    -f <docker-compose-file> - specify which docker-compose file use (defaults to docker-compose-cli.yaml)
    -s <dbtype> - the database backend to use: goleveldb (default) or couchdb  //数据库选择
    -i <imagetag> - pass the image tag to launch the network using the tag: 1.0.1, 1.0.2, 1.0.3, 1.0.4 (defaults to latest)
 
Typically, one would first generate the required certificates and
genesis block, then bring up the network. e.g.:
 
    byfn.sh -m generate -c mychannel   //生成节点证书,以及创世区块的配置 
    byfn.sh -m up -c mychannel -s couchdb
    byfn.sh -m up -c mychannel -s couchdb -i 1.0.6
    byfn.sh -m down -c mychannel
 
Taking all defaults:
    byfn.sh -m generate
    byfn.sh -m up
    byfn.sh -m down
 
生成节点证书,以及创世区块的配置 
appledeMacBook-Air:first-network apple$ ./byfn.sh -m generate -c imocc
Generating certs and genesis block for with channel 'imocc' and CLI timeout of '10'
Continue (y/n)? y
proceeding ...
/Users/apple/go/bin/cryptogen
 
##########################################################
##### Generate certificates using cryptogen tool #########     //首先生成参与主体的证书
##########################################################
org1.example.com
org2.example.com
 
/Users/apple/go/bin/configtxgen
##########################################################
#########  Generating Orderer Genesis block ##############     //生成创世区块
##########################################################
2018-11-20 15:56:57.035 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-11-20 15:56:57.080 CST [common/configtx/tool] doOutputBlock -> INFO 002 Generating genesis block
2018-11-20 15:56:57.083 CST [common/configtx/tool] doOutputBlock -> INFO 003 Writing genesis block
 
#################################################################
### Generating channel configuration transaction 'channel.tx' ###   //生成通道配置文件
#################################################################
2018-11-20 15:56:57.150 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-11-20 15:56:57.158 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx
2018-11-20 15:56:57.158 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx
 
#################################################################
#######    Generating anchor peer update for Org1MSP   ##########   //生成两个锚节点
#################################################################
2018-11-20 15:56:57.226 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-11-20 15:56:57.235 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-11-20 15:56:57.236 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
 
#################################################################
#######    Generating anchor peer update for Org2MSP   ##########
#################################################################
2018-11-20 15:56:57.304 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-11-20 15:56:57.312 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-11-20 15:56:57.312 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
 
appledeMacBook-Air:first-network apple$
 
检查环境是否正常
appledeMacBook-Air:first-network apple$ docker ps -a
CONTAINER ID        IMAGE                                     COMMAND                  CREATED             STATUS                         PORTS               NAMES
d22ea915929d        hyperledger/fabric-tools:x86_64-1.0.0     "/bin/bash -c './scri"   18 hours ago        Exited (0) About an hour ago                       cli
02a37a28971e        hyperledger/fabric-peer:x86_64-1.0.0      "peer node start"        18 hours ago        Exited (1) About an hour ago                       peer1.org2.example.com
f0a3b7fb36f7        hyperledger/fabric-orderer:x86_64-1.0.0   "orderer"                18 hours ago        Exited (1) About an hour ago                       orderer.example.com
5fd58b2a5e85        hyperledger/fabric-peer:x86_64-1.0.0      "peer node start"        18 hours ago        Exited (1) About an hour ago                       peer1.org1.example.com
ea0542ae9e05        hyperledger/fabric-peer:x86_64-1.0.0      "peer node start"        18 hours ago        Exited (1) About an hour ago                       peer0.org2.example.com
2d1b752868cf        hyperledger/fabric-peer:x86_64-1.0.0      "peer node start"        18 hours ago        Exited (1) About an hour ago                       peer0.org1.example.com
appledeMacBook-Air:first-network apple$
 
启动网络,注意这里报错了,目前没找到原因
 
appledeMacBook-Air:first-network apple$ ./byfn.sh -m generate -c imocc -i 1.0.0
Generating certs and genesis block for with channel ‘imocc’ and CLI timeout of '10’
Continue (y/n)? y
proceeding …
/Users/apple/go/bin/cryptogen
##########################################################
Generate certificates using cryptogen tool
 
##########################################################
org1.example.com
org2.example.com
/Users/apple/go/bin/configtxgen
##########################################################
######### Generating Orderer Genesis block ##############
##########################################################
2018-11-20 16:26:24.599 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-11-20 16:26:24.644 CST [common/configtx/tool] doOutputBlock -> INFO 002 Generating genesis block
2018-11-20 16:26:24.646 CST [common/configtx/tool] doOutputBlock -> INFO 003 Writing genesis block
#################################################################
Generating channel configuration transaction ‘channel.tx’
 
#################################################################
2018-11-20 16:26:24.696 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-11-20 16:26:24.704 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx
2018-11-20 16:26:24.705 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx
#################################################################
####### Generating anchor peer update for Org1MSP ##########
#################################################################
2018-11-20 16:26:24.769 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-11-20 16:26:24.778 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-11-20 16:26:24.779 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
#################################################################
####### Generating anchor peer update for Org2MSP ##########
#################################################################
2018-11-20 16:26:24.869 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-11-20 16:26:24.880 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-11-20 16:26:24.880 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
 
 
 
appledeMacBook-Air:first-network apple$ ./byfn.sh -m up -c imocc -i 1.0.0
Starting with channel ‘imocc’ and CLI timeout of '10’
Continue (y/n)? y
proceeding …
Recreating peer1.org1.example.com … done
Recreating peer1.org2.example.com … done
Recreating orderer.example.com … done
Recreating peer0.org2.example.com … done
Recreating peer0.org1.example.com … done
Recreating cli … done
 
/ | | | / \ | _ \ | |
_ \ | | / _ \ | |) | | |
) | | | / ___ \ | _ < | |
|/ || // _\ || _\ |_|
Build your first network (BYFN) end-to-end test
Channel name : imocc
Creating channel…
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
CORE_PEER_LOCALMSPID=Org1MSP
CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
CORE_PEER_TLS_ENABLED=true
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
CORE_PEER_ID=cli
CORE_LOGGING_LEVEL=DEBUG
CORE_PEER_ADDRESS=peer0.org1.example.com:7051
2018-11-20 06:18:26.933 UTC [main] main -> ERRO 001 Cannot run peer because error when setting up MSP from directory /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp: err Could not initialize BCCSP Factories [Failed initializing PKCS11.BCCSP %!s()
[Could not initialize BCCSP PKCS11 [Failed to initialize software key store: An invalid KeyStore path provided. Path cannot be an empty string.]]]
!!! Channel creation failed !!!
========= ERROR !!! FAILED to execute End-2-End Scenario ===========
 
停掉网络 删除容器 以及容器里的链码
./byfn.sh -m down   -c imocc -i 
 
验证看是否有容器在运行,已经没有容器在运行了
appledeMacBook-Air:first-network apple$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
 
docker  里面也删除了链码镜像
appledeMacBook-Air:first-network apple$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
hyperledger/fabric-baseimage   x86_64-0.4.7        390ac2e95bc7        7 months ago        1.414 GB
hyperledger/fabric-baseos      x86_64-0.4.7        c0e784934c4e        7 months ago        152 MB
hyperledger/fabric-tools       latest              0403fd1c72c7        16 months ago       1.32 GB
hyperledger/fabric-tools       x86_64-1.0.0        0403fd1c72c7        16 months ago       1.32 GB
hyperledger/fabric-couchdb     x86_64-1.0.0        2fbdbf3ab945        16 months ago       1.481 GB
hyperledger/fabric-kafka       x86_64-1.0.0        dbd3f94de4b5        16 months ago       1.297 GB
hyperledger/fabric-zookeeper   x86_64-1.0.0        e545dbf1c6af        16 months ago       1.312 GB
hyperledger/fabric-orderer     latest              e317ca5638ba        16 months ago       179 MB
hyperledger/fabric-orderer     x86_64-1.0.0        e317ca5638ba        16 months ago       179 MB
hyperledger/fabric-peer        latest              6830dcd7b9b5        16 months ago       181.9 MB
hyperledger/fabric-peer        x86_64-1.0.0        6830dcd7b9b5        16 months ago       181.9 MB
hyperledger/fabric-javaenv     x86_64-1.0.0        8948126f0935        16 months ago       1.424 GB
hyperledger/fabric-ccenv       x86_64-1.0.0        7182c260a5ca        16 months ago       1.292 GB
hyperledger/fabric-ca          x86_64-1.0.0        a15c59ecda5b        16 months ago       237.9 MB
 
 
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值