专栏首页互联网大杂烩HyperLedger Fabric 1.0 Alpha 入门 - 开发环境安装测试

HyperLedger Fabric 1.0 Alpha 入门 - 开发环境安装测试

导言: 最近在国内某金融公司做区块链开发,主要负责智能合约开发,使用的是HyperLedger Fabric 1.0,自己也开始学习区块链技术,上周已经学会自己搭建区块链网络,同时自己也写了一个关于数字货币发行和管理的智能合约,特将这段时间的学习分享给大家,希望可以帮到大家。 有可以一起交流可以私信我。

1.Git准备

apt-get install git

2.GO开发环境设置

从官方下载地址下载最新稳定版本:

wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
sudo tar -xzf go1.9.linux-amd64.tar.gz -C /usr/local

配置环境变量,使用 sudo vim /etc/profile 并添加下面的内容:

export PATH=$PATH:/usr/local/go/bin 
export GOROOT=/usr/local/go 
export GOPATH=$HOME/go 
export PATH=$PATH:$HOME/go/bin

添加之后使其生效

source  /etc/profile 

3.Docker安装

获取最新版本的 Docker 安装包

看官方教程
https://docs.docker.com/install/linux/docker-ce/ubuntu/

安装Docker-Compose

sudo apt-get install python-pip

然后是安装docker-compose,我们从官方网站(https://github.com/docker/compose/releases)下载也可以从国内的进行DaoClound下载,为了速度快接下来从DaoClound安装Docker-compose,运行脚本:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
sudo mv ~/docker-compose /usr/local/bin/docker-compose
 chmod +x /usr/local/bin/docker-compose

启动docker

sudo service docker start

5.部署Fabric 1.0 Beta

1.下载官方自动化部署脚本

Fabric源码下载

我们可以使用Git命令下载源码,首先需要建立对应的目录,然后进入该目录,Git下载源码:

mkdir -p ~/go/src/github.com/hyperledger 
cd ~/go/src/github.com/hyperledger 
git clone https://github.com/hyperledger/fabric.git

由于Fabric一直在更新,所有我们并不需要最新最新的源码,需要切换到v1.0.0版本的源码即可:

cd ~/go/src/github.com/hyperledger/fabric
git checkout v1.0.0

2.启动Fabric实例

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
sudo ./download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
sudo ./network_setup.sh up

结果如下:

image.png

3.测试Fabric

1在CLI中测试Example02 首先我们需要登录到CLI这个容器中,才能执行Fabric的CLI命令。

sudo docker exec -it cli bash

如果成功进入,我们会切换到该容器的root用户下,得到如下的命令行目录:

root@12f2eb6d9fa6:/opt/gopath/src/github.com/hyperledger/fabric/peer#

链上代码是需要经过Install和Instantiate两步的。下面我们首先安装Example02,并指定一个名字,比如我们这里就用devincc:

peer chaincode install -n devincc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

结果如下

image.png

接下来是Instantiate,也就是初始化实例,设置a账户有100元,b账户有200元。

peer chaincode instantiate -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem -C mychannel -n devincc -v 1.0  -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"

或者

peer chaincode instantiate -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n devincc -v 1.0  -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"

运行成功后可以看到如下的结果:

image.png

接下来我们用Query命令来看一看a账户的余额:

peer chaincode query -C mychannel -n devincc -c '{"Args":["query","a"]}'

返回的结果是:

image.png

好接下来我们需要把a账户的10元转给b账户,需要调用invoke命令:

peer chaincode invoke -o orderer.example.com:7050  --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem  -C mychannel -n devincc -c '{"Args":["invoke","a","b","10"]}'

或者

peer chaincode invoke -o orderer.example.com:7050  --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  -C mychannel -n devincc -c '{"Args":["invoke","a","b","10"]}'

运行返回的结果为:

image.png

最后我们再调用query命令来查一下b账户的余额,如果没有计算错,应该是210元。

peer chaincode query -C mychannel -n devincc -c '{"Args":["query","b"]}'

结果如下:

image.png

看来我们的Fabric 1.0 Beta已经部署成功并测试通过了。 我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3jhhrcx4atkww

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • String.hashcode 源码分析

    接触编程这么久了,一直会遇到某些高频词,例如,哈希。hashtable,hashmap,hashset等等等。都有hash一次。那什么是哈希值呢?百度本科解释是...

    用户2909867
  • 关于拜占庭问题及其分析

    拜占庭问题是容错计算中的一个老问题,有莱斯特兰伯特等人在1982年提出。拜占廷帝国为5-15世纪的东罗马帝国,拜占庭城邦拥有巨大的财富,令他的十个邻邦垂涎已久,...

    用户2909867
  • EOS

    EOS是一个区块链底层公链系统,目的是解决现有的区块链应用性能低、安全性差、开发难度高以及过度依赖手续费的问题。当EOS完成系统目标之后,任何团队都可以在EOS...

    用户2909867
  • nginx防盗链配置

    皇上得了花柳病
  • 凛冬将至渔夫出动,《权游》的钓鱼与避坑

    虽然即将夏日炎炎,但《权力的游戏》第八季的到来却能够让各位权游铁粉感受到“凛冬终至”的气息!目前,权游第八季的第二集已经播出,可能很多权游粉丝想的是“养肥了再杀...

    FB客服
  • 用 Wolfram 语言编写的韩国疫情仪表板

    https://github.com/yusungchang/corona19korea.com

    WolframChina
  • Windows Server 2008与2012建立林信任关系

    当公司发展规模较大后,会有多个分公司或者合并收购其他公司的情况出现,这时候就会涉及到多个域以及员工工作调离的情况,这里就会牵涉到用户和计算机跨域的迁移。要跨域迁...

    李珣
  • DNS泛解析与内容投毒

    http://w00tsec.blogspot.com/2014/03/wilcard-dns-content-poisoning-xss-and.htm

    用户1467662
  • API 网关的安全

    itliusir
  • 利用python监控天气

    计划任务可以采用Task Scheduler(windows)、launchd(OS X)、cron(linux)等系统工具。

    py3study

扫码关注云+社区

领取腾讯云代金券