区块链技术最近大热,币圈的人在忙着炒币,链圈的人忙着研究相关技术。做为一个技术人员,如果不了解点区块链技术都有点落伍的感觉。那么对技术人员来说,可能更关心的是区块链技术能做什么,如何从0开始做一个区块链的项目。下面我们就是探讨这个话题,抛去需求分析等不谈,我们就谈谈如何搭建一个开发生产环境。无非两种方式:采用传统的本地搭建和采用云的方式。区块链有很多开源技术可选择,在企业应用领域,一般采用Hyperledger Fabric,我们就以它为例子。
在本地搭建Hyperledger Fabric1.0开发运行环境
先来看看如果你想在本地搭建一个Hyperledger Fabric1.0运行和开发环境。需要哪些步骤。我们以最新的Hyperledger Fabric1.0为例,需要的软件及版本可参见:https://hyperledger-fabric.readthedocs.io/en/release-1.0/prereqs.html
操作系统我们以Oracle Linux 7为例子。
1.安装Docker CE
因为Docker EE版本已经不开源,所以只能安装Docker CE 版本,以Oracle Linux 7为例,具体安装可参考
https://blogs.oracle.com/hlsu/install-docker-on-oracle-linux-7
详细步骤如下:
# cd etc/yum.repos.d/
# wget http://yum.oracle.com/public-yum-ol7.repo
# vi public-yum-ol7.repo
修改下面红色部分
[ol7_addons]
name=Oracle Linux $releasever Add ons ($basearch)
baseurl=http://yum.oracle.com/repo/OracleLinux/OL7/addons/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
然后执行
sudo yum -y install docker-ce
复制
2. 安装Docker Compose
具体可参考文档 https://docs.docker.com/compose/install/#install-compose
步骤如下:
curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname-s`-`uname -m` > usr/local/bin/docker-compose
3. 安装Go语言
执行:
wget https://www.golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz
然后解压到:/usr/local/go下,并设置PATH环境变量:
export PATH=$PATH:/usr/local/go/bin
如果需要Go 语言的IDE,可以采用SublimeText 3,安装过程可参考:
https://www.sublimetext.com/docs/3/linux_repositories.html#yum
4. 安装Node.JS
执行:wget https://nodejs.org/dist/v8.9.3/node-v8.9.3-linux-x64.tar.xz
解压到:/usr/local/nodejs下,并设置PATH环境变量:
export PATH=$PATH:/usr/local/nodejs/bin
然后执行:npminstallnpm@3.10.10 -g复制
5. 启动Docker
执行:sudo systemctl restart docker
如果报下面的错误:
Got permission denied while trying toconnect to the Docker daemon socket at unix:///var/run/docker.sock: Posthttp://%2Fvar%2Frun%2Fdocker.sock/v1.32/images/hyperledger/fabric-ca:x86_64-1.0.4/tag?repo=hyperledger%2Ffabric-ca&tag=latest:dial unix var/run/docker.sock: connect: permissiondenied
解决方法,执行:
sudo gpasswd -a ${USER} docker
6. 下载Fabric1.0 带的Sample并运行
具体见:https://hyperledger-fabric.readthedocs.io/en/release/samples.html
执行:gitclonehttps://github.com/hyperledger/fabric-samples.git复制
执行:curl -sSLhttps://goo.gl/byy2Qj | bash -s1.0.5复制
如果访问不了,可访问goo.gl/byy2Qj对应的URL:
https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap-1.0.3.sh
可直接wget https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap-1.0.3.sh该文件, 然后在本地执行:sh bootstrap-1.0.3.sh 1.0.5
下载完成后,可参考
https://hyperledger-fabric.readthedocs.io/en/release/write_first_app.html把sample跑起来
注意:registerUser.js 需要把:
returnfabric_ca_client.register({enrollmentID: 'user1', affiliation:'org1.department1'}, admin_user);
修改为:returnfabric_ca_client.register({enrollmentID: 'user1', affiliation:'org1.department1',role: 'client'}, admin_user);才能跑起来
开发自己的区块链应用
如果要开发运行自己的chaincode,可以把前面的sample停止,然后参考:https://hyperledger-fabric.readthedocs.io/en/release-1.0/chaincode4ade.html
注意:感觉要先跑一下sample, 然后再执行
docker-compose -f docker-compose-simple.yaml up等命令,否则会报如下的错误:
orderer | 2017-12-23 13:15:24.155 UTC [common/configtx] addToMap -> DEBU 19a Adding to config map: [Values] Channel/Consortium复制
orderer | 2017-12-23 13:15:24.155 UTC [orderer/common/broadcast] Handle -> WARN 19b Rejecting CONFIG_UPDATE because: Error authorizing update: Error validating ReadSet: Readset expected key [Groups] Channel/Application at version 0, but got version 1复制
orderer | 2017-12-23 13:15:24.155 UTC [orderer/main] func1 -> DEBU 19c Closing Broadcast stream复制
orderer | 2017-12-23 13:15:24.167 UTC [orderer/common/deliver] Handle -> WARN 19d Error reading from stream: rpc error: code = Canceled desc = context canceled复制
orderer | 2017-12-23 13:15:24.168 UTC [orderer/main] func1 -> DEBU 19e Closing Deliver stream复制
在云上部署Hyperledger Fabric1.0的区块链应用
从前面的说明可以看出,要自己搭建一个本地的Hyperledger Fabric1.0运行环境还是比较麻烦的,如果要部署一个生产系统要考虑的东西更多,如容量估算,软硬件的采购安装,可靠性,扩展性,安全性的考虑,账本数据的存储维护等问题。
如今已经进入云时代,如果我们采用云的方式来运行区块链应用则可以大大简化上面这些问题。以Oracle区块链云服务BCS为例子:
首先创建区块链网络,如下图:
在Oracle BCS上面区块链网络创建好之后,可以进入管理控制台进行部署,管理,运维等工作。
我们可以把开发好的智能合约(在Fabric中称为ChainCode部署到区块链网络上)部署到BCS上面,如下图:
然后做一下初始化,就可以运行该智能合约了。前端应用通过REST接口调用部署好的智能合约了。下面是一个调用的例子:
可以看出,在Oracle BCS上面开发,部署区块链应用相比在本地自己搭建一个区块链的开发运行环境要简单可靠的多。总结下来,Oracle BCS有如下优势:
区块链食品追溯DEMO客户端下载
我们基于Oracle的区块链云服务BCS做了一个区块链食品追溯DEMO,感兴趣的可以下载感受一下。
Android手机APP:扫描或长按下面的二维码下载
苹果手机APP:扫描或长按下面的二维码下载

作者简介
徐春金,甲骨文云平台PaaS资深咨询顾问,专注于甲骨文PaaS相关产品及解决方案。具有17+年的中间件技术,产品,方案和项目实施经验。熟悉电信,电商行业。您可以通过chun.jin.xu@oracle.com与他联系。
了解更多,敬请关注甲骨文开发者社区......