好久没写博客,所以想写点东西,转产品经理后就很少研究编码,但技术不能荒废,对于金融科技这行,不仅要懂点金融还要懂技术和产品.......区块链是金融科技很火的技术之一,国内以"以太坊ETH”和“超级账本Hyperledger” 两大阵营为主。ETH发展了好几年,部署、开发环境成熟,而超级账本1.0正式版还没出来,入门还是有点难度。本文主要讲解Hyperledger的Fabric 0.6版本的部署与跑Demo,雷同网上大多数文章,大家入门都是讲这些。
由于要用docker,docker在国内被墙得厉害,你们也懂的,建议到淘宝购买香港VPS,系统选择cent os 7.1。

使用Putty连上服务器后,执行以下命令,做好部署前的准备。

#centos 7.1安装docker
rpm -Uvh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum -y install docker-io           
service docker start       
# 开机自动启动  
chkconfig docker on
docker run hello-world

#安装docker-compose
yum -y install epel-release
yum install python-pip
pip install --upgrade pip
pip install docker-compose
docker-compose version

#安装nodejs:
yum install nodejs
node -v
npm -v

#搭建Go语言环境
#如果是mini版CentOS,还要先安装wget
yum install wget
wget http://www.golangtc.com/static/go/1.8/go1.8.linux-amd64.tar.gz
#将软件安装在目录/usr/local下
tar -C /usr/local -xzf go1.8.linux-amd64.tar.gz
#在/opt下面新建gopath目录,其中有3个子目录src、pkg、bin
cd /opt;mkdir gopath;cd gopath
mkdir src;mkdir pkg;mkdir bin;

#修改环境变量配置文件
yum install vim
vim ~/.bashrc
在. bashrc文件尾部添加以下命令:

export PATH=$PATH:/usr/local/go/bin;
export GOPATH=/opt/gopath;
使用“:wq”退出vim并保存修改

#命令生效 运行
source ~/.bashrc
#测试go语言环境是否安装成功
go version
准备工作已经搞定,接下来开始部署Fabric

0.6版比1.0简单些,我们这里用到peer,baseimage,membersrvc3个镜像。

docker pull hyperledger/fabric-peer
docker pull hyperledger/fabric-membersrvc
docker pull hyperledger/fabric-baseimage:x86_64-0.3.0

#修改Tag为latest
docker tag hyperledger/fabric-baseimage:x86_64-0.3.0 hyperledger/fabric-baseimage:latest
#查看pull下来的镜像
docker images

使用 yeasy提供的很好的HyperLedger的模板
git clone https://github.com/yeasy/docker-compose-files
#进入Git下载下来的Docker-compose目录
cd docker-compose-files/hyperledger/0.6/pbft/
文件夹里提供了多种启动节点的方式
4-peers.yml 非安全模式 没有权限认证 启动4个 PBFT peer 节点
4-peers-with-explorer.yml : 启动 4 个 PBFT peer 节点 + 1 个 Blockchain-explorer,可以通过 Web 界面监控集群状态。
4-peers-with-membersrvc.yml:安全模式, 启动 4 个 P BFT peer 节点 + 1 个 CA 节点,并启用 CA 功能。
4-peers-with-membersrvc-explorer.yml : 启动 4 个 PBFT peer 节点 + 1 个 CA 节点 + 1 个 Blockchain-explorer,并启用 CA 功能。
#我们选择最简单的
docker-compose -f 4-peers.yml up
系统开始打出日志


日志不断滚动,而且没有报error 或者 exit就表示成功跑起了,接下来是跑Fabric的example2

打开新的Putty,连接到pbft_vp0_1里面去
docker exec -it pbft_vp0_1 bash
进入容器后,就可以部署 Example02到Fabric上,也就是智能合约可以发布区块链里面了,使用deploy命名
peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Function":"init","Args": ["a","100","b","200"]}'


这个example演示两个账户a和b,a有余额100元,b有余额200元,并返回了ChainCode:
ee5b24a1f17c356dd5f6e37307922e39ddba12e5d2e203ed93401d7d05eb0dd194fb9070549c5dc31eb63f4e654dbd5a1d86cbb30c48e3ab1812590cd0f78539

下面我们把这个ID放入一个变量中,并查询一下a账户的余额,使用query命令:
CC_ID="ee5b24a1f17c356dd5f6e37307922e39ddba12e5d2e203ed93401d7d05eb0dd194fb9070549c5dc31eb63f4e654dbd5a1d86cbb30c48e3ab1812590cd0f78539"
peer chaincode query -n ${CC_ID} -c '{"Function": "query","Args": ["a"]}'


我们让a给b转账10元,使用invoke命令:
peer chaincode invoke -n ${CC_ID} -c '{"Function": "invoke","10"]}'

查询a账户的余额
peer chaincode query -n ${CC_ID} -c '{"Function": "query","Args": ["a"]}'

CentOS 7.1上部署Hyperledger/Fabric 0.6的更多相关文章

  1. 详解Canvas实用库Fabric.js使用手册

    这篇文章主要介绍了详解Canvas实用库Fabric.js使用手册的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. 使用Fabric SDK iOS访问Twitter用户时间线

    我试图在这个问题上挣扎两天.我正在使用FabricSDK和Rest工具包,试图为Twitter使用不同的RestAPIWeb服务.我可以使用具有authTokenSecret,authToken和其他值的会话对象的TWTRLogInButton成功登录.当我尝试获取用户时间线时,我总是得到失败的响应,作为:{“errors”:[{“code”:215,“message”:“BadAuthentic

  3. ios – 通过Fabric安装的Twitter,登录工作,请求推文的持久性错误

    我没有想法.解决方法当你请求推文时,我想你的代码如下所示,对吗?原来他们的文档不完整,应该是这样的客户端对象需要您的用户信息来完成它的工作.我遇到过同样的问题.

  4. ios – Xcode 6:在Fabric Crashlytics更新后找不到’Answers.h’文件

    我在Objective-C项目的Xcode6.3.2中的故事板中工作.我尝试构建时突然间出现错误:/…来看看我的变化,它只显示我所做的更改–这与Crashlytics无关.还有其他人看到这个吗?有人建议以最有效的方式恢复并重新开始工作吗?

  5. fabric-twitter – Twitter Fabric xcode – 上传分发时出错:归档分发错误:-3

    爱德华.解决方法当我更改目标的包标识符并尝试将其作为与以前相同的应用程序分发时,我收到此错误.我通过将我的应用程序注册为Fabric中的新应用程序解决了这个问题.

  6. ios – Fabric Crashlytics中缺少dSYM文件

    参见英文答案>Crashlytics:“We’remissingadSYMtoprocesscrashes”6从昨天起,我尝试在iOS应用程式中配置TwitterCrashlytics.我有一个问题wdSYMs文件.面料仪表板显示我的消息“我们缺少dSYMs文件”,所以我通过在线管理员上传文件(从此消息重定向),并显示此消息:但是如果我回到仪表板,系统丢失dSYMS文件的消息再次显示.我要做什么?

  7. ios – “Fabric.framework / run”构建阶段实际上做了什么?

    我使用Crashlytics框架在iOSApps中进行崩溃收集.使用框架时,会在运行/Fabric/Fabric.framework/run的目标中添加“构建阶段”.

  8. iOS Safari和/或Microsoft Edge是否支持推送通知?

    从我所做的研究来看,我找不到这个问题的具体答案.桌面版Safari已支持此功能一段时间了,但iOS版本是否也支持从网站推送通知?如果没有,是否有替代解决方案?我也无法在MicrosoftEdge上找到支持此功能的任何内容.我觉得我在某个时间点读过这个,但我现在很难找到任何东西.解决方法MicrosoftEdge目前不支持通知,但目前正在考虑使用用户语音的550票.您可以在status.modern.ie.上找到当前状态

  9. ios – 突然出现很多Fabric Out of Memory会话:Fabric OOM报告是否会出现误报?

    解决方法是的,在某些情况下,由于当前的OOM启发式而错误地检测到OOM.后台获取可能会错误地报告OOM.

  10. 理解UIButton的imageEdgeInsets和titleEdgeInsets

    本篇博客希望用最简单粗暴的方式–实验,来了解一下imageEdgeInsets和titleEdgeInsets到底是怎么玩的。当然这只是一种建议,也许有些人觉得从默认状态计算更加方便,我也赞同,毕竟imageEdgeInsets和titleEdgeInsets只是偏移量,和初始位置在哪并没有什么关系。总结之前也被imageEdgeInsets和titleEdgeInsets困扰过,就用了UIImageView和UILabel的组合来代替,为了不影响开发进度,也只能这样做,毕竟靠这个吃饭,不过在技术层面,这

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部