近年来,异军突起的“区块链”受到全行业的广泛关注,众多企业级用户在积极拥抱新技术的过程中却面临三大难题:性能、隐私和组织管理。如果不能很好地解决这些“顽固分子”,区块链技术就相对局限,很难发挥出应有的水平。

就在昨天,微软在纽约发布了企业级开源区块链基础平台Coco Blockchain Framework (Confidential Consortium Blockchain Framework ),可以一键解决企业区块链的三大挑战。该项目由微软亚洲研究院的区块链团队、Microsoft Azure 区块链产品组以及微软剑桥研究院一起设计和开发而成。下面有请微软亚洲研究院Coco项目中国负责人闫莺为大家一探究竟。

Coco Framework可以说是企业区块链的黑科技,它是第一个能够在企业级区块链上同时解决性能、隐私和组织管理问题的框架。对于企业级用户来说,直接应用已有的区块链(公链)技术无法达到企业级别对系统性能和安全性的要求,即使经过复杂的应用开发流程和网络部署管理,甚至很多系统需要根本架构的改变,也很难达到期望目标。

Coco Framework的设计就是为了降低企业级区块链集成和使用的门槛,解决企业商用的需求——系统的性能、隐私和联盟组织管理。它集成了最先进的软件架构、密码学、一致性算法以及可信计算的技术(如Intel的SGX、Hypervisor的VSM)。有了Coco Framework的技术加成,企业可以放心地开发更多样、更复杂的区块链应用,进而让区块链技术可以真正地在这场数字化革命中得以施展和绽放。

Coco Framework:兼顾解决三大“顽疾”

近年来,区块链技术备受关注。特别是2017年,几乎每个行业都在积极地探索区块链技术,渴望从中挖掘出新的运营模式和商机。然而,在推进区块链技术应用的过程中,企业级用户意识到现有的公链的区块链协议并不能满足他们的业务需求,最直接面临的就是性能、隐私和组织管理这三大“顽固问题”。

为什么这三个问题很难从系统角度解决呢?这是因为在公链区块链系统的设计中,主要考虑的是如何让不同节点达成共识,而不同节点所处的环境通常是匿名的、不可信任的、潜在敌对的环境。因此,为防止恶意行为,交易一般都用“明文”(非加密)对所有人可见以监督验证,并应用拜占庭容错类算法来达成共识。然而,这就使得公链中的“保障”技术、性能和隐私保护形成了一个“顾此失彼”的关系,运用“保障”技术就意味着无法兼顾性能优化和隐私保护,但这些恰恰是企业业务的需求。至于隐私问题,我们曾在之前的文章“一文读懂区块链上的隐私与监管问题”中剖析过,相关解决方案一般仅适用于特定的系统中,很有局限性,并且通常会带来性能的损失。

因此,如何设计解决方案来兼顾公链中的“保障”技术和性能、隐私保护等成为技术研究领域的一大挑战。Coco Framework的出现则一举击中行业痛点,让我们看到了可行性。

隐私烦恼“去无踪”:TEE环境和区块链高度集成

用Coco Framework部署的区块链网络具有高度可扩展和隐私保护的特性。它可以满足所有企业联盟链的关键需求,从而加快区块链技术在企业中的广泛应用。Coco Framework不是独立的块链协议,它提供了一个信任的基础,可以整合现有的块链协议(如Ethereum,Quorum或Corda等)提供完整的企业级区块链解决方案。

Coco Framework充分利用可信计算环境TEE (Trusted Execution Environment),如 Intel SGX 和Windows 虚拟安全模式(VSM) ,创建了可信的网络。TEE环境既可以证明放入代码的正确性,又能保证运行时内部数据对外界不可见以及不被篡改,进而可以确保保障区块链协议关键代码和数据的机密性、完整性,使得区块链的应用可以在完全受信任的成员节点上高效运行。

TEE环境从技术上实现了隐私性能的大幅提升:第一,网络中物理节点之间信任的建立无须节点拥有者之间的相互信任;第二,能够在保证区块链状态保密的情况下处理各种用户请求。事实上,已经有不少的区块链项目采用TEE来达到隐私或者性能方面的要求,例如Hawk[1] 中就用TEE来完成智能合约中对私密信息的处理,而非代码本身以及用户查询请求的隐私性;Hybster[2] 则用TEE实现了高效的BFT协议等等。与它们不同的是,Coco Framework将区块链和TEE高度集成,达到了更高的隐私性以及灵活性。

Coco Framework的运行原理

Coco Framework搭建的网络中的节点,通过证书的验证(如Intel背书)而成为可信节点VN(Trusted Validating Nodes)。每个节点运行Coco Framework和某个区块链的协议(比如以太坊),并根据所选取的一致性协议系统选取lead来处理应用中的交易事务。

类比来说,成为lead的VN就像以太坊里面的矿工,但不同的是Coco Framework里面的每个VN都可以通过TEE attestation 验证其他节点执行时候所用的代码哈希值(恶意行为将直接被发现),而不需要像以太坊一样通过重新计算交易来验证。VN之间通过TEE可以互相验证身份和代码从而建立可信的连接。更为重要的是,Coco Framework包含了一套密钥及权限管理机制,可保证只有在TEE中才能处理加密后的交易,并且只有拥有相应权限的用户才能查看相关状态。

正是由于可信网络的建立,让Coco Framework 搭建企业级区块链网络的优点十分突出:

  • 吞吐量和交易响应时间接近数据库的速度。通过使用TEE,Coco Framework可以简化一致性协议,从而提高了交易的速度和延迟但不会影响安全性。

  • 支持更丰富、更灵活的隐私保护模型。有了TEE的加成,Coco Framework通过使用数据访问控制方案来实现复杂的隐私保护模型。交易的执行,智能合约代码和状态都只能通过应用定义的接口返回给有权限的人。

  • 提供可编程的管理模型来支持任意的分布式管理策略。

  • 支持非确定性(Non-deterministic)的交易和运算。在绝大多数的区块链系统里,交易的运行结果必须是确定的,任何纯随机的运算都会导致无法有效重现和验证。然而在Coco Framework里因为有了TEE,节点间的运算结果无需验证,所以可以支持非确定性的计算。更加灵活的是,交易可以根据应用的需要和外界系统进行交互。这极大的丰富了应用的语义和场景。

已有的区块链协议通过与Coco Framework的整合能够直接解决隐私、性能和管理三大问题。例如,一个企业正在使用以太坊开发应用,那么与Coco Framework整合之后,关键问题一并解决,且不需要对已经开发的应用做修改。

同时,Coco Framework并非必须要和云服务绑定,它可以被部署到云上(如Microsoft Azure),也可以部署在企业自己的服务器上。正因为此,Coco Framework在短时间内就迎来了广泛企业和区块链团队的欢迎和拥抱,如J.P. Morgan (Quorum)、R3 (Corda)以及 Intel (Hyperledger Sawtooth)。更多技术细节,请点击阅读原文,查看 Coco Framework白皮书。

 “3-3-8”号技术探险小分队

微软亚洲研究院区块链团队是Coco Framework设计与开发的区块链专家团队,负责Coco Framework中的区块链层,探索和解决将区块链系统整合进Coco Framework的技术路径。以对以太坊的整合为例,直接把以太坊放进TEE的Enclave中是无法取得较高的性能和隐私保护的。如何让以太坊利用Coco Framework的优势发挥最大性能也是一个挑战。为了解决这些问题,我们设计和开发了与公链以太坊兼容的企业级以太坊版本来与Coco Framework进行整合。整合后我们又对整体性能进行了全方面的优化,使得Coco Framework相对以太坊本身,吞吐量达到接近两个数量级的提升。

与我们一起并肩战斗的兄弟团队还有位于美国雷德蒙(Redmond)的Microsoft Azure区块链团队和微软剑桥研究院系统安全组的研究员们。三方团队间特长互补,合作中紧张又刺激。有意思的是,三个团队均匀分布在三个时区,每天一个团队下班前,都会迎来另一个团队来上班,任务交接高效、自然。在这样一个国际化的团队里做研究开发8个月,相当于一个普通团队24个月的开发进度。这也是Coco Framework能够迅速设计、开发,并顺利发布的关键。

微软亚洲研究院Coco团队成员,由左至右:闫莺(Coco项目中国负责人,微软亚洲研究院主管研究员)、黎强(来自复旦的实习生)、郭众鑫(微软亚洲研究院软件研发工程师)、熊一远(来自北大的实习生)、周沛源(来自浙大的实习生)、张宪(来自北大的实习生)、陈洋(Coco架构,微软亚洲研究院主管研究员),以及微软亚洲研究院首席研究员Thomas Moscibroda(未出现在照片中)

正如Microsoft Azure CTO Mark Russinovich在Coco Framework发布会中所提到的,区块链是能够给行业带来变革性的技术,它能大幅减少跨组织共享型业务流程中的摩擦和成本,从而提高效率。目前,微软正积极地和客户、合作伙伴以及区块链社区一起为企业联盟区块链市场做好准备,希望把最先进的区块链技术带给更多企业。

Coco Framework是企业级区块链的基础框架。它解决了实际业务中对区块链系统的最关键需求——隐私保护、高性能和组织管理。我们相信这是让区块链落地实际应用的坚实的第一步。作为Coco Framework设计开发的核心团队——微软亚洲研究院区块链团队也将不遗余力地投身于更先进的区块链技术的研究与开发。同时也欢迎志同道合、有能力、有热情的同学加入我们团队的实习计划(可发送简历和实习申请说明到:iblockchain-hiring@microsoft.com)。

附录:

[1] Ahmed E. Kosba, Andrew Miller, Elaine Shi,Zikai Wen, Charalampos Papamanthou:

Hawk: The Blockchain Model of Cryptography and Privacy-Preserving Smart Contracts. IEEE Symposium on Security and Privacy 2016: 839-858

[2] Johannes Behl, Tobias Distler, Rüdiger Kapitza Hybrids on Steroids: SGX-Based High Performance BFT.EuroSys 2017

白皮书链接:

https://github.com/Azure/coco-framework/blob/master/docs/Coco%20Framework%20whitepaper.pdf

立即访问http://market.azure.cn

微软Coco Blockchain Framework:一键解决企业级区块链三大难题的更多相关文章

  1. 区块链(Blockchain)

    一 .什么是区块链? 区块链(Blockchain)是由节点参与的分布式数据库系统[1],它的特点是不可更改,不可伪造,也可以将其理解为账簿系统(ledger).它是比特币的一个重要概念,完整比特币区 ...

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

    摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性.性能与扩展性等方面的显著提升.阿里云容器服务区块链解决 ...

  3. 未来-区块链-IBM:IBM 区块链技术开发社区

    ylbtech-未来-区块链-IBM:IBM 区块链技术开发社区 1.返回顶部 1. 开始学习 IBM Blockchain 101:开发人员快速入门指南 这篇快速入门指南适合不熟悉区块链技术,希望快 ...

  4. C#区块链零基础入门,学习路线图 转

    C#区块链零基础入门,学习路线图 一.1分钟短视频<区块链100问>了解区块链基本概念 http://tech.sina.com.cn/zt_d/blockchain_100/ 二.C#区 ...

  5. HyperLedger Fabric Introduction——区块链超级账本介绍

    介绍 HyperLedger Fabric是一个基于模块化架构的分布式账本解决方案平台,它拥有深度加密.便捷扩展.部署灵活及可插拔等特性.它设计之初的目的是支持不同组件的可插拔实现,并适应整个经济生态 ...

  6. 区块链3.0 ada Cardano卡尔达诺如何获得一致好评?

    区块链3.0 ada Cardano卡尔达诺如何获得一致好评? EOS 的直接竞争对手是以太坊.文章介绍的卡尔达诺(Cardano)的目标就更加远大了,他要同时锁定比特币和以太坊.但大家去网上搜索卡尔 ...

  7. 用Java实现简单的区块链

    用 Java 实现简单的区块链 1. 概述 本文中,我们将学习区块链技术的基本概念.也将根据概念使用 Java 来实现一个基本的应用程序. 进一步,我们将讨论一些先进的概念以及该技术的实际应用. 2. ...

  8. [易学易懂系列|rustlang语言|零基础|快速入门|(27)|实战4:从零实现BTC区块链]

    [易学易懂系列|rustlang语言|零基础|快速入门|(27)|实战4:从零实现BTC区块链] 项目实战 实战4:从零实现BTC区块链 我们今天来开发我们的BTC区块链系统. 简单来说,从数据结构的 ...

  9. 阿里云成为Hyperledger超级账本全球会员,发力区块链生态建设

    摘要: 阿里云将会与Hyperledger社区共同推进全球区块链技术和商业生态在多行业领域的建设. 2018年12月12日在瑞士巴塞尔的2018Hyperledger全球峰会上,阿里云正式加入Hype ...

随机推荐

  1. SSAS IIS 发布

    http://www.cnblogs.com/zhangzt/p/4046259.html IIS7下配置SSAS通过HTTP远程连接 淘宝 问答 学院 博客 资源下载 高端培训            ...

  2. fastIO模板

    freadIO整理 namespace fastIO{ #define BUF_SIZE 100000 ; inline char nc() { static char buf[BUF_SIZE],* ...

  3. 计算机网络HTTP、TCP/IP包

    参考: TCP-IP数据包结构详解 HTTP报文格式详解 Http协议报文格式 HTTP请求/响应报文结构 [Java知识]GET和POST请求的区别

  4. asn编译常见报错

    TypeError: unsupported operand type(s) for -: 'str' and 'int' 可能是该用列表的地方没用列表. 1. ’-‘不支持,需改为'_' asn1t ...

  5. windows64下安装MySQLdb连接数据库

    MySQLdb是Python连接MySQL的模块,下面介绍一下源码方式安装MySQLdb: 1.首先要下载:http://www.codegood.com/downloads,由于我的python是2 ...

  6. Umbraco image中使用Crop URL

    需要在Umbraco 的image中使用crop URL.首先你需要取出这个image作为IPublishedContent 有以下两种方法 第一种: var imageId = Model.Cont ...

  7. php array数组(第一部分)

    创建一个数组 <?php $arr = array("My","name","is","zhangsan"); e ...

  8. ms sql server line feed

    多行文本换行: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ======================================== ...

  9. c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法

    最近项目中需要实现一个服务器宕机后短信提醒的功能,个人觉得在使用Python 写http请求这块很方便,发短信这块就使用了python,但是c++程序中调用这个脚本时,编译不通过,提示如下错误: er ...

  10. codevs2830 蓬莱山辉夜

    2830 蓬莱山辉夜   题目描述 Description 在幻想乡中,蓬莱山辉夜是月球公主,居住在永远亭上,二次设定说她成天宅在家里玩电脑,亦称NEET姬一天,她要她帮忙升级月球的网络服务器,应为注 ...