安装go
手动安装go
wget -c https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
tar -C /usr/local/ -zxvf go1.8.3.linux-amd64.tar.gz
通过yum安装go
yum install go
验证go是否安装成功
1)go version
2)go env
系统环境变量:
进入 vim /etc/profile 在末尾添加
export GOROOT=/usr/lib/golang
export PATH=$PATH:$GOROOT/bin
export GOPATH=/root/go
export PATH=$PATH:$GOPATH/bin
source /etc/profifile 差看是否安装成功
安装git
因为go get 借助于git
yum install -y git
fabric 环境安装
fabric 下载
1)下载环境
https://github.com/hyperledger/fabric
2)go get github.com/hyperledger/fabric
fabric对应的案例 samples
cd /root/go/src/github.com/hyperledger/
git clone https://github.com/hyperledger/fabric-samples.git
fabric 别名
fabric --->/root/go/src/github.com/hyperledger
1)进入根目录
cd ~
ls -a
2)vim .bashrc
alias fabric='cd /root/go/src/github.com/hyperledger'
3)source .bashrc4)
fabric
启动fabric
首先获取Dockers镜像在启动
fabric依赖于docker。
docker介绍 》可百度搜索docker,使用菜鸟教程https://www.runoob.com/docker/docker-tutorial.html
https://hub.docker.com/explore/ docker 镜像文件
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux
机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
安装docker
1.1、系统适配
需要linux内核到4.x及以上,内存2G及以上,本教程运行在centos7.2上。
1.2 安装docker
要求:Docker version 17.06.2-ce及以上
(1)官方安装
参考:https://docs.docker.com/install/linux/docker-ce/centos/#prerequisites
(2)阿里云安装
安装docker-ce
检查版本是否正确
重启docker并设置为开机自启
docker 案例列表
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
ce 是开源版本的意思
1 检查版本是否正常
[root@localhost master]# docker --version
Docker version 18.06.1-ce, build e68fc7a
2 重启docker并设置为开机自启
systemctl start docker & systemctl enable docker
service docker status //状态https://hub.docker.com/_/hello-world/、
docker的镜像管理和加速配置
https://cr.console.aliyun.com/cn-beijing/instances/mirrors
进入镜像加速器:按步骤来
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://0dzh3q47.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
更换阿里云镜像
https://dev.aliyun.com/search.html
docker pull hello-world
docker images //镜像列表
docker run hello-world
docker镜像的管理
docker images
docker常用命令
1.docker images
2.docker pull images
3.docker ps 查看后台进程
4.docker run -d nginx 后台开启nginx
5.docker run -d -p 8082:80 nginx 开启nginx并将nginx的80端口:复制给主机的
...
docker 下载镜像
进入到fabric下的scripts文件夹,运行bootstrap.sh,此过程需要等待几分钟
cd /fabric/scripts/
./bootstrao.sh
通过 docker iamges 命令查看镜像
快速部署一个fabric网络
前提安装docker-compose
pip安装
安装docker-compose
yum -y install epel-release
yum -y install python-pip
pip install --upgrade pip
yum install docker-compose //安装命令
查询版本是否正确
[root@localhost master]# docker-compose --version
docker-compose version 1.18.0, build 8dd22a9
开启demo
https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linu
x-amd64-1.3.0/hyperledger-fabric-linux-amd64-1.3.0.tar.gz
https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric-ca/hyperledger-fabric-c
a/linux-amd64-1.3.0/hyperledger-fabric-ca-linux-amd64-1.3.0.tar.gz
1)拷贝文件到/root/go/src/github.com/hyperledger/fabric-samples/
2)tar -xzvf hyperledger-fabric-linux-amd64-1.3.0.tar.gz
tar -xzvf hyperledger-fabric-ca-linux-amd64-1.3.0.tar.gz
进入到fabric-samples/fifirst-network
生成配置文件。执行下方代码后,会出现 Continue? [Y/n] 输入y选择同意后,则默认生成的通道名为
mychannel的配置信息
启动项目
如果成功,则运行过程中不会报错
yum -y install epel-release
yum -y install python-pip
pip install --upgrade pip
yum install docker-compose //安装命令
[root@localhost master]# docker-compose --version
docker-compose version 1.18.0, build 8dd22a9
cd $GOPATH/src/github.com/hyperledger/fabric-samples/first-network
./byfn.sh generate
./byfn.sh -m up成功后,关闭网络
bootStrap.sh 主要功能
bootstrap 一共做了三件事 1)安装fabric-samples 会调用samplesInstall 2)安装 binaries 下载 tar -->bin /conf
3) 安装docker镜像 dockerInstall
samplesInstall
下载案例代码
./byfn.sh -m down
if [ "$SAMPLES" == "true" ]; then
echo
echo "Installing hyperledger/fabric-samples repo"
echo
samplesInstall
fi
if [ "$BINARIES" == "true" ]; then
echo
echo "Installing Hyperledger Fabric binaries"
echo
binariesInstall
fi
if [ "$DOCKER" == "true" ]; then
echo
echo "Installing Hyperledger Fabric docker images"
echo
dockerInstall
fi下载二进制文件
下载docker镜像通道 组织 证书
1)生成CA信息和相应的证书文件
/root/go/src/github.com/hyperledger/fabric-samples/bin/cryptogen
##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
+ cryptogen generate --config=./crypto-config.yaml2)生成传世块
3)生成通道
4)确实组织的锚节点
byfn.sh 脚本分析
/root/go/src/github.com/hyperledger/fabric-samples/bin/configtxgen
##########################################################
######### Generating Orderer Genesis block ##############
##########################################################
+ configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel
artifacts/genesis.block
#################################################################
### Generating channel configuration transaction 'channel.tx' ###
#################################################################
+ configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel
artifacts/channel.tx -channelID mychannel
#################################################################
####### Generating anchor peer update for Org1MSP ##########
#################################################################
+ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel
artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
2018-10-27 01:58:46.949 PDT [common/tools/configtxgen] main -> INFO 001 Loading
configuration
2018-10-27 01:58:46.986 PDT [common/tools/configtxgen] doOutputAnchorPeersUpdate ->
INFO 002 Generating anchor peer update
2018-10-27 01:58:46.986 PDT [common/tools/configtxgen] doOutputAnchorPeersUpdate ->
INFO 003 Writing anchor peer update
+ res=0
+ set +x
#################################################################
####### Generating anchor peer update for Org2MSP ##########
#################################################################
+ configtxgen -pr./byfn.sh -m up
1.实例化通道对象
2.让每个组织的节点加入到通道中
3.给通道的组织锚节点进行链码安装操作
4.对链码进行实例化操作
===================== Channel 'mychannel' created =====================
===================== peer0.org1 joined channel 'mychannel' =====================
===================== peer1.org1 joined channel 'mychannel' =====================
===================== peer0.org2 joined channel 'mychannel' =====================
===================== peer1.org2 joined channel 'mychannel' =====================
===================== Chaincode is installed on peer0.org1 =====================
Install chaincode on peer0.org2...
+ peer chaincode install -n mycc -v 1.0 -l golang -p
github.com/chaincode/chaincode_example02/go/
+ res=0
+ set +x
2018-10-27 10:11:53.321 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using
default escc
2018-10-27 10:11:53.321 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using
default vscc
2018-10-27 10:11:53.475 UTC [chaincodeCmd] install -> INFO 003 Installed remotely
response:"OK" >
===================== Chaincode is installed on peer0.org2 =====================
Instantiating chaincode on peer0.org2...5.组织1的0节点调用链码的方法,进行查询操作,返回结果100
6. 组织2的0节点上面 转账操作 invoke
7. 在组织2的1节点查询 a的账号为90
fabricCar
1、nodejs
Nodejs是什么?
一般来说,Javascript都是运行在浏览器中的。如果抛开浏览器,能不能运行js代码呢?Nodejs提供的就是
ECMAScript的运行环境,它包含了浏览器内核,使得ECMAScript能在浏览器之外运行。为什么不说DOM和BOM
呢?因为脱离了浏览器,就没有文档对象和浏览器对象了。
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模
型,使其轻量又高效
下载
http://nodejs.cn/download/
tlsca.example.com-cert.pem -C mychannel -n mycc -l golang -v 1.0 -c '{"Args":
["init","a","100","b","200"]}' -P 'AND ('\''Org1MSP.peer'\'','\''Org2MSP.peer'\'')'
Querying chaincode on peer0.org1...
===================== Querying on peer0.org1 on channel 'mychannel'...
=====================
Attempting to Query peer0.org1 ...3 secs
+ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":
["invoke","a","b","10"]}'
Querying chaincode on peer1.org2...
===================== Querying on peer1.org2 on channel 'mychannel'...
=====================https://www.runoob.com/nodejs/nodejs-install-setup.html安装步骤
运行nodejs
https://www.runoob.com/nodejs/nodejs-http-server.html
npm
类似于maven 和 docker 一个包的管理机制
https://www.npmjs.com/
替换成:
https://www.npmjs.com/package/cnpm
npm install cnpm -g --registry=https://registry.npm.taobao.org 从淘宝上下载对应node包
开启fabriccar操作cd /root/go/src/github.com/hyperledger/fabric-samples/fabcar
./startFabric.sh
下载镜像 docker image
脚本分析
centos 安装node npm
1)$ sudo curl -sL -o /etc/yum.repos.d/khara-nodejs.repo \ https://copr.fedoraproject.org/coprs/khara/node
js/repo/epel-7/khara-nodejs-epel-7.repo
2)$ sudo yum install -y nodejs nodejs-npm
npm i -g npm
3)更新淘宝源先将npm的源换为淘宝源,然后在下载npm confifig set registry http://registry.npm.taobao.org/
4)安装gcc-c++
yum install gcc-c++
5)npm install -g grunt-node-inspector
6)npm install -g grpc --unsafe-perm
7)npm install
如果拉取镜像失败,提示缺少[email protected]等。
下载链接中文件:https://download.csdn.net/download/qq_36357926/10112314
完成下载后放入fabcar\node_modules\grpc\src\node\extension_binary\node-v48-linux-x64\目录下即可。
nodejs低版本解决方案
https://blog.csdn.net/u010064206/article/details/76714208
#####
新的安装方式
npm install ethereumjs-abi -g --unsafe-perm
npm install --save @google-cloud/vision
https://qiita.com/tworks55/items/6f959395c1163ac0b039
root/go/src/github.com/hyperledger/fabric-samples/fabcar/node_modules/fabric
client/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64-glibc/grpc_node.node
/home/vagrant/fabric-samples/fabcar/node_modules/grpc/src/node/extension_binary/node
v57-linux-x64-glibc/grpc_node.node"