Page 104 - 《软件学报》2021年第11期
P. 104

3430                                Journal of Software  软件学报 Vol.32, No.11, November 2021

                 助工程师更快了解智能合约内部的工作原理.开发的代码仓库可以对接持续集成(continuous integration,简称
                 CI)工具(例如 Jenkins、TravisCI 等),做到合并代码后自动提交部署.
                    (3)  构建
                    智能合约的开发和升级过程都比较繁琐,所以智能合约的手动部署、版本更迭以及升级过程都容易出错,
                 这有可能会导致系统漏洞,甚至升级失败,造成数据和经济损失.利用已有 CI 工具实现基础设施自动化,利用容
                 器化工具(如 Docker)打包编写完成的智能合约,衔接测试和部署.同样,将合格的智能合约镜像开源,可以方便其
                 他开发者直接部署于自己的区块链网络.
                    (4)  测试
                    常见的智能合约漏洞包括重入攻击             [34] 、事务顺序依赖、时间戳依赖、处理异常、整型溢出等.尽管业界已
                 有各种理论与工具       [35,36] ,但自动化程度较低.本文利用持续集成工具提升智能合约测试的自动化水平,将“可插
                 拔”、“开箱即用”的测试策略配置进入持续交付流水线,以便在智能合约上链前对其进行全方位测试.
                    (5)  部署
                    本文提倡从一开始不断地集成,将拆分后的智能合约以及区块链共识节点组合起来.每个过程都由自动化
                 的构建(包括测试)进行验证,以尽可能快地检测集成的错误.智能合约可交付镜像可以在开发、测试、生产环境
                 之间无障碍流通,打破三者之间的隔阂.开发完成的镜像可以直接交给测试网络测试,测试完成的镜像可以直接
                 在生产环境中部署.
                    (6)  监控
                    合约指标:在智能合约微服务运行时,采用微服务监控领域相结合的手段与工具(例如 Hyperledger Caliper、
                 Promethus 等),全面采集智能合约容器以及下层网络节点的性能指标数据,提供一个标准和定制的性能框架.该
                 框架可以集成数据异常检测          [37] 、报警及时反馈和智能决策分析,提供有效的可视化.可以监控的指标有:
                    •   响应时间:每个事务的响应时间,包括平均响应时间、最大响应时间和最小响应时间.
                    •   吞吐量:每秒成功事务的数量.
                    •   成功率:成功交易的数量与全部交易数量的比值.
                    •   资源消耗:CPU、内存、磁盘和网络 I/O 等.
                    容器运行日志:目前,智能合约开发领域对日志采集分析几乎没有涉及,但微服务架构在大规模分布式系统
                 中的日志采集、收集、分析方面已经做得十分成熟,可以借鉴微服务架构中的工具(例如 EFK、ELK)进行简单
                 的配置,全面采集智能合约容器运行产生的日志,提高智能合约运行过程中对于日志的实时采集、分析、展示、
                 以及故障定位的能力.
                    交易日志:智能合约的运行日志外,用户的交易行为、资金和资产的流向以及流通过程,蕴藏大量有价值的
                 信息.可以进行交易性日志的记录与追踪.
                    API 管理:结合集群网关管理工具不用考虑安全控制、流量控制、审计日志等问题,网关层还可以提供 API
                 发布、管理、维护等主要功能,开发者只需要简单的配置操作即可把自己开发的合约发布出去,同时置于网关
                 的保护之下.
                    链路分析:智能合约微服务的全链路调用分析,借鉴 Google 的 Dapper                [38] ,在软件和通信协议中注入探针,跟
                 踪运行时智能合约微服务的有效调用路径及响应时间.帮助理解系统行为、用于分析性能问题的工具,以便发
                 生故障的时候,能够快速定位和解决问题,在出现性能瓶颈的时候,精准合理地扩容.

                 3    智能合约微服务化开发运维原型平台的设计与实现

                    本节为第 2 节提出的智能合约微服务化框架与流程提供一种可行的支撑平台,使用 3 台 Centos7.x 组成的
                 Kubernetes 集群,1 台 Mater 节点(dop-node1),2 台 Node 节点(dop-node2、dop-node3).Master 节点作为 NFS 服务
                 端.公有链允许任何节点随意进出的特性无法适用于企业级区块链应用                         [39] ,本文将使用 HyperledgerFabric 进行
                 智能合约微服务改造,这可以避免公共区块链的运营成本,并确保更好地控制隐私                            [13] .
   99   100   101   102   103   104   105   106   107   108   109