摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性、性能与扩展性等方面的显著提升。阿里云容器服务区块链解决方案第一时间同步升级,在v1.1新功能的基础上,提供了弹性裸金属服务器(神龙)、内置容器化Explorer、集成阿里云日志服务等方面的增强。

作为全球开源区块链领域影响最为广泛的项目之一,超级账本近日宣布了Hyperledger Fabric v1.1的正式发布。此次升级带来了一系列丰富的新功能以及在安全性、性能与扩展性等诸多方面的显著提升。更多详情可参考下述资料:

与此同时,作为对开源区块链生态的支持,阿里云容器服务区块链解决方案也进行了同步升级。这次升级不仅第一时间在Kubernetes集群上支持Hyperledger Fabric v1.1.0 GA版,并且在以下几个方面带来了新的功能增强和使用体验的优化:

  • 支持新的Node.js类型chaincode和相关示例,以及在国内云环境落地的适配
  • 支持chaincode级别的账本数据加密新功能和相关示例
  • 支持新的connection profile和自动生成功能
  • 以及其他Hyperledger Fabric v1.1新功能的支持
  • 支持阿里云弹性裸金属服务器(神龙)
  • 内置容器化的Hyperledger Blockchain Explorer
  • 集成阿里云日志服务
  • 优化区块链网络删除过程的数据目录清理

本文将对这些主要新功能进行技术方面的解读。在开始之前,我们准备了一段小视频,可以让大家快速了解在阿里云容器服务Kubernetes环境中使用该区块链解决方案的大致流程。


一分钟认识最新版容器服务区块链解决方案

最新版的区块链解决方案支持从容器服务Kubernetes的应用目录的acs-hyperledger-fabric图形界面中实现一键部署。此外在参数页面可以通过直接编辑来实现更丰富的自定义配置,如更改区块链网络拓扑、指定网络端口、功能启用/禁用等等。

在上述视频演示中,我们依次进行了以下几步操作:

  1. 配置和一键部署区块链网络
  2. 容器服务Kubernetes控制台查看和管理区块链网络的服务和容器
  3. 运行模拟转账交易智能合约的CLI测试
  4. 运行容器化、图形化的区块链浏览器
  5. 容器服务控制台查看区块链网络运行日志

需要说明的是,视频演示操作前需先完成环境准备工作,具体步骤请参见相关文档指南


新功能:Node.js类型Chaincode支持

在此次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示例程序。

CLI方式的Node.js类型chaincode示例

Node.js类型示例chaincode源代码位置:

SDK方式的Node.js类型chaincode示例

需要说明的是,由于Node.js应用自身编译构建的特点,Hyperledger Fabric中Node.js类型的chaincode实例化(instantiation)时间相比Golang类型的要更长,所以在这个环节需要稍作等待。


新功能:Chaincode级别对账本数据的加密和签名

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


新功能:Connection Profile用于Client SDK应用程序

针对不同类型的区块链应用程序有着各不相同的对区块链网络拓扑和连接信息的描述方式的问题,为了提供更为统一规范的应用连接配置,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和区块链解决方案的升级,将进一步帮助我们的用户打造功能更完备、性能更高、安全性更强、易用性更好的企业级区块链业务应用。

原文链接

阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1的更多相关文章

  1. 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google

    摘要: 作为此次Gartner报告中唯一上榜的中国科技公司,阿里云获得六个评判维度的最高分,排名第二 近日,知名调研机构Gartner发布了全球领先公共云厂商区块链服务能力报告,作为唯一上榜的中国科技 ...

  2. 阿里云容器服务与ASP.NET Core部署:用 docker secrets 保存 appsettings.Production.json

    这是我们使用阿里云容器服务基于 docker 容器部署 asp.net core 应用遇到的另一个问题 —— 如果将包含敏感信息的应用配置文件 appsettings.Production.json ...

  3. 利用阿里云容器服务打通TensorFlow持续训练链路

    本系列将利用Docker和阿里云容器服务,帮助您上手TensorFlow的机器学习方案 第一篇:打造TensorFlow的实验环境 第二篇:轻松搭建TensorFlow Serving集群 第三篇:打 ...

  4. 基于阿里云容器服务用docker容器运行ASP.NET 5示例程序

    小试阿里云容器服务 之后,接下来有一个挡不住的小试冲动--用docker容器运行程序.首先想到的程序是 ASP.NET 5示例程序,于是参考msdn博客中的这篇博文 Running ASP.NET 5 ...

  5. 阿里云容器服务--配置自定义路由服务应对DDOS攻击

    阿里云容器服务--配置自定义路由服务应对DDOS攻击 摘要: 容器服务中,除了slb之外,自定义路由服务(基于HAProxy)也可以作为DDOS攻击的一道防线,本文阐述了几种方法来应对普通规模的DDO ...

  6. 品尝阿里云容器服务:初步尝试ASP.NET Core Web API站点的Docker自动化部署

    部署场景是这样的,我们基于 ASP.NET Core 2.0 Preview 1 开发了一个用于管理缓存的 Web API ,想通过阿里云容器服务基于 Docker 部署为内网服务. 在这篇博文中分享 ...

  7. 品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制

    在前一篇博文中我们了解了阿里云容器服务的路由机制: 请求 -> 负载均衡80端口 -> 容器主机9080端口 -> acsrouting路由容器80端口 --基于域名--> W ...

  8. 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用

    本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四 ...

  9. Knative 应用在阿里云容器服务上的最佳实践

    作者|元毅 阿里云智能事业群高级开发工程师 相信通过前面几个章节的内容,大家对 Knative 有了初步的体感,那么在云原生时代如何在云上玩转 Knative?本篇内容就给你带来了 Knative 应 ...

随机推荐

  1. 怎样使用 virt-viewer 远程访问 qemu 虚拟机 - 转载

    How to connect to a VM hosted on QEMU remotely using virt-viewer I couldn’t find comprehensive artic ...

  2. 微信小程序审核 出现85085 提交审核数量过多问题

    前段时间发布了一个新版本小程序(错误代码:85085,说明:submit audit reach limit, please try later hint: [OKYBha04570729]),由于我 ...

  3. css常见的概念

    padding-top:10px;是指容器内的内容距离容器的顶部有10个像素,是包含在容器内的: margin-top:10px;是指容器本身的顶部距离其他容器有10个像素,不包含在容器内: top: ...

  4. 卷积神经网络入门:LeNet5(手写体数字识别)详解

    第一张图包括8层LeNet5卷积神经网络的结构图,以及其中最复杂的一层S2到C3的结构处理示意图. 第二张图及第三张图是用tensorflow重写LeNet5网络及其注释. 这是原始的LeNet5网络 ...

  5. Linux vsftpd 配置文件详解

    .默认配置: >允许匿名用户和本地用户登陆. anonymous_enable=YES local_enable=YES >匿名用户使用的登陆名为ftp或anonymous,口令为空:匿名 ...

  6. PyQt5--QPixmap

    # -*- coding:utf-8 -*- ''' Created on Sep 20, 2018 @author: SaShuangYiBing Comment: ''' import sys f ...

  7. IIS 注册Asp.net 4.0

    32位的Windows:---------------------------------------------------------------------------1. 运行->cmd ...

  8. cpu的核心数及线程关系

    CPU个数.核心数.逻辑CPU个数:一个物理CPU可以有多个核心,一个CPU核就是一个物理线程,由英特尔开发超线程技术可以把一个物理线程模拟出两个线程来使用,使得单个核心用起来像两个核一样,以充分发挥 ...

  9. linux 删除指定日期之前的文件

    两种方法: 1. 在一个目录中保留最近三个月的文件,三个月前的文件自动删除. find /email/v2_bak -mtime +92 -type f -name *.mail[12] -exec ...

  10. python第四十五课——继承性之多重继承

    演示多重继承的结构和使用 子类:Dog 直接父类:Animal 间接父类:Creature #生物类 class Creature: def __init__(self,age): print('我是 ...