当前位置: 首页 > news >正文

阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1

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

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

  • Hyperledger Fabric
    v1.1官方发布博客:https://www.hyperledger.org/b...
  • Hyperledger Fabric GitHub源代码项目:https://github.com/hyperledge...
  • Hyperledger
    Fabric项目路线图:https://wiki.hyperledger.org/...

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

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

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

图片描述

新功能: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.rea...

在容器服务的区块链解决方案中,我们提供了官方的EncCC示例程序用于在CLI环境中运行,方便用户了解此功能的使用和工作机制。在该示例中,首先对键"key1"的值“value1”进行加密并记录到账本上;然后读取键"key1"并解密其值,输出显示"value1";接着,再对键“key2”的值"value2"进行加密以及数字签名并记录到账本上,最后读取键“key2”并解密、验证签名得到最终值,输出显示"value2"。

需要说明的是,使用该CLI示例程序之前,请先创建对应的channel(例如通过运行cli-tset.sh)。

示例程序源代码参考:
https://github.com/hyperledge...

图片描述

图片描述

图片描述

新功能: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/hyperledge...

新功能:支持阿里云弹性裸金属服务器(神龙)

此次区块链解决方案升级正式支持在阿里云弹性裸金属服务器(神龙)运行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和区块链解决方案的升级,将进一步帮助我们的用户打造功能更完备、性能更高、安全性更强、易用性更好的企业级区块链业务应用。

原文链接

干货好文,请关注扫描以下二维码:

图片描述

相关文章:

  • Confluence 6 更新目录
  • Quartz 表达式生成器
  • MongoDb进阶实践之五 MongoDB修改命令详述
  • [2]十道算法题【Java实现】
  • SSH密钥分发
  • Angular数据绑定机制
  • Java 中的E,K,V,T,U,S
  • 订阅Forge Viewer所有的事件
  • 使用正则表达式,取得点击次数,函数抽离
  • 记一次和乔布斯合作最难忘的经历
  • 第9章WEB09-Servlet篇
  • servlet匹配路径时/和/*的区别(转)
  • POJ 2251 Dungeon Master
  • 面试总结JavaScript篇
  • Generic detail view PostDetailView must be called with either an object pk or a slug.解决
  • angular2开源库收集
  • crontab执行失败的多种原因
  • ES6系列(二)变量的解构赋值
  • Redis在Web项目中的应用与实践
  • socket.io+express实现聊天室的思考(三)
  • SpringBoot几种定时任务的实现方式
  • Spring框架之我见(三)——IOC、AOP
  • 浅谈web中前端模板引擎的使用
  • 用Python写一份独特的元宵节祝福
  • 怎么把视频里的音乐提取出来
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​Spring Boot 分片上传文件
  • #Linux(Source Insight安装及工程建立)
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (3)llvm ir转换过程
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (五)MySQL的备份及恢复
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net IOC框架入门之一 Unity
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET/C# 的字符串暂存池
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ linux ] linux 命令英文全称及解释
  • [android] 天气app布局练习
  • [bzoj4240] 有趣的家庭菜园
  • [C#]手把手教你打造Socket的TCP通讯连接(一)
  • [CERC2017]Cumulative Code
  • [CSS]文字旁边的竖线以及布局知识
  • [EULAR文摘] 利用蛋白组学技术开发一项蛋白评分用于预测TNFi疗效
  • [GXYCTF2019]BabySQli1
  • [GXYCTF2019]禁止套娃
  • [IT生活推荐]大家一起来玩游戏喽,来的都进!
  • [Java开发之路](14)反射机制
  • [leetcode]56. Merge Intervals归并区间
  • [office] excel2003进行可视性加密的方法 #媒体#其他#知识分享
  • [one_demo_11]二分查找法
  • [PY3]——logging