目录linux
1 前言git
2 配置超级帐本环境github
2.1 下载 fabric 源码docker
2.2 解压缩源码bootstrap
2.3 下载 Docker 镜像bash
2.3.1 启动脚本添加执行权限微信
2.3.2 注释下载语句网络
2.3.3 下载 Docker 镜像curl
3 部署超级帐本多节点网络ide
3.1 下载 fabric-sample
3.2 启动容器
4. 建立通道
5 安装和初始化链码
6 链码操做
6.1 查询
6.2 转帐
1 前言
我认为学习一门新技术最好的方式就是动手,而不是学理论。基于这个原则,我在博客除了实操以外不多叨逼叨理论。由于我认为文本时代早已通过时了,文字的力量明显盖不过视频。现现在,通常逛博客的除了解决实际问题,基本不会多作逗留,渐渐地,技术博客变成了互联网的卫生间,成为了你们解决实际须要的场所。
本节不会讲区块链的理论,若是你是抱着听故事的目的进来的,那么很差意思,我仍是劝你早早离开。
现在 hyperledger fabric 已经到了版本 2 的时代了,但我的对 2 这个数字实在介意,因此本文依然使用版本 1。本文会让整个 fabric 的搭建轻松和随意,因此你尽能够放心。来吧,宝贝们,哥要发车了,大家排好队形,时刻准备尖叫。
这里有情提示一下,最好仍是按照哥的步骤和指定的版本,不要作什么修改,没事不要挑战这个挑战那个。你要真是闲得那里疼,想练练胆,你能够尝试强吻漂亮异性或者独闯异性卫生间,我以为这更刺激一些,更能让你有成就感和征服欲。好了,如今咱们开始吧。
2 配置超级帐本环境
2.1 下载 fabric 源码
不要一听到源码就颤抖,就尿如雨下,不会让你编译的。
wget https://github.com/hyperledger/fabric/archive/v1.0.0.tar.gz
2.2 解压缩源码
tar -zxvf fabric-1.0.0.tar.gz
2.3 下载 Docker 镜像
2.3.1 启动脚本添加执行权限
cd fabric-1.0.0/scripts
chmod +x bootstrap-1.0.0.sh
2.3.2 注释下载语句
若是你是 mac 操做系统:
sed -i '' 's/curl/#curl/g' bootstrap-1.0.0.sh
若是你是 linux 操做系统:
sed -i 's/curl/#curl/g' bootstrap-1.0.0.sh
若是你是 window 操做系统:
&(*)(*)#*(_)#(_)#(_)(#_)#()_R*(&T*^&*#^&(*# 你本身随便玩吧
2.3.3 下载 Docker 镜像
./bootstrap-1.0.0.sh
自此,整个超级帐本最小化环境就被你轻松完爆了。此时,你能够挪动挪动你僵硬的屁股,放个P活跃一下气氛吧。
3 部署超级帐本多节点网络
3.1 下载 fabric-sample
为了简便,你仍是直接下 fabric 提供的样例部署多节点网络吧,先有个网络的概念先。下载地址以下,根据你本身的操做系统选择:
若是你是 mac 操做系统就直接下这里,不用谢哥,哥就是这么体贴。
3.2 启动容器
启动容器须要 docker-compose,若是你是 mac,并且又安装了 docker,那么系统会自动为你安装好 docker-compose;若是你是 linux,能够参考哥的《九析带你玩转 docker-compose - 安装篇》安装 docker-compose。
cd fabric-samples-1.1.0/basic-network
docker-compose -f docker-compose.yml up -d
docker ps
4. 建立通道
其实我特别讨厌这些专业术语,我以为如今 IT 界愈来愈不说人话。你能够把通道想成微信群,若是一些人想互相聊天,必需要同处于一个微信群才能够。记好了:通道 == 微信群。
这里还须要介绍一个术语:MSP,你说这都是些什么玩意。你能够把 MSP 联想成一种身份。好比管理员身份、普通用户身份等等。
好了,介绍完通道和 MSP 以后,你能够继续下面的操做了。
首先以管理员 MSP 登陆 Peer 节点,而后建立通道。你能够联想成管理员(MSP)登陆微信(Peer)建立微信群。登陆 peer 所在节点(由于 peer 节点已经 docker 化了,其实这里就是直接登陆 docker 容器):
docker exec -it -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com bash
建立通道(管理员建立微信群):
peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx
加入通道(微信管理员也要把本身加入到微信群)
peer channel join -b mychannel.block
建立完通道以后,直接退出 peer0 容器便可:
exit
5 安装和初始化链码
安装和初始化链码的工做是在 cli 容器进行,因此要先进入 cli 容器:
docker exec -it cli /bin/bash
安装链码:
peer chaincode install -n jiuxi -v v0 -p github.com/chaincode_example02/go
实例化链码:
peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n jiuxi -v v0 -c '{"Args": ["init", "a", "100", "b", "200"]}'
6 链码操做
6.1 查询
一样在 cli 容器中,查询初始化值:
peer chaincode query -C mychannel -n jiuxi -v v0 -c '{"Args": ["query", "a"]}'
6.2 转帐
在 cli 容器中继续执行转帐操做:
peer chaincode invoke -C mychannel -n jiuxi -v v0 -c '{"Args": ["invoke", "a", "b", "10"]}'
执行成功后,再次查询 a 帐户的值,发现已经从 100 变成 90。
自此,整个区块链网络搭建成功,并简单验证了一个链码(智能合约)的例子。不知道你什么感觉,有没有想尖叫的欲望,若是有,请帮我点个赞。