智能合约微服务

栏目: 后端 · 发布时间: 5年前

内容简介:胡凯教授随着云计算与区块链的快速发展,BaaS(Blockchain as a Service,区块链即服务)逐火热了起来。与早期云上的IaaS、PaaS、SaaS技术类似,BaaS技术的目的在于将区块链以及区块链技术包装成为服务,提供快速、便捷的区块链部署和使用功能,方便企业级用户的使用,而基于区块链的智能合约也被移植到了BaaS上,成为了BaaS上实现各企业业务的方法,而如何将云上现有的技术与智能合约相结合,解决现有智能合约的问题,成为了一个重要的研究点。本文主要针对基于区块链的智能合约存在的合约可扩展

智能合约微服务

胡凯教授

随着云计算与区块链的快速发展,BaaS(Blockchain as a Service,区块链即服务)逐火热了起来。与早期云上的IaaS、PaaS、SaaS技术类似,BaaS技术的目的在于将区块链以及区块链技术包装成为服务,提供快速、便捷的区块链部署和使用功能,方便企业级用户的使用,而基于区块链的智能合约也被移植到了BaaS上,成为了BaaS上实现各企业业务的方法,而如何将云上现有的技术与智能合约相结合,解决现有智能合约的问题,成为了一个重要的研究点。本文主要针对基于区块链的智能合约存在的合约可扩展性问题,提出智能合约微服务方法解决该问题。

1、智能合约微服务的意义

智能合约的可扩展性问题主要体现在目前智能合约独立性极高,业务逻辑基本不对外开放,合约之间的相互调用极少,合约使用完成后很难再次利用。随着合约业务逻辑逐渐向复杂化发展,合约的规模也越来越庞大,而合约内部的逻辑耦合过大,导致合约的维护和更新变得极为复杂。

云上的微服务技术是面向服务架构(SOA)风格的一种变体,它将应用程序构建为一系列松散耦合的服务,可有效的提升项目的可扩展性。在微服务体系结构中,服务应该是细粒度的,协议应该是轻量级的。将应用程序分解为不同的小型服务的好处是它提高了模块性,使应用程序更易于理解、开发和测试。它还通过使小型自主小组独立开发,部署和扩展各自的服务来平行发展。它也允许个体服务的架构通过不断的重构而出现。基于微服务的体系结构可以实现持续交付和部署。将云技术中的微服务架构应用到智能合约中,将云上的智能合约以微服务的形式进行开发可有效的解决其可扩展性差的问题。

下面本文将从智能合约微服务基础容器设计、智能合约微服务间通信方式、整体智能合约微服务运行方式来简单介绍智能合约微服务化的实现方法,微服务的系统研发还在进行中。

2、智能合约微服务容器设计

微服务是面向服务架构(SOA)风格的一种变体,它将应用程序构建为一系列松散耦合的服务,可有效的提升项目的可扩展性。智能合约本质上是实现业务逻辑的代码,可很好的与微服务相结合。单个合约微服务在容器中执行,容器中的智能合约微服务具备以下特点:

1)功能单一性:满足面向对象的原则,为保证高可重用率,智能合约微服务所针对的业务应是单一的。

2)可组合性:用户所需业务通常较为复杂,简单合约微服务能通过轻量级通信方式相互组合形成复杂合约,完成特定业务逻辑。

3)高融入性:智能合约微服务可将服务暴露,通过轻量级通信服务访问,可被封装成API方便被用户使用,并安插在自己的业务逻辑中。

4)高可扩展性:智能合约微服务在开发完成后,只需将自身的服务暴露给其他微服务和用户便可被使用,且整体的服务集合可通过增加新的微服务或是更新已有微服务来满足各类新的需求。

5)高可验证性:单一智能合约微服务由于其功能单一,简化了其生成的状态机的规模,减少了形式化验证过程周期,提升了验证的准确性;组合合约满足组合验证的标准,可很好的通过该方法进行验证。

单一合约微服务的执行容器使用 docker 实现,可很好的隔离合约间的资源,使合约成为独立的模块,在上层使用kubernetes对合约进行管理整体管理,包括合约服务的注册,以及合约容器的管理,如下图1所示。

智能合约微服务

图1 智能合约微服务基础容器

3、智能合约微服务通信设计

单一合约运行在相互独立的容器之中,为实现合约的可扩展性,合约之间可进行组合使用,完成更为复杂的合约逻辑。故须在各个合约容器之间建立通信。业界目前主要有两种方式实现微服务间的通信,一种是使用远程过程调用(Remote Procedure Call)的方法,而另一种是使用基于RESTFUL接口规范的方法(如HTTP等)。两种方法各有长处,RPC在性能上表现出色,而基于RESTFUL接口的方法则在调用和测试上简单方便。由于后期合约的组合频繁,故使用更为轻量级的RESTFUL接口方法进行通信。

4、智能合约微服务运行方式设计

智能合约微服务的实现分为部署和运行,每个合约微服务均被部署在单个的容器之中,提供给每个合约模版独立的运行、开发、验证的环境。智能合约微服务工作流如图2所示。

用户的请求将被微服务的特定网关所获取,网关进行对应的解析处理。

网关会检查所请求的产生的单一合约的合法性以及组合合约的可组合性,在检查完成后将请求信息重新封装为特定的合约服务消息,设定服务访问序列。

请求消息会按照用户所需逻辑进入各个容器之中完成单一合约的业务逻辑,并对各个容器数据进行更新。

最终处理结果将被返回给网关,随后交付给用户。

整个请求的处理流程通过区块链接口存入到区块链中。

智能合约微服务

图2 智能合约微服务的工作流程

智能合约微服务在目前的应用还较少,主要由于基于区块链的智能合约以及区块链即服务技术还处于起步阶段,存在于区块链中的智能合约的数量还较少,不足以暴露出可扩展以及可重用上的问题。相信在未来,在区块链应用快速落地以及智能合约数量的快速增长的阶段,智能合约微服务技术一定能大放异彩。

北京航空航天大学分布式实验室

北京航空航天大学分布式技术实验室具有悠久历史传承,是国内最早的分布式技术和形式化方法研究和应用的专业实验室,上世纪八十年代起就开始承担航空电子等各类军民两用分布式系统研制,先后承担国家基金、863重大、核高基等国家重点工程项目,获多项国家科技成果奖。在分布式处理、高性能计算、嵌入式、FPGA设计等方面国内领先。主编了国内分布式计算权威教材《分布式计算系统导论》,是国内区块链和智能合约技术早期研究单位,智能合约工程(SCE)和验证即服务(VaaS)等概念和理论方法的提出者。实验室与法国INRIA成立了形式化方法联合研究实验室,推动区块链和智能合约形式化验证方法和 工具 的应用。多年来潜心研究自有知识产权区块链底层技术,已拥有全系列区块链产品和工具,先后完成中国移动、国家网络应急中心、国家电网、金融领域等国内重要区块链应用落地项目,获得国家发明专利和软件著作权30余项。形成了科学研究与人才培养相结合,理论研究与应用系统研发协调发展的学科发展格局。

智能合约微服务

智能合约微服务

来源:北京航空航天大学分布式实验室--胡 凯

本文由布洛克专栏作者发布,不代表布洛克观点,版权归作者所有

——TheEnd——

关注“布洛克科技”

智能合约微服务


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

jQuery实战

jQuery实战

Bear Bibeault、Yehuda Katz / 陈宁 / 人民邮电出版社 / 2009.1 / 49.00元

《jQuery实战》全面介绍jQuery知识,展示如何遍历HTML文档、处理事件、执行动画以及给网页添加Ajax。书中紧紧地围绕“用实际的示例来解释每一个新概念”这一宗旨,生动描述了jQuery如何与其他工具和框架交互以及如何生成jQuery插件。jQuery 是目前最受欢迎的JavaScript/Ajax库之一,能用最少的代码实现最多的功能。 点击链接进入新版: jQuery......一起来看看 《jQuery实战》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具