首页 > 科技 > Crowdchain:基于联盟链的众测数据溯源系统

Crowdchain:基于联盟链的众测数据溯源系统

南京大学智能软件工程实验室

iselab.cn

摘要

众包测试是一种新兴的软件测试方式,得到了学术界和工业界的广泛关注。众测活动中的数据存储在传统数据库中,存在数据丢失的风险;此外,中心化的数据存储也存在着数据造假及信任问题。本文介绍了基于联盟链的众测数据溯源系统 Crowdchain,基于区块链去中心化、难以篡改、可追溯的特点,提供众测数据的区块链存储与溯源。

关键词 众包测试 联盟链 溯源

1 引言

2006 年,Howe 首次提出众包的概念,定义“众包”是:“一个公司或机构把过去由专职员工执行的工作任务,通过公开的 Web 平台,以自由自愿的形式外包给非特定的解决方案提供者群体,共同来完成的分布式问题求解模式”。众包测试是一种支持软件测试的众包活动,软件测试任务被分发给测试工人完成,并通过众测审核人员 对收集到的大量测试报告进行审查和整理,最终将测试结论反馈给任务请求者。目前已有许多众测平台,如慕测平台、百度众测平台等。

众包测试中存在着大量数据,主要包括需求方提供的需求文档、众测工人提交的测试报告以及平台最终给出的测试结论文档。目前,众测数据主要存储在平台传统数据库中,存在着数据丢失的风险。另一方面,众测数据由平台中心化管理,存在着数据造假及信任问题。

数据溯源是根据追踪路径重现数据的历史状态和演变过程,实现数据历史档案的追溯。对于一件产品,人们通过它的来源信息来判断其真实性。数据溯源的信任问题是传统技术一直期望解决的问题。区块链是一种类似于非关系型数据库的技术解决方案,具有去中心化、不可篡改、分布式存储等特性。区块链各个节点共同维护账本数据,虽然存在多个漏洞可能会破坏区块链完整性,但是它需要恶意节点具有巨大的计算能力来进行攻击,一般不会发生。利用区块链技术,可以解决数据溯源的信任问题。Liang 等人设计了一个基于区块链的云数据溯源架构 ProvChain,Aravind 等人利用区块链及智能合约进行安全的数据来源管理。目前还没有针对众测数据溯源的研究。

本文设计了一种基于联盟链的众测数据溯源系统 Crowdchain 及相关溯源协议。Crowdchain 是众测平台的辅助系统,提供众测数据的区块链存储与验证。Crowdchain 主要具有以下功能:1)提供众测数据的区块链存储;2)提供众测数据的溯源验证。

考虑到众测数据不断增加及区块链数据膨胀的问题,Crowdchain 采取区块链及 IPFS 相结合的数据存储方式,区块链存储数据的溯源信息,具体数据存储于 IPFS 中。在本文中,我们将介绍 Crowdchain 使用的溯源协议,系统的运行流程,并对系统的性能进行测试,给出系统性能测试结果。

2 溯源协议

2.1 溯源协议设计

本文设计了一种基于联盟链技术的数据溯源系统及相关协议。标注法是一种简单且有效的数据溯源方法,通过记录处理相关的信息来追溯数据的历史状态,即用标注的方式来记录原始数据的一些重要信息,如背景、作者、时间、出处等,并让标注和数据一起传播,通过查看目标数据的标注来获得数据的溯源。本文设计的溯源协议采用标注法,通过定义的溯源信息完成数据的溯源。

图 1 需求方加入溯源信息格式

在本系统联盟链中,需求方节点和众测工人节点包含多个经过授权的账户,各个账户将众测过程中需要溯源的数据存储在联盟链中以便后续追溯及校验。如图 1 所示,在某个众测活动中,需求方 T1 将向联盟链加入需求文档溯源信息,该信息包括:

  1. 需求方提供的需求文档 T。
  2. 相关需求方的数字签名 Si。
  3. 需求文档 T 及签名通过哈希运算生成的标签信息。

图 2 众测选手加入众测报告格式

如图 2 所示,众测工人将向联盟链中加入该选手提交的测试报告信息,该信息包括:

  1. 工人完成的测试报告 R。
  2. 工人对报告的数字签名 Si。
  3. 测试报告 R 及签名通过哈希运算生成的标签信息。

如图 3 所示,平台 P 加入的溯源信息包括:

  1. 众测比赛的 ID。
  2. 比赛最终整合报告 IR。
  3. 最终报告中包含的选手报告标签信息的哈希。

图 3 平台加入溯源信息格式

所有工人提交报告后,众测审核人员审核测试报告,通过报告聚类等技术整合出一份最终测试报告。最终报告完成后,平台将最终报告包含的测试报告标签值做哈希运算生成最终报告的标签 H(S)并将其存储到联盟链中。

需求方及工人可以通过联盟链获取具体的数据,并通过数据的标签信息对数据进行对比验证确认是否被篡改。在最终报告溯源方面,众测审核人员可以通过来源信息在联盟链中的标签与最终报告标签的对比,确认审核过程中数据是否真实。

2.2 溯源数据记录查询与校验

平台各方加入溯源信息的过程如图 4 所示,各方需要向联盟链中加入溯源信息,自己对溯源信息的签名以及上述两者的哈希值。

图 4 溯源信息记录

溯源记录包括以下步骤:

平台各方通过系统提供的查询功能获得联盟链上存储的数据,通过验证数据标签信息判断溯源信息的真实性。

图 5 最终报告溯源数据验证

最终报告溯源数据的验证如图 5 所示,其验证方法包括以下步骤:

在本文所述的溯源协议中,需求方及众测选手可以对比联盟链存储的数据哈希及平台保存的数据哈希来确认平台管理的数据是否被恶意篡改。若有篡改,则哈希值不同。

3 众测数据溯源系统

3.1 溯源系统设计

图 6 Crowdchain 体系结构

Crowdchain 采用三层体系架构,分为用户交互层、业务逻辑层和数据存储层。

用户交互层是系统提供的对外交互页面,支持用户通过 web 页面访问系统。由于本系统采用 Hyper fabric,fabric 支持 ldap 验证用户的形式,因此用户在使用本系统前首先要注册 ldap 帐号,经过验证的用户方可使用系统。

业务逻辑层包含系统业务规则的制定和业务流程的实现,包括前端服务、用户服务、数据存储服务以及数据验证服务。前端服务用来与前端页面进行业务交互、用户服务用来管理用户、数据存储提供数据的区块链上链服务、数据验证支持用户上传数据与链上数据进行验证比对。

数据访问层提供系统的数据存储。由于众测工人众多,工人提交的产物包括文档、图片等多种信息,很难将包括图片文字等格式不同大小不一的溯源信息序列化存储到区块链中。本系统使用联盟链存储溯源验证数据(即众测数据的哈希值),同时,采用 IPFS 系统存储全部的溯源数据。TiDB 作为缓存数据库加快数据访问速度。

3.2 系统交互

图 7 左侧描述为加入溯源记录的过程。系统有需求方、工人及平台三个节点,需求方及选手节点包含多个经过认证的账户,各个账户在众测过程中将溯源信息及账户签名存储到溯源系统中。

图 7 众测数据溯源系统

作为众测平台的辅助系统,crowdchain 并不影响众测平台的正常运行流程。需求方在众测平台上传需求文档后,可以将需求文档上传到 crowdchain 上,便于后续验证。Crowdchain 会根据平台提供的信息自动生成所有众测任务信息,众测工人在完成测试报告后,可以选择自己参加的众测任务,上传测试报告。众测审核人员在完成最终报告后,可以将最终报告及标签信息上传到联盟链上。Crowdchain 中数据上链的过程由智能合约自动执行。

众测比赛过程中,需求方可以通过联盟链中存储的需求文档溯源信息,对比平台发布的需求文档哈希值,确保平台发布的需求文档真实可靠。在最终报告发布后,通过最终报告来源信息,从溯源系统中获取具体选手在联盟链中的溯源信息,将来源选手的溯源信息哈希累加,如果与最终报告溯源信息哈希值相等,则可确保最终报告来源真实。

图 8 溯源数据验证界面

如图 8 所示,用户在对溯源数据进行验证时,首先上传本地数据到系统上,系统将计算上传数据的哈希值,并通过智能合约提取链上数据的溯源信息并将其显示在验证界面上。验证界面展示了当前区块哈希、上个区块的哈希、区块链版本、区块成块时间、智能合约地址、链上文件哈希以及本地文件哈希。

4 系统性能测试

本节将对第四节的溯源系统进行性能分析。实验首先搭建需求方、测试方、平台方三个节点,构建联盟链。其次使用慕测平台真实众测比赛数据,模拟比赛中数据上链及溯源过程。最后查看溯源系统响应时间及性能。

表 1Crowdchain 系统操作运行时间

表 1 中列出了执行系统中每个操作所需的时间。我们可以看到,所有操作所需的时间都是固定的。每次操作所花费的时间被视为每千次操作所花费的平均时间。以上每个操作的执行时间取决于网络速度和块挖掘的速度,但从长远来看,这些时间保持接近恒定,并且在所有使用场景中花费的时间不到一秒钟。

5 结论

本文提出了一种基于联盟链的众测数据溯源系统 Crowdchain,通过三个节点共同维护分类账本数据以实现数据信任。本文设计了一种数据溯源协议,用户可以将众测数据提交到 Crowdchain,而无需担心篡改。Crowdchain 提供了众测数据的验证功能。

致谢

本文由南京大学软件学院 2018 级硕士刘子寒翻译转述。

感谢国家自然科学基金(61932012,61802171,61772014)支持!

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/293362.html