Home > 观点 > 通过版本控制和区块链推进开放科学
观点

通过版本控制和区块链推进开放科学

通过版本控制和区块链推进开放科学

33.1 引用

Jonathan Bell, Thomas D. LaToza, Foteini Baldmitsi, Angelos Stavrou, ” Advancing Open Science with Version Control and Blockchains,” In Proceedings of the 2017 IEEE/ACM 12th International Workshop on Software Engineering for Science (SE4Science). IEEE, 13-14.

33.2 摘要

科学界正面临着可重复性的危机:对实验数据和应用于该数据的分析的完整性的担忧损害了人们对科学结果的信心。当研究人员忽视了他们实验过程中的一些重要组成部分时,或者是研究人员或恶意的第三方有意偏向于确保实验的特定结果时,实验完整性可能会在无意中受到损害。科学界一直在推动“开放科学”,增加实验过程的透明度,要求研究人员公开注册他们的数据集和实验程序。我们认为,软件工程社区可以利用其在跟踪可跟踪性和源代码来源及其相关构件方面的专业知识,从而简化科学家的数据管理。此外,通过利用智能合约和区块链技术,我们相信这样一个系统能够在支持协作研究的同时保证科学数据和结果的端到端的完整性。

33.3 介绍

正如最近发表在《自然》杂志上的一篇文章所报道的,科学界面临着一场“再现性危机”。接受调查的1576名科学家(来自不同领域,包括化学、物理、地球和环境科学、生物学和医学)中,70%的人表示,他们曾试图复制另一位科学家的实验,但失败了。2012年,一项对2047篇已被撤回的生物医学和生命科学研究论文的审查发现,其中43%的撤回是由于欺诈(或涉嫌欺诈)。为了保持对科学成果的信心,我们必须确保从数据收集到文章发表的科学工作流程的完整性。

为了解决这一危机,越来越多的在线知识库共享科学数据、协议或发现。通过发布导致科学结果的数据,研究人员邀请复制他们的实验,即使在未来的研究人员可能难以重新获得相同的数据的情况下(即如果需要专业和昂贵的机器)。然而,研究人员在采用这样的存储库方面进展缓慢:它们常常被视为一种负担,需要时间和精力来决定应该发布什么数据以及应该以什么形式发布。此外,一些研究人员可能会谨慎地在他们相信他们已经从这些数据中获得了最大的好处(就额外的出版物而言)之前提供大量的数据集。

即使研究人员选择公开他们的数据集,这仍然不能解决数据完整性的问题。谁能说所报告的数据是未经修改的?或者,如果它被宣传为修改的,那么它实际上是按照描述的方式修改的?如果研究人员声称他们正在发布整个数据集,是吗?即使我们假设没有研究人员会故意做出错误的断言,这些挑战也会出现,因为管理大型数据存储库的生态系统是复杂的,而且数据集很容易受到意外损坏。

从历史上看,实验室科学数据一直保存在实验室笔记本中,研究人员可能会在每一页上签名并标注日期,以证明每一步和收集到的数据的真实性。但是,随着数据收集和分析越来越电子化,这种记录已经开始消失。与此同时,源头出处本身也变得复杂起来,因为研究合作可能是地理上分布的,涉及多位研究人员的数据,分析可能使用历史数据集。此外,用于数据分析的日益复杂的脚本和工具(它们本身可能是共享的,也可能不是共享的)也使得维护到用于分析主要数据的确切代码的可跟踪性链接变得非常重要,特别是当脚本稍后得到改进或发现有缺陷时。

理想情况下,数据管理系统应:

•支持私人合作——允许同一实验室或跨机构的研究人员在发表前合作生成和分析未发表的私人数据

•支持数据收集和分析工作流——确保系统很好地集成到数据生成和分析过程的所有步骤中,并且其复杂性不会成为采用的障碍

•支持与已经使用的各种数据存储库的集成,以及与学术和研究机构使用的各种身份验证和授权系统的集成

•保证数据和结果的完整性——在收集的主要数据、用于分析数据的脚本和分析结果之间保持不可变的可追溯性链接

•允许但不要求完全公开数据集

•允许公众轻松发现已公开发布的数据集

•开放和分散,没有单点故障或单点信任

当前的科学数据管理倾向于将重点放在最终结果的传播上,许多存储库和方法都将重点放在这些归档文件应该存储和索引的位置。缺少的是一个系统,研究人员可以在他们的实验室中使用,当他们执行他们的研究时,来维护原始数据之间不可变的可跟踪性链接,如捕获的原始数据、应用于其上的转换和分析,以及提交给出版物的结果。

我们认为,通过利用软件工程和密码学的见解,我们可以为科研社区提供满足所有这些目标的数据管理基础架构。

33.4 描述

长期以来,软件工程师一直在努力解决代码的可跟踪性和版本控制问题,这些问题直接适用于科学家的数据管理关注点。原则上,现成的版本控制可以解决许多可跟踪性问题:例如,如果研究人员使用git来存储他们的数据集和分析工具,那么他们可以很容易地维护版本历史。发布后,只要版本控制系统跟踪数据集,外部人员就可以看到对数据集进行的转换。Git是一个分散的版本控制系统:不需要一个单独的“主”服务器来存储存储库信息,因此,也可以满足我们没有单点故障的需求。

然而,这样的系统不一定能立即适应以二进制形式存储数据的环境(因此对传统的变更跟踪工具来说是不透明的)。此外,像git这样的软件版本控制系统并不是为了保存不可变的审计跟踪而设计的:恶意的参与者可以很容易地篡改存储库的内容,从而更改历史记录。例如,git显式支持通过重新排序提交、更改消息或完全删除提交等操作重写历史,因为提交旨在提供代码历史的简化和理想化记录,而不是不可变的审计跟踪。

一个解决方案可能是信任一个公认的第三方(例如,期刊的编辑委员会或一个归档公司,如开放科学框架)在每个研究阶段保存存储库状态的副本。如果我们相信第三方的诚信,那么我们就可以对正在进行的科学实验的诚信有一些合理的保证。然而,这个第三方将立即成为一个故障点——如果它离线或受到威胁,那么整个数据生态系统的完整性就会受到威胁。此外,该第三方可能被怀疑篡改其存储的数据,或容易受到恶意行为者的安全破坏。

我们提出,通过将版本控制系统与区块链技术相结合,我们可以创建一个完整的分布式不可变科学实验总账。简单地说,我们可以将区块链描述为一个分布式数据库(或仅追加分类账),它使用加密技术(如散列和数字签名)以安全、线性和按时间顺序添加新条目。维护区块链的节点协同工作,以便在任何时候都能就最新版本的区块链达成一致意见,即使节点是匿名运行的,彼此之间的连接也很差,或者存在潜在的恶意操作符。区块链的设计使得重写或修改记录在其上的任何部分的成本高得令人望而却步。

我们设想一个系统,研究人员将使用一个公共的(潜在的公共)区块链来发布他们的数据集和结果。由于可伸缩性的原因,在区块链上存储实际数据是不现实的。因此,区块链上的每一篇文章都只包含一个指向实际数据的指针(它将存储在单独的版本控制系统中)、结果/数据的加密散列、所有权证明(通过数字签名)和访问权限。在区块链上发布一个科学结果的哈希值将作为一个“密码证明”,证明该帖子的所有者在发布的确切时间拥有该结果,而不必显示实际结果。此外,请注意,由于实际数据从未在区块链上发布,因此数据的隐私并不存在危险。科学家们可以选择立即公布他们的基础数据,或者无限期地将其保密,在这种情况下,在未来的某个时候仍然可以对其进行审计。

根据应用程序的不同,我们可以使用无权限或者有权限的区块链。在无权限区块链系统,如以太坊,每个人都可以参与和发帖,在有权限的系统,如Hyperledger Fabric,被批准的各方获得一个来源于已经参与的各方的参与凭证,允许他们的参与凭证可以由第三方发布,或者通过投票程序集体发布。

使用区块链技术可以通过使用智能合约打开更多的可能性。智能合约是发布在区块链中的一款软件,它允许在区块链上出现特定记录或发生其他可公开验证的事件时自动执行某个操作。例如,一个智能合约可以允许自动“打开”多个结果,只要特定数量的参与者在区块链上提交他们已经完成的实验。

关于如何准确地使用区块链和版本控制来管理科学数据,仍然有许多问题没有得到解答,我们相信这只是一个更长的研究的开始。

33.5 致谢

本文由南京大学软件工程系张皓明翻译转述。

http://xzh.i3geek.com
jp6754
ChainDAO管理员,不喜交流,无事退朝!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据