摘要: 全球开源区块链领域影响最为普遍的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性、性能与扩展性等方面的显著提高。阿里云容器服务区块链解决方案第一时间同步升级,在v1.1新功能的基础上,提供了弹性裸金属服务器(神龙)、内置容器化Explorer、集成阿里云日志服务等方面的加强。html
做为全球开源区块链领域影响最为普遍的项目之一,超级帐本近日宣布了Hyperledger Fabric v1.1的正式发布。这次升级带来了一系列丰富的新功能以及在安全性、性能与扩展性等诸多方面的显著提高。更多详情可参考下述资料:git
与此同时,做为对开源区块链生态的支持,阿里云容器服务区块链解决方案也进行了同步升级。此次升级不只第一时间在Kubernetes集群上支持Hyperledger Fabric v1.1.0 GA版,而且在如下几个方面带来了新的功能加强和使用体验的优化:github
本文将对这些主要新功能进行技术方面的解读。在开始以前,咱们准备了一段小视频,可让你们快速了解在阿里云容器服务Kubernetes环境中使用该区块链解决方案的大体流程。算法
最新版的区块链解决方案支持从容器服务Kubernetes的应用目录的acs-hyperledger-fabric图形界面中实现一键部署。此外在参数页面能够经过直接编辑来实现更丰富的自定义配置,如更改区块链网络拓扑、指定网络端口、功能启用/禁用等等。数据库
在上述视频演示中,咱们依次进行了如下几步操做:编程
须要说明的是,视频演示操做前需先完成环境准备工做,具体步骤请参见相关文档指南。浏览器
在这次Hyperledger Fabric v1.1的升级中,在原有的Golang类型之上(Java类型还没有正式宣布支持),加入了对流行的Node.js编程语言类型的智能合约(即chaincode)的支持。这将进一步扩大和丰富Hyperledger Fabric的应用开发生态,吸引更多的开发者加入到区块链应用的创新中来。安全
在此基础上,经过对Fabric的源代码分析,咱们在区块链解决方案中解决了在国内网络环境中可能遇到的Node.js类型chaincode实例化(instantiation)过程超时失败、chaincode镜像没法建立的局限性。服务器
如需体验Node.js类型的chaincode,可采用CLI方式或者Client SDK方式,经过参数指定chaincode语言类型便可。解决方案中提供了基于官方cli-test.sh的示例脚本、以及基于官方的balance-transfer的client SDK示例程序。markdown
CLI方式的Node.js类型chaincode示例
Node.js类型示例chaincode源代码位置:
SDK方式的Node.js类型chaincode示例
须要说明的是,因为Node.js应用自身编译构建的特色,Hyperledger Fabric中Node.js类型的chaincode实例化(instantiation)时间相比Golang类型的要更长,因此在这个环节须要稍做等待。
Hyperledger Fabric v1.1新增支持在chaincode级别对交易的数据(即StateDB里Key-Value中的Value,经过调用chaincode时传入)进行加密/解密、签名/验证。这样能实现业务应用将商业敏感数据交给区块链以后,数据全程(包括落地到帐本)在原有的安全机制之上进一步添加了标准的或用户可扩展的加密算法和签名算法的保护,进一步提升了数据的安全性。
关于此功能的的官方文档介绍可参考:
http://hyperledger-fabric.readthedocs.io/en/latest/chaincode4ade.html?highlight=chaincode%20encryption#chaincode-encryption
在容器服务的区块链解决方案中,咱们提供了官方的EncCC示例程序用于在CLI环境中运行,方便用户了解此功能的使用和工做机制。在该示例中,首先对键"key1"的值“value1”进行加密并记录到帐本上;而后读取键"key1"并解密其值,输出显示"value1";接着,再对键“key2”的值"value2"进行加密以及数字签名并记录到帐本上,最后读取键“key2”并解密、验证签名获得最终值,输出显示"value2"。
须要说明的是,使用该CLI示例程序以前,请先建立对应的channel(例如经过运行cli-tset.sh)。
示例程序源代码参考:
https://github.com/hyperledger/fabric/tree/release-1.1/examples/chaincode/go/enccc_example
针对不一样类型的区块链应用程序有着各不相同的对区块链网络拓扑和链接信息的描述方式的问题,为了提供更为统一规范的应用链接配置,Hyperledger Fabric v1.1开始支持Connection Profile, 目前主要面向Node.js类型的Client SDK应用程序,将来有望推广到更多类型的SDK应用上。
在这次区块链方案升级中,也同步支持此功能,而且可以根据用户输入的区块链网络拓扑配置(channel, peer, orderer, ca等)、公网访问地址和端口等信息,自动生成Connection Profile应用链接配置文件(即network-config.yaml)并提供给用户下载。而在咱们的Client SDK示例balancer-transfer-app中也经过一个脚本实现一键下载全部证书密钥以及Connection Profile等配置文件。
解决方案自动生成的Connection Profile的位置和部份内容示例以下:
如需进一步了解Connection Profile各字段的说明,可参考如下文档:
https://github.com/hyperledger/fabric-samples/blob/release-1.1/balance-transfer/artifacts/network-config.yaml
这次区块链解决方案升级正式支持在阿里云弹性裸金属服务器(神龙)运行Hyperledger Fabric。阿里云弹性裸金属服务器可提供与普通物理机无差异的高计算性能,同时还提供物理机级别的安全隔离。这些特性为提高基于区块链业务系统的安全风险防范能力、增强对数据和隐私的保护等方面带来了坚实的运行环境保证。在此基础上,弹性裸金属服务器的高计算性能和弹性水平伸缩能力,结合Hyperledger Fabric代价级的性能和扩展性方面的提高,有望进一步提高区块链应用和系统的业务处理能力。
从使用方式上,咱们提供了基本无缝支持的体验,用户只需在建立容器服务Kubernetes集群中选择弹性裸金属服务器(现阶段需用户提早经过工单开通弹性裸金属服务器的按量付费类型选择的白名单)做为worker节点;而后按照标准的区块链解决方案的建立部署流程操做便可。
区块链解决方案支持基于标准SDK开发的区块链管控工具、浏览器等与区块链网络链接。在这次升级中,区块链解决方案进一步地将Hyperledger官方开源的Blockchain Explorer 进行了容器化改造,实现了Explorer自己以及其所依赖的MySQL数据库做为Kubernetes的service和deployment内置于解决方案中(默认启用,可设置禁用),随着区块链网络的建立实现自动配置、部署、启动和经过负载均衡(SLB)对外提供Web图形化的区块链网络业务交易监控服务。
须要说明的是,区块链浏览器的使用前提是先建立出channel(如经过cli-test.sh)。
区块链解决方案原生支持容器服务控制台的日志功能,以及Kubernetes的kubectl logs
命令查看功能。利用前者能够在Web界面上便捷地查看区块链网络中Peer、Orderer、CA、Kafka、Zookeeper等节点的容器日志信息,一个示例以下:
在此基础上,最新版的容器服务解决方案进一步支持与阿里云日志服务进行集成,为企业客户提供如日志存储、实时索引/查询/分析、日志告警、可视化报表等更高级的日志功能。集成的关键参数可在建立部署区块链网络的页面进行直接设置,具体使用方法可参考该方案的产品文档。
在阿里云日志服务控制台查询和分析日志的效果以下图所示。关于日志服务完整的查询分析语法以及更多高级功能说明, 可参考日志服务的产品文档。
考虑到部分区块链解决方案的用户在开发测试环境须要频繁建立和删除区块链网络,为了进一步提高效率,此次方案升级优化了对数据目录清理的优化。具体来讲,当区块链网络被删除(例如使用helm delete命令)的同时,相应的数据目录名会被自动添加如下后缀:-deleted-当前时间戳
。之因此不直接删除,主要是为了防范人为误操做的风险,以及知足部分用户但愿复用原有数据的目的。
假设原数据目录为:
/data/fabric/network01
则区块链网络删除后,数据目录会被重命名为相似以下的名字:
/data/fabric/network01-deleted-2018-03-21-041756
这样便能进一步优化用户的区块链建立-删除-建立流程上的操做体验了(由于有用户须要频繁进行此类操做进行开发调试)。此外,如需完全清理数据目录以释放存储空间,可手工运行rm命令或结合自动化脚本很方便地实现。
容器服务区块链解决方案自2017年10月正式发布以来,得到了为数众多的开发者和来自零售、金融、制造、多媒体等行业的企业用户的承认和采用,基于解决方案提供的企业级区块链开发测试环境快速地进行基于区块链的业务创新应用的打造。随着这次Hyperledger Fabric v1.1和区块链解决方案的升级,将进一步帮助咱们的用户打造功能更完备、性能更高、安全性更强、易用性更好的企业级区块链业务应用。