Page 98 - 《软件学报》2021年第11期
P. 98
3424 Journal of Software 软件学报 Vol.32, No.11, November 2021
能合约的落地提供了可能.区块链网络具有不可伪造、无法删除、无法修改、历史可追溯等特点,是执行智能
[3]
合约的理想平台.以太坊 将智能合约定义为区块链网络中的执行业务逻辑的代码片段,其在满足一定的限制
条件后自动执行.随着区块链发展以及推广,区块链以及智能合约技术正在给金融、医疗、供应链等领域带来
重大变革.然而,智能合约的开发和运维仍存在部署效率低、监控工具不成熟等诸多问题 [2,4−7] .典型地,目前,区块
链网络搭建、智能合约编写部署仍依赖手工或半自动化脚本方式.与此同时,随着 DevOps(development and
[8]
operations,简称 DevOps)理念的兴起,DevOps 与微服务架构(microservices architecture,简称 MSA) 以其快速响
[9]
应需求变更、持续部署、持续交付、持续监控等特点逐步取代单体架构(monolithic architecture) ,引起了很多
关注.DevOps 强调使用自动化工具来更快、更频繁地交付更稳定的软件.经过不断发展,DevOps 观念不断获得
认同,支持 DevOps 的自动化工具不断增多 [10] .这些自动化工具都能很好地支持微服务的开发、测试、部署、监
控,而这种自动化工具与能力,正是智能合约开发和运维过程所欠缺的.
为提升智能合约部署与监控的自动化水平,本文提出了一种智能合约微服务化框架.具体地,本文将智能合
约与下层共识网络节点解耦并进行容器化编排托管给 Kubernetes 集群.解耦后的智能合约可以实现在区块链
网络上的“即插即用”.智能合约经微服务化改造后,各种支持 DevOps 的自动化工具能够应用于智能合约领域,
扩充智能合约开发运维工具库.最后,本文在智能合约微服务化框架的基础上,结合自动化工具构建了原型平
台——Mictract(https://github.com/doporg/Mictract.git),帮助工程师从零开始搭建区块链网络、部署、操作、升
级和监控智能合约.
本文第 1 节介绍背景、相关工作.第 2 节阐述智能合约微服务化框架以及改造后的智能合约开发运维流程.
第 3 节介绍 Mictract 原型平台的设计与实现并且进行案例研究与分析.第 4 节讨论本文的局限性.第 5 节总结全
文,并给出下一步工作展望.
1 背景及相关工作
1.1 区块链与智能合约
区块链是一种按照时间顺序链式存储数据块的特定数据结构,被视为分布式账本.如图 1 所示,当新交易生
成时,交易被写入新区块.网络中的所有节点通过共识协议参与验证区块,新区块一旦被验证通过,即被追加进
图 1 所示的链条且不能被删除,从而保证区块链中数据的不可伪造、不可篡改、可追溯.典型的共识协议包括
工作量证明(proof of work,简称 PoW)、股权证明(proof of stake,简称 PoS)和实用拜占庭共识协议(practical
Byzantine fault tolerance,简称 PBFT),这些协议可以保证在没有第三方公正平台参与的情况下完成交易,从而节
约交易成本.参与验证的节点被称为共识节点或矿工,每一个矿工都保存有区块链的完整副本.此外,用户使用
虚拟身份进行交易,使用户隐私得到保护.如图 1 所示,每一个区块链节点都储存着一份完整的账本以及相同的
智能合约.每当有新的交易请求时,区块链网络中的每个节点都会分别运行智能合约,将运行结果广播到网络
中.当结果达成共识后,会被更新到区块链账本内.
现有的区块链主要分为公有链、联盟链和私有链.其中,公有链去中心化的程度最强.在公有链中,全世界任
何组织和个人都可以自主创建密钥对,不需经过其他人的认可即加入区块链网络,并且可以自由读取数据、发
送交易、竞争记账权.公有链中的数据由大家共同记录,比特币、以太坊就是典型的公有链.联盟链的去中心化
程度适中.在联盟链中,公用账本、数据只对联盟内部成员开放,新节点加入要经过联盟的认可.典型地,微软的
Bletchey 以及 IBM 开源的 HyperledgerFabric 主要侧重支撑构造企业联盟区块链系统.私有链是完全中心化的
区块链.私有链由特定组织维护,只有被授权的节点才能操纵数据.
自以太坊白皮书与黄皮书发布以来,智能合约被描述为图灵完备的 [11] 、部署于区块链网络中的合同条款代
码.图灵完备意味着智能合约可以执行复杂逻辑.部署于区块链网络意味着传统的合同条款可以进入到实体计
算机中,并在区块链网络去中心化、不可伪造、不可篡改的特性下执行.智能合约由区块链中参与该合约的多
个用户共同编写,智能合约明确参与者的权利与义务.智能合约由区块链全部网络节点共同参与和监督,不可被
删除,在满足触发条件后自动触发执行.目前,不同区块链网络智能合约开发语言并未统一,常见的,如以太坊的