注册
关闭
区块链大帝

区块链大帝

发布于 1周前 阅读数 3533

区块链入门 | 智能合约微服务:如何将云上现有的技术与智能合约相结合?

作者:北京航空航天大学分布式实验室 北京航空航天大学云南创新研究院  余维 胡 凯

随着云计算与区块链的快速发展,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 智能合约微服务的工作流程

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

  • 0
区块链大帝
区块链大帝

0 条评论