BlockChain联盟链中的Hyperledger项目中的Fabrica项目是商业联盟应用区块链的基石之作,现在来搭建一个运行环境,进行技术验证。

安装组件如下:

1.Docker-compose:Docker 容器管理;
2.Go lang SDK:Go 语言开发、编译环境;
3.Git:git 镜像克隆与提交;
4.Rest Client: rest API 测试;
容器主要运行有:MemberSrv 和Peer;

一、HyperLedger Fabric环境资源准备

1、docker的安装

a)检查版本

$ uname �Cr

3.10.0-229.el7.x86_64

b)更新Centos

$ sudo yum update

c)安装需要软件

yum install �Cy docker

d)把服务设备成开机启动并启动服务

systemctl enable docker.service

systemctl start docker

e)验证 docker正确安装(通过运行一个测试镜像,当容器运行时,它打印一个信息性消息并退出。)

docker run hello-world

image

2、Docker Compose安装

Compose 定位是 “定义和运行多个 Docker 容器的应用”,可以很方便的从官方拉下来一些镜像,在此基础上再进行改造。它允许用户通过一个单独的 dockercompose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

a).安装容器Compose(使用官方提供的方法,安装1.10.1版本):

curl-Lhttps://github.com/docker/compose/releases/download/1.10.1/docker-compose-`uname-s`-`uname-m`>/usr/local/bin/docker-compose
chmod+x/usr/local/bin/docker-compose

docker-compose version

b).从 dockerhub上拉取镜像

mkdir /opt/fabric

cd /opt/fabric/

docker pull hyperledger/fabric-peer:latest #拉取peer的镜像

docker pull hyperledger/fabric-membersrvc:latest #拉取memberserver的镜像

docker images #确认镜像拉取成功

c).在新建的/opt/fabric目录下建立Docker-compose.yml文件

vim docker-compose.yml

内容如下:

#定义第一台虚拟机名称为membersrvc

membersrvc:

#指定镜像
image: hyperledger/fabric-membersrvc
#暴露端口信息,使用宿主:容器 格式,

ports:
- "7054:7054"
##覆盖容器启动后默认执行的命令

command: membersrvc
#定义第二台虚拟机名称为vp0

vp0:
image: hyperledger/fabric-peer
ports:
- "7050:7050"
- "7051:7051"
- "7053:7053"
#设置环境变量

environment:
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=vp0
- CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
- CORE_Security_ENABLED=true
- CORE_Security_ENROLLID=test_vp0
- CORE_Security_ENROLLSECRET=MwYpmSRjupbT
#数据卷所挂载路径设置。可以设置宿主机路径( HOST:CONTAINER ),该指令中路径支持相对路径

volumes:
- /var/run/:/var/run/
#链接到其它服务中的容器

links:
- membersrvc

#覆盖容器启动后默认执行的命令
command:
sh -c "sleep 5; peer node start --peer-chaincodedev"

d)运行docker-compose up 命令启动2个容器(MemberServer和Peer.到此,我们可以具备启动和运行chaincode,并进行权限管理的Fabric(虽然只有一个Peer)):

docker-compose up �Cd #在后台运行容器

image

直到启动日志显示如下内容,说明启动成功:

image

使用Ctrl+z停止当前日志的显示后,运行docker-compose ps 可以看到服务和对应的端口映射:

image

可以做些常用操作:

docker-compose logs -f vp0 #查看vp0的日志

docker-compose exec vp0 bash #进入到vp0执行它的bash,exit命令可以退出,Ctrl+z退出而不停止容器。

docker-compose exec membersrvc bash #进入到membersrvc执行它的bash,exit命令可以退出。

3、运行与发布Chaincode

a)进入vp0的bash,运行如下命令

docker-compose exec vp0 bash

cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go

cp chaincode_example02/chaincode_example02.go $GOPATH/src/ #复制目录里面的例2到$GOPATH/src/ 进行编译

cd $GOPATH/src/

go build ./chaincode_example02.go #编译成功会在GOPATH/src目录生成chaincode_example02文件

(chaincode_example02.go 源码链接https://raw.githubusercontent.com/hyperledger/fabric/master/examples/chaincode/go/chaincode_example02/chaincode_example02.go)

image

b)发布chaincode在GOPATH/src 下运行

CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=0.0.0.0:7051 ./chaincode_example02

image

直至出现“Received REGISTERED”字样,代表成功。

使用exit命令或Ctrl+z退出终端。

4、firefox中安装POST接口测试工具:

在firefox的附加组件中下载Restclient插件安装

image

重启firefox后,打开RESTClient,进行POST测试

image

5、系统环境测试:deploy(部署),invoke(调用),query(查询) chaincode(智能合约)(vp0中peer的用户名和密码在 membersrvc.yaml 文件里为jim: 6avZQLwcUe9b)

已经建成的环境架构,目前Farbric Peer只有一个vp0

image

a)进入vp0容器

docker-compose exec vp0 bash

b)login

CLI方式

peer network login jim

输入密码:6avZQLwcUe9b

Rest方式(在Body中放入如下代码):

{
"enrollId": "jim",
"enrollSecret": "6avZQLwcUe9b"
}

image

返回用户已登录。

c)deploy(部署)

CLI方式

CORE_Security_ENABLED=true CORE_Security_PRIVACY=true peer chaincode deploy -u jim -n mycc -c '{"Args": ["init","a","100","b","200"]}'

image

d)Invoke(调用)

CLI方式

CORE_Security_ENABLED=true CORE_Security_PRIVACY=true peer chaincode invoke -u jim -l golang -n mycc -c '{"Args": ["invoke","10"]}'

image

e)query(查询)

CLI方式

CORE_Security_ENABLED=true CORE_Security_PRIVACY=true peer chaincode query -u jim -l golang -n mycc -c '{"Function": "query","Args": ["b"]}'

后记:Fabric V0.6和V1.0的架构完全不一样,也就是说在V0.6环境下开发的应用,没法在V1.0上运行,V0.6注定是一个过渡版本,期待V1.0在2017-3月能正式发布。

HyperLedger-fabric V0.6 for CentOS7.2环境搭建的更多相关文章

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

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

  2. HTML5页面无缝闪开的问题及解决方案

    这篇文章主要介绍了HTML5页面无缝闪开方案,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

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

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

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

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

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

  6. ios – 将容器带到视图前方

    我怎样才能解决这个问题?

  7. ios – 如何使用XCode 6.4下载和替换AppGroup容器

    我知道如何使用XCode6的Devices窗口下载和替换特定iOS应用程序的文件系统容器.但是对于我正在开发的应用程序,我需要能够下载和替换共享的AppGroup容器以进行调试.这将使我能够模拟AppGroup文件夹内容中的情况以进行测试.任何人都可以告诉我如何做到这一点?

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

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

  9. ios – 在UITableView上移动UIView – 触摸顶部UIView仍然选择表行

    =======用一些代码编辑:这是我在容器B中所做的代码.这是B帧的一个非常直接的动画.self.view是ContainerB的UIView.所有视图都在屏幕上通过故事板.其他容器是B的子视图.请让我知道你想看到的其他代码.解决方法嗯……不确定这是否适用于您的情况,但尝试在容纳所有其他容器的更大容器中管理您的动画.我的意思是,创建一个包含A,B,O及其子视图的ContainerZ,并尝试从Z中设置B的位置动画,检查B是否在A前面.

  10. 在两个屏幕上运行的iOS应用程序(无镜像)

    我创建了一个包含幻灯片的iPad应用程序,当用户点击此幻灯片时,他/她可以输入一些信息.我现在要做的是在通过AirPlay连接电视和iPad时在电视上显示幻灯片显示内容可以这样做吗?如何在iOS中完成?所以不要反映整个应用程序.解决方法您可以使用Airplay和AppleTV编写应用程序以处理2个UIScreens,然后为电视UIScreen和iPadUIScreen设置单独的根视图控制器.然后在电视的视图控制器上显示图像或幻灯片,并从iPad视图控制器的事件中运行该图像或幻灯片!

随机推荐

  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架构–可能与问题有关!

返回
顶部