个人博客请访问 http://www.x0100.top
Hyperledger 项目是开源界面向开放、标准区块链技术的首个重要探索,在 Linux 基金会的支持下,吸引了众多科技和金融巨头的参与。
本文将介绍 hyperledger 项目的历史,并以核心的 fabric 项目为例,讲解如何快速安装部署和应用区块链系统。项目基于Docker进行安装与部署,关于Docker在Centos中的安装与部署请参考博文《Centos下Docker使用镜像和DockerFile方式搭建JAVA Web 开发环境》。
亲试操作系统版本:centos7或centos7.1或centos7.2都可以
区块链开源项目汇总:
l 微软开源区块链平台项目 Bletchley
l linux开源项目 Hyperledger Fabric
l 分布式总账区块链工具 Openchain
l 点对点的多态数字资产交易系统 BitShares
区块链已经成为当下最受人关注的开源技术,有人说它将颠覆金融行业的未来。然而对很多人来说,区块链技术难以理解和实现,而且缺乏统一的规范。
2015 年 12 月,Linux 基金 会牵头,联合 30 家初始成员(包括 IBM、Accenture、Intel、J.P.Morgan、R3、DAH、DTCC、FUJITSU、HITACHI、SWIFT、Cisco 等),共同 宣告 了 Hyperledger 项目的成立。该项目试图打造一个透明、公开、去中心化的超级账本项目,作为区块链技术的开源规范和标准,让更多的应用能更容易的建立在区块链技术之上。
项目官方信息网站在 hyperledger.org, 目前已经有超过 100 家全球知名企业和机构(大部分均为各自行业的领导者)宣布加入 Hyperledger 项目,其中包括 30 多家来自中国本土的企业,包括艾亿新融旗下的艾亿数融科技公司(2016.05.19)、Onchain(2016.06.22)、比邻共赢(Belink)信息技术有限公司(2016.06.22)、BitSE(2016.06.22)、布比(2016.07.27)、三一重工(2016.08.30)、万达金融(2016.09.08)、华为(2016.10.24)等。
如果说以比特币为代表的货币区块链技术为 1.0,以太坊为代表的合同区块链技术为 2.0,那么实现了完备的权限控制和安全保障的 Hyperledger 项目毫无疑问代表着 3.0 时代的到来。
IBM 贡献了数万行已有的 OpenBlockchain 代码,Digital Asset 则贡献了企业和开发者相关资源,R3 贡献了新的金融交易架构,Intel 也刚贡献了跟分布式账本相关的代码。
Hyperledger 社区由技术委员会(TechnicalSteering Committee,TSC)指导,首任主席由来自 IBM 开源技术部 CTO 的 Chris Ferris 担任,管理组主席则由来自 Digital Asset Holdings 的 CEO Blythe Masters 担任。另外,自 2016 年 5 月起,Apache 基金会创始人 BrianBehlendorf 担任超级账本项目的首位执行董事。2016 年 12 月,中国技术工作组正式成立,负责本土社区组织和技术引导工作。官方网站还提供了十分详细的组织信息。
该项目的出现,实际上宣布区块链技术已经不单纯是一个开源技术了,已经正式被主流机构和市场认可;同时,Hyperledger 首次提出和实现的完备权限管理、创新的一致性算法和可拔插的框架,对于区块链相关技术和产业的发展都将产生深远的影响。
代码托管在 Gerrit 和 Github(自动从 gerrit 上同步)上
目前主要包括三大账本平台项目和若干其它项目
账本平台项目:
fabric:包括 fabric 和 fabric-api、fabric-sdk-node、fabric-sdk-py等,目标是区块链的基础核心平台,支持 pbft 等新的 consensus 机制,支持权限管理,最早由 IBM 和 DAH 发起;
sawtooth Lake:包括 arcade、core、dev-tools、validator、mktplace 等。是 Intel 主要发起和贡献的区块链平台,支持全新的基于硬件芯片的共识机制 Proof of Elapsed Time(PoET)。
Iroha:账本平台项目,主要由 Soramitsu发起和贡献。
其它项目:blockchain-explorer:提供 Web 操作界面,通过界面快速查看查询绑定区块链的状态(区块个数、交易历史)信息等。
目前,所有项目均处于孵化(Incubation)状态。
理论介绍完了,接下来满满干货开始了。。。。
curl -sSL https://get.daocloud.io/docker | sh
docker -v
DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --api-cors-header='*'"
sudo service docker restart
先安装python-pip,具体安装步奏如下:
sudo yum -y install epel-release
sudo yum -y install python-pip
sudo yum clean all
下面开始安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
配置以下docker镜像加速,目的是下载镜像速度更快:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://860eaa91.m.daocloud.io
重启docker服务:
sudo service docker restart
docker pull hyperledger/fabric-peer:x86_64-0.6.1-preview \
&& docker pull hyperledger/fabric-membersrvc:x86_64-0.6.1-preview \
&& docker pull yeasy/blockchain-explorer:latest \
&& docker tag hyperledger/fabric-peer:x86_64-0.6.1-preview hyperledger/fabric-peer \
&& docker tag hyperledger/fabric-peer:x86_64-0.6.1-preview hyperledger/fabric-baseimage \
&& docker tag hyperledger/fabric-membersrvc:x86_64-0.6.1-preview hyperledger/fabric-membersrvc
1.安装依赖包:
sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
2.下载git源码并解压安装:
$ wget https://github.com/git/git/archive/v2.3.0.zip
$ unzip v2.3.0.zip
$ cd git-2.3.0
3.编译安装:
make prefix=/usr/local/git all
sudo make prefix=/usr/local/git install
4.修改环境变量:
sudo vim /etc/profile
然后在文件的最后一行,添加下面的内容,然后保存退出。
export PATH=/usr/local/git/bin:$PATH
5.使用source命令立即保存:
source /etc/profile
6.查看版本
git version
PBFT 是经典的分布式一致性算法,也是 hyperledger 目前最推荐的算法,该算法至少需要 4 个节点。
git clone https://github.com/yeasy/docker-compose-files
docker-compose -f 4-peers.yml up
docker exec -it pbft_vp0_1 bash
peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'
CC_ID="ee5b24a1f17c356dd5f6e37307922e39ddba12e5d2e203ed93401d7d05eb0dd194fb9070549c5dc31eb63f4e654dbd5a1d86cbb30c48e3ab1812590cd0f78539"
peer chaincode query -n ${CC_ID} -c '{"Function": "query", "Args": ["a"]}'
peer chaincode invoke -n ${CC_ID} -c '{"Function": "invoke", "Args": ["a", "b", "10"]}'
peer chaincode query -n ${CC_ID} -c '{"Function": "query", "Args": ["a"]}'
到此已经完成超级账本的 转账的实例,每转一次,都会记录一个块。