摘要: 全球开源区块链领域影响最为广泛的 Hyperledger Fabric 日前宣布了 1.1 版本的正式发布, 带来了一系列丰富的新功能以及在安全性性能与扩展性等方面的显著提升阿里云容器服务区块链解决方案第一时间同步升级, 在 v1.1 新功能的基础上, 提供了弹性裸金属服务器 (神龙) 内置容器化 Explorer 集成阿里云日志服务等方面的增强
作为全球开源区块链领域影响最为广泛的项目之一, 超级账本近日宣布了 Hyperledger Fabric v1.1 的正式发布此次升级带来了一系列丰富的新功能以及在安全性性能与扩展性等诸多方面的显著提升更多详情可参考下述资料:
Hyperledger Fabric
v1.1 官方发布博客: https://www.hyperledger.org/blog/2018/03/20/hyperledger-fabric-v1-1-released
Hyperledger Fabric GitHub 源代码项目: https://github.com/hyperledger/fabric
Hyperledger
Fabric 项目路线图: https://wiki.hyperledger.org/projects/fabric/roadmap
与此同时, 作为对开源区块链生态的支持, 阿里云容器服务区块链解决方案也进行了同步升级这次升级不仅第一时间在 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.readthedocs.io/en/latest/chaincode4ade.html?highlight=chaincode encryption#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 界面上便捷地查看区块链网络中 PeerOrdererCAKafkaZookeeper 等节点的容器日志信息, 一个示例如下:
在此基础上, 最新版的容器服务解决方案进一步支持与阿里云日志服务进行集成, 为企业客户提供如日志存储实时索引 / 查询 / 分析日志告警可视化报表等更高级的日志功能集成的关键参数可在创建部署区块链网络的页面进行直接设置, 具体使用方法可参考该方案的产品文档
在阿里云日志服务控制台查询和分析日志的效果如下图所示关于日志服务完整的查询分析语法以及更多高级功能说明, 可参考日志服务的产品文档
新功能: 删除流程数据目录处理优化
考虑到部分区块链解决方案的用户在开发测试环境需要频繁创建和删除区块链网络, 为了进一步提升效率, 这次方案升级优化了对数据目录清理的优化具体来说, 当区块链网络被删除 (例如使用 helm delete 命令) 的同时, 相应的数据目录名会被自动添加以下后缀:-deleted - 当前时间戳之所以不直接删除, 主要是为了防范人为误操作的风险, 以及满足部分用户希望复用原有数据的目的
假设原数据目录为:
/data/fabric/network01
则区块链网络删除后, 数据目录会被重命名为类似如下的名字:
/data/fabric/network01-deleted-2018-03-21-041756
这样便能进一步优化用户的区块链创建 - 删除 - 创建流程上的操作体验了 (因为有用户需要频繁进行此类操作进行开发调试) 此外, 如需彻底清理数据目录以释放存储空间, 可手工运行 rm 命令或结合自动化脚本很方便地实现
总结
容器服务区块链解决方案自 2017 年 10 月正式发布以来, 获得了为数众多的开发者和来自零售金融制造多媒体等行业的企业用户的认可和采用, 基于解决方案提供的企业级区块链开发测试环境快速地进行基于区块链的业务创新应用的打造随着此次 Hyperledger Fabric v1.1 和区块链解决方案的升级, 将进一步帮助我们的用户打造功能更完备性能更高安全性更强易用性更好的企业级区块链业务应用
来源: http://geek.csdn.net/news/detail/257803