一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

交易中的基因数据的制作方法

2022-04-30 06:14:59 来源:中国专利 TAG:


1.本公开涉及在区块链上的交易中存储基因数据。


背景技术:

2.区块链是指一种分布式数据结构形式,其中在点对点(p2p)网络中的多个节点中的每个节点处维护区块链副本。区块链包括一系列数据区块,其中每个区块包括一笔或多笔交易。每笔交易都可以回指序列中的先前交易,其可以扩展一个或更多区块。交易可以通过提交到网络包括在新区块中。新区块的创建过程称为“挖掘”,该过程涉及多个挖掘节点中的每个挖掘节点争相执行“工作量证明”,即基于等待包括在区块中的未决交易池解决加密难题。
3.网络中的每个节点可以具有以下三个角色中的任何一个、两个或全部:转发、挖掘和存储。转发节点在整个网络节点中传播交易。挖掘节点将交易挖掘到区块中。存储节点各自对区块链中的已挖掘区块存储自己的副本。为了将交易记录在区块链中,一方将该交易发送到网络中的节点中的一个节点进行传播。接收该交易的挖掘节点可以争相将该交易挖掘到新区块中。每个节点被配置为遵守相同的节点协议,该协议将包括用于确认交易有效的一个或更多个条件。无效交易将不会传播或挖掘到区块中。假定交易已经核实有效,从而在区块链上被接受,则该交易(包括任何用户数据)将因此作为不可改变的公共记录,继续存储在p2p网络中的各个节点处。
4.成功解决工作量证明难题以创建最新区块的矿工通常被奖励一笔称为“区块创始交易”的新交易,该交易会生成新的数字资产金额。工作量证明激励矿工不要欺骗系统,在他们的区块中包括双重花费交易,因为挖掘区块需要大量计算资源,而包括试图双重花费的区块很可能不会被其他节点接受。
5.在“基于输出的”模型(有时称为基于utxo的模型)中,给定交易的数据结构包括一个或更多个输入和一个或更多个输出。任何可花费输出包括指定数字资产金额的元素,有时称为utxo(“未花费的交易输出”)。该输出还可以包括指定用于赎回该输出的条件的锁定脚本。每个输入包括指向先前交易中的此类输出的指针,并且还可以包括解锁脚本以用于解锁指向输出的锁定脚本。因此,考虑一对交易,将其称为第一交易和第二交易(或“目标”交易)。第一交易包括指定数字资产金额的至少一个输出,并且包括定义解锁该输出的一个或更多个条件的锁定脚本。第二交易(目标交易)包括至少一个输入和解锁脚本,该至少一个输入包括指向第一交易的输出的指针;该解锁脚本用于解锁第一交易的输出。
6.在此类模型中,当第二交易(目标交易)被发送到p2p网络以在区块链中传播和记录时,在每个节点处应用的有效性准则之一将是:解锁脚本满足在第一交易的锁定脚本中定义的一个或更多个条件中的所有条件。另一条件将是:第一交易的输出尚未被另一早期有效交易赎回。根据这些条件中的任何一个条件发现目标交易无效的任何节点都不会传播该交易,也不会包括该交易以便挖掘到要记录在区块链中的区块中。
7.另一种交易模型是基于账户的模型。在这种情况下,每笔交易均不通过参考过去
交易序列中先前交易的utxo来定义转移的金额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由矿工单独存储到区块链中,并不断更新。
8.区块链中的交易通常用于传递数字资产,即作为价值储存手段的数据。但是也可利用区块链实现区块链上的分层附加功能。比如,区块链协议可允许在交易中存储附加有效载荷数据(即用户数据或应用程序内容,而非涉及交易作为区块链网络上的交易如何运作的基本相关数据)。比如,此类有效载荷数据可包括基于输出的模型中交易的不可花费的输出,例如通过锁定脚本中包含的op_return操作码,该操作码在区块链网络的节点运行时终止锁定脚本,并且因此使输出在与另一交易的输入进行交易时不起作用。现代区块链在单一交易中可储存的最大数据容量在不断增加,从而能够并入更复杂的数据。例如,这可用于在区块链中存储电子文档,甚至音频或视频数据。


技术实现要素:

9.根据本文公开的一个方面,提供了一种由消费方的计算机设备执行的方法,所述方法包括:访问包括多个指针的电子文件,每个指针包括存储在区块链上的相应目的地交易的相应交易标识符,其中所述目的地交易包括一个或更多个第一交易和一个或更多个第二交易,所述一个或更多个第一交易存储参考基因组的至少一部分的相应基因数据,所述一个或更多个第二交易以相对于参考基因组进行压缩的压缩形式存储目标基因组的对应的至少一部分的相应基因数据。所述方法进一步包括:基于从所述电子文件访问的所述相应标识符,从所述第一目的地交易中的至少一个第一目的地交易和所述第二目的地交易中的对应的至少一个第二目的地交易访问基因数据;以及基于所访问的所述参考基因组的所述基因数据,对所访问的所述目标基因组的所述基因数据进行解压缩。
附图说明
10.为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
11.图1是一种用于实现区块链的系统的示意性框图,
12.图2示意性地示出了可记录在区块链中的交易的一些示例,
13.图3是另一种用于实现区块链的系统的示意性框图,
14.图4是客户端应用程序的示意性框图,
15.图5是根据本文公开的实施例可由图4的客户端应用程序表示的示例性用户界面的示意性模型,
16.图6a至图6b示意性地示出了根据本文公开的实施例的示例性交易集,
17.图7是根据本文公开的实施例提供会话密钥的方法的流程图,
18.图8是示出根据本文公开的实施例的超文本传输程序的示意性框图,
19.图9示出了根据本文公开的实施例的示例性请求和响应交易对的结构,
20.图10是示出根据本文公开的实施例在区块链上存储加密数据的方法的流程图,
21.图11是示出根据本文公开的实施例的数据交换程序的示例的流程图,
22.图12示出了本文所公开实施例提供的包括指向存储基因数据的交易的指针的文件的示意图。
具体实施方式
23.示例性系统概述
24.图1示出了一种用于实现区块链150的示例性系统100。系统100包括分组交换网络101,通常是诸如互联网的广域互联网。分组交换网络101包括多个节点104,该多个节点被设置成在分组交换网络101内形成点对点(p2p)覆盖网络106。每个节点104包括对等体的计算机设备,不同的节点104属于不同的对等体。每个节点104包括含一个或更多个处理器的处理装置,例如一个或更多个中央处理单元(cpu)、加速器处理器、特定应用程序处理器和/或现场可编程门阵列(fpga)。每个节点还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等的磁介质、诸如固态硬盘(ssd)、闪存或电可擦可编程只读存储器(eeprom)等的电子媒介和/或诸如光盘驱动器等的光学介质。
25.区块链150包括一系列数据区块151,其中在p2p网络160中的多个节点中的每个节点处维护相应的区块链150副本。区块链中的每个区块151均包括一笔或多笔交易152,其中该上下文中的交易是指一种数据结构。数据结构的性质将取决于用作交易模型或计划的一部分的交易协议类型。给定的区块链通常全程使用一个特定的交易协议。在一种常见的交易协议中,每笔交易152的数据结构至少包括一个输入和至少一个输出。每个输出指定一个金额,该金额表示属于输出被加密锁定的用户103的数字资产值(需要该用户的签名进行解锁,从而进行赎回或花费)。每个输入指向先前交易152的输出,从而链接这些交易。
26.节点104中的至少一些节点扮演转发节点104f的角色,这些节点转发并因此传播交易152。节点104中的至少一些节点扮演挖掘区块151的矿工104m的角色。节点104中的至少一些节点扮演存储节点104s(有时也称为“完整副本”节点)的角色,每个存储节点均在相应的存储器中存储相同区块链150的相应副本。每个矿工节点104m还维护等待挖掘到区块151中的交易152的池154。给定节点104可以是转发节点104、矿工104m、存储节点104s或其中两个节点或所有节点的任意组合。
27.在给定的当前交易152j中,输入(或每个输入)包括指针,该指针引用交易序列中先前交易152i的输出,指定该输出将在当前交易152j中被赎回或“花费”。通常,当前交易可以是池154或任何区块151中的任何交易。尽管为了确保当前交易有效,将需要存在先前交易152i并核实其有效,但是在创建当前交易152j甚至向网络106发送当前交易152j时,不必存在先前交易152i。因此,在本文中,“先前”是指由指针链接的逻辑序列中的前任,而不一定是时间序列中的创建时间或发送时间,因此,不一定排除无序创建或发送交易152i、152j的情况(参见下面关于孤立交易的讨论)。先前交易152i同样可以称为先行交易或前任交易。
28.当前交易152j的输入还包括先前交易152i的输出被锁定到的用户103a的签名。反过来,当前交易152j的输出可以加密锁定到新用户103b。因此,当前交易152j可将先前交易152i的输入中定义的金额转移到当前交易152j的输出中定义的新用户103b。在某些情况下,交易152可具有多个输出,以在多个用户间分割输入金额(其中一个可以是原始用户103a,以便进行变更)。在某些情况下,一交易还可以具有多个输入,以将一个或更多个先前交易的多个输出中的金额汇总在一起,并重新分配到当前交易的一个或更多个输出。
29.上述可称为“基于输出的”交易协议,有时也称为未花费的交易输出(utxo)的协议
(其中输出称为utxo)。用户的总余额不是用区块链中存储的任何一个数字定义的;相反,用户需要特殊“钱包”应用程序105,以整理该用户的所有utxo值,这些utxo值分散在区块链151的许多不同交易152中。
30.作为基于账户的交易模型的一部分,另一种类型的交易协议可称为“基于账户的”协议。在基于账户的情况下,每笔交易均不通过参考过去交易序列中先前交易的utxo来定义转移的金额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由矿工单独存储到区块链中,并不断更新。在此类系统中,交易使用账户的运行交易记录(也称为“头寸”)进行排序。该值由发送者签名作为其加密签名的一部分,并作为交易引用计算的一部分进行哈希处理。此外,可选的数据字段也可以在交易中签名。例如,如果数据字段中包含先前交易的id,则该数据字段可指向先前交易。
31.无论采用何种类型的交易协议,当用户103希望执行新交易152j时,其希望将新交易从其计算机终端102发送至p2p网络106的节点104中的一个(现在通常是服务器或数据中心,但原则上可以是其他用户终端)。此节点104根据在节点104中的每个节点处应用的节点协议检查交易是否有效。节点协议的详细信息将与相关区块链150中使用的交易协议类型相对应,一起形成整个交易模型。节点协议通常要求节点104检查新交易152j中的加密签名是否与预期签名相匹配,这取决于交易152的有序序列中的先前交易152i。在基于输出的情况下,这可包括检查新交易152j的输入中包含的用户加密签名是否与新交易花费的先前交易152i的输出中定义的条件相匹配,其中该条件通常包括至少检查新交易152j的输入中的加密签名是否解锁新交易的输入所指向的先前交易152i的输出。在一些交易协议中,条件可至少部分地由输入和/或输出中包含的自定义脚本定义。或者,这可仅由节点协议单独确定,或可通过其组合确定。无论采用哪种方式,如果新交易152j有效,当前节点会将其转发到p2p网络106中的一个或更多个其他节点104。这些节点104中的至少一些节点还作为转发节点104f,根据相同的节点协议应用相同的测试,从而将新交易152j转发到一个或更多个进一步的节点104,依此类推。通过这种方式,新交易在节点104的整个网络中进行传播。
32.在基于输出的模型中,给定输出(例如,utxo)是否花费的定义是,根据节点协议,其是否通过另一个随后交易152j的输入有效赎回。交易有效的另一个条件是其试图花费或赎回的先前交易152i的输出尚未被另一笔有效交易花费/赎回。同样,如果无效,交易152j将不会在区块链中传播或记录。这可防止重复花费,即花费者对同一笔交易的输出花费超过一次。另一方面,基于账户的模型通过保持账户余额防止重复花费。因为同样存在定义的交易顺序,账户余额在任何时候均具有单一定义的状态。
33.除核实之外,节点104m中的至少一些节点在称为挖矿的过程中争先创建交易区块,该过程以“工作量证明”为基础。在挖矿节点104m处,将新交易添加到区块中尚未出现的有效交易的池中。然后,矿工争相通过尝试解决加密难题来组装交易池154中交易152的新的有效区块151。通常情况下,这包括搜索“随机数”值,从而当随机数与交易池154并置且进行哈希处理时,哈希值的输出满足预定条件。例如,预定条件可以是哈希值的输出具有某个预定义的前导零数。哈希函数的特性是,相对于其输入,其具有不可预测的输出。因此,该搜索只能通过强力执行,从而在试图解决难题的每个节点104m处消耗大量的处理资源。
34.解决难题的第一矿工节点104m在网络106上宣布难题解决,提供解决方案作为证明,然后网络中的其他节点104则可以轻松检查该解决方案(一旦给出哈希值的解决方案,
就可以直接检查该解决方案是否使哈希值的输出满足条件)。基于已在每个此类节点处检查获胜者的已宣布解决方案,获胜者已为其解决该难题的交易池154之后由充当存储节点104s的节点104中的至少一些节点记录在区块链150中作为新区块151。区块指针155还分配给指向区块链中先前创建的区块151n-1的新区块151n。工作量证明有助于降低重复花费的风险,因为创建新区块151需要大量工作,并且由于包含重复花费的任何区块都可能被其他节点104拒绝,因此挖矿节点104m受到激励,不允许在其区块中包含双重花费。一旦创建,则不可修改区块151,因为其根据相同的协议在p2p网络106中的存储节点104s中的每个存储节点进行识别和维护。区块指针155还向区块151施加顺序。由于交易152记录在p2p网络106中每个存储节点104s处的有序区块中,因此提供了交易的不可变公共分类账。
35.应当注意的是,在任何给定时间争相解决难题的不同矿工104m可能会根据任何给定时间的未挖掘交易池154的不同快照执行该操作,具体取决于他们何时开始搜索解决方案。解决相应难题的人员首先定义新区块151n中包含的交易152,并更新当前未挖掘交易池154。然后,矿工104m继续争相从新定义的未完成池154中创建区块,依此类推。此外,还存在解决可能出现的任何“分叉”的协议,其中两名矿工104m彼此在很短的时间内解决难题,从而传播区块链的冲突视图。简言之,分叉方向最长的成为最终区块链150。
36.在大部分区块链中,获胜矿工104m会自动获得特殊类型的新交易作为奖励,该新交易创建新的数字资产值(与将数字资产金额从一个用户转移至另一个用户的正常交易截然相反)。因此,获胜节点被视为已“挖掘”一定数量的数字资产。这种特殊类型的交易有时称为“生成”交易,其自动形成新区块151n的一部分。该奖励可激励矿工104m争相参与工作量证明。通常情况下,常规(非生成)交易152还将在其输出中的一个输出中指定附加交易费用,以进一步奖励创建其中包含交易的区块151n的获胜矿工104m。
37.由于挖掘中涉及的计算资源,通常至少矿工节点104m中的每个矿工节点采用服务器的形式,该服务器包括一个或更多个物理服务器单元,甚至整个数据中心。每个转发节点104m和/或存储节点104s还可采取服务器或数据中心的形式。但是,原则上来说,任何给定节点104均可采用一个用户终端或联网在一起的一组用户终端的形式。
38.每个节点104的存储器均存储被配置为在节点104的处理装置上运行的软件,以根据节点协议执行其相应的角色并处理交易152。应当理解的是,在本文中归因于节点104的任何动作均可通过在相应计算机设备的处理装置上运行的软件执行。节点软件可以在应用层的一个或更多个应用中实现,或者在诸如操作系统层或协议层的较低层中实现,或者在这些层的任何组合中实现。此外,在本文中使用的“区块链”一词是指一般技术类型的通用术语,不限于任何特定专有区块链、协议或服务。
39.扮演消费用户角色的多方103中的每一方的计算机设备102也连接到网络101。他们充当交易中的付款人和收款人,但不一定代表其他方参与挖掘或传播交易。他们不一定运行挖矿协议。出于说明目的,示出了双方103及其相应的设备102:第一方103a及其相应的计算机设备102a,以及第二方103b及其相应的计算机设备102b。应当理解的是,更多此类当事方103及其相应的计算机设备102可能存在并参与系统,但为了方便起见,未进行说明。每一方103均可以是个人或组织。仅出于说明目的,在本文中,第一方103a称为爱丽丝(alice),第二方103b称为鲍勃(bob),但应当理解的是,这并不仅限于爱丽丝或鲍勃,且本文对爱丽丝或鲍勃的任何引用均可分别用“第一方”和“第二方”替换。
40.每一方103的计算机设备102包括相应的处理装置,其包括一个或更多个处理器,例如一个或更多个cpu、图形处理单元(gpu)、其他加速器处理器、特定应用程序处理器和/或fpga。每一方103的计算机设备102还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。该存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等磁介质、诸如ssd、闪存或eeprom等电子媒介和/或诸如光盘驱动器等的光学介质。每一方103的计算机设备102上的存储器存储软件,其包括被设置为在处理装置上运行的至少一个客户端应用程序105的相应实例。应当理解的是,在本文中归因于给定方103的任何行动均可通过在相应计算机设备102的处理装置上运行的软件执行。每一方103的计算机设备102包括至少一个用户终端,例如台式或笔记本电脑、平板电脑、智能手机或诸如智能手表等的可穿戴设备。给定方103的计算机设备102还可包括一个或更多个其他网络资源,诸如通过用户终端访问的云计算资源。
41.客户端应用程序105最初可通过例如从服务器下载的适当计算机可读存储介质,或通过诸如可移动ssd、闪存密钥、可移动eeprom、可移动磁盘驱动器、软盘或磁带等的可移动存储设备、诸如cd或dvd rom等的光盘或可移动光驱等提供至任何给定方103的计算机设备102。
42.客户端应用程序105至少包括“钱包”功能。这有两个主要功能。其中一个功能是使相应的用户方103创建、签名和发送拟在节点104的整个网络中传播的交易152,并因此包含在区块链150中。另一个功能是向相应方汇报其目前拥有的数字资产金额。在基于输出的系统中,该第二功能包括整理分散在区块链150中属于相关方的各种交易152的输出中定义的金额。
43.注意:虽然各种客户端功能可以描述为集成到给定客户端应用105中,但这不一定是限制性的,相反,在本文中所描述的任何客户端功能可以在由两个或更多个不同应用组成的套件中实现,例如经由api进行接口连接或一个应用作为另一个应用的插件。更通俗地说,客户端功能可以在应用层或诸如操作系统的较低层或这些层的任意组合实现。下面将根据客户端应用105进行描述,但应当理解的是,这不是限制性的。
44.每个计算机设备102上的客户端应用程序或软件105的实例可操作地耦合到p2p网络106的转发节点104f中的至少一个转发节点。这可以启用客户端105的钱包功能,以将交易152发送至网络106。客户端105还可联系一个、一些或所有存储节点104,以在区块链150中查询相应方103作为接收者的任何交易(或实际上在区块链150中检查其他方的交易,因为在实施例中,区块链150是在某种程度上通过其公开可见性提供交易信任的公共设施)。每个计算机设备102上的钱包功能被配置为根据交易协议制定和发送交易152。每个节点104运行软件,其被配置为根据节点协议核实交易152有效的软件,并且在转发节点104f的情况下转发交易152,以在整个网络106中传播此类交易。交易协议和节点协议相互对应,给定交易协议和给定节点协议一起实现给定的交易模型。区块链150中的所有交易152均采用相同的交易协议(尽管交易协议可允许其内存在不同的交易子类型)。网络106中的所有节点104采用相同的节点协议(尽管其可根据针对该子类型定义的规则区分处理不同的交易子类型,并且不同的节点还可扮演不同的角色,从而实现协议的不同对应方面)。
45.如上所述,区块链150包括一系列区块151,其中每个区块151包括通过如前所述的工作量证明过程创建的一个或更多个交易152的集合。每个区块151还包括区块指针155,其
指向区块链中先前创建的区块151,以定义区块151的顺序。区块链150还包括有效交易池154,其等待通过工作量证明过程包含在新的区块中。每笔交易152(除了一生成交易)包括指向先前交易的指针,以定义交易序列的顺序(注:交易152的序列可进行分支)。区块151的区块链一直追溯到创始区块(gb)153,该创始区块是区块链中的第一区块。区块链150中早期的一笔或多笔原始交易152指向创始区块153,而非先前交易。
46.当给定方103(比方说爱丽丝)希望发送拟包含在区块链150中的新交易152j时,她将根据相关交易协议(使用其客户端应用程序105中的钱包功能)制定新交易。然后,她将交易152从客户端应用程序105发送至其连接的一个或更多个转发节点104f中的一个。例如,这可以是与爱丽丝的计算机102最近或最佳连接的转发节点104f。当任何给定节点104接收新交易152j时,其将根据节点协议及其相应的角色进行处理。这包括首先检查新接收的交易152j是否满足变为“有效”的特定条件,具体示例稍后将详细讨论。在一些交易协议中,有效条件可通过交易152中包含的脚本在每个交易的基础上进行配置。或者,条件可仅仅是节点协议的内置功能,或通过组合脚本和节点协议进行定义。
47.如果新接收的交易152j通过有效性测试(即:“有效”的条件下),接收交易152j的任何存储节点104s将向在该节点104s处维护的区块链150的副本中的池154中添加新有效交易152。进一步地,接收交易152j的任何转发节点104f随后将有效交易152传播至p2p网络106中的一个或更多个其他节点104。由于每个转发节点104f应用相同的协议,因此假定交易152j有效,这意味着交易很快将在整个p2p网络106中传播。
48.一旦进入在一个或更多个存储节点104处维护的区块链150的副本中的池154中,矿工节点104m将开始竞相解决包括新交易152的池154的最新版本方面的工作量证明难题(其他矿工104m可继续尝试基于池154的旧视角解决难题,但首先解决难题的矿工将定义下一个新区块151的结束位置和新池154的开始位置,最终将有人解决包括爱丽丝的交易152j的池154的一部分的难题)。一旦包括新交易152j的池154完成工作量证明,其将不可变地成为区块链150中区块151中的一个区块的一部分。每笔交易152包括指向早前交易的指针,因此交易的顺序也被不可变地记录下来。
49.不同的节点104可以首先接收给定交易的不同实例,并且因此在一个实例被挖掘到区块150中之前具有关于哪个实例“有效”的冲突视图,此时所有节点104同意所挖掘的实例是唯一的有效实例。如果节点104接受一个实例为有效实例,然后发现第二实例已记录在区块链150中,则该节点104必须接受这一点,并将丢弃(即视为无效)其最初接受的未挖掘实例。
50.基于utxo的模型
51.图2示出了示例性交易协议。这是基于utxo的协议的示例。交易152(简称“tx”)是区块链150的基本数据结构(每个区块151包括一笔或更多笔交易152)。下面将通过参考基于输出或基于“utxo”的协议进行描述。但这并不限于所有可能的实施例。
52.在基于utxo的模型中,每笔交易(“tx”)152包括数据结构,其包括一个或更多个输入202和一个或更多个输出203。每个输出203可包括未花费的交易输出(utxo),其可用作另一新交易的输入202的来源(如果utxo尚未赎回)。utxo指定数字资产金额(价值储存手段)。它还可包含其来源交易的交易id以及其他信息。交易数据结构还可包括头部201,其可包括输入字段202和输出字段203的大小指示符。头部201还可包括交易的id。在实施例中,交易
id是交易数据(不含交易id本身)的哈希值,且存储在提交至矿工104m的原始交易152的头部201中。
53.比方说爱丽丝103a希望创建转移相关数字资产金额至鲍勃103b的交易152j。在图2中,爱丽丝的新交易152j标记为“tx
1”。该新交易获取在序列中先前交易152i的输出203中锁定至爱丽丝的数字资产金额,并至少将此类金额中的一部分转移至鲍勃。在图2中,先前交易152i标记为“tx
0”。tx0和tx1只是任意的标记,其不一定意味着tx0指区块链151中的第一交易且tx1指池154中的下一笔交易。tx1可指向仍具有锁定至爱丽丝的未花费输出203的任何先前(即先行)交易。
54.当爱丽丝创建其新交易tx1时,或至少在她将该新交易发送至网络106时,先前交易tx0可能已经有效并包括在区块链150中。该交易此时可能已包括在区块151中的一个区块中,或者可能仍在池154中等待,在这种情况下,该交易将很快包括在新区块151中。或者,tx0和tx1可以创建并一起发送至网络102;或者,如果节点协议允许缓冲“孤立”交易,tx0甚至可以在tx1之后发送。本文交易序列上下文中使用的“先前”和“后续”一词是指由交易中指定的交易指针定义的序列中的交易顺序(哪个交易指向哪个其他交易等等)。它们同样可以替换为“前任”和“继任”、“先行”和“后代”或“父项”和“子项”等。这不一定指其创建、发送至网络106或到达任何给定节点104的顺序。然而,指向先前交易(先行交易或“父交易”)的后续交易(后代交易或“子交易”)不会有效除非父交易有效。在父交易之前到达节点104的子交易被视为孤立交易。根据节点协议和/或矿工行为,其可被丢弃或缓冲一段时间,以等待父交易。
55.先前交易tx0的一个或更多个输出203中的一个包括特定的utxo,标记为utxo0。每个utxo包括指定utxo表示的数字资产金额的值以及锁定脚本,该锁定脚本定义后续交易的输入202中的解锁脚本必须满足的条件,以使后续交易有效,从而成功赎回utxo。通常情况下,锁定脚本将金额锁定至特定方(该金额的交易的受益人)。即,锁定脚本定义解锁条件,该解锁条件通常包括以下条件:后续交易的输入中的解锁脚本包括先前交易被锁定到的一方的加密签名。
56.锁定脚本(亦称scriptpubkey)是节点协议识别的域特定语言中写入的一段代码。此类语言的特定示例称为“脚本(script)”(s大写)。锁定脚本指定花费交易输出203所需的信息,例如爱丽丝签名的要求。解锁脚本出现在交易的输出中。解锁脚本(亦称scriptsig)是提供满足锁定脚本准则所需信息的域特定语言中写入的一段代码。例如,其可包含鲍勃的签名。解锁脚本出现在交易的输入202中。
57.因此在示出的示例中,tx0的输出203中的utxo0包括锁定脚本[checksig pa],该锁定脚本需要爱丽丝的签名sig pa,以赎回utxo0(严格来说,是为了使试图赎回utxo0的后续交易有效)。[checksig pa]包含爱丽丝的公私密钥对中的公钥pa。tx1的输入202包括向回指向tx1的指针(例如,通过其交易id(txid0),其在实施例中是整个交易tx0的哈希值)。tx1的输入202包括在tx0中标识utxo0的索引,以在tx0的任何其他可能输出中对其进行标识。tx1的输入202进一步包括解锁脚本《sig pa》,该解锁脚本包括爱丽丝的加密签名,该签名由爱丽丝通过将其密钥对中的私钥应用于预定的部分数据(有时在密码学中称为“消息”)创建。爱丽丝需要签名以提供有效签名的数据(或“消息”)可通过锁定脚本、节点协议或其组合进行定义。
[0058]
当新交易tx1到达节点104时,该节点应用节点协议。这包括一起运行锁定脚本和解锁脚本,以检查解锁脚本是否满足锁定脚本中定义的条件(其中该条件可包括一个或更多个准则)。在实施例中,这涉及并置两个脚本:
[0059]
《sig pa》《pa》||[checksig pa]
[0060]
其中“||”表示并置,“《

》”表示将数据放在堆栈上,“[

]”表示由解锁脚本组成的函数(在该示例中指基于堆栈的语言)。同样,脚本可以使用公共堆栈一个接一个地运行,而不是并置脚本。无论采用哪种方式,当一起运行时,脚本使用爱丽丝的公钥pa(包括在tx0的输出的锁定脚本中),以认证tx1的输入中的锁定脚本是否包含爱丽丝签名预期部分的数据时的签名。预期的部分数据本身(“消息”)也需要包括在tx0中,以便执行此认证。在实施例中,签名的数据包括整个tx0(因此不需要包括一个单独的元素来明文指定签名的部分数据,因为其本身便已存在)。
[0061]
本领域技术人员将熟悉通过公私密码进行认证的细节。基本上而言,如果爱丽丝已通过使用其私钥加密签署消息,则给定爱丽丝的公钥和明文中的消息(未加密消息),诸如节点104等其他实体可认证加密版本的消息必须已经由爱丽丝签名。签署通常包括对消息进行散列,签署哈希值和将此标记到消息的明文版本作为签名,从而使公钥的任何持有者能够认证签名。因此,应当注意的是,在实施例中,在本文中对签名特定数据片段或交易部分等的任何引用可以意味着对该数据片段或交易部分的哈希值进行签名。
[0062]
如果tx1中的解锁脚本满足tx0的锁定脚本中指定的一个或更多个条件(因此,在所示示例中,如果在tx1中提供了爱丽丝的签名并进行认证),则节点104认为tx1有效。如果是挖矿节点104m,这意味着其将添加至等待工作量证明的交易154池。如果是转发节点104f,则其将交易tx1转发到网络106中的一个或更多个其他节点104,从而将在整个网络中传播。一旦tx1有效并包括在区块链150中,这将把tx0中的utxo0定义为已花费。请注意,tx1仅在花费未花费的交易输出203时才有效。如果试图花费另一交易152已经花费的输出,则即使满足所有其他条件,tx1也将无效。因此,节点104还需要检查先前交易tx0中引用的utxo是否已经花费(已经形成另一有效交易的有效输入)。这是为何区块链150对交易152施加定义的顺序很重要的原因之一。在实践中,给定节点104可维护单独的数据库,标记已花费交易152的utxo 203,但最终定义utxo是否已花费取决于是否在区块链150中形成了另一有效交易的有效输入。
[0063]
如果给定交易152的所有输出203中指定的总金额大于其所有输入202所指向的总金额,则这是大多数交易模型中的另一失效依据。因此,此类交易将不会传播或挖掘到区块151中。
[0064]
请注意,在基于utxo的交易模型中,给定utxo需要作为一个整体使用。不能“留下”utxo中定义为已花费的一部分金额,而同时又花费另一部分。但utxo的金额可以在下一个交易的多个输出之间分割。例如,tx0的utxo0中定义的金额可以在tx1中的多个utxo之间分割。因此,如果爱丽丝不想将utxo0中定义的所有金额都给鲍勃,她可以使用剩余部分在tx1的第二输出中自己找零钱,或者支付给另一方。
[0065]
在实践中,爱丽丝通常还将需要包括获胜矿工的费用,因为现在仅靠区块创始交易的奖励币通常不足以激励挖掘。如果爱丽丝未包括矿工的费用,tx0可能会被矿工节点104m拒绝,因此,尽管技术上有效,但仍然不会传播并包括在区块链150中(如果矿工104m不
愿意,矿工协议不会强制他们接受交易152)。在一些协议中,挖掘费不需要其自身的单独输出203(即不需要单独的utxo)。相反,给定交易152中输入202所指向的总金额与输出203所指定的总金额之间的任何差额都将自动提供给获胜矿工104。例如,假设指向utxo0的指针是tx1的唯一输入,而tx1只有一个输出utxo1。如果utxo0中指定的数字资产的金额大于utxo1中指定的金额,则该差额将自动提供给获胜矿工104m。替代地或附加地,这不一定排除可以在其自身交易152的其中一个utxo 203中明确指定矿工费用。
[0066]
爱丽丝和鲍勃的数字资产由区块链150中任何位置的任何交易152中的锁定至他们的未花费utxo组成。因此,通常情况下,给定方103的资产分散在整个区块链150的各种交易152的utxo中。区块链150中的任何位置均未存储定义给定方103的总余额的一个数字。客户端应用程序105的钱包功能的作用是将锁定至相应方且在其他随后交易中尚未花费的各种utxo值整理在一起。通过查询在任何存储节点104s(例如,与相应方的计算机设备102最近或最佳连接的存储节点104s)处存储的区块链150副本,可以实现这一点。
[0067]
请注意,脚本代码通常用示意图表示(即非精确语言)。例如,可写入[checksig pa]表示[checksig pa]=op_dup op_hash160《h(pa)》op_equalverify op_checksig。“op_...”是指脚本语言的特定操作码。op_checksig(又称“checksig”)是脚本操作码,其取两个输入(签名和公钥),并使用椭圆曲线数字签名算法(ecdsa)验证签名的有效性。在运行时,移除脚本中任何出现的签名(

sig’),但在由

sig’输入验证的交易中仍保留附加要求,诸如哈希难题。再如,op_return是脚本语言操作码,用于创建交易的不可花费输出,其可以将元数据储存在交易中,从而将元数据不可变地记录在区块链150中。例如,元数据可包括需存储在区块链中的文件。
[0068]
签名pa是数字签名。在实施例中,这基于使用椭圆曲线secp256k1的ecdsa。数字签名对特定的数据段进行签名。在实施例中,对于给定交易,签名将对部分交易输入以及全部或部分交易输出进行签名。对输出的特定部分进行签名取决于sighash标志。sighash标志是包含在签名末尾的4字节代码,用于选择签名的输出(并因此在签名时固定)。
[0069]
锁定脚本有时称为“scriptpubkey”,指其包括相应交易被锁定到的当事方的公钥。解锁脚本有时称为“scriptsig”,指其提供相应的签名。但是更通俗地说,在区块链150的所有应用中,utxo赎回的条件并不一定包括对签名进行认证。更通俗地说,脚本语言可用于定义任何一个或更多个条件。因此,可以优选更为通用的术语“锁定脚本”和“解锁脚本”。
[0070]
可选的侧信道
[0071]
图3示出了用于实现区块链150的另一系统100。除了附加的通信功能外,该系统100与图1所示的内容基本相同。爱丽丝和鲍勃的每台计算机设备102a,120b上的客户端应用程序分别包括附加通信功能。也就是说,这可使爱丽丝103a建立与鲍勃103b分离的侧信道301(在任何一方或第三方的鼓动下)。侧信道301能够独立于p2p网络实现数据交换。此等通信有时候被称为“链下”通信。比如,当交换爱丽丝与鲍勃之间的交易152时不想将该交易(仍未)发布到p2p网络106或挖掘到区块150,可以采用此等通信,直到其中一方选择将该交易广播到网络106。替代地或附加地,该侧信道301可以用于交换任何其他的交易相关数据,例如密钥、协商的金额或条款、数据内容、等等。
[0072]
通过与p2p覆盖网络106相同的分组交换网络101可建立侧信道301。此外/或者,通过诸如移动蜂窝网络等不同网络、或者诸如本地无线网络等局域网、或者甚至爱丽丝和鲍
勃的设备102a,102b之间的直接有线或无线连接可以建立侧信道301。一般而言,本文所指的侧信道301可包括经由一种或多种联网技术或者通信介质的任何一个或更多个链路,用于“链下”(即独立于p2p覆盖网络106)交换数据。在多个链路被使用的情况下,整个链下链路的捆绑或集合才可以被称为侧信道301。因此,需要注意的是,虽然爱丽丝和鲍勃通过侧信道301对特定的信息或数据片段或者诸如此类进行交换,但这并不一定意味着所有这些数据片段必须通过相同的链路或甚至同一类型网络进行发送。
[0073]
客户端软件
[0074]
图4示出了用于实现本公开方案的实施例的客户端应用程序105的示例性实施方式。客户端应用程序105包括交易引擎404和用户界面(ui)层401。根据上文讨论的方案以及稍后将进一步详细讨论的内容,交易引擎404被配置为实现客户端105的基础交易相关功能,诸如制定交易152,通过侧信道301接收和/或发送交易和/或其他数据,和/或发送交易以通过p2p网络106传播。进一步地,根据本文公开的实施例,至少鲍勃的客户端105b(以及可能的其他客户端)的交易引擎401可进一步包括任何一个或更多个下述功能模块:超文件引擎402、数据传送引擎403和/或程序启动器405。超文件引擎402、数据传送引擎403和交易引擎404可一起构成超文本spv(简单支付验证)引擎406。客户端应用程序105总体可描述为spv钱包,或本文中所称的超文本spv钱包。这些不同元素的功能稍后将进行更详细地讨论。
[0075]
ui层401被配置为通过相应用户的计算机设备102的用户输入/输出(i/o)方式呈现用户界面,包括通过设备102的用户输出方式向相应用户103输出信息,和通过设备102的用户输入方式接收来自相应用户103的输入。例如,用户输出方式可包括提供视觉输出的一个或显示多个屏(触摸或非触摸屏)、提供音频输出的一个或更多个扬声器、和/或提供触觉输出的一个或更多个触觉输出设备等。用户输入方式可包括例如一个或更多个触摸屏的输入阵列(可与用于输出方式的那个/那些相同或不同);一个或更多个基于光标的设备,诸如鼠标、轨迹板或轨迹球;一个或更多个麦克风和语音或声音识别算法,用于接收语音或声音输入;一个或更多个基于手势的输入设备,用于接收手动或身体手势形式的输入;或者一个或更多个机械按钮、开关或控制杆等。
[0076]
注:虽然本文中的各种功能可以被描述为集成到同一客户端应用程序105中,但这并不一定构成限制,相反,它们可以在两个或更多个不同应用程序组成的一套程序中实现,例如一个应用程序作为另一个应用程序的插件或经由api(应用程序编程接口)进行接口。比如,模块401、402、403、404、405中的任何一个的功能均可以在任意组合的两个或更多个独立应用程序中实现。同时,也不排除部分或全部描述的功能可以在比如操作系统层实现。在本文任何位置引用单个或给定应用程序105或诸如此类的情况下,应当理解的是这只是作为示例,并且更通俗地说,所描述的功能可以在任何形式的软件中实现。
[0077]
图5给出了用户界面(ui)500的示例的模型,在鲍勃是数据消费者的场景中,其可由鲍勃的设备102b上的客户端应用程序105b的ui层401呈现。应当理解的是,类似的ui可以由任何其他消费方的客户端105呈现。ui 500可包括一个或更多个ui元素,例如501、502,该一个或更多个ui元素经由消费设备102的用户输出方式呈现。
[0078]
在实施例中,ui 500可包括由超文本引擎403通过ui层401呈现的超文件501。本文中的术语“超文件”指包括一个或更多个超链接的任何文件,该一个或更多个超链接由锚点内容502的任何片段锚定,诸如文本或静态或动态图像。当至少一个链接被一段文本锚定
时,该文件可称为超文本文件。
[0079]
每个超链接包括用户可选择的ui元素502,称为锚点内容。用户输入方式被设置为使用户103(在这种情况下为鲍勃103b)能够选择锚点内容502,诸如通过在屏幕上点击或触摸锚点内容。当检测到这一点时,ui层401向超文件引擎402发送选择信号,并且作为回应,超文件引擎402触发相应目的地的相应链接。
[0080]
应当理解的是,呈现各种ui元素、选择(启动)超链接的特定方式并不重要。这些ui元素的功能稍后将进行更详细地讨论。还应当理解的是,图5中示出的ui 500只是一个图示模型,在实践中,它可包括一个或更多个进一步的ui元素,为了简洁起见,未对其进行说明。超文件501还可采用不同的形式,并且包含不同数量的超链接。
[0081]
交易中的基因数据
[0082]
每个细胞都包含由四个碱分子组成的序列。这一序列对每个生物体都是独一无二的,并为细胞的生长、功能和繁殖提供指令。这些序列的变化导致不同物种之间以及同一物种的不同生物体之间存在多样性。针对单个调节分子进行编码的指令称为基因(即,针对单个给定调节分子进行编码的指令集形成一个相应的基因)。该信息在细胞内以称为脱氧核糖核酸(dna)的双链分子进行组织。所有基因的总序列称为基因组(genome),对个体来说是独一无二的。人类的基因组被组织成23对dna序列,称为染色体,序列中的分子总数超过30亿。
[0083]
在20世纪90年代末和21世纪初,一个国际研究小组在一个名为人类基因组计划的项目中致力于确定单个人类的整个序列。这对发现和预测亨廷顿病、镰状细胞病和多种癌症等遗传疾病产生了深远的影响。最近的技术进步彻底改变了测序能力,将成本从2001年的近1亿美元降至1000美元以下。这使得普通人更容易获取,但需要有效的数据管理技术来最好地存储和探索不断生成的数据。
[0084]
测序数据的一个重要问题是存储大小,人类的存储大小可达200gb以上。为了进行有意义的研究,研究人员必须比较数十万个序列,这使得数据存储成本非常高。方便的是,人类之间99.9%的基因组是完全相同的,因此只需记录单个参考基因组和序列之间的变异,就可显著压缩这一数据。使用这种以及之前开发的加密方案,本公开提供了一种在区块链上存储基因数据的高效、安全、分散的方法。
[0085]
使用存储在区块链上的数据,还可引入一种用于对基因数据进行点对点交换的系统。这种系统可能需要购买者和销售者之间达到假定的信任级别,因为拥有数据的购买者可轻松转售数据。或者,本文所公开的一些实施例提供了一种完全分散的方案,其中数据科学和生物信息学协议可促进远程数据分析,确保数据购买者永远不会拥有原始信息。例如,这可能基于分散排序和远程计算的组合。
[0086]
基因数据:dna是由四种可能的碱基核苷酸(腺嘌呤(a)、胸腺嘧啶(t)、胞嘧啶(c)和鸟嘌呤(g))组成的可变长度序列。核苷酸与其具有磷酸主链的互补分子(a-t和c-g)结合形成双螺旋结构。dna序列对每个生物体都是独一无二的,并为细胞过程提供指令。对于人类,孩子从父母双方分别继承23个染色体(dna分组),总共继承46个染色体(23对)。头发颜色和面部特征等表型(表达)特征便是通过这种方式代代相传的。
[0087]
除了身体特征外,易患某种疾病的体质也可以遗传。这引发了对确定许多疾病的基因来源的严格调查,以促进对存在这种风险的个体进行早期发现和适当治疗。然而,要找
到这种联系,需要大量的序列数据和大量的分析才能找到规律。因此,大量基因数据对于深入了解基因序列变异与特定疾病或病症风险之间的联系具有一定内在价值。然而,现有系统目前缺乏基础设施来促进存储、销售和分发未来十年将产生的大量基因数据。
[0088]
测序技术:除了dna之外,细胞内还存在另一种单链核酸,称为核糖核酸(rna),携带蛋白质组装所需的信息。可对rna和dna两者进行测序(确定碱基对序列的过程),以提供生物体的基因数据。术语“测序”描述了确定核酸中一系列碱基对的过程。目前,主要有两种技术:染料测序和纳米孔测序。染料测序涉及将核酸裂解成小片段并放大以增加分子数量。通过使用不同波长的荧光染料,可使用光电探测器读取碱基对。对于纳米孔测序,使核酸通过纳米级孔,并仔细监测电流密度。每个碱基对产生不同的电流读数,因此可直接根据电气测量重建序列。
[0089]
压缩方案:据预测,基因数据很快将需要占用比文本和多媒体数据更多的计算存储空间。这不仅会增加存储成本,还会增加传输和处理成本。由于基因数据的性质,标准压缩技术并不是最有效的。因此,独特的数据压缩技术不断发展,并且主要包括两个类别:无参考和有参考。
[0090]
无参考方法利用序列的回文和统计数据等结构特性来减少需要存储的数据量。有参考方法利用人类99.9%的基因组相同这一事实,并且仅存储与标准参考基因组的差异。然后对缩减的数据进行压缩,压缩比可达到300以上。除了压缩比之外,压缩时间、解压缩时间和内存使用情况也是选择压缩算法时要考虑的重要因素。以公开可用的1号染色体(grch37)参考序列为例,实施例可以对任意染色体(grch38)应用几种压缩技术,结果如下表所示。
[0091]
研究的第一种方法是sggc,这种方法使用目标(输入)序列与参考之间的局部匹配和全局匹配。局部匹配阶段基于序列的分段(以固定长度)并搜索两个序列之间共有的最长匹配子字符串。构建每个片段中匹配的子字符串的哈希表以供将来搜索和重建。然后,应用全局匹配算法来搜索匹配的子字符串,并记录匹配片段的位置和长度。最后,通过部分匹配算法进行预测再次对未匹配的字符串进行排序和压缩。
[0092]
第二种方法是idocomp,这种方法在压缩算法中有三个阶段。第一阶段称为映射生成阶段,在该阶段中,根据参考序列的后缀阵列确定分区(与sccg中的固定片段长度不同)。然后,只提取序列中的差异并搜索公共字符串,然后将其替换为单个参考。最后,将其传递给熵编码器以压缩汇编指令和数据。
[0093][0094]
分析和生物信息学:随着最近大量基因数据的涌入,一个称为生物信息学的全新科学分支应时而生,其能够管理和处理不断产生的大量数据集。具体地,关于某些疾病的遗传性,通过全基因组关联(gwa)研究来发现与具有选定特征的个体相关联的遗传变异的突现规律。这对于囊性纤维化等单基因疾病非常有用,但许多疾病涉及基因组许多部分之间
的相互作用。机器学习方法可以借此机会聚类相关序列并推断可能的关系。由于这需要相当大的计算能力,因此可对这些过程进行并行化处理,并将其分布在多个节点上。生物信息学的一个分支称为癌基因组学,专门研究癌症相关基因。通过建立癌症确诊个体的基因组数据以及对不同治疗的反应的数据库,希望将来能够为患者提供个性化治疗。
[0095]
在交易中包括基因数据:图12示出了本文所公开实施例提供的用于组织对存储在区块链150的交易152中的基因序列数据的访问的电子文件501的示例性格式的示意图。
[0096]
电子文件501包括多个指针1201,所述多个指针包括第一组一个或更多个指针1201_r和第二组一个或更多个指针1201_t。所述第一组包括指向区块链150上的相应一个或更多个第一目的地交易152的一个或更多个第一指针,并且所述第二组包括指向区块链150上的相应一个或更多个第二目的地交易152的相应一个或更多个第二指针1201_t。即,对于每个第一指针1201_r所指向的每个第一目的地交易,都存在对应于每个第一指针的、指向相应第二目的地交易的相应第二指针1201_t。
[0097]
第一指针1201_r中的相应一个指针所指向的每个第一目的地交易在区块链150上存储参考基因组的至少相应部分。这可能是已免费或公开提供的基因组,可作为用于压缩其他基因组的参考。第二指针1201_t中的相应一个指针所指向的每个第二目的地交易在区块链150上以相对于存储在相应第一交易中的参考基因组的相应的对应部分进行压缩的压缩形式存储目标基因组的相应的至少一部分。所述目标基因组是感兴趣的基因组,即消费方103b将出于研究目的等访问的基因组。例如,消费方“鲍勃”可以是一家医疗机构或学术机构。
[0098]
基因组可以是任何生物物种的任何基因组。优选地,参考基因组和目标基因组是相同物种的基因组,可最大限度地进行压缩。在实施例中,基因组都是人类基因组。
[0099]
在基于输出的模型中,存储在第一交易和第二交易中的每个交易中的基因数据可以存储在第一交易和第二交易中的每个相应交易的输出(例如,不可花费的输出)203中。例如,每个不可花费的输出可通过包括在其锁定脚本中的操作码而呈现为不可花费,该操作码在由区块链网络106的节点104运行时终止该脚本。例如,这将是脚本语言中的op_return。在其他实施方式中(例如,在基于账户的模型中),基因数据可以存储在一个或更多个数据字段中,也可以存储在每个相应交易的智能合约中。
[0100]
在实施例中,可仅存在一个第一指针1201_r指向存储参考生物的整个基因组的单个第一交易,并且仅存在一个第二指针1201_t指向存储目标生物的整个基因组的单个对应第二交易。然而,这将需要每个交易的大量有效载荷数据。因此,在实施例中,基因组被分裂,其中参考基因组的不同相应部分存储在多个第一交易中的每个交易中,并且目标基因组的不同相应部分存储在对应的多个第二交易中的每个相应的对应交易中。在此上下文中,“对应”是指目标基因组的每个部分相对于目标基因组的对应部分进行压缩,并且对应部分是所讨论物种(例如,人类)的基因组序列中的相同部分。第一组中的每个指针1201_r指向第一交易中的一个不同的相应交易,其中存储有参考数据的相应部分,并且第二组中的每个对应指针1201_r指向相应的对应第二交易,其中存储有目标数据的相应的对应部分。
[0101]
例如,每个部分可以是基因组的不同相应染色体,使得每个第一交易存储参考基因组的不同染色体,并且每个第二交易存储目标基因组的不同对应染色体。因此,在人类基
因组数据的情况下,假设整个基因组可用,那么对于参考基因组和目标基因组中的每一个,将存在四十六个指针1201指向存储四十六个相应染色体的四十六个相应目的地交易。在另一示例中,每个部分都可以是不同的相应染色体对,使得每个第一交易存储参考基因组的不同染色体对,并且每个第二交易存储目标基因组的不同对应染色体对。因此,在人类基因组数据的情况下,假设整个基因组可用,那么对于参考基因组和目标基因组中的每一个,将存在二十三个指针指向存储二十三个相应染色体的二十三个相应目的地交易。
[0102]
下文将从在多个交易之间分裂目标基因组和参考基因组中的每个基因组的角度进行描述,但应当理解这并不构成限制。对于所有目的,并非必须存储或指向整个基因组。出于说明目的,将假设这一点,但这同样不构成限制。
[0103]
消费方(例如,鲍勃103b)的设备102上的客户端105可用于访问电子文件501。基于此,该客户端(例如,105b)的数据传输引擎403从文件501中读取第一指针1201_r中的至少一个和至少一个对应的第二指针1201_t。每个指针至少包括指向相应目的地交易的相应交易id。基于这些,数据传输引擎403从至少一个第二指针所指向的至少一个第二交易中获取目标dna序列数据,并从至少一个第一指针所指向的至少一个第一交易中获取参考dna序列数据。这是通过访问区块链150上的至少一个第一交易和至少一个第二交易并基于此将相应序列数据传输(例如,下载)到消费方103b的客户端设备105b来完成的。在实施例中,以这种方式从所有第一交易和第二交易的所有部分中获取序列数据。该数据可一次全部下载,也可逐个部分地访问和分析。
[0104]
在实施例中,附加地,每个指针1201可包括其相应交易中存储其相应数据的特定位置的标识符,例如,相应交易的特定输出的枚举符等标识符。例如,该点可指定数据存储在具有交易标识符txid
x
的交易152的输出1中。在这种情况下,数据传输引擎403将使用交易标识符和附加标识符来从所识别的交易内的所识别位置(例如,输出)检索数据。然而,这不是必需的。在其他实施例中,数据可仅存储在目的地交易的数据结构内的预定位置(例如,始终存储在输出1中)。在这种情况下,数据传输引擎403被配置为始终从所识别的交易内的预定位置(例如,输出)检索数据。作为另一种可能性,数据在交易数据结构中的位置可通过预定格式的某个片段(例如,op_return)或某种其他预定代码标记来标记或指示。在这种情况下,数据传输引擎403被配置为在所识别的交易的数据结构内搜索指示数据有效载荷的位置的预定格式,并从中检索序列数据。
[0105]
目标的每个部分以相对于存储在相应第一交易中的参考基因组的相应的对应部分进行压缩的压缩形式存储在其相应第二交易中。这意味着目标基因组的每个部分都以表示目标基因组的该部分与参考基因组的对应部分之间的差异的形式存储。数据传输引擎406被配置为通过将相应的差异数据应用于所访问的参考基因组数据的每个相应部分来解压缩目标基因组数据。
[0106]
电子文件501可采用任何计算机可读形式。所述电子文件可以是只能由计算机读取的文件格式的文件(因此,应当注意的是,本文中的“文件”不一定意味着人类可读文件)。在这种情况下,数据传输引擎403可仅基于文件501中的指针1201(可能响应于来自某个更高级应用功能的用户输入)来自动访问和解压缩基因组数据。然而,替代地,电子文件501可采用客户端应用程序105b通过ui层401能够呈现给消费用户103b的格式。例如,文件501可为html文件。在此类实施例中,用户103b可经由ui层401选择指向目标数据的至少一个指针
1201_t。例如,每个指针1201可包括超链接(稍后讨论的示例性实施方式)。响应于每个单独指针的选择,交易引擎403随后检索并解压缩目标基因组的相应部分的序列数据。此外,还可响应于单独用户输入来检索参考基因组的相应的对应部分,或者可由数据传输引擎403预加载参考基因组。
[0107]
在实施例中,目标基因组的每个部分以加密形式存储在其相应第二交易中。在这种情况下,数据传输引擎403对目标基因组数据的检索还包括对其进行解密。在实施例中,参考基因组的数据不以加密形式存储在第一交易中。例如,这可以是同意公开其基因数据的人员的数据。然而,不排除对参考数据进行加密的可能性。
[0108]
在实施例中,数据传输引擎403发起请求-响应协议,以请求提供方访问目标序列数据的每个部分。这可以是链上过程或链下过程或组合。这可以包括通过链上记录的另一交易向提供方支付数据费用。所述响应可提供消费方105b解密所请求的数据所需的访问信息。稍后将更详细地讨论示例。在可通过ui 401单独选择每个指针1201的实施例中,文件501提供了一种方法,使提供方能够单独出售其基因数据片段。
[0109]
在实施例中,文件501本身也可存储在区块链150上的另一源交易中。在这种情况下,客户端软件105b从区块链150访问文件501。或者,文件501可在线存储在别处,例如存储在网站上,或本地存储在客户端设备102b上。
[0110]
在实施例中,文件501可包括问卷数据1202和/或头部信息1203等一个或更多个附加元素。问卷数据1202包括关于目标基因组从其中取向的目标的信息。对于人类,问卷数据1202可至少部分地由受试者自己填写。和/或,对于任何类型的受试者,问卷数据1202可包括由观察者(例如,医生、兽医、园艺师、科学家或实验室技术人员等)提供的数据。问卷数据1202使得能够搜索文件501以获得所需目标。在实施例中,客户端软件105b可包括用于在线或在区块链150上搜索文件501的设施,所述文件具有满足一个或更多个搜索标准的问卷数据1202。
[0111]
头部信息1203可包括时间戳、日期戳、版本号、文件大小等信息。在实施例中,头部信息1203使文件501能够充当头文件,从而使目标数据和至少一些头部信息1201能够以压缩或解压缩的形式组合成数据文件。
[0112]
对于独立压缩的每个染色体的数据,各自可使用op_return作为不可花费的输出包含在交易中。在实施例中,每个染色体也可独立地加密。由于单个序列可压缩到数百千字节,因此假设op_return有效载荷将能够达到1兆字节。将基因组存储在单独的交易中能够分配与数据购买者相关的单个染色体。由于在非必要的情况下不必每次都使用完整的基因组,因此这也将加快数据的传输和解密。然而,由于数据分布在二十三个交易中,因此必须保留txid的记录以便以后检索数据。在实施例中,交易可使用区块链超文本文件进行组织,如稍后将更详细地讨论的。
[0113]
由于测序数据的压缩依赖于参考基因组,因此优选地将其以未加密的形式存储在交易中,并且已知参考在需要时会使数据增多。实施例可将测序数据包括在区块链超文本文件以及可用于搜索相关样本的健康数据(经由问卷或医疗文件)中。例如,如果一项研究需要胰腺癌确诊患者,则可轻松筛选条目。
[0114]
为了能够重新组装存储在区块链中的数据,需要一个外部程序,该程序涵盖文件501的结构、任何解密过程以及使用参考基因组的解压缩算法。在实施例中,这可集成在超
文本文件内,由智能钱包/程序启动器组合来解释,以显示数据或将其保存到外部服务器或本地计算机以供进一步分析。
[0115]
加密和数据传输:为了关联序列和结果表达式,必须收集大量数据,并将其分发给学术机构、制药或生物技术公司以及政府实验室等数据购买者。由于基因数据只有在与健康档案结合时才有价值,因此隐私是数据提供者关注的主要问题。因此,优选地,系统应确保数据存储和传输是安全的,并且数据仅出售给所识别的购买者。如果数据要存储在公共区块链上并分布在网络上的许多节点上,则优选地在存储之前对数据进行安全加密。然后,加密密钥必须由用户或第三方服务管理。然而,拥有唯一的加密密钥有助于监管数据传输,允许用户控制其数据分发。
[0116]
压缩基因数据的加密:如前所述,即使是最先进的压缩技术也会导致文件大小达到数百千字节(数百万位)。为了压缩如此大量的数据,例如,实施例可采用基于异或(xor)的分组密码方法。例如,矩阵乘法和高斯-若尔当消元矩阵求逆两者均可使用科珀史密斯-温诺格勒算法以o(m
2.376
)的计算复杂度来执行。即使在大多数现代移动设备上,这也允许进行亚秒级加密和解密。在该协议中,数据被划分为256位区块并转换为2m
×
m矩阵,必要时进行填充。使用这种方法,大小增加仅与初始填充相关,并且小于个附加位。使用密钥s1,,每个密钥的长度为256位,使用哈希函数作为伪随机数生成器(prng)生成m(m 1)个密钥,如下所示:
[0117][0118]
向具有线性独立列和行的两个矩阵中添加元素(因此是可逆的)。
[0119][0120][0121]
然后,定义k,使其k=k1k2,这确保k也是可逆的(解密过程所必需的)。在此之后,将数据矩阵p划分为两个m
×
m矩阵,这两个矩阵使用最左侧m列和最右侧m列,分别由p0和q0表示。下面给出了加密和解密数据矩阵的算法,选择迭代次数n和模数n,从而为应用程序提供
足够的安全性。
[0122]
加密
[0123]
输入:p=(p0,q0),n,k,and n
[0124]
1.for i=1to n:
[0125]
do
[0126]
pi=(k
·qi-1
·
k)mod n
[0127][0128]
end
[0129]
2.return c=(pn,qn)
[0130]
解密
[0131]
输入:c=(pn,qn),n,k,and n
[0132]
1.使用高斯-若尔当消元法计算k-1
[0133]
2.for i=1to n:
[0134]
do
[0135]
p
i-1
=(k-1
·
pi·
k-1
)mod n
[0136][0137]
end
[0138]
3.return p=(p0,q0)
[0139]
应当理解,这仅仅是一种示例性加密技术,在其他实施例中可使用其他加密技术。各种加密算法和对应的解密算法本身在本领域中是已知的。
[0140]
点对点基因数据交换:如果数据提供者与数据购买者之间存在一定程度的信任,则可直接交换数据。这可经由专用的请求-响应协议来完成,例如,如稍后将更详细地讨论的。通过使用支持超文本的智能钱包,可使用交易数据内的标志(例如,op_return)生成数据请求并将其提交给网络。使用监控这些标志的交易的互补智能钱包来检测请求。可使用数据储存库服务或第三方点对点服务来处理响应,具体取决于数据的存储方式。以下是开发基因数据市场的两种方法,数据提供者可完全控制其数据的销售和交换。
[0141]
如果使用受信任的第三方数据储存库,则基因数据将以加密的形式存储在服务提供者持有加密密钥的区块链上(或可能存储在外部服务器上)。该服务负责验证数据购买者的身份,并与数据所有者沟通请求。服务提供者将解密数据并与数据购买者创建共享秘密加密密钥(使用上文或wo2017/145016中所公开的协议),并将加密数据(使用新加密密钥)包含在需要数据购买者和销售者双方签署的交易中,例如,如稍后所讨论的。
[0142]
对于直接点对点传输,用户本地计算机上支持超文本的智能钱包会监听数据购买者(比如鲍勃)发送的请求标志。该请求被提交给数据销售者(比如爱丽丝),后者经由桌面应用程序响应该请求。如果请求被接受,稍后将讨论hmac安全协议。
[0143]
对于这种方案,购买者和销售者之间存在假定的信任级别:购买者无法保证销售者的数据是真实的,因为该数据以加密的形式存储在区块链上,并且购买者可在获得该数据后进行转售。
[0144]
为了保证数据的真实性,可选地,可实施各种辅助协议来验证数据,例如可证明数据的可信第三方验证器。此外,还可实施一种评级系统,购买者可公开报告数据的质量和销
售者的可靠性。这与数据转售一样,也是在线数据交换的系统性问题。为了阻止转售数据,可附加与特定购买者相关联的数据水印。因此,如果要转售数据,原始数据提供者可将其追溯到转售者,这将具有法律意义。法律起诉的威胁最终应该会阻止转售。
[0145]
在实施例中,可使用基数4(a、g、c、t)对水印进行编码,以便与实际基因数据不可区分。在每个染色体的开始和结束处,存在或多或少随机且不传递任何有用信息的数据片段(染色体的这些片段本身是本领域技术人员已知的)。当对染色体进行分析时,这些部分会被忽略。因此,在实施例中,水印可包括在基数4中的这些片段中的一个或两个片段中。然而,或者,其他通用数字水印技术也可以是本领域技术人员已知的。
[0146]
分散式生态系统:由于基因表达过程的复杂性和相互关联性,在理解基因数据以及实施分析这些数据的基础设施方面仍有大量工作要做。据预测,到2024年,基因检测市场价值将超过220亿美元,到2022年,分析市场价值预计将达到160亿美元。由于目前大部分研究都是由大学和少数几家垄断测序的公司开展的,因此可以轻松实施数据管理服务,以利用这个不断发展的行业。下面将介绍如何围绕区块链技术开发一个完整的基因数据生态系统,以提供完全分散式的、安全的方案,从而确保不再需要数据提供者和购买者之间的信任。
[0147]
分散式测序:目前,在集中式测序设施中进行全基因组人类测序,并且在此类设施中收集、测序样本并将其存储在内部服务器上。根据已知序列对基因组进行分析,以生成有关个人患某些疾病的风险、血统和身体特征的报告。然后,将报告发送给个人,但将完整的记录以及他们的个人详细信息(姓名、地址、年龄)保存在测序设施中。即使在最近提出的整合区块链技术用于数据存储的主张中也是如此。这提供了单点漏洞,因此需要信任第三方数据存储的完整性。此外,这在未来会对个人的隐私权构成风险,因为许多私人医疗保险提供者可能会要求访问这些记录,以确定个人的保险范围或价格。
[0148]
测序技术的最新发展不仅降低了成本,而且带来了便携性,同时减少了对这些测序设施的依赖性。例如,oxford nanopore推出了价格实惠的袖珍型纳米孔测序设备,可插入计算机的标准usb端口或连接到智能手机。这种测序可使用他们的分析软件在现场完成。尽管这不像营利性集权化组织那样提供深入的分析,但如果个人需要,这可作为远程、伪匿名服务提供。此外,为了促进区块链上数据的存储和管理,可提供将钱包和测序软件与测序硬件集成的应用程序,以允许在个人家庭、医生办公室或医院进行安全的分散式测序。
[0149]
远程生物信息学计算:如果原始序列被直接提供给数据购买者,则无法阻止数据购买者转售购买的数据。此外,由于许多数据购买者需要大量数据来执行他们想要的分析,因此获取每个个体的基因组几乎没有什么价值。在本文公开的另一方面,可提供一种远程计算服务器,其中感兴趣的各方可查询服务器,安全地进行计算而不传输任何数据,并将结果返回给数据购买者,其费用与计算的复杂性和查询中使用的输入数量有关。至少一些目标基因组数据可能仍记录在链上,但已加密,因此除了数据创建者之外,其他人都无法访问。然后,可在计算服务提供者与个人数据提供者之间分配费用。通过整合现有机器学习和人工神经网络研究,这些数据可用于训练算法,使用区块链中的输入将序列和健康数据关联,从而消除对人类输入的需求。此外,还可通过对数据查询的限制来提供额外的安全性,包括:i)将查询提交限制到满足预定信誉条件的注册用户,例如公立大学;ii)对查询的基因组数量设置下限(例如,至少100个基因组),以防止访问特定人员的信息;和/或iii)在链
上记录查询,以便对信息访问进行审计和追踪。
[0150]
管理复杂的基因数据:基因组(dna序列)提供了大量关于遗传和血统的信息。然而,越来越多的人一致认为,这并没有描绘出疾病流行和基因表达的所有信息。例如,环境影响可改变一个人的基因组,而不仅仅是序列突变。dna包裹的蛋白质的物理结构(形状)可能会发生变化。有趣的是,这些构象变化可改变基因的读取方式和代际遗传方式。这个研究领域称为表观遗传学,表观基因组(epigenome)是关于如何读取dna的完整信息。单个信息片段就是表观遗传信息(epigenetic information)。与人类基因组计划相比,人类表观基因组计划试图测量和表征这些差异。可使用扩展区块链超文本文件来合并这些数据。由于一个人的一生中可能会发生表观基因组变化,因此可通过花费交易来更新信息。这将提供表观基因组进化的版本控制和时间序列。与表型或健康数据的变化有关,这可提供对疾病的发展和发作的洞察力。
[0151]
交易超文本
[0152]
下面将描述用于实现文件501的示例性方案,其中指针1201中的一个、多个或所有指针中的每一个均可包括相应的超链接。在实施例中,指向至少目标基因组的数据的指针1201_t中的一个、多个或所有指针中的每一个都包括任何以下实施例提供的相应超链接。
[0153]
随着更多的非付款数据存储在区块链上,需要专用的安全数据请求和检索系统以高效地利用所存储的数据。此等系统可并入两种功能中的一种或两种:处理数据请求和链接相关数据。在现有超文本协议的基础上,下面公开了一种基于区块链的超文本协议,其中使用新型超文本spv钱包检索交易中并入的数据。在实施例中,钱包还可并入区块链程序启动器,以解码和显示交易中并入的数据。进一步地,实施例还可将安全的端对端加密方案并入系统中,以允许敏感数据的传送。
[0154]
本公开提供了一种用于区块链存储功能的超文本文件500或其他此等超文件。在实施例中,这以与传统超文本文件类似的方式进行操作。下面描述了示例性场景,其中第二方鲍勃103b是由第一方爱丽丝103a(“提供方”)提供的数据的消费者(“消费方”)。需注意,在此场景中,鲍勃现在可以是付款人,爱丽丝可以是收款人。当然,应当理解的是,当消费和提供角色颠倒,或在作为消费方和提供方的其他各方组合之间,经过必要的修正,可应用相同或类似技术。如前所述,每一方均可以是个人或组织,诸如公司、学术机构、政府机构或慈善机构。提供方103a在本文中还可称为“服务提供商”,但这不一定指公司或不止一个人的组织。
[0155]
下面的各种动作可描述为由消费方103b和服务提供商103a执行的动作。应当理解的是,这可用作简略语,指经由相应方103a,103b的相应计算机设备102a,102b上运行的相应软件105a,105b执行动作。
[0156]
如前所述,消费方103b从存储器中检索超文件501,并且通过其客户端软件105b的ui层401进行呈现。在一些实施例中,超文件501可从消费方自身的计算机设备102b上的存储器中进行检索,例如从消费方103b的用户终端上的本地存储器或服务器上的私有存储位置。在后一种情况下,这可经由与区块链网络106相同的分组交换网络101进行访问,例如互联网,或诸如消费方103b的专用局域网等另一网络。在其他实施例中,超文件501可从万维网上的网站进行检索。当分组交换网络101是互联网时,文件501可同样经由与区块链网络106相同的物理网络进行访问。
[0157]
如图6a所示,在进一步实施例中,超文件501可存储在区块链150上的现有交易152s中。就本发明而言,这可称为“源交易”(需注意,该上下文中的“源”指文件的来源,不一定指付款的来源)。超文件501存储在源交易152s的适当有效载荷字段中,或从中访问,其中可存储有效载荷数据(内容)。比如,在基于输出的模型中,超文件501可存储在源交易152s的不可花费的输出203s1中,例如不可花费的utxo。相关输出可通过包含诸如op_return等操作码而变得不可花费,该操作码会终止该输出中包含的脚本的执行。
[0158]
在此等实施例中,消费方103b通过经由区块链网络150检查区块链150上源交易152s的相应字段来访问超文件501(同样经由作为区块链网络106覆盖的物理网络的分组交换网络101)。
[0159]
如图6a所示,在基于输出的模型中,源交易152y包括至少一个输入202s,该输入指向另一些先行交易(未示出)。例如,先行交易可以是同一服务提供商爱丽丝的另一交易,和/或少量金额(可忽略的金额)。因此,服务提供商实际上只需要支付挖矿费,以将源交易152s放置在区块链150上。源交易152s还包括至少一个输出203s1,其在实施例中采用不可花费的输出的形式。例如,使用script语言,这可通过在输出203s1的锁定脚本中包含op_return操作码来实现,这导致在区块链网络150的节点104运行时终止脚本。这使得输出相反可用于携带任何任意的有效载荷数据。在实施例中,这用于存储源超文件501。在大部分交易协议中,交易还将需要具有至少一个可花费的输出203s0。这可指定返还服务提供商的付款,和/或少量付款。在实施例中,输出可以称为utxo。源交易152s还可包括头部字段201s,该头部字段包括源交易的id,此处标记为txids。
[0160]
中不排除其他区块链150、交易协议或交易模型中的源交易的其他格式。比如,并不排除可实现不同类型的基于输出的模型,在可花费的输出203s0中允许有效载荷数据,或不要求所有交易都具有可花费的输出。其他脚本语言可具有用于创建不可花费的输出的其他操作码。作为另一替代方案,超文件501可包含在基于账户的模型中的交易的智能合约字段中。
[0161]
下面将举例证明源超文件501存储在基于输出的模型中的源交易152的不可花费的输出203s1中,并且从中访问,但应当理解的是,这并不构成限制,并且更通俗地说,如果存储在不同类型的交易中或甚至在链下,则也可以应用关于超文件501的内容和功能的相同教导。
[0162]
超文件501是包含一个或更多个超链接的文件。如图6a所示,超链接至少包括三个部分:锚点内容502的片段(有时只称为“锚点”)、目的地标识符601和一个或更多个代码元素602。在目的地标识符中,可以找到链接的数据内容项,该一个或更多个代码元素将标识符601与相应锚点内容502相关联,并将超链接标识为链接。当超文件501以标记语言编制,诸如html,代码元素采用一个或更多个标签的形式,用相应标识符601标记相应锚点内容502,并使其充当链接的前端。锚点内容502是链接的用户可查看的部分,还可充当用户可经由其访问链接的用户控件。当至少一个超链接的锚点内容包括文本时,超文件501可称为超文本文件。但是,并不排除一个或更多个超链接的锚点内容可替代地或另外包括另一形式的内容,诸如静态或视频图像。
[0163]
超文件501可采用任何适当的形式,诸如html页面、文字处理文件、电子表格、幻灯片或诸如此类。
[0164]
当超文件引擎402经由消费用户103b的设备102b的ui 401/500呈现超文件501时(例如,在屏幕上),其向用户呈现锚点内容502,而不是底层标识符601或代码元素602。因此,锚点内容充当链接的前端。通常情况下,超文件引擎402将以不同的方式呈现链接,诸如通过加下划线或调整颜色,以向用户指示它们是链接,并将它们与其他非超链接内容区分开来。但是,这并不是所有可能的实施方式都必须的(例如,锚点内容本身可固有地解释或以其他方式向用户表明它指向链接)。
[0165]
用户界面500允许用户选择锚点内容502,诸如通过单击界面点击锚点内容或在触摸屏上触摸锚点内容。作为回应,ui层401将指示这一点的信号发送至超文件引擎402。鉴于此,超文件引擎402发起需要从相应标识符601所链接的目的地资源访问目的地内容所需的一个或更多个动作,诸如发送一个或更多个信号以经由诸如分组交换网络101(例如,互联网)等网络进行访问。
[0166]
通常来说,超链接目的地的标识符601将是url(统一资源定位符),以网络资源的形式标识目的地。根据本文公开的一方面,但是,超文件501中至少一个超链接的目的地是区块链150上的另一交易152d,相应标识符是目的地交易的交易id(此处标记为txidd形式)。在实施例中,用于编制超文件501的语言或其中的至少一个或更多个交易超链接可包括定制标记语言或其他此等超文本或超文件语言,专为交易应用而设计。更优选地,但是,超文件501使用现有语言编制,诸如超文本标记语言(html)。在这种情况下,现有语言只需进行小型扩展,以引入现有类型的标签的新变体,该标签通常用于创建url的超链接。超文件501中也可采用其他现有类型的标签,诸如创建粗体文本、设置字体、播放midi文件、创建表格或添加此等滚动文本等效果。
[0167]
html是用于网页设计的标准语言,包括内容显示说明(例如标题、字体、图像等)以及超链接(以http预期的

http://www.domain/page’格式链接到其他网页)。本文公开的区块链超文本文件501可包含用于显示的相同html命令:
[0168]
代码:《b》this is bold text《\b》
[0169]
显示:this is bpld text
[0170]
但是,链接并一定再指特定的域和页面,而是也可以链接到区块链150上的交易152d。因此,超文本文件501中的嵌入链接将引用存储数据的交易152d或请求数据分布在多个交易之间时存储汇编指令的交易。例如:
[0171]
代码:《a href=“tx:(txid)”》data description》《/a》
[0172]
显示:data description
[0173]
超文件引擎402可处理命令,并向用户103b显示格式化页面。进一步地,在实施例中,页面可通过花费包含以前版本的交易152d进行更新。此链接可提供可自由重新调用的完整版本历史记录,并且最新版本将始终包含在utxo集合中。
[0174]
图6a示出了根据实施例的一个目的地交易152d1的示例。在采用基于输出的模型的实施例中,目的地交易152d1包括至少一个输入202d,该输入指向另一些先行交易(未示出)。例如,目的地交易152d1的先行交易可以是同一服务提供商爱丽丝的另一交易,和/或少量金额(可忽略的金额)。需注意,目的地交易152d的输入202d1不必花费源交易162s的输出203s0(超文件501的来源意义上的来源)。但是这也不排除在外。目的地交易152d1还包括至少一个输出203d11,该输出在实施例中采用不可花费的输出的形式。例如,使用script语
言,这可同样通过在输出203s1的锁定脚本中包含op_return操作码来实现。在实施例中,该不可花费的输出203d11用于存储目的地数据603。在大部分交易协议中,交易还将需要具有至少一个可花费的输出203d10。这可同样指定返还服务提供商的付款,和/或少量付款。在实施例中,输出可以同样称为utxo。目的地交易152d1还包括头部字段201d1,该头部字段包括目的地交易的相应id,此处标记为txid
d1

[0175]
其中不排除其他区块链150、交易协议或交易模型中的目的地交易的其他格式。比如,并不排除可实现不同类型的基于输出的模型,在可花费的输出203d10中允许有效载荷数据,或不要求所有交易都具有可花费的输出。其他脚本语言可具有用于创建不可花费的输出的其他操作码。作为另一替代方案,目的地数据603可包含在基于账户的模型中的交易的智能合约字段中。
[0176]
下面将举例证明目的地数据603包含在基于输出的模型中区块链150上至少一个目的地交易152d的不可花费的输出203d1中,但应当理解的是,这并不构成限制,并且更通俗地说,如果存储在不同类型的交易中或其他类型的区块链上,则也可以应用关于数据603的相同教导。
[0177]
在实施例中,源超文件501可包括多个超链接。其中一个或更多个可以是区块链150上目的地交易152d的链接。在实施例中,一个或更多个其他超链接可以是url的传统链接。在实施例中,源超文件501可包括区块链150上不同目的地交易152d1,152d2的多个超链接。图6a中以图示的方式示出了两个,但应当理解的是,可能还存在其他数量。这样,超文件501可充当存储在多个其他交易152d1,152d2等中的资源的一种索引。
[0178]
在实施例中,每个目的地交易152d1,152d2等可具有上面所述的与第一目的地交易152d1相关的相同格式。
[0179]
需注意,提供源超文件150的服务提供商不必是提供目的地数据603的同一服务提供商(提供方)。在实施例中,爱丽丝103a至少是至少一个目的地交易152d中目的地数据603的提供商。源超文件可由爱丽丝或第三方提供商提供,或甚至可由鲍勃本人创建。
[0180]
目的地数据603几乎可以是任何类型的内容,即有效载荷数据或用户内容(与涉及作为区块链网络106上的交易如何运作的交易152d的元素相反)。比如,目的地数据603可包括数值数据、文本、一个或更多个静态或动态图像、和/或音频内容。其可采用其他文件或文档的形式。在实施例中,至少一个目的地交易152d中的目的地数据可包括另一超文件,例如超文本文件,包括一个或更多个进一步交易152和/或url的一个或更多个进一步后续超链接。不同的数据603可包含在目的地交易152d的不同交易中。
[0181]
根据本公开,无论其可能还包括什么,目的地数据603至少包括基因序列数据。
[0182]
当消费用户103b选择(例如点击或触摸)链接到区块链152上目的地交易152d的一个超链接的锚点502时,超文件引擎402触发数据传送引擎403执行一组操作,以基于读取自超链接的交易id,从相应目的地交易152d(例如,152d1)的相关字段(例如,不可花费的输出203d11)读取目的地有效载荷数据603。这包括经由实现区块链网络106的物理网络101(例如,互联网),从区块链网络106上的一个存储节点104s访问相应目的地交易152d1。
[0183]
在实施例中,在基于输出的模型中,超链接也可包括其中存储数据的特定输出的标识符。例如,超链接可指定交易txid
d1
的输出1(203d11)。在这种情况下,输出标识符也从超链接中读取,并用于定位数据。但是,这不是必需的。或者,数据传送引擎403可被配置为
始终从目的地交易的相同预定输出编号读取数据(例如,假设始终存储在输出#1中)。或更通俗地说,在其他模型中,数据可存储在目的地交易152d的数据结构内的一些预定位置。作为另一替代方案,数据传送引擎403可被配置为在目的地交易152d的数据结构中搜索输出或预定形式或以预定格式标记的数据,例如通过搜索包含op_return的任何输出203或搜索另一些预定标记。
[0184]
程序启动器405被配置为运行程序代码,该程序代码下载自区块链150上交易152的有效载荷,例如不可花费的输出(诸如包含op_return的utxo)。在实施例中,数据603可通过选择超链接进行访问,超链接可包括程序或其中的一部分。在这种情况下,超文件引擎402可配置为响应于超链接的部分,不仅触发数据传送引擎403从区块链150上的目的地交易152d访问程序代码,而且触发程序启动器405运行此代码603。存储在目的地交易152d中的代码603可包括任何适当的可解释、可编译或可执行代码;例如java script、python、c 或可执行机器代码。
[0185]
此外/或者,超文件引擎402本身或其中一部分可以采用程序代码模块的形式,该程序代码模块之前已从区块链150上的另一交易152(未示出)下载(例如,从不可花费的输出,诸如包含op_return的utxo)。在这种情况下,相关代码经由另一些方式访问,而非选择超链接;程序启动器405被设置成运行该部分代码,以实现超文件引擎402的上述功能。
[0186]
在一些实施例中,目的地数据603可以是非加密的并且可免费提供。在那种情况下,数据传送引擎403可仅从相应目的地交易152d读取数据603。数据也可以被压缩,例如使用lzm或任何其他已知的压缩技术,在这种情况下,读取数据包括对数据进行解压缩。如果数据603包括拟呈现给用户103b的数据,例如文本或图像日期等,数据传送引擎403使其通过ui层401和ui 500呈现。如果目的地数据603包括另一超文件(诸如超文本文件),这可包括经由超文件引擎402进行呈现。
[0187]
但是,在其他实施例中,可加密至少一些目的地数据603,例如基于xor加密或任何其他已知加密技术,从而要求对解密密钥进行解密。解密密钥在本文中也可称为访问密钥。在此等实施例中,响应于相应超链接的启动,数据传送引擎403在解压缩或呈现给消费用户103b之前,使用访问密钥解密相应目的地数据603。
[0188]
在加密目的地数据603的一些场景中,消费方103b可能不具有在启动相应超链接时解密数据603所需的访问密钥。在此等实施例中,数据传送引擎403可被配置为响应于相应超链接的启动,将请求发送至服务提供商103a(提供方,即至少目的地数据603的提供商)。然后,请求可经由侧信道301或经由区块链150本身发送。无论采用哪种方式,鉴于此,在满足提供商施加的任何条件时,提供商1031则将访问密钥的副本返回给消费方103b(例如,收到来自消费方103b的付款和/或验证消费方103b的身份)。
[0189]
在特定实施例中,该过程可涉及另一交易152c,本文称为“客户端交易”,因为其由消费用户103b的数据传送引擎403(充当数据服务提供商103a(提供方)的客户端)发布。图6b中示出了一个示例。
[0190]
客户端交易152c提供两种功能中的一种或两种:首先,针对数据603向提供方103a付费;和/或其次,将请求告知提供方103a。
[0191]
如图6b所示,在基于输出的模型中,客户端交易152y包括至少一个输入202c,该输入指向消费方鲍勃103b的另一先行交易的输出。其还可包括可花费的输出203c0,指定向数
据603的提供商103a的付款。和/或,其可包括不可花费的输出203c1,例如由op_return变得不可花费。不可花费的输出203c1包括至少两个元素:选定链接的目的地交易的交易id 604(在此示例中为tiid
d1
),和代码元素605,该代码元素充当从带指定交易id(在此示例中为图6b中的交易151d1)的目的地交易152d请求目的地数据603的信号。消费方103b还可签署客户端交易152c的一部分,例如包括一个或更多个输出203c的一部分。
[0192]
当消费用户103b选择超链接时,作为回应,数据传送引擎403自动生成相应的客户端交易152c,并且将此发送给服务提供商103a接收。
[0193]
在实施例中,这可包括通过侧信道301将客户端交易152c发送至服务提供商103a。在这种情况下,当服务提供商103a接收到客户端交易152c时,她读取id 604并请求信号605,并且作为回应,将相应的访问密钥返回给消费者103b。这可以通过经由侧信道301发送,或通过放置在区块链150上的交易152中来实现(见下文)。服务提供商103a还将客户端交易152c广播到区块链网络106以记录在区块链150上,以便接收她的付款。在某些情况下,消费方103b可将客户端交易以模板交易的形式发送至服务提供商103a,其中缺失需要记录在链150上的一个或更多个部分,例如服务提供商103a的签名。在这种情况下,服务提供商103a在广播到网络106之前采取必要的步骤添加缺失的部分,例如通过签署交易(例如,签署包括一个或更多个输出203c的部分)。在实施例中,服务提供商103a通过延展客户端交易以包括访问密钥(例如,在不可花费的输出中),然后广播延展的客户端交易以记录在区块链150上来将访问密钥发送至消费方103a。
[0194]
在替代实施例中,消费方103b通过自己广播到区块链网络106来将客户端交易152c传递给服务提供商103a,以将其公开记录在区块链150上。可选地,消费方103b可通过侧信道301告知服务提供商103a,让她知道客户端交易152c现在处于链上。但是,这不是必需的。由于客户端交易152c的可花费的输出203c0寻址至服务提供商103a,这意味着她将能够在链150上找到输出。进一步地,其可以被识别为源自消费者鲍勃,因为交易的解锁脚本将包含鲍勃的公共地址和加密签名,需要知道鲍勃的私钥。
[0195]
在链上观察到满意的客户端交易152c时,服务提供商103a用访问密钥进行响应。她读取id 604并请求信号605,并且作为回应,将相应的访问密钥返回给消费者103b。同样,这可以通过经由侧信道301发送,或通过放置在区块链150上的又一交易152中来实现(见下文)。
[0196]
如前所述,服务提供商103a(爱丽丝)向消费者103b提供访问密钥的一种方式是将其公开放置在区块链150上的又一交易中(未示出)。例如,同样,这可通过在基于输出的模式下将其置于不可花费的输出中来实现(例如,包含op_return的utxo)。访问密钥本身可以明文形式在此处保存。但是,即使仅特定的消费者103b(鲍勃)可满足访问的条件(例如,已经付款,和/或满足任何其他验证标准,诸如身份验证),这都将使得任何公众成员均可访问数据603。为了解决这一问题,在实施例中,访问密钥以加密形式放置在区块链上,基于仅爱丽丝和鲍勃知道或至少包括爱丽丝和鲍勃的选定组知道的共享密钥进行加密。
[0197]
在上述方案的变体中,可采用更复杂的密码难题(cryptographic puzzle)来确保仅鲍勃获得访问密钥。在这种情况下,爱丽丝在链上放置一条加密的信息,使鲍勃能够衍生出访问密钥。比如,爱丽丝可在区块链150上放置加密的密码(password),该加密密码基于共享密钥进行加密。目的地数据603本身可基于访问密钥进行加密,该访问密钥是密码的函
数(例如,包括一个或更多个哈希值的函数)。在这种情况下,一旦爱丽丝收到鲍勃的付款和/或验证任何其他访问条件,则她会使加密密码可在区块链150上获得。鲍勃进行访问,基于共享密钥进行解密,然后使用解密密码计算访问密钥,并且使用访问密钥对数据进行解密。
[0198]
上述协议的一些示例性实施方式将在稍后进行更详细地描述。
[0199]
在实施例中,爱丽丝通过侧信道301告知鲍勃,让他知道访问密钥、加密的访问密钥或其他此等访问信息片段现在可在区块链150上获得。或者,爱丽丝不这样做,而是交易中鲍勃的标识符使他能自己找到。比如,爱丽丝可将包含访问信息的交易的输出(例如utxo)寻址至鲍勃,优选少量金额(因为鲍勃在此场景中向爱丽丝付款)。
[0200]
在实施例中,可能需要更新存储在交易152中的信息,源交易152s中的源超文件501或目的地文件或目的地交易152d中的其他此等数据。一旦记录在区块链上,现有交易便无法更改。相反,因此,在实施例中,通过稍后向链中添加新交易可实现更新,其中新交易花费现有交易的可花费的输出,该现有交易存储着正在更新的数据。因此,页面等可通过花费包含以前版本的交易152d进行更新。此链接甚至可用于提供可自由重新调用的完整版本历史记录,并且最新版本始终包含在utxo集合中。
[0201]
为实现这一点,现有交易(正在更新的交易)将至少包含可花费的输出(如果数据包含在op_return等中,则可能包含不可花费的输出)。一旦核实,可花费的输出则包含在utxo集合中。utxo集合在部分或全部存储和/或挖矿节点104s,104m维护(例如,通常情况下由所有矿工和一些存储节点存储)。为了进行更新,需要花费现有交易的可花费utxo,并且将更新的数据包含在新交易中(例如,同样,使用op_return操作码等,将其包含在新交易的新的不可花费的输出中)。一旦核实,该新交易则包含在utxo集合中。因此,最新信息将在由每个存储和/或挖矿节点104s/m维护的utxo集合中始终可用。比如,假设其中一个目的地交易152d1已通过花费目的地交易152d1进行更新,以创建包含更新数据的新目的地交易152d1’(未示出)。预先存在的源文件501仍将链接到原目的地交易152d1的原始txid。但是,当超文件引擎402跟随该链接时,在实施例中,将经由utxo集合从存储或挖矿节点104s/m中的一个节点自动查询是否存在花费链接目的地交易152d1的任何后续交易。如果是这样,则将从稍后的交易中自动获取数据。
[0202]
示例性数据传送协议
[0203]
下面描述数据传送协议的一些示例性实施方式,所述数据传送协议是数据传送引擎403可采用的,用以在下述指针1201上获取基因数据。在实施例中,当消费方(鲍勃)103b从超文件501中选择超链接作为从链接目的地交易152d请求访问数据的方式时,可触发其中任何一个。或者,但是,无论访问请求是否以任何方式触发(不一定是通过选择超链接触发),这些协议中的任何一个均也可用于使提供方(爱丽丝)103a经由区块链150上的交易152(例如,从不可花费的输出)支持鲍勃访问数据。
[0204]
第一示例性协议参照图7至图9进行描述。这可用作比如点对点消息传递协议,由此其中一个人(爱丽丝)向另一个人(鲍勃)发送数据。
[0205]
为了传输敏感数据,诸如个人详细信息(姓名、地址、银行信息、医疗数据等),应优选采取附加措施确保数据安全加密,以防止任何侵犯隐私的行为。在实施例中,这可通过一组共享密钥的方式实现。
[0206]
比如,甚至在非安全网络上,也可在双方之间安全地建立两个共享密钥s1、s2,作为椭圆曲线点(x,y)=(s1,s2)的两个坐标。例如,爱丽丝(a)使用私钥va和公钥pa=va·
g,鲍勃(b)使用私钥vb和公钥pb=vb·
g,其中g是商定的椭圆曲线生成点。爱丽丝可使用鲍勃的公钥计算秘密,具体如下所示:
[0207]
(s1,s2)=(x,y)=va·
pb[0208]
鲍勃可使用爱丽丝的公钥计算相同的秘密,具体如下所示:
[0209]
pa·vb
=(va·
g)
·vb
=va·vb
·
g=va·
(vb·
g)=va·
pb=(s1,s2)
[0210]
进一步地,利用共享密钥的初始建立,每次用户(消费方鲍勃)103b需要访问以生成新的共享密钥,而不需要新的椭圆曲线计算时,可使用会话密钥生成协议。在服务提供商注册后,用户鲍勃将拥有上述计算的唯一秘密s1。当鲍勃希望访问该服务时,该服务(爱丽丝)提供交易的一次性使用密钥k,用鲍勃可以检索到的s1进行编码。然后,服务提供商爱丽丝可要求哈希难题的解决方案h(k),以访问一个或更多个服务。这可代替传统的密码(password),并且在实施例中,可由钱包105b在没有用户交互的情况下进行处理。
[0211]
此等程序的示例如下所示,也可参见图7。
[0212]
在步骤s1中,爱丽丝计算s1=x
ab

[0213]
在步骤s2中,爱丽丝计算其中表示xor(异或)运算。
[0214]
在步骤s3中,爱丽丝为鲍勃创建交易tx,并且将包含在脚本中作为公共文本。
[0215]
在步骤s4中,鲍勃接收tx。收到b时,不需要花费tx以看到
[0216]
在步骤s5中,鲍勃计算s
ab
=x
ab

[0217]
在步骤s6中,鲍勃计算
[0218]
鲍勃现在拥有私有会话密钥。在步骤s7中,他可以将此用于认证和/或访问一个或更多个服务。
[0219]
需注意,消费者鲍勃通过与区块链150本身交互来得到密钥k(与服务提供商系统相反)。即,提供商爱丽丝将一些加密信息放置在链上,使鲍勃(而非任何其他人)能够基于共享密钥衍生出密钥k。但是,在其他实施例中,爱丽丝可在链下通过侧信道301向鲍勃提供必要的访问密钥。
[0220]
还应当注意,该程序的适用性不限于数据传送。例如,在其他应用中,密钥可允许鲍勃访问过顶(ott)视频或音乐流式传输服务,或访问租赁服务等。
[0221]
下面是消费方鲍勃103b从区块链网络106请求数据或文件的安全超文本传送的示例性分步程序,以及图8示出的过程的示意图。在此特定示例中,计算的简单性允许使用op_xor操作码在基于utxo的模型的交易脚本中实现这一点。
[0222]
在步骤t1中,鲍勃请求经由超链接通过他的ui 500请求数据。作为回应,ui层401指示对鲍勃的计算机设备102b(例如他的本地计算机)上智能spv钱包功能406的请求。
[0223]
在步骤t2中,智能spv 406使用安全秘密分发协议协商会话密钥,诸如基于xor的密钥共享协议,并且生成两个私钥(s1和s2)。在实施例中,消费者鲍勃通过与区块链150本身交互来协商会话密钥(与服务提供商系统相反)。比如,这可以基于xor加密的基于utxo的模型中的脚本来完成。再如,可以在基于账户的模型的智能合约中完成。但是,在进一步替代方案中,协商可通过侧信道301在链下执行。
[0224]
在步骤t3中,来自鲍勃请求的数据使用s1进行编码,并且广播到网络106。因此,请求本身还可在链上广播。或者,但是,如果爱丽丝和鲍勃之间存在关系,则相反可使用侧信道301。
[0225]
在步骤t4中,服务提供商(爱丽丝)对目标数据603进行编码和压缩(使用从s1衍生出的s2),并且将其包含在寻址至客户端的公共地址(鲍勃的地址)的交易中。因此,携带所需数据有效载荷603的该交易被放置在链上,以便消费者鲍勃从区块链150读取。由于寻址至鲍勃,他将能够在区块链150上找到。可选地,爱丽丝还可通过侧信道301告知他,提醒鲍勃交易的存在。
[0226]
需注意,为了寻址至鲍勃,该tx将包括utxo,其付款锁定至消费者鲍勃的地址。这可以是少量(可忽略)金额,但是通过将输出锁定至鲍勃的地址,他会收到交易通知,然后知道其所需txid。否则,爱丽丝和鲍勃将需要侧信道301,以传递txid。
[0227]
在步骤t5中,鲍勃的智能钱包105b的spv 406接收交易,使用共享密钥s2进行解密,然后对数据进行解密。
[0228]
在步骤t6中,解码的数据通过ui 500向鲍勃显示。在实施例中,使用区块链程序启动器405可以实现这一点。
[0229]
实施例可采用专门设计的spv钱包105b作为客户端和区块链网络之间的中介。使用spv钱包将允许跨设备的安全使用,而不需要大量数据存储。在一些实施方式中,通过执行默克尔证明,接收的数据可仅使用区块头在本地进行验证,从而允许智能手机和其他移动设备连接到该服务。这是在spv节点上操作智能钱包的主要特性。
[0230]
在实施例中,spv钱包105b可具有以下三种不同功能中的任何一种或全部功能。第一种功能是密钥管理和监控区块链网络的相关交易,例如使用布隆过滤器。这可包括与发送者103a建立共享的私有会话密钥。第二种功能是经由交易将超链接点击转化为交易请求,以通过区块链网络106传播。第三种功能是在交易中解密和填充数据。
[0231]
第一点在传统的spv钱包中是标准功能,因此,此处不再进一步讨论。但是,第二点中将超链接点击转化为交易是非标准功能。如上文所述,超链接包含交易标识和可操作的链接。点击链接时,spv将被触发以创建交易152c,足以支付交易费用和数据请求服务的任何服务费用。该交易还可赎回代币,以交换请求的数据。使用op_pushdata或op_return,

请求’信号以及所需的交易id可包含在已签署交易中。利用上述解释的协议,数据可使用op_xor和相互共享密钥进行编码。类似地,xor运算可用于解密数据,数据可使用lzm字典填充并传送至区块链程序启动器405。
[0232]
图9示出了请求和响应交易的示例性结构,以在鲍勃和爱丽丝之间建立连接。鲍勃从特定交易请求信息,爱丽丝同意提供加密数据。付款后,爱丽丝可使用会话密钥将加密的数据发送给鲍勃。
[0233]
现在参照图10至图11描述第二示例性协议。这可用作例如超文本请求和响应系统,由此有人(爱丽丝)可以发布一次数据,然后向一个或更多个其他人(包括鲍勃)出售访问权限。
[0234]
用户的数据请求广播到区块链网络106后,将需要适当的系统来处理请求、检索数据,然后优选地压缩寻址至客户端的交易中的数据。下面公开了数据分发的集中和分散解决方案。通过这些过程的分散性,此等系统将不再依赖单一实体(诸如个人或企业)向网络
提供数据,因为任何对等体均可满足请求。这将消除由于系统更新或技术问题产生的拒绝服务(dos)攻击或停机。进一步地,通过激励用户响应(包含一些费用),该系统可提高响应时间。由于攻击者必须为每个请求提供费用,该成本降低了dos攻击的可能性。
[0235]
作为数据提供商103a,第一阶段涉及在区块链上存储加密数据,数据提供商爱丽丝(a)进行下述操作。另请参见图10。
[0236]
在步骤u1中,爱丽丝选择随机字符串t,作为访问数据的密码。
[0237]
在步骤u2中,爱丽丝计算s0=h(pa h(t))。
[0238]
在步骤u3中,爱丽丝使用s0或一组派生的密钥对数据603进行加密,例如如上文所述。
[0239]
在步骤u4中,爱丽丝自己构建交易,将以下内容存储为op_return输出:加密数据603、数据描述、数据要价和根据加密数据和密码(password)t的哈希值计算的基于哈希的消息认证码(hmac)。hmac本身在本领域中是已知的。该交易是数据存储交易(在使用超链接的上述示例中为目的地交易152d,但该协议不限于与超链接一起使用,作为访问目的地交易的方式)。
[0240]
一旦包含在区块链中,该交易可同时用作多种功能。首先,作为加密数据的永久不变的记录,可由数据所有者在未来的任何时间通过记录交易标识(txid)进行访问。其次,这可充当数据的广告,可由有兴趣购买方搜索到。最后,购买方可使用包含hmac来验证爱丽丝的诚实性,并协助调解纠纷,具体参见下文更详细的描述。
[0241]
数据提供商爱丽丝和数据购买方鲍勃之间的数据交换程序的示例如下所示。另请参见图11。
[0242]
在步骤v1中,鲍勃通过侧信道301以模板交易的形式向爱丽丝发送要约交易,包括爱丽丝的公共地址或前缀(如在数据存储交易中所列出)以及op_return中的价格。
[0243]
在步骤v2中,爱丽丝延展接收到的模板交易,以用两个输入构建交易:鲍勃发送的utxo和她自己的utxo。尽管鲍勃在此场景中属于付费方,但指向爱丽丝的utxo的输入将提醒她交易的存在:如果寻址至她,她的钱包将检测到交易。因此,此阶段不需要侧信道。爱丽丝的指向utxo可以是少量金额。
[0244]
在步骤v3中,爱丽丝通过侧信道301将延展交易发送回鲍勃。
[0245]
在步骤v4中,鲍勃验证交易的构建是否正确,并且如果满意,则对输入进行签名。
[0246]
在步骤v5中,然后鲍勃通过侧信道301将部分已签署交易发送回爱丽丝。
[0247]
在步骤v6中,爱丽丝计算s1=va·
pb,其中va是爱丽丝的私钥,pb是鲍勃的公钥。
[0248]
在步骤v7中,爱丽丝对其输入进行签名,作为公开暴露的输入脚本的一部分。该交易本身不包含数据。因此,该交易是图6的示例中的152c,数据将包含在另一交易152d中。
[0249]
在步骤v8中,爱丽丝将现在已完全签署的交易广播到区块链网络106,以记录在区块链150上。
[0250]
在步骤v9中,鲍勃计算s1=vb·
pa,其中vb是鲍勃的私钥,pa是爱丽丝的公钥。
[0251]
在步骤v10中,鲍勃使用s1计算
[0252]
在步骤v11中,然后鲍勃使用s0=h(pa h(t))对数据进行解密。
[0253]
在步骤v12中,鲍勃使用数据和t计算hmac。鲍勃检查hmac是否与数据存储交易152d中的hmac匹配。
[0254]
上述方法有利地集成了付款和数据传送,允许以确保爱丽丝收到费用并且鲍勃收到数据的方式通过区块链150发送数据。
[0255]
如果爱丽丝不诚实,hmac将匹配数据存储交易中的hmac,数据将如数据存储交易中的描述部分所描述。如果爱丽丝发送不正确的密钥,则鲍勃可使用他发送的密钥和数据存储交易中加密数据的哈希值来证明这一点。如果爱丽丝发送不正确的数据,则鲍勃可通过使用密钥加密数据和将其与数据存储交易中的数据进行比较来进行检测。另外地,诸如政府或公司等可信的第三方组织可保留数据和加密数据的记录,并且用于验证加密数据是否与所提供的描述相匹配。
[0256]
更通俗地说,上述方法可概括如下。数据使用密钥s0(在此示例中不是共享密钥的一部分)进行加密。爱丽丝未在交易中包含密钥s0的加密版本,而是包含密码t的加密版本(基于共享密钥s1进行加密)。需要解密数据的密钥s0是密码的预定函数(在这种情况下是基于哈希的函数,也是爱丽丝的公钥pa的函数)。鲍勃解密密码,然后使用已知函数计算s0,并且将此用于解密数据。hmac包含在数据存储交易中,是数据和密码的函数。既然鲍勃拥有了所谓的t以及爱丽丝提供的数据,则他可计算hmac,并且与数据存储交易中的版本进行比较。
[0257]
向鲍勃发送加密密码和使s0成为密码的函数(与前面图7至图9的方法中仅直接向他发送密钥的加密版本相反)的优势在于防止s0进行传输。因此,如果传输被破坏,不会直接破坏数据。攻击者还必须知道如何计算s0,例如爱丽丝和鲍勃可通过侧信道进行共享。该函数不一定必须是爱丽丝的公钥的函数,而可以是双方都知道的一些确定性信息。该信息可包括额外的参数,诸如爱丽丝的公钥,或只是转换的形式(即函数)本身。
[0258]
在上述方法的变体中,数据可存储在链下,然后在鲍勃请求时放置在链上。即,爱丽丝响应于来自鲍勃的数据请求执行图10的方法,而非提前执行。
[0259]
另一个需要考虑的情况是类似于当代基于云的系统的集中式数据仓储服务。在这种情况下,单个组织负责存储、记录和检索存储在区块链上的数据,或甚至可能是外部私人服务器上的数据。希望在区块链上存储数据的客户端将向提供商支付注册费或根据使用情况收费,该提供商可加密和分发其数据并保留检索记录。这消除了个人用户记录其加密密钥或私钥的必要性。类似地,对于具有大量的可分享的数据的服务,诸如音乐或视频流式传输服务,可针对访问数据收取注册费或根据使用情况收费。
[0260]
对个每种情况,客户端都会经由服务提供的公开可用地址发起请求,其请求的详细信息包含在交易中。验证客户端的身份,核实诸如使用费等任何条件,然后可使用前面公开的协议生成会话密钥。在收到请求时,服务提供商使用标准的压缩算法对请求的数据进行编码,诸如lempel-ziv markov链(lzm)算法,并且将其包含在寻址至客户端的交易中。数据由客户端的spv钱包解密和解码,然后向用户显示。
[0261]
在上面点对点协议的上下文中,仓储服务可充当可信的第三方,以促进数据提供商和数据购买方之间的数据交换。仓储服务可保留数据描述,以允许数据购买方请求特定数据或购买成批的相关数据。服务还可构建交易,用户无需验证或创建交易或交易条件。如果仓储服务是可信的,则还消除了hmac的必要性,因为数据储存库将负责检查所提供数据
的有效性。
[0262]
结论
[0263]
应当理解,上述实施例仅通过示例的方式进行描述。
[0264]
更通俗地说,根据本文公开的一个方面,提供了一种由消费方的计算机设备执行的方法,该方法包括:访问包括多个指针的电子文件,每个指针包括存储在区块链上的相应目的地交易的相应交易标识符,其中该目的地交易包括一个或更多个第一交易和一个或更多个第二交易,该一个或更多个第一交易存储参考基因组的至少一部分的相应基因数据,该一个或更多个第二交易以相对于参考基因组进行压缩的压缩形式存储目标基因组的对应的至少一部分的相应基因数据;基于从电子文件访问的相应标识符,从第一目的地交易中的至少一个第一目的地交易和第二目的地交易中的对应的至少一个第二目的地交易访问基因数据;以及基于所访问的参考基因组的基因数据,对所访问的目标基因组的基因数据进行解压缩。
[0265]
该目标基因数据相对于参考基因组的对应部分进行压缩。这意味着目标基因数据根据相对于对应参考基因数据的差异进行编码。解压缩包括基于参考数据和差异对目标数据进行解码。即,解压缩包括使用差异(目标数据的压缩形式)修改所访问的参考数据,以便生成目标数据的解压缩(解码)形式。例如,基因数据可包括dna序列数据。
[0266]
在实施例中,第一目的地交易和第二目的地交易中的每个相应目的地交易中的相应基因数据可存储在相应目的地交易的不可花费的输出中并从该不可花费的输出进行访问。
[0267]
在实施例中,区块链可使用基于输出的(例如,基于utxo的)交易模型,其中每个交易包括一个或更多个输出(例如,utxo),每个输出包括锁定脚本,并且相应基因数据可存储在相应目的地交易的这些输出的不可花费的输出中。在实施例中,目的地交易的不可花费的输出可通过op_return等锁定脚本中包含的命令变得不可花费,该命令在由区块链网络的节点运行时终止锁定脚本。
[0268]
在实施例中,每个指针可进一步包括相应单独输出的输出标识符,其中相应基因数据存储在相应相关联的目的地交易中,并且基因数据的所述访问可包括基于相应交易标识符和输出标识符从相应输出访问该基因数据。或者,基因数据可存储在每个相应目的地交易的预定输出编号中,或更通俗地说,存储在预定位置,在这种情况下,数据的访问仅包括从预定输出或位置访问该数据。作为另一种可能性,数据的访问可仅包括在相应目的地交易搜索数据或预定的预期类型或格式的输出。
[0269]
在实施例中,指向第二目的地交易的指针中的每个指针均可包括超链接,每个超链接包括相应交易标识符和与相应交易标识符相关联的锚点内容的相应片段。该方法可包括由消费方的计算机设备:呈现电子文件的至少一部分的内容,包括呈现超链接的相应锚点内容;以及通过从所呈现的内容中选择相应锚点内容来接收选择超链接中的至少一个超链接的用户输入;其中基因数据的所述访问包括:响应于所述用户输入,从其交易标识符与至少一个选定超链接相关联的至少一个第二目的地交易至少自动访问目标基因组的基因数据。
[0270]
在实施例中,基因数据的所述访问可包括:从至少一个对应的第一目的地交易自动访问参考基因组的基因数据。
[0271]
这可包括响应于选择至少一个超链接的相同用户输入来自动访问基因数据。或者,这可包括在用户输入之前预先访问参考基因组的基因数据。
[0272]
在实施例中,电子文件可包括超文本文件。在实施例中,锚点内容的每个片段均可包括文本或图像。在实施例中,电子文件可以标记语言编制。在实施例中,电子文件可为html文件,其中html语言增加附加类型的标签,用于创建区块链交易的超链接。
[0273]
在实施例中,电子文件可存储在区块链上的另一源交易中;并且电子文件的所述访问可包括:从区块链上的源交易访问该电子文件。
[0274]
在实施例中,第一文件可存储在源交易的不可花费的输出中。在实施例中,区块链可使用基于输出的(例如,基于utxo的)交易模型,其中每个交易包括一个或更多个输出(例如,utxo),每个输出包括锁定脚本,并且第一文件可存储在源交易的这些输出的不可花费的输出中。在实施例中,源交易的不可花费的输出可通过op_return等锁定脚本中包含的命令变得不可花费,该命令在由区块链网络的节点运行时终止锁定脚本。
[0275]
在替代实施方式中,本文公开的技术可通过基于账户的模式来实现。例如,数据可存储在目的地交易的智能合约中,并且可从目的地交易的智能合约访问。
[0276]
在进一步替代方案中,电子文件无需存储在链上,而是可从例如网站或从消费用户的计算机设备的本地存储器进行访问。
[0277]
在实施例中,所述一个或更多个第一目的地交易可以是多个第一交易,每个所述第一交易存储所述参考基因组的不同相应部分的基因数据,并且所述一个或更多个第二交易可以是多个第二交易,每个所述第二交易存储相对于所述参考基因组的所述部分中的相应的对应一个部分进行压缩的目标基因组的相应部分的基因数据。
[0278]
在实施例中,所述部分中的每个部分可以为相应的染色体或染色体对。
[0279]
在实施例中,所述基因数据的所述访问可以包括:从所述第一目的地交易中的部分或全部第一目的地交易以及从所述对应的第二目的地交易中的每个第二目的地交易访问所述基因数据。
[0280]
在实施例中,所述一个或更多个第一目的地交易中的所述基因数据可以包括整个所述参考基因组的所述基因数据,并且所述一个或更多个第二目的地交易中的所述基因数据可以包括整个所述目标基因组的所述基因数据。
[0281]
在实施例中,参考基因组和目标基因组中的每个基因组均可为人类基因组。或者,它们可能是另一种生物(例如,非人类动物、植物、真菌、细菌或病毒)的基因组。
[0282]
在实施例中,所述多个第一目的地交易可以包括:二十三个交易,每个交易存储所述染色体对中的不同的相应一个染色体对的基因数据;或四十六个交易,每个交易存储所述染色体中的不同的相应一个染色体的基因数据。
[0283]
在实施例中,电子文件可进一步包括关于目标基因组的基因数据从其中取样的生物的问卷数据。
[0284]
如果目标生物是人类,则问卷数据可包括该个人自己填写的问卷数据。此外/或者,问卷数据可包括由医生、兽医、园艺师、科学家或实验室技术人员等填写的问卷数据;基于向从其中取样的目标人类或其他生物提出的问题或对其进行的观察。
[0285]
在实施例中,该方法可以包括由所述消费方的所述计算机设备执行以下步骤:初始步骤,即基于所述问卷数据搜索并找到所述电子文件。
[0286]
在实施例中,所述搜索可以包括在所述区块链中搜索所述源交易。
[0287]
在实施例中,所述的所述目标基因组的所述基因数据可以存储在所述一个或更多个第二交易中,其形式需要一个或更多个访问密钥来解密,并且所述基因数据的所述访问可以包括基于所述访问密钥中的至少一个访问密钥来解密所述至少一个所访问的第二交易中的所述基因数据。
[0288]
在实施例中,所述参考基因组的所述基因数据可以以未加密的形式存储在所述一个或更多个第一交易中。
[0289]
在实施例中,所述目标基因组的所述部分中的每个部分可以需要不同的相应访问密钥来解密,并且所述基因数据的所述访问可以包括利用所述相应访问密钥来解密所述目标基因组的每个部分。
[0290]
在实施例中,所述至少一个所访问的第二交易中的所述目标基因组的所述基因数据的所述访问可以包括:向提供方发送请求消息,请求访问存储在待访问的所述至少一个第二交易中的所述加密数据;响应于所述请求消息,从提供方接收回访问信息,所述访问信息包括所述一个或多个访问密钥、或包括使所述一个或多个访问密钥能够由所述消费方导出的信息;以及,相应地,使用所接收或所导出的一个或多个访问密钥,来解密所述至少一个所访问的第二交易中的所述基因数据。
[0291]
在实施例中,所述请求的所述发送可以包括发送客户端交易,所述客户端交易包括所述请求消息,其中所述客户端交易被发送以记录在所述区块链网络上以供所述提供方从中读取、或者通过侧信道发送给所述提供方;以及,所述访问信息可以通过所述侧信道或通过另一交易而被接收回来,所述另一交易被所述提供方发送以记录在所述区块链上以供所述消费方从中读取。
[0292]
在实施例中,相同客户端交易也可以向提供方支付访问加密数据的费用。付款可包含在客户端交易的可花费的输出中,可花费的输出被寻址至提供方。区块链可使用基于输出的(例如,基于utxo的)交易模型,其中每个交易包括一个或更多个输出(例如,utxo),并且可花费的输出可以是客户端交易的这些输出中的一个。
[0293]
发送可包括消费方自己将客户端交易直接广播到网络。或者,消费方可通过侧信道将客户端交易发送至提供方或第三方,以供提供方或第三方广播并随后转发到网络。
[0294]
作为另一替代方案,消费方可经由侧信道将该交易发送至提供方。客户端交易可以模板形式发送,例如记录在区块链中之前要求提供方签名或添加输入。
[0295]
在实施例中,客户端交易可包括请求消息,该请求消息包括目的地交易的标识符和请求访问加密数据的信号。
[0296]
在实施例中,请求消息可包含在客户端交易的不可花费的输出中。
[0297]
在实施例中,区块链可使用基于输出的(例如,基于utxo的)交易模型,其中每个交易包括一个或更多个输出(例如,utxo),每个输出包括锁定脚本,并且所述请求消息可存储在客户端交易的这些输出的不可花费的输出中。在实施例中,客户端交易的不可花费的输出可通过诸如op_return等锁定脚本中包含的命令变得不可花费,该命令在由区块链网络的节点运行时终止锁定脚本。
[0298]
在实施例中,所述发送客户端交易可由所述用户输入触发。
[0299]
在实施例中,消费方可通过侧信道将客户端交易发送至提供方,然后提供方读取
客户端交易并广播到区块链网络。或者,消费方可将客户端交易广播到区块链网络,并且通过侧信道单独告知提供方客户端交易已广播到区块链网络。或者,消费方可仅将付款广播到区块链网络,不单独通过侧信道告知提供方,并且仅允许提供方观察区块链上的客户端交易。由于客户端交易包含寻址至提供方的付款,则他/她/他们将可在链上找到付款。
[0300]
在实施例中,响应于客户端交易,提供方可提供访问信息,使消费方确定用于解密加密数据的访问密钥,并且从而访问加密数据;该方法包括,由消费方的计算机设备,接收所述访问信息,从中确定访问密钥,并且使用确定的访问密钥解密并且因此访问加密数据。
[0301]
在实施例中,该访问密钥、或每个访问密钥可以是一次性或临时密钥。
[0302]
在实施例中,提供方可通过将访问信息包含在区块链上的交易中,向消费用户提供所述信息。
[0303]
爱丽丝(提供方)可将此交易广播到区块链网络,并且通过侧信道单独告知鲍勃(消费方)交易现在已被广播。或者,提供方可仅将交易广播到网络,不单独通过侧信道告知消费方,并且允许消费方在链上观察该交易。相关交易可包括寻址至消费方的输出。这样,交易寻址至消费方,并且因此他/她/他们可以通过这种方式在链上找到交易。该输出可包括向消费方支付的少量金额。
[0304]
在实施例中,消费方可经由侧信道将客户端交易以模板形式发送至提供方。在一些此等实施例中,提供方通过延展模板以包括访问信息并将延展的客户端交易广播到网络以记录在区块链上来提供访问信息。或者,访问信息可包含在除客户端交易之外的单独交易中。
[0305]
在另一替代方案中,提供方可仅通过侧信道将所需信息发送至消费方,而不将其包含在交易中或放在区块链上。
[0306]
访问信息可包括明文的访问密钥本身。但是,当在链上进行传递时,这将使得访问密钥对任何其他公众成员均可用。即使通过侧信道发送,也可能容易被拦截或被例如预期消费者泄露。因此在实施例中,访问信息可以不包括明文的访问密钥,但包含使消费方基于提供方和消费方之间共享的共享密钥从中衍生出访问密钥的信息。
[0307]
在实施例中,所述访问信息可包括基于提供方和消费方之间共享的共享密钥加密的访问密钥的加密版本;该方法进一步包括由消费方的计算机设备基于共享密钥解密访问密钥,并且使用解密的访问密钥访问加密数据。
[0308]
在实施例中,所述访问信息可包括基于提供方和消费方之间共享的共享密钥加密的加密密码,并且访问密钥是密码的第一预定函数;该方法进一步包括由消费方的计算机设备:基于共享密钥解密访问密钥,通过将第一预定函数应用于解密密码来确定访问密钥,并且使用确定的访问密钥访问加密数据。在一些此等实施例中,所述函数也可以是提供方的公钥的函数。例如,在实施例中,第一预定函数可包括h(pa h(t)),其中t是密码,pa是公钥,并且每个h是哈希函数。
[0309]
在实施例中,相应基因数据与消息认证码一起包含在每个第二目的地交易中,该消息认证码是密码的第二预定函数,第二预定函数也是数据的函数;该方法包括由消费方的计算机设备:通过将第二预定函数应用于解密密码和数据来计算消息认证码,并且比较计算的消息认证码与包含在目的地交易中的消息认证码,以确定数据的真实性。例如,在实施例中,认证码可以是基于哈希的消息认证码,第二预定函数是数据和密码的基于哈希的
函数。基于哈希的函数至少包括一个哈希值。
[0310]
在实施例中,在所述第一目的地交易和/或所述第二目的地交易中的一个、部分或全部目的地交易中的每个目的地交易中可以包括数字水印。
[0311]
在实施例中,所述第二交易中的一个、部分或全部第二交易中的每个第二交易可以进一步包括表观遗传信息,并且所述方法包括:从所述至少一个所访问的第二目的地交易访问所述表观遗传信息。
[0312]
在实施例中,该方法可包括将所访问的表观遗传信息应用于目标基因组的解压缩基因数据。
[0313]
根据本文公开的另一方面,提供了一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在消费方的计算机设备上运行时执行根据本公开的任一实施例的方法。
[0314]
根据另一方面,提供了消费方的计算机设备,包括:存储器,所述存储器包括一个或更多个存储器单元;处理装置,所述处理装置包括一个或更多个处理单元;其中所述存储器存储被设置为在所述处理装置上运行的代码,所述代码被配置为当运行时执行根据本文的任一实施例的方法。
[0315]
根据本文公开的另一方面,提供了一种由提供方的计算机设备执行的方法,所述方法包括:形成多个目的地交易,所述多个目的地交易包括一个或更多个第一交易和一个或更多个第二交易,所述一个或更多个第一交易存储参考基因组的至少一部分的相应基因数据,所述一个或更多个第二交易以相对于所述参考基因组进行压缩的压缩形式存储目标基因组的对应的至少部分的相应基因数据;将所述第一目的地交易和所述第二目的地交易中的每个目的地交易记录在区块链上、或对所述第一目的地交易和所述第二目的地交易中的每个目的地交易进行发送以记录在所述区块链上;以及,向至少一个消费方提供包括多个指针的电子文件,每个指针包括存储在所述区块链上的所述目的地交易中的相应一个目的地交易的相应交易标识符。
[0316]
在实施例中,由提供方或存储方执行的方法可进一步包括与本文所公开的任何实施例相对应的步骤。
[0317]
根据本公开的另一方面,提供了用于记录在区块链中的一组交易,该组交易包括包含在一个或多个计算机可读数据介质上的以下各项:一个或多个第一交易,该一个或多个第一交易存储参考基因组的至少一部分的相应基因数据;以及一个或多个第二交易,该一个或多个第二交易以相对于参考基因组进行压缩的压缩形式存储目标基因组的对应的至少一部分的相应基因数据。
[0318]
在实施例中,该组交易可进一步根据上述实施例中的任何一个进行配置。
[0319]
根据本文公开的另一方面,可提供一种包括消费方、提供方、可能涉及的任何第三方和/或节点网络的动作的方法。
[0320]
根据本文公开的另一方面,可以提供一种系统,该系统包括消费方的计算机设备、提供方的计算机设备、任何第三方的计算机设备和/或节点网络。
[0321]
一旦给出本文的公开内容,所公开技术的其他变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献