比特币、以太坊的成功,推动了区块链行业的飞速发展,从区块链的分类来看,它们都属于公链项目,区块链除了有公链之外、还有私有链和联盟链。公链的完全去中心化是一个美好的未来,但是又和现实存在着很大的冲突,难以快速落地,多中心的联盟链被认为是更有可能快速融入现实,落地实践。当前最著名的的联盟链基础平台就是“超级账本(Hyperledger)”项目。

超级账本是什么?
超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,30家初始企业成员(包括IBM、Accenture、Intel、J.P.Morgan、R3、DAH、DTCC、FUJITSU、HITACHI、SWIFT、Cisco等)。目标是让成员共同合作,共建开放平台,满足来自多个不同行业各种用户案例,并简化业务流程。EVM(Ethereum Virtual Machine)以太坊虚拟机是以太坊中智能合约的运行环境。Solidity之于EVM,就像之于跟JVM的关系一样,这样大家就容易理解了。
由于点对点网络的特性,分布式账本技术是完全共享、透明和去中心化的,故非常适合于在金融行业的应用,以及其他的例如制造、银行、保险、物联网等无数个其他行业。通过创建分布式账本的公开标准,实现虚拟和数字形式的价值交换,例如资产合约、能源交易、结婚证书、能够安全和高效低成本的进行追踪和交易。
超级账本在区块链中的位置:
比特币- 代表数字货币、区块链思想的诞生,提供了区块链技术应用的原型 以太坊 - 挣脱数字货币的枷锁,智能合约的诞生,延伸了区块链技术的功能 超级账本 - 进一步引入权限控制和安全保障,首次将区块链技术引入到分布式
联盟账本的应用场景。
超级账本包括三大组件:区块链(Blockchain)、链码(Chaincode)、成员权限管理(Membership)。
区块链提供一个分布式账本平台。一般地,多个交易被打包进区块中,多个区块构成一条区块链。区块链代表的是账本状态机发生变更的历史过程。
链码包含所有的处理逻辑,并对外提供接口,外部通过调用链码接口来改变世界观。世界观是一个键值数据库,用于存放链码执行过程中涉及到的状态变量。
成员权限管理基于 PKI ,平台可以对接入的节点和客户端的能力进行限制。

超级账本的主要应用场景:
- 开放可信供应链 - 资产存管 - 商务合同 - 银联积分交换平台 - 商品身份溯源 - 食品安全等
说了这么多,如果我们想搭建自己的超级账本环境,是不是非常复杂呢,在超级账本的实现体系中docker技术的应用,让它的搭建变得非常简单,本文我将给大家演示在ubuntu 16.4的Linux环境上如果搭建自己的超级账本系统。
超级账本搭建实现过程:
注意:所有操作在root用户下完成。
1、在Ubuntu 16.04 安装docker
1)、 add the GPG key for the official Dockerrepository to the system:
curl -fsSLhttps://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
2)、Add the Docker repository to APT sources:
add-apt-repository "deb[arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs)stable"
3)、 update the package database with the Dockerpackages from the newly added repo:
apt-get update
4)、Make sure you are about to install from theDocker repo instead of the default Ubuntu 16.04 repo:
apt-cache policy docker-ce
5)、install Docker:
apt-get install -y docker-ce
systemctl status docker

出现如下的提示信息,表示docker安装完毕。
2、安装docker-compose
apt install docker-compose
安装完毕后,进行检查
docker -v
docker-compose –v

3、安装go语言
wgethttps://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
tar -C /opt -xzf go1.10.3.linux-amd64.tar.gz
4、设置环境变量
vi /etc/profile
# 在最后添加如下代码
export GOROOT=/opt/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=/opt/gopath
source /etc/profile
go version

5、安装Node.js && NPM
wgethttps://nodejs.org/dist/v8.11.3/node-v8.11.3.tar.gz
tar -zxf node-v8.11.3.tar.gz
6、编译安装
ubuntu:~$ cd node-v8.11.3/
ubuntu:~/node-v1.8.11.3$./configure
ubuntu:~/node-v1.8.11.3$ make
ubuntu:~/node-v1.8.11.3$ sudo makeinstall
node -v
npm version

7、安装Python
apt-get install python
python --version

8、安装Fabric范例、源码和Docker镜像
curl -sSL http://bit.ly/2ysbOFE |bash -s 1.2.0
查看下载的Fabric脚本命令
ls fabric-samples/bin
9、设置环境变量
vi etc/profile
# 在最后一行添加
exportPATH=$PATH:$HOME/fabric-samples/bin
source etc/profile
10、启动第一个网络,这个是官方提供的一个案例演示环境,通过下面的操作可以快速的建立包括4个对等节点、1个通道、1个共识节点和2个组织的私有链环境。这个测试环境上也包括了实现账号自由转账的智能合约的源码和调用方法,方便我们研究学习。
cd ~/fabric-samples/first-network
./byfn.sh -m generate
./byfn.sh -m up
屏幕中出现这个信息,表示我们的超级账本环境已经启动运行了。

11、测试一下我们的环境
1)、登录操作控制台容器
docker exec -it cli bash

2)、执行以下查询操作
peer chaincode query -C mychannel-n mycc -c '{"Args":["query","a"]}'
如果查询可以正常的返回结果,说明我们的第一个区块链网络可以正常工作了。

下面我们就可以深入学习如何开发智能合约、如何开发客户端程序,如何来实现一个真正的企业级应用了。
大家看看它的安装部署是不是非常的简单,但是感觉还有有些不方便,如果能有辅助UI的功能这样我们的使用就会更加直观和方便,但是我还没有找到类似的方案。现在很多公有云厂商,比如Oracle已经提供了区块链的云服务,不知道Oracle区块链云服务是否会提供更多的UI辅助功能,比如通过图形界面很方便的建立整个区块链的网络并提供丰富的健康检查、监控功能、快速部署链码实现智能合约等。这些等有机会体验测试了就见分晓了。
更多精彩,请扫描看这里哦!!!





