CN118679708A - 基于区块链的隐私增强外包数据存储 - Google Patents
基于区块链的隐私增强外包数据存储 Download PDFInfo
- Publication number
- CN118679708A CN118679708A CN202380020587.XA CN202380020587A CN118679708A CN 118679708 A CN118679708 A CN 118679708A CN 202380020587 A CN202380020587 A CN 202380020587A CN 118679708 A CN118679708 A CN 118679708A
- Authority
- CN
- China
- Prior art keywords
- data
- entity
- transaction
- blockchain
- alice
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013500 data storage Methods 0.000 title description 10
- 238000000034 method Methods 0.000 claims abstract description 102
- 238000012795 verification Methods 0.000 claims description 40
- 238000012545 processing Methods 0.000 claims description 26
- 230000004048 modification Effects 0.000 claims description 16
- 238000012986 modification Methods 0.000 claims description 16
- 230000009471 action Effects 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000002688 persistence Effects 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 2
- 230000000694 effects Effects 0.000 claims description 2
- 230000004044 response Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 18
- 238000013515 script Methods 0.000 description 72
- 230000006870 function Effects 0.000 description 24
- 230000008520 organization Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 238000013475 authorization Methods 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000001902 propagating effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000004075 alteration Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- HEFNNWSXXWATRW-UHFFFAOYSA-N Ibuprofen Chemical compound CC(C)CC1=CC=C(C(C)C(O)=O)C=C1 HEFNNWSXXWATRW-UHFFFAOYSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241000700566 Swinepox virus (STRAIN KASZA) Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- HDRXZJPWHTXQRI-BHDTVMLSSA-N diltiazem hydrochloride Chemical compound [Cl-].C1=CC(OC)=CC=C1[C@H]1[C@@H](OC(C)=O)C(=O)N(CC[NH+](C)C)C2=CC=CC=C2S1 HDRXZJPWHTXQRI-BHDTVMLSSA-N 0.000 description 1
- 230000002996 emotional effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000000246 remedial effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3255—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using group based signatures, e.g. ring or threshold signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/30—Compression, e.g. Merkle-Damgard construction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供了用于验证数据的安全、一致和可靠存储的方法和系统,尤其是但不限于将所述数据的存储委托给第三方的情况。数据控制者爱丽丝获取其数据D的至少一个样本,对其执行操作以产生变型。然后,她计算表示所述数据的默克尔树的根值,所述数据包括所述变化的数据样本。她将其数据发送给存储服务提供者鲍勃,同时保留她的样本和所产生的默克尔根值。爱丽丝不会告诉鲍勃她选择了哪些样本,或者她在变型中使用的操作,或者操作的任何输入。爱丽丝可以删除所述数据的原始副本。稍后,爱丽丝可以要求鲍勃对相同的数据样本执行相同的操作,计算所产生的默克尔树的所述根值并将其发送给她,以验证鲍勃是否仍然拥有她的完整数据并且她的完整数据处于原始状态。如果鲍勃的根值与爱丽丝的根值匹配,则鲍勃必须拥有爱丽丝数据的原始完整副本,否则他将无法计算正确的默克尔根值。实施例可以被布置为完全自动化所述过程,包括在区块链上实现。
Description
技术领域
本公开涉及用于电子数据的安全、高效和可验证的存储(storage)、备份、存档(archive)和/或检索的改进技术和系统。具体地但不完全地,这适合在第二方(例如,存储服务提供者)代表第一方(例如,数据所有者、创建者、控制者和/或授权管理员)存储数据的场景中使用,即使第二方不是可信实体。本公开的示例性实施例提供了改进方案,用于根据需要核实存储在第二方或由第二方存储的数据的完整性、存在性和/或可用性。优点包括但不限于,能够将潜在大部分数据的存储外包给辅助位置或设备,从而避免或减轻对主要位置的存储和处理资源的需求。
背景技术
在数字时代,数据存储对于组织和个人来说都是必需的。出于各种原因,安全可靠地存储此类数据可能会带来挑战。例如,数据可能具有情感和/或商业价值;或者从法律、安全、军事或政治角度来看可能是敏感的;以及/或者,数据的存储可能需要数据所有者/控制者无法提供的资源。因此,出于各种原因,可能希望将至少部分数据的存储委托给另一实体。例如,考虑以下场景:个人希望存储家庭视频录像以供后代使用;或者公司希望存储大量历史存档数据以便遵守法律要求;或者发明人希望以带时间戳的可验证方式存储实验数据,但他/她没有必要的资源来存储实验数据。
在这种情况下,第一实体可以是数据的所有者、创建者、控制者、管理者和/或管理员。为了便于参考,下面将第一实体称为“数据控制者”。第二实体可以是根据第一实体的请求提供数据存储服务的任何实体,为了便于参考,可以将该实体称为“存储服务提供者”。数据控制者和/或存储服务提供者可以是人类、组织或基于机器的实体。
在这些场景中会出现技术挑战,因为在存储服务提供者存储数据之后,数据控制者需要证明提供者a)仍然拥有数据,并且b)数据相对于其原始状态尚未被修改或泄露。存储服务提供者需要能够向数据控制者提供数据的持续完整性和可用性证明。为了确保可靠,需要快速高效地提供这种验证,因为计算复杂证明在时间或处理资源方面成本高昂,所涉及的实体通常无法接受。此外,通常希望以不需要双方之间信任关系的方式提供证明。
本公开的实施例提供了至少解决这些技术问题的方案。
发明内容
本公开提供了(至少)改进的方法和系统,用于安全和/或高效地存储数据,或用于使得能够验证所述数据的持续可用性和未改变状态。优选实施例可以包括使用默克尔树来检查和/或确保存储在数据存储服务提供者处的数据块/部分数据的完整性。
根据优选实施例,数据控制者(爱丽丝)希望将部分数据的存储外包或委托给另一实体(鲍勃),因为她自己无法保留整个部分数据的存储或者不希望这样做。本公开不受所述数据的形式、结构或目的的限制。然而,爱丽丝将要求鲍勃证明他继续保存所述数据的整个副本,并且他的副本与爱丽丝提供给他的原始版本没有发生任何变化。
在优选实施例中,爱丽丝将原始数据(D)组织或排列成多个段{m1,m2,m3…mN}。每个段是所述数据D的子部分。这种组织/排列可以包括将所述数据划分为逻辑段或物理划分的段,例如通过将所述段中的一个或多个段与其他段分开存储。在优选实施例中,爱丽丝随后在数据存储块(B)中记录或提供所述段,并成对地对它们进行哈希处理以形成默克尔树,如本领域已知的。这提供了二叉树(T),所述二叉树表示所述数据D的完整原始版本,并且包括默克尔根(R),如图7所示。
爱丽丝选择或以其他方式识别一个或多个段的集合(M)并保留所述一个或多个段。所述集合M中的每个段可能很小,因此需要很小的存储空间。术语“样本”在下文中还可以用于指代爱丽丝保留的所述段。尽管在一些实施例中可以仅保留一个段,但是在典型的实施例中,M可以包括原始数据D的多于一个段,以便可以在单独的验证会话中使用不同的样本,从而进一步增强安全性。
在识别并存储M之前或之后,爱丽丝将段的整个区块B(以及D的完整副本)发送给鲍勃。在鲍勃接收到所述整个部分数据之后,爱丽丝删除她自己的D的整个副本,同时保留对段M的访问权限。在从爱丽丝接收到所述区块B之后,鲍勃将其存储在他控制或至少可以访问并且在未来日期从中获取D的存储资源中。在示例性变型中,爱丽丝可能需要在爱丽丝删除她自己的副本之前确认从爱丽丝安全地接收到所述数据。在其他变型中,爱丽丝可以将数据D发送给鲍勃,然后他可以自己将其组织成片段块。在此类变型中,所述段的结构和/或可以识别和引用各个段的方式可能需要在爱丽丝与鲍勃之间达成一致,或者以某种方式预先确定。
当爱丽丝随后要求验证鲍勃仍然具有D并且所述数据处于其原始状态时,她对M的至少一个段执行一个或多个操作(operation)。所述操作提供输出(Y),所述输出是处理M的所述至少一个段的结果。然后,爱丽丝计算T的新版本(T')的新默克尔根(R'),其中所述操作中使用的原始段已被替换为处理后的输出Y。此后,可以互换地使用术语“修改”、“改变”和“替换”,但是所有这些术语都旨在包括以下解释:至少一个给定段的原始版本被不同的后续版本覆盖或改变或以某种方式替换。“验证”在本文中可能意味着“认证、证明和/或确认”。
然后,爱丽丝要求鲍勃使用他的D的副本中的相同段执行相同的操作。鲍勃事先不知道爱丽丝将要求他在验证证明中使用的段和/或操作。然后,鲍勃使用其所述数据的原始副本中的指定段来执行所述操作,以产生输出Y。然后,他计算更新后的区块的新默克尔树(T')和根(R'),所述更新后的区块包括Y而不是原始段。他向爱丽丝发送所述根R'的新值。然后,爱丽丝可以将鲍勃重新计算的默克尔根R'的值与她计算的R'的值进行比较。如果这两个值匹配,则鲍勃必须拥有爱丽丝数据的完整副本,并且所述数据处于她提供所述数据时的原始状态。如果鲍勃不具有完整数据,或者其中一个部分已被更改,他将无法计算证明的正确值。
在以下各节进一步描述了说明性实施例和变型,并且表明本公开(至少)提供了以下非详尽列表中的优点:
●能够将数据的存储外包给可能不可信的存储服务提供者;
●实现所述数据存在于所述存储服务提供者位置的可验证证明,以及所述数据相对于其原始状态尚未被改变的证明;
●减轻无法或不希望自行存储数据的数据控制者的数据存储负担(例如,物理存储限制、法律限制、业务或组织需要将数据放置在共享位置等);
●便于证明数据完整性、来源和真实性;
●安全、高效、快速地验证数据可用性和完整性;
●便于设计和实现需要验证数据真实性和可用性的更广泛系统和应用程序;
●允许使用简单的操作,这些操作在存储或处理方面需要较少的资源,并且可以非常快速地提供结果;
●爱丽丝保留的段较小,因此不需要大量的存储空间;这对于容量有限的设备来说是有利的;
●爱丽丝甚至不需要存储段本身;她只需要拥有默克尔路径的部分,使得她能够在需要时重新计算;这可以对区块B的内容进行简化支付验证(SPV)样式验证;
●爱丽丝不需要保留较大的样本段集;相反,她可以更改对她的样本执行的操作,以及/或者更改她要求鲍勃用于所述操作的参数。例如,在第一验证中,她可以要求他将字符“G”级联到给定的段,并且在后续验证中要求使用随机生成的位串作为掩码对相同或不同段进行XOR操作的结果。在第三验证中,她可以要求他将字符“U”级联到相同或不同段,等等。因此,爱丽丝只需要保留几个段即可安全地允许验证过程的多次重复或变化,而不需要促进鲍勃预测他将被要求提供的证明的能力;
●传统上,默克尔证明用于验证特定区块链事务是根的一部分(即,位于特定区块中)。相比之下,本公开使用所述区块的>=1个样本段来验证整个数据树的存在/控制/存储,而不仅仅是其中的一部分。因此,即使爱丽丝的区块B包含10亿个段,她也只需要这些段中的一个段即可快速、轻松地验证所述段中的所有段存在于鲍勃的所述树/区块的副本中;
●爱丽丝可以将验证委托或授权给另一方(卡罗尔),例如第三方审计员或需要验证所存储数据的存在性和真实性的某个实体。爱丽丝可以使用任何合适的技术(例如,WO2017/145016中公开的技术)来发送秘密或与卡罗尔共享秘密。卡罗尔可以使用所述秘密向鲍勃请求所述验证证明;
●这允许针对特定数据项委托/授权第三方验证,从而提高或至少保护隐私(即,如果卡罗尔只需要验证某些项,则爱丽丝不需要授予卡罗尔对其整个数据存储的访问权限);
●本发明有利于技术系统和网络的可扩展性,因为数据的存储可以安全且可验证地外包;
●实施例还提供了解决与数据持久性相关的技术挑战的方案;众所周知,常用的系统成像技术面临需要足够的RAM来保存所述数据的整个副本的挑战。请参见:https://en.wikipedia.org/wiki/Persistence_(computer_science)。实施例可以通过将所述存储委托给所述提供者来解决该挑战;
●实施例还可以提供用于数据备份和恢复以及归档、文件系统转储、版本控制和确保一致性的改进方案。请参见:https://en.wikipedia.org/wiki/Backup。
附图说明
为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
图1是一种用于实现区块链的系统的示意性框图。
图2示意性地示出了可记录在区块链中的事务的一些示例。
图3A示出了客户端应用程序的示意性框图。
图3B示出了可由图3A的客户端应用程序表示的示例性用户界面的示意性模型。
图4示出了用于处理事务的一些节点软件的示意性框图。
图5提供了在概览级别示出本公开的实施例的流程图,包括在本公开的存储阶段和后续验证阶段期间可以采取的至少一些说明性步骤。
图6是优选实施例的示图,其中爱丽丝将数据段的区块发送给鲍勃以进行存储,并将区块头的副本发送给区块链以存储在链上事务中。图6示出了在本公开的存储阶段期间可以采取的一些步骤。图6中示出的一些步骤在某些实施例中可以省略,而可能执行的其他步骤在图6中未示出。
图7示出了一种非常简单的默克尔树T,其包括默克尔根R和根下方的节点。
图8示出了可以根据本公开的实施例使用的默克尔树,包括样本段{m1,m2,m3,m4}。
具体实施方式
现在仅出于说明目的,尤其参考图5至图8提供本公开的示例性实施例。
考虑一种场景,其中作为数据控制者的第一方(爱丽丝1)需要存储数据项(D)。使用术语“数据控制者”包括拥有需要存储的数据的任何一方,包括但不限于数据的所有者、创建者、控制者、管理者、处理者和/或授权管理员。术语“数据项”用于指部分数据,无论其结构、生成、形成、使用或组织方式如何。例如,它可以是一个或多个离散数据文件、相关数据项的集合,例如数据库记录、公司账户、相关媒体内容、法律文档、磁盘等物理存储介质的内容等。
假设爱丽丝1本身无法存储整个数据项或者不希望这样做。例如,她的设备可能没有足够的内存,或者数据可能很敏感,并且出于安全或责任原因,她不希望将数据存储在本地。因此,她需要将存储外包给将充当存储服务提供者的另一实体(鲍勃2)。鲍勃拥有或至少可以访问存储资源3。
然而,爱丽丝1需要保证鲍勃2:
●不会丢失数据项D;以及/或者
●不会(故意或无意地)改变数据D,例如,如果他的设备已被破坏数据的漏洞入侵,或者他的存储设备出现故障而无法恢复爱丽丝的数据。
因此,爱丽丝1需要可验证的证明,证明鲍勃2代表她存储的数据仍然存在并且处于原始未改变的状态。她可能需要定期(例如,她可能希望鲍勃2每月证明安全存储)或者在随机/非计划时间获取此类证明。后续动作可能取决于鲍勃成功或不成功地提供证明。例如,如果成功验证了数据的存在和状态,则可以向接收者发送信号或确认电子通信,可以更新文件或记录,可以触发事件,可以解锁资源,可以在开展事务的各方之间进行转账,例如爱丽丝向鲍勃发送支付等。类似地,如果验证不成功,则可以触发事件,可以向接收者发送通信,可以更新记录/文件。例如,可以生成并传输警报信号,或者可以锁定某些资源以防止访问等。
在一些实施例中,鲍勃可以是与爱丽丝完全独立的实体,因为他们之间可能没有商业或基于组织的关联,和/或没有基于信任的关系。例如,鲍勃可以是向付费客户提供数据存储作为服务的第三方提供者。然而,在其他实施例中,鲍勃可以是爱丽丝所认识的、与爱丽丝相关联的和/或受到爱丽丝信任的。例如,鲍勃可以包括构成爱丽丝所属组织一部分的数据存储功能或设施。即使鲍勃受到爱丽丝的信任,她也可能需要他验证他所存储的数据保持完整且未改变。例如,这可能是因为爱丽丝需要遵守与(敏感)数据存储相关的法规、商业或法律要求。
现在参考图5至图8讨论示例性实施例。应当注意的是,在实践中,如图5所示和说明书中所述的步骤可以按照不同的顺序执行。例如,向鲍勃发送区块B的步骤可以在爱丽丝计算输出Y之后或之前执行。只要爱丽丝在删除其D的整个副本之前识别并记录了其段集M,其他步骤也可以按照不同的顺序执行,并且本公开不限于此。
在图5的步骤110中,爱丽丝在区块(B)中提供她的数据(D)。应当注意的是,这里的术语“区块(block)”是指传统计算意义上的数据块(请参见https://en.wikipedia.org/wiki/Block_(data_storage)),而不是“区块链区块(blockchain block)”中的数据块,该区块链区块是区块链事务(transaction)的结构化集合。如一般计算领域已知的,数据可以存储在包括主体(或“有效载荷”)和头部的区块中。该头部包括与存储在区块的主体中的数据相关的信息。
为此,数据按段组织。数据项的这些段也可以称为“子部分”。结合后,子部分/段形成数据项D的整个副本(图5,步骤110),并且因此还结合在一起以提供区块B。该区块中的段从叶节点开始向上成对地进行哈希处理,以计算表示区块B中所有段的默克尔树T。T具有默克尔根(R)(图5,步骤112)。由于默克尔根R是从区块中所有段的哈希导出的,因此它可以用于验证D,如下所述。本领域技术人员将容易理解生成和使用默克尔树所涉及的概念和技术,请参见https://en.wikipedia.org/wiki/Merkle_tree。
在图5的步骤114中,爱丽丝识别一个或多个样本段的集合(M)。对于简单示例,假设她选择三个段m0、m1、m3并存储这些段以供将来参考。在其他可能的实施例中,爱丽丝可能不会以段的原始形式存储段。相反,她可能会以某种已处理形式(例如,以编码、哈希或压缩的形式)保存段。在此类实施例中,爱丽丝随后将要求鲍勃通过某种形式的段标识符引用所选段来执行验证操作,并且验证操作的第一步骤是处理步骤。例如,如果爱丽丝以哈希形式存储其段,她可能会要求鲍勃通过将“G”级联到段编号11001110的哈希来执行验证。以已处理形式而不是以原始形式存储段的优点可以包括提高安全性并减少爱丽丝所需的存储资源。
无论是以未处理形式还是已处理形式存储,爱丽丝的段都可能较小(例如,每个段1k字节),因此存储段在爱丽丝的设备上所需的资源较少。爱丽丝可以根据任何标准(例如,每10个段)选择其段样本,或者从M个段的集合中随机选择。随机选择可能会增强安全性,因为第三方更难预测她将存储的段。尽管本公开的实施例可以仅使用一个所选段来实现,但是使用多个段会提供增强的安全级别,因为这会进一步降低鲍勃预测他将需要生成的证明的能力。
在图5的步骤113中,并且也如图6所示,爱丽丝向鲍勃发送包含整个分段数据D的区块B,请求他代表她存储该区块,他照做了。(如图6所示,她发送的整个区块包括样本段m0、m1、m3)的集合。他将包含数据的区块B存储在他控制的存储设备3中,或者至少能够将数据发送到该存储设备进行存储。存储设备3可以包括一个或多个数据库、磁盘、服务器或数据存储介质的组合。然而,鲍勃不知道爱丽丝选择保留的段或段数。
如图6所示,本公开的该实施例的存储阶段现已完成。然而,在未来的某个时刻,爱丽丝需要检查鲍勃是否仍然具有D,并且该数据没有以任何方式改变。也许她希望定期或在随机时间,或者当触发事件发生时(例如,每个月初),或者当她注意到最近出现新的恶意软件漏洞时,或者当第三方要求她提供D以原始形式存在的证明时这样做,等等。爱丽丝需要证明鲍勃拥有的D的存在和未改变状态,因此验证阶段开始。
在图5中,在步骤115处,她通过对其执行某个操作f或将其用作操作f的输入/参数来计算对她的样本段m0、m1、m3中的一个或多个样本段的(可能很小的)更改。她可以随机或根据预定标准从她保留的集合M中选择段,例如取该集合中下一个未使用的段。她对所选段所做的更改可以产生任何类型的突变。例如,这可能涉及逐位(bitwise)操作、布尔操作或数学函数等。在本公开的示例中,假设她将字符“A”附加到样本m2中。她现在知道该操作的结果。
因此,如果m2为:
0111001001001110
并且“A”(在ASCII中)为01000001,则她可以计算
m2∥'A'=011100100100111001000001。
在图4的步骤115中,爱丽丝重新计算默克尔树,这次包括m2的更改版本而不是其原始版本。因此,爱丽丝知道重新计算的树(T')的新默克尔根(R')的值。
在图5的步骤116中,她请求鲍勃对他的D版本中的段m2进行相同的更改(即,操作f),并将结果(即,包含段m2的更改版本的新树的默克尔根的值)发送给她。因此,在步骤117中,鲍勃必须基于整个D加上爱丽丝指定的操作进行计算。爱丽丝还可能提供或指定了某些参数以用于修改段。如果鲍勃不再拥有爱丽丝提供的D的整个副本,则他将无法计算爱丽丝验证他的副本所需的默克尔根。
由于鲍勃拥有D的整个副本,因此一旦爱丽丝已经存储样本m0、m1、m3和/或它们的哈希,她就可以丢弃自己的完整副本。爱丽丝也不需要存储区块B的整个默克尔树,但是需要保留该区块的默克尔根值,使得她能够将其与鲍勃在下面描述的验证阶段计算的值进行比较。
向鲍勃传达所请求的修改
爱丽丝可以通过标识符指定相关区块和/或段。区块B的标识符可以在爱丽丝发送给鲍勃的区块B的头部中提供。头部可以包括区块的默克尔根R,并且这可以是或构成在发送给鲍勃的验证请求中使用的标识符的一部分。爱丽丝请求他对其执行操作的至少一个段可以通过区块内唯一的标识符来识别。
在另一个实施例中,爱丽丝可以使用加密或认证的消息技术(例如,认证码(MAC))来向鲍勃传达所请求的修改。这会提供增强的安全性,因为这会向鲍勃保证消息真正来自爱丽丝而不是未经授权的一方。例如,爱丽丝可以使用HMAC向鲍勃发送信息,她在消息中提供段或其标识符以及任何相关信息,例如操作和/或操作数。本领域已知HMAC技术,并且维基百科(https://en.wikipedia.org/wiki/HMAC)提供源自RFC 2104的定义:
其中,
H是加密哈希函数,
m是要认证的消息,
K是秘密密钥,
K'是从秘密密钥K导出的区块大小的密钥;要么通过向右填充0直到区块大小,要么通过先向下哈希到小于或等于区块大小,然后向右填充零,
||表示级联,
表示按位异或(XOR),
opad是区块大小的外部填充,由值为0x5c的重复字节组成,
ipad是区块大小的内部填充,由值为0x36的重复字节组成。
在此类实施例中,可以使用任何已知的技术来生成秘密密钥,例如但不限于WO/2017/145016中公开的技术,或者https://en.wikipedia.org/wiki/Secret_sharing和https://en.wikipedia.org/wiki/Shared_secret中提到的共享秘密概念和技术。使用此类技术,可以自动化该过程,如下面更详细描述的。
验证成功或失败
在接收到鲍勃计算的默克尔根之后,在图5的步骤118中,爱丽丝检查他提供的值是否与她对R'的期望匹配。请记住,如果部分数据以任何方式更改,则该数据的所得哈希将与原始数据的哈希不同。因此,如果区块B中的一部分数据更改,则它所在的整个路径和树都会更改,包括其默克尔根的值。
在图5的步骤120中,如果鲍勃重新计算的默克尔根的值与爱丽丝重新计算的值匹配,则验证被认为成功,并且她可以保证鲍勃a)仍然用于D的完整副本,并且b)没有更改D的任何部分,因为他需要D的完整且未改变的副本才能提供正确的重新计算。在图5的步骤119中,如果这两个值不匹配,则爱丽丝和/或鲍勃可以采取某种形式的补救或警报动作。
尽管爱丽丝选择执行的操作可能比上面使用的简单级联示例更复杂,但并不需要这样做。由于鲍勃事先不知道操作和被选择用于验证目的段,因此鲍勃没有可行的方法来预测爱丽丝会要求他出于提供所需证明的目的而执行的操作。
用于存储数据D的各种选项
在替代实施例中,数据可以不存储在数据块中,而是可以以任何合适的替代形式并且以任何合适的结构存储在任何合适的介质上。重要的是,需要有一种方法让爱丽丝能够识别并唯一地引用数据的特定段,使得她能够向鲍勃传达他需要对其执行验证操作的段。同样,鲍勃需要能够解释爱丽丝的引用并从他的存储资源访问指定的段。例如,鲍勃可以将数据存储在磁带等顺序存储器上,而爱丽丝可以通过从字节编号0(写入磁带的第一个字节)开始的字节编号来引用段。在另一种变型中,数据可以存储在链接列表、DHT、分布式数据库中。数据的存储可以分布在多于一个物理和/或逻辑存储设备上。仅为了方便起见,这里是指将数据存储在区块中,但是这应当被解释为意味着存储数据的任何合适的方式,使得可以识别和/或指定数据的各部分。优选地,所选存储方法和结构被布置为使得可以包括头部段或子部分,以便于本文公开的需要包括的实施例使用头部H。
在一些实施例中,鲍勃将爱丽丝的分段数据项D的原始区块B链下地(off chain)存储在存储设备3中,如图6所示。尽管数据可以以各种方式存储在区块链中,但是根据具体实现方式的要求和限制,这种方法可能并不总是理想或最高效的方案。因此,为了提高处理时间、资源和费用的效率,在一些情况下,可以优选将区块B存储在链下存储资源(例如,图6中的存储器3)中。
然而,可能会出现一种场景,其中需要验证区块B的原始状态。例如,爱丽丝与鲍勃之间可能存在关于她向他发送的内容的差异,或者第三方可能希望验证鲍勃已经存储的副本实际上确实与爱丽丝的原始数据项匹配。换句话说,还需要验证原始数据项D的真实性。为了解决该挑战,优选实施例包括以下步骤,其中将区块B的头部H写入事务(Tx)中,该事务包括原始区块B的树T的默克尔根,其被写入区块链4的分类账,参见图6。
简单支付验证(SPV)
本公开的实施例允许区块的头部H用作数据块的SPV式标记或引用。如区块链事务领域已知的,SPV可以使用内置在区块链区块中的默克尔树结构来简化事务验证过程并减少所需的存储和处理资源量。无需存储区块链的整个副本,验证者可以证明目标事务(Tx)位于给定的区块中,只要他们知道该区块的默克尔根以及计算目标事务的路径所需的充分信息。这对于资源有限的设备(例如,在较小设备上运行的数字钱包)来说是有利的。可以在本领域中找到更多背景信息,例如可以在https://medium.com/coinmonks/spv-proofs-explained-f38f8bb8f580找到更多背景信息。
类似地,图8示出了可以根据本公开的实施例使用的默克尔树,包括样本段{m1,m2,m3,m4}。与传统SPV样式验证使得验证者能够最大限度地减少存储和处理相同,本公开使得爱丽丝能够仅使用最少数量的所需数据项来计算默克尔树的默克尔根,只要爱丽丝适当地选择她的样本段。
例如,假设爱丽丝的数据由图8中所示的默克尔树T表示。她选择样本段{m1,m2,m3,m4}。她不需要存储实线黑色或虚线所示的段,她只需要自己选择的样本,因为她可以:
●对m1和m2进行哈希处理以计算c1;
●然后,她可以对c1和m3进行哈希处理以计算c2;
●然后,她可以对c2和m4进行哈希处理以计算T的默克尔根R。
显然,该技术具有显著的技术优势,包括但不限于在执行验证和安全过程时提高速度和效率。然而,应当注意的是,虽然具有与传统样式SPV相同的技术优势,但是所公开的实施例以完全不同的方式操作以实现这些结果。在传统的SPV方法中,默克尔根是已知的,验证者从根构建向下路径,以证明目标事务是否存在于较低层级。相比之下,本公开的实施例允许验证者从较低层级开始,并向上工作直至计算出默克尔根,然后将其用于确定验证成功或失败。
如上所述,在使用中,爱丽丝和鲍勃可以通过任何合适的通信方法交换消息,以传输特定验证请求所需的信息。验证者(鲍勃)可以执行链下验证检查。该过程可以部分或完全自动化,以及/或者可以被布置为至少部分地通过区块链操作。区块链实现的实施例可以被布置为包括锁定机制,例如基于nLocktime的条件,使得区块链事务可以在爱丽丝与鲍勃之间交换,然后使用SPV进行结算。
启用第三方的数据验证请求
有利地,本公开的实施例允许爱丽丝本身或某个其他实体请求验证。该其他实体称为第三方卡罗尔。例如,爱丽丝可以将验证委托或授权给卡罗尔,卡罗尔可以是例如第三方审计员或需要验证爱丽丝所存储数据的存在性和真实性的任何(人类、组织或基于机器的)实体。爱丽丝可以使用任何合适的技术(例如,WO/2017/145016中公开的技术)来发送秘密或与卡罗尔共享秘密。卡罗尔可以使用该秘密向鲍勃请求验证证明,方法是将共享秘密的使用纳入用于修改所选段或将所选段替换为不同版本的操作中。尽管本公开不限于将它们用于秘密共享,但是可以使用WO/2017/145016中公开的技术来发挥优势,因为它们允许双方彼此独立地生成共享秘密。因此,可以避免秘密的传输及其在传输过程中的潜在拦截。这会增强安全性,因为如果未经授权的一方能够获知秘密,他们可能会识别出有用的信息,用于预测或识别鲍勃将被要求执行的计算。
有利地,如果卡罗尔只需要验证存储空间内的某些项目,则爱丽丝不需要授予卡罗尔对其整个数据存储(例如,整个服务器或磁盘)的访问权限。相反,她可以在单独的区块中向鲍勃(以及可能的其他服务提供者)发送各种数据项,要求他根据本文所述的实施例存储每个区块。当卡罗尔需要验证时,鲍勃可以仅针对相关联的区块中的特定数据项提供所需的证明。因此,实施例允许针对特定数据项委托/授权第三方验证,从而提高或至少保护数据的隐私并保护数据的存储,以便增强其他数据项和/或存储资源的安全性。
更新数据项D–记录增量更改
随着时间的推移,数据项D可能会更改、演变或更新。例如,“临终遗嘱”等初始文档可能会随着遗嘱人年龄的增长而改变;或者音乐编曲可能会根据流行风格而改编;或者软件被修改以修复错误。数据项可能需要从其原始形式更改或更新的原因有很多,因此需要一种关于如何捕获和可验证地记录数据项中的此类更改的技术方案。在这种情况下,需要捕获和验证:
●相对于原始形式的更改;以及/或者
●改编发生的时间。
考虑一种场景,其中爱丽丝更改存储在区块B中的至少一个数据段。将更新后的版本称为B'。根据一个实施例,爱丽丝或第三方可以通过向鲍勃指定必须更改一个或多个特定子部分来记录增量更改或修改。他可能需要记录详细信息,例如更改的性质、时间、形式,以及现有版本与新版本之间的差异。在一个实施例中,这可以通过将事务写入区块链来实现,使得在链上记录从第一事务(Tx0)(包括区块B的头部)到后续事务(Tx1)的“更新”链接或引用。Tx1包括区块B的至少一个段的更改版本,或者指向更新后的更改段或B'的整个副本所在位置的引用/指针/链接。爱丽丝可以通过任何合适的方法向鲍勃传达区块B的状态已被更改。鲍勃可以从爱丽丝指定的位置访问更改段,或者爱丽丝可以通过任何合适的所选方法向鲍勃传达相关段。使用区块链的优点在于,它可以提供不可变、可审计且带时间戳的修改记录。
替代地或附加地,鲍勃可以检测到区块B已被修改。这可以通过多种方式来实现。例如,可以使用自动化过程来监控和检测数据的状态。这样做的一种方法可以是使用自动化DFA,例如WO2018/078584中公开的技术。然后,鲍勃可以从爱丽丝指定的位置访问更改(即,变化的)段,或者爱丽丝可以通过任何合适的所选方法向鲍勃传达相关段。
可以根据特定场景的需要设计此类实施例的各种排列。例如,如果只对数据进行较小更改,则爱丽丝可能会将修改后的段包括在区块链事务中,而鲍勃可以从事务访问(用于复制、下载等)。她可以通过各种方式将数据嵌入事务(Tx)中,例如将修改后的数据段作为元数据包括在与未花费输出(UTXO)相关联的脚本中。可以将新数据包括在由与区块链相关联的协议指定为加密密钥位置的位置的脚本中。这是WO2018/078584中公开的技术。附加地或替代地,可以在OP_RETURN语句之后,以及/或者使用令牌化数字资产,以及/或者包括对数据的引用的哈希,或者使用精简、编码、缩写、删节和/或压缩版本,将数据包括在脚本中。例如,可以以鲍勃可以推断或计算修改的方式提供修改,例如通过解压缩文件、通过对原始数据执行函数或应用过程,或者通过用于导出期望输出(即,修改后的数据)的任何其他已知技术。
根据该实施例的另一种变型,当爱丽丝更新数据D时,她生成区块链事务,该事务花费包括头部(H)的原始事务Tx0。“花费事务”是指“花费事务的至少一个UTXO”,正如本领域技术人员将容易理解的。可以花费第一事务Tx0,使得该第一事务将一个或多个数字资产转移到第二事务Tx1的输入。在一些实施例中,可能需要爱丽丝、鲍勃和/或第三方控制的加密密钥来解锁转移到Tx1的资产。
因此,实施例提供记录对所存储数据的更改的能力,并确保以可验证的方式链接相关联但不同版本的数据,可能具有加密强制的时间戳。这确保最新形式的数据的完整性,使得能够依赖、验证和证明新版本的数据。因此,本发明的实施例提供用于确保数据完整性的改进技术,随后使得能够在需要以某种方式利用该数据的技术过程中的进一步“下游”的其他应用程序中使用该数据。例如,涉及安全和保障的关键系统可能需要能够依赖于其用作过程输入的数据的完整性。
自动化实施例
在某些情况下,自动化本文所述的过程可能是有利的。这不仅减轻了爱丽丝和/或鲍勃执行该过程的各部分的负担,而且还使得能够将该过程委托给第三方资源,从而便于实现不同的硬件/软件架构。这还可以实现技术过程的分离和/或分区,从而增强安全性。
例如,自动化资源(其可以称为“预言机”、“机器人”或“智能合约”)可以用于执行所公开技术的步骤,而无需手动、人为干预。为了便于参考,将这些自动化资源称为“代理”,这些自动化资源可以是在一个或多个硬件设备上执行的软件实现的实体,每个硬件设备包括至少一个处理器。
考虑一种场景,其中爱丽丝与鲍勃签订了为期12个月的合约,使得鲍勃将代表她存储她的数据。爱丽丝可以通过确定每月的验证证明来自动执行安排。她可以提前确定多个默克尔根,并在预定的验证会话中使用这些默克尔根,要求鲍勃提供正确的证明。
在这种场景中,爱丽丝预先计算R'的若干不同变型。她选择或以其他方式识别对数据的不同修改,并计算每个修改的相应默克尔路径和根。例如,她选择或预先确定至少一个操作(f)、该操作的至少一个操作数和/或将对其执行或使用该操作的至少一个段。然后,她计算并记录各种修改中的每个修改的默克尔根。参考图5,该实施例涉及在步骤114中选择多于一个操作和/或段,然后针对包括操作f的输出Y的每个新默克尔树T'重复步骤115的计算。假设图7中所示的树是表示爱丽丝数据块B的默克尔树T。树中的每个节点都是数据D的段。假设爱丽丝选择段m1和m4作为样本段。
然后,她对每个段执行操作。假设她通过使用第一掩码对m1执行逐位XOR操作来改变该段,然后她使用第二掩码对m4执行相同的操作。例如:
m1⊕01100011
m4⊕11001010
现在,她可以计算对m1的操作所产生的新树的默克尔根,以及对m4的操作所产生的新树的默克尔根。她存储这两个计算出的默克尔根。
然后,她建立一个区块链事务,该事务指定各个所选段及其相应掩码,以便鲍勃知道他被要求计算的内容。
该事务可以通过时间锁定机制来布置,该机制在所需时间显示下一次所需的计算。例如,爱丽丝可以使用不同的样本段和/或掩码来计算12个不同的默克尔根,鲍勃可在每个月末花费这些默克尔根中的每个默克尔根。鲍勃每月可以通过在HMAC中提供验证来回复爱丽丝:
HMAC1(MerkleRoot1,Secret1)
HMAC2(MerkleRoot2,Secret2)
等等
因此,爱丽丝预先确定多个验证挑战,然后使用自动化系统通过区块链将这些验证挑战提供给鲍勃。在每个时间段结束时成功验证之后,爱丽丝会向鲍勃支付存储服务费用。智能合约可以用于监控或履行这些步骤的执行。
国际申请PCT/IB2017/050856、PCT/IB2017/056696和PCT/IB2017/050819的内容全文并入本文。
示例性系统概述
上面描述的某些(但不是全部)实施例包括使用区块链或与区块链交互。现在,提供对可以用于实现此类实施例的示例性系统的解释。应当注意的是,根据标准术语,下面提及“爱丽丝”和“鲍勃”,但以下概述中这些术语的使用与前一节中相同名称的使用无关。下面涉及图1至图4。同样应当注意的是,下面提及比特币网络,但是a)术语“比特币”在本文中旨在包括原始比特币协议的所有变体或偏离;以及b)本文对比特币区块链/协议/网络的引用仅用于说明目的,并且本公开不限于此,因为非比特币区块链/协议/网络可以用于实现本公开的一个或多个实施例,并且落入本公开的范围内。
术语“区块链”是指一种分布式数据结构,其中在分布式对等(P2P)网络(以下称为“区块链网络”)中的多个节点中的每个节点处维护区块链的副本,并且广泛公开该副本。区块链包括一系列数据区块,其中每个区块包括一个或多个事务(transaction)。除所谓的“coinbase事务”外,每个事务都指向序列中的先前事务,该序列可以跨越一个或多个区块,回到一个或多个coinbase事务。coinbase事务将在下文进一步讨论。提交给区块链网络的事务包括在新区块中。新区块的创建过程通常称为“挖掘”,该过程涉及多个节点中的每个节点争相执行“工作证明”,即,基于等待被包括在区块链的新区块中的一组定义的有序且核实有效的未决事务的表示解决加密难题。应当注意的是,区块链可以在一些节点处被修剪(prune),并且区块的发布可以通过仅发布区块头来实现。
区块链中的事务可用于以下目的中的一个或多个:传送数字资产(即,一定数量的数字令牌token);对虚拟化分类账或注册表中的一组条目进行排序;接收和处理时间戳条目;和/或对索引指针按时间排序。也可利用区块链实现区块链上的层级附加功能。例如,区块链协议可允许在事务中存储附加的用户数据或数据索引。能够存储在单个事务中的最大数据容量没有预先指定的限制,因此可以并入越来越复杂的数据。例如,这可用于在区块链中存储电子文档、音频或视频数据。
区块链网络的节点(通常称为“矿工”)执行分布式事务注册和验证过程,这将后续更详细地描述。总之,在该过程中,节点核实事务并将这些事务插入到区块模板中,这些事务尝试为该区块模板标识有效的工作证明解。一旦找到有效的解,新区块便会被传播到网络的其它节点,从而使得每个节点能够在区块链上记录新区块。为了将事务记录在区块链中,用户(例如,区块链客户端应用程序)将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的节点可以争相寻找将核实有效的事务并入新区块的工作证明解。每个节点被配置为执行相同的节点协议,该协议将包括用于确认事务有效的一个或多个条件。无效事务将不会传播或并入到区块中。假定事务已经核实有效,从而在区块链上被接受,则该事务(包括任何用户数据)将因此在区块链网络中的每个节点上作为不可改变的公共记录进行注册和索引。
成功解决工作证明难题可创建最新区块的节点通常被奖励一个称为“coinbase事务”的新事务,该事务分发数字资产数额,即令牌数量。无效事务的检测和拒绝是通过竞争节点的行动来执行的,这些竞争节点充当网络的代理并且通过激励报告和阻止不正当行为。信息的广泛发布使得用户可以连续地审计节点的性能。仅发布区块头使得参与者可以确保区块链具有持续完整性。
在“基于输出的”模型(有时称为基于UTXO的模型)中,给定事务的数据结构包括一个或多个输入和一个或多个输出。任何可花费输出包括指定数字资产数额的元素,该元素可从进行中的事务序列导出。可花费输出有时称为UTXO(“未花费事务输出”)。输出还可以包括锁定脚本,该锁定脚本指定输出的未来赎回条件。锁定脚本是限定核实和传送数字令牌或资产所必需的条件的谓词。事务(除coinbase事务之外)的每个输入包括指向先前事务中的此类输出的指针(即引用),并且还可以包括解锁脚本,用于解锁指向输出的锁定脚本。因此,考虑一对事务,将其称为第一事务和第二事务(或“目标”事务)。第一事务包括指定数字资产数额的至少一个输出,并且包括定义解锁该输出的一个或多个条件的锁定脚本。第二(目标)事务包括至少一个输入和解锁脚本,该至少一个输入包括指向第一事务的输出的指针;该解锁脚本用于解锁第一事务的输出。
在此类模型中,当第二(目标)事务被发送到区块链网络以在区块链中传播和记录时,在每个节点处应用的有效性条件之一将是解锁脚本满足在第一事务的锁定脚本中定义的一个或多个条件中的所有条件。另一条件将是第一事务的输出尚未被另一早期有效事务赎回。根据这些条件中的任何一个条件发现目标事务无效的任何节点都不会传播该事务(作为有效事务,但可能注册无效事务),也不将该事务包括在要记录在区块链中的新区块中。
另一种事务模型是基于账户的模型。在这种情况下,每个事务均不通过参考过去事务序列中先前事务的UTXO来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由节点单独存储到区块链中,并不断更新。
以下转到图1至图4。图1示出了一种用于实现区块链150的示例性系统100。系统100可以包括分组交换网络101,通常是诸如互联网的广域互联网。分组交换网络101包括多个区块链节点104,该多个区块链节点可以被设置成在分组交换网络101内形成对等(P2P)网络106。虽然未示出,但是区块链节点104可以被设置为近完全图。因此,每个区块链节点104高度连接到其它区块链节点104。
每个区块链节点104包括对等体的计算机设备,不同的节点104属于不同的对等体。每个区块链节点104包括处理装置,该处理装置包括一个或多个处理器,例如一个或多个中央处理单元(CPU)、加速器处理器、专用处理器和/或现场可编程门阵列(FPGA),以及其它设备,例如专用集成电路(ASIC)。每个节点还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或多个存储器单元,其采用一个或多个存储器介质,例如诸如硬盘等磁介质、诸如固态硬盘(SSD)、闪存或电可擦可编程只读存储器(EEPROM)等电子媒介和/或诸如光盘驱动器等光学介质。
区块链150包括一系列数据区块151,其中在分布式或区块链网络106中的多个区块链节点104中的每个节点处维护区块链150的相应副本。如上所述,维护区块链150的副本不一定意味着完全存储区块链150。相反,只要每个区块链节点150存储每个区块151的区块头(下面讨论),区块链150就可以进行数据修剪。区块链中的每个区块151均包括一个或多个事务152,其中该上下文中的事务是指一种数据结构。数据结构的性质将取决于用作事务模型或计划的一部分的事务协议类型。给定的区块链全程使用一个特定的事务协议。在一种常见的事务协议中,每个事务152的数据结构至少包括一个输入和至少一个输出。每个输出指定将数字资产的数量表示为财产的数额,其一个示例是输出被密码锁定到的用户103(需要该用户的签名或其它解进行解锁,从而进行赎回或花费)。每个输入指向先前事务152的输出,从而链接这些事务。
每个区块151还包括区块指针155,其指向区块链中先前创建的区块151,以定义区块151的顺序。每个事务152(除coinbase事务之外)包括指向先前事务的指针,以定义事务序列的顺序(注:事务152的序列可进行分支)。区块151的区块链一直追溯到创始区块(Gb)153,该创始区块是区块链中的第一区块。区块链150中早期的一个或多个原始事务152指向创始区块153,而非先前事务。
每个区块链节点104被配置为将事务152转发到其它区块链节点104,从而使得事务152在整个网络106中传播。每个区块链节点104被配置为创建区块151,并将相同区块链150的相应副本存储在其相应的存储器中。每个区块链节点104还维护等待并入到区块151中的事务152的有序集(或“池”)154。有序池154通常称为“内存池”。在本文中,该术语并不意在限制于任何特定的区块链、协议或模型。该术语是指节点104已接受为有效的有序事务集,并且对于该有序事务集,强制节点104不接受试图花费相同输出的任何其它事务。
在给定的当前事务152j中,输入(或每个输入)包括指针,该指针引用事务序列中先前事务152i的输出,指定该输出将在当前事务152j中被赎回或“花费”。通常,先前事务可以是有序集154或任何区块151中的任何事务。尽管为了确保当前事务有效,将需要存在先前事务152i并核实其有效,但是在创建当前事务152j甚至向网络106发送当前事务152j时,不必存在先前事务152i。因此,在本文中,“先前”是指由指针链接的逻辑序列中的前任,而不一定是时间序列中的创建时间或发送时间,因此,不一定排除无序创建或发送事务152i、152j的情况(参见下面关于孤立事务的讨论)。先前事务152i同样可以称为先行事务或前任事务。
当前事务152j的输入还包括输入授权,例如先前事务152i的输出被锁定到的用户103a的签名。反过来,当前事务152j的输出可以加密锁定到新用户或实体103b。因此,当前事务152j可将先前事务152i的输入中定义的数额转移到当前事务152j的输出中定义的新用户或实体103b。在某些情况下,事务152可具有多个输出,以在多个用户或实体间分割输入数额(其中一个可以是原始用户或实体103a,以便进行变更)。在某些情况下,事务还可以具有多个输入,将一个或多个先前事务的多个输出中的数额汇总在一起,并重新分配到当前事务的一个或多个输出。
根据基于输出的事务协议,例如比特币,当诸如个体用户或组织这类的一方103希望颁布新的事务152j时(由该方采用的自动程序或人为地),该颁布方将该新事务从其计算机终端102发送到接收者。颁布方或接收者将最终向网络106的一个或多个区块链节点104(现在通常是服务器或数据中心,但原则上也可以是其它用户终端)发送该事务。另外还不排除颁布新事务152j的一方103可以将事务直接发送到一个或多个区块链节点104,并且在一些示例中,可以不将事务发送到接收者。接收事务的区块链节点104根据在每个区块链节点104处应用的区块链节点协议来检查事务是否有效。区块链节点协议通常要求区块链节点104检查新事务152j中的加密签名是否与预期签名相匹配,这取决于事务152的有序序列中的先前事务152i。在这种基于输出的事务协议中,这可以包括检查新事务152j的输入中包括的一方103的密码签名或其它授权是否与新事务分配的先前事务152i的输出中定义的条件匹配,其中该条件通常包括至少检查新事务152j的输入中的密码签名或其它授权是否解锁新事务的输入所链接到的先前事务152i的输出。条件可以至少部分地由包括在先前事务152i的输出中的脚本来定义。或者,这可仅由区块链节点协议单独确定,或可通过其组合确定。无论采用哪种方式,如果新事务152j有效,区块链节点104会将其转发到区块链网络106中的一个或多个其它区块链节点104。这些其它区块链节点104根据相同的区块链节点协议应用相同的测试,并因此将新事务152j转发到一个或多个其它节点104等等。通过这种方式,新事务在区块链节点104的整个网络中进行传播。
在基于输出的模型中,给定输出(例如,UTXO)是否分配(例如,花费)的定义是,根据区块链节点协议,其是否通过另一个随后事务152j的输入有效赎回。事务有效的另一个条件是其试图赎回的先前事务152i的输出尚未被另一个事务赎回。同样,如果无效,则事务152j将不会在区块链150中传播(除非被标记为无效并且被传播用于提醒)或记录。这可防止重复花费,即事务处理者对同一个事务的输出分配超过一次。另一方面,基于账户的模型通过保持账户余额防止重复花费。因为同样存在定义的事务顺序,账户余额在任何时候均具有单一定义的状态。
除了核实事务有效之外,区块链节点104还争相成为在通常称为挖掘的过程中创建事务区块的第一个节点,而该过程由“工作证明”支持。在区块链节点104处,新事务被添加到尚未出现在记录在区块链150上的区块151中的有效事务的有序池154。然后,区块链节点争相通过尝试解决加密难题以组装有序事务集154中事务152的新有效事务区块151。通常情况下,这包括搜索“随机数”值,从而当随机数与未决事务有序池154的表示并置且进行哈希处理时,哈希值的输出满足预定条件。例如,预定条件可以是哈希值的输出具有某个预定义的前导零数。注意,这仅仅是一种特定类型的工作证明难题,并且不排除其它类型。哈希函数的特性是,相对于其输入,其具有不可预测的输出。因此,该搜索只能通过强力执行,从而在试图解决难题的每个区块链节点104处消耗大量的处理资源。
解决难题的第一区块链节点104在网络106上宣布难题解决,提供解决方案作为证明,然后网络中的其它区块链节点104则可以轻松检查该解决方案(一旦给出哈希值的解决方案,就可以直接检查该解决方案是否使哈希值的输出满足条件)。第一区块链节点104将一个区块传播到接受该区块的其它节点达成阈值共识,从而执行协议规则。然后,有序事务集154被每个区块链节点104记录为区块链150中的新区块151。区块指针155还分配给指向该区块链中先前创建的区块151n-1的新区块151n。创建工作证明解所需的大量工作(例如采用哈希的形式)发出信号通知第一节点104的意图以遵循区块链协议。这些规则包括如果它分配与先前核实有效的事务相同的输出,则不接受事务为有效,否则称之为重复花费。一旦创建,区块151就不能修改,因为它在区块链网络106中的每个区块链节点104处进行标识和维护。区块指针155还向区块151施加顺序。由于事务152记录在网络106中每个区块链节点104处的有序区块中,因此提供了事务的不可改变公共分类账。
应当注意的是,在任何给定时间争相解决难题的不同区块链节点104可以基于在任何给定时间尚未发布的事务的池154的不同快照来这样做,具体取决于它们何时开始搜索解或接收事务的顺序。解决相应难题的人员首先定义新区块151n中包括的事务152及其顺序,并且更新当前的未发布事务池154。然后,区块链节点104继续争相从新定义的未发布事务有序池154中创建区块,等等。此外,还存在解决可能出现的任何“分叉”的协议,其中两个区块链节点104彼此在很短的时间内解决难题,从而在节点104之间传播区块链的冲突视图。简言之,分叉方向最长的成为最终区块链150。应当注意的是,这不会影响网络的用户或代理,因为同一事务将出现在两个分叉中。
根据比特币区块链(和大多数其它区块链),成功构造新区块104的节点被授予在分配附加限定数量数字资产的新特殊类型事务中新分配附加的、接受的数额的数字资产的能力(与代理间或用户间事务相反,该事务将一定数量的数字资产从一个代理或用户转移到另一个代理或用户)。这种特殊类型的事务通常称为“coinbase事务”,但是也可以称为“启动事务”或“产生事务”。它通常形成新区块151n的第一事务。工作证明发出信号通知构造新区块的节点的意图以遵循协议规则,从而允许稍后赎回该特定事务。在可以赎回该特殊事务之前,区块链协议规则可能需要成熟期,例如100个区块。通常,常规(非生成)事务152还将在其输出中的一个输出中指定附加事务费用,以进一步奖励创建其中发布该事务的区块151n的区块链节点104。该费用通常称为“事务费用”,并在下文中讨论。
由于事务核实和发布中涉及的资源,通常至少每个区块链节点104采用包括一个或多个物理服务器单元的服务器的形式,或者甚至整个数据中心。但是,原则上来说,任何给定区块链节点104均可采用一个用户终端或联网在一起的一组用户终端的形式。
每个区块链节点104的存储器均存储被配置为在区块链节点104的处理装置上运行的软件,以根据区块链节点协议执行其相应的角色并处理事务152。应当理解的是,在本文中归因于区块链节点104的任何动作均可通过在相应计算机设备的处理装置上运行的软件执行。节点软件可以在应用层或诸如操作系统层或协议层的较低层或这些层任意组合的一个或多个应用中实现。
扮演消费用户角色的多方103中的每一方的计算机设备102也连接到网络101。这些用户可以与区块链网络106交互,但不参与核实事务或构造区块。其中一些用户或代理103可以充当事务中的发送者和接收者。其它用户可以与区块链150交互,而不必充当发送者或接收者。例如,一些当事方可以充当存储区块链150的副本(例如,已经从区块链节点104获得区块链的副本)的存储实体。
各方103中的一些或所有当事方可以作为不同网络的一部分连接,例如覆盖在区块链网络106之上的网络。区块链网络的用户(经常称为“客户端”)可以被称为是包含区块链网络106的系统的一部分;然而,这些用户不是区块链节点104,因为它们不执行区块链节点所需的角色。相反,每一方103可以与区块链网络106交互,从而通过连接到区块链节点106(即,与区块链节点106通信)来利用区块链150。出于说明目的,示出了双方103及其相应的设备102:第一方103a及其相应的计算机设备102a,以及第二方103b及其相应的计算机设备102b。应当理解的是,更多此类当事方103及其相应的计算机设备102可能存在并参与系统100,但为了方便起见,未进行说明。每一方103均可以是个人或组织。仅出于说明目的,在本文中,第一方103a称为爱丽丝,第二方103b称为鲍勃,但应当理解的是,这并不仅限于爱丽丝或鲍勃,且本文对爱丽丝或鲍勃的任何引用均可分别用“第一方”和“第二方”替换。
每一方103的计算机设备102包括相应的处理装置,其包括一个或更多个处理器,例如一个或更多个CPU、图形处理单元(GPU)、其他加速器处理器、特定应用程序处理器和/或FPGA。每一方103的计算机设备102还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。该存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等磁介质、诸如SSD、闪存或EEPROM等电子媒介和/或诸如光盘驱动器等的光学介质。每一方103的计算机设备102上的存储器存储软件,其包括被设置为在处理装置上运行的至少一个客户端应用程序105的相应实例。应当理解的是,在本文中归因于给定方103的任何行动均可通过在相应计算机设备102的处理装置上运行的软件执行。每一方103的计算机设备102包括至少一个用户终端,例如台式或笔记本电脑、平板电脑、智能手机或诸如智能手表等的可穿戴设备。给定方103的计算机设备102还可包括一个或更多个其他网络资源,诸如通过用户终端访问的云计算资源。
客户端应用程序105最初可通过例如从服务器下载的适当计算机可读存储介质,或通过诸如可移动SSD、闪存密钥、可移动EEPROM、可移动磁盘驱动器、软盘或磁带等的可移动存储设备、诸如CD或DVD ROM等的光盘或可移动光驱等提供至任何给定方103的计算机设备102。
客户端应用程序105至少包括“钱包”功能。这有两个主要功能。其中一个功能是使相应方103能够创建、授权(例如签名)事务152并将其发送到一个或多个比特币节点104,然后在区块链节点104的网络中传播,从而包括在区块链150中。另一个功能是向相应方汇报其目前拥有的数字资产数额。在基于输出的系统中,该第二功能包括整理分散在区块链150中属于相关方的各种事务152的输出中定义的数额。
注意:虽然各种客户端功能可以描述为集成到给定客户端应用程序105中,但这不一定是限制性的,相反,在本文中所描述的任何客户端功能可以在由两个或更多个不同应用程序组成的套件中实现,例如经由API进行接口连接或一个应用程序作为另一个应用程序的插件。更通俗地说,客户端功能可以在应用层或诸如操作系统的较低层或这些层的任意组合实现。下面将根据客户端应用程序105进行描述,但应当理解的是,这不是限制性的。
每个计算机设备102上的客户端应用程序或软件105的实例可操作地耦合到网络106的区块链节点104中的至少一个。这可以启用客户端105的钱包功能,以将事务152发送至网络106。客户端105还可联络区块链节点104,以在区块链150中查询相应方103作为接收者的任何事务(或实际上在区块链150中检查其它方的事务,因为在实施例中,区块链150是在某种程度上通过其公开可见性提供事务信任的公共设施)。每个计算机设备102上的钱包功能被配置为根据事务协议制定和发送事务152。如上所述,每个区块链节点104运行软件,该软件被配置为根据区块链节点协议核实事务152并转发事务152以便在区块链网络106中传播。事务协议和节点协议相互对应,给定事务协议和给定节点协议一起实现给定的事务模型。相同的事务协议用于区块链150中的所有事务152。网络106中的所有节点104使用相同的节点协议。
当给定方103(比方说爱丽丝)希望发送拟包含在区块链150中的新事务152j时,她将根据相关事务协议(使用其客户端应用程序105中的钱包功能)制定新事务。然后,她将事务152从客户端应用程序105发送到她所连接的一个或多个区块链节点104。例如,这可能是与爱丽丝的计算机102最佳连接的区块链节点104。当任何给定区块链节点104接收新事务152j时,其将根据区块链节点协议及其相应的角色进行处理。这包括首先检查新接收的事务152j是否满足变为“有效”的特定条件,具体示例稍后将详细讨论。在一些事务协议中,有效条件可通过事务152中包含的脚本在每个事务的基础上进行配置。或者,条件可仅仅是节点协议的内置功能,或通过组合脚本和节点协议进行定义。
如果新接收的事务152j通过有效性测试(即:“有效”的条件下),接收事务152j的任何区块链节点104将向在区块链节点104处维护的有序事务集154中添加新的核实有效事务152。进一步地,接收事务152j的任何区块链节点104随后将核实有效事务152传播至网络106中的一个或多个其它区块链节点104。由于每个区块链节点104应用相同的协议,因此假定事务152j有效,这意味着事务很快将在整个网络106中传播。
一旦进入在给定区块链节点104处维护的未决事务有序池154,该区块链节点104将开始争相解决其各自的包含新事务152的池154的最新版本上的工作证明难题(请记住,其它区块链节点104可以尝试基于不同的事务池154来解决难题。但是,首先解决难题的人将定义包括在最新区块151中的事务集合。最终,区块链节点104将解决有序池154的一部分的难题,该有序集154包括爱丽丝的事务152j)。一旦包括新事务152j的池154完成工作证明,其将不可变地成为区块链150中区块151中的一个区块的一部分。每个事务152包括指向早前事务的指针,因此事务的顺序也被不可变地记录下来。
不同的区块链节点104可以首先接收给定事务的不同实例,并且因此在一个实例被发布到新区块151中之前具有关于哪个实例“有效”的冲突视图,此时所有区块链节点104同意所发布的实例是唯一的有效实例。如果区块链节点104将一个实例接受为有效实例,然后发现第二实例已记录在区块链150中,则区块链节点104必须接受这一点,并将丢弃(即,视为无效)其最初接受的实例(即,在区块151中尚未公布的实例)。
作为基于账户的事务模型的一部分,由一些区块链网络操作的另一种类型的事务协议可称为“基于账户的”协议。在基于账户的情况下,每个事务均不通过参考过去事务序列中先前事务的UTXO来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由网络的节点单独存储到区块链中,并不断更新。在此类系统中,事务使用账户的运行事务记录(也称为“头寸”)进行排序。该值由发送者签名作为其加密签名的一部分,并作为事务引用计算的一部分进行哈希处理。此外,可选的数据字段也可以在事务中签名。例如,如果数据字段中包含先前事务的ID,该数据字段可指向先前事务。
基于UTXO的模型
图2示出了示例性事务协议。这是基于UTXO的协议的示例。事务152(简称“Tx”)是区块链150的基本数据结构(每个区块151包括一个或多个事务152)。下面将通过参考基于输出或基于“UTXO”的协议进行描述。但这并不限于所有可能的实施例。应当注意的是,虽然参考比特币描述了示例性基于UTXO的协议,但是它同样可以在其它示例区块链网络上实现。
在基于UTXO的模型中,每个事务(“Tx”)152包括数据结构,其包括一个或多个输入202和一个或多个输出203。每个输出203可包括未花费事务输出(UTXO),其可用作另一新事务的输入202的来源(如果UTXO尚未赎回)。UTXO包括指定数字资产数额的值。这表示分布式分类账上的一组令牌。UTXO还可包含其来源事务的事务ID以及其它信息。事务数据结构还可包括标头201,其可包括输入字段202和输出字段203的大小指示符。标头201还可包括事务的ID。在实施例中,事务ID是事务数据(不含事务ID本身)的哈希值,且存储在提交至节点104的原始事务152的标头201中。
比方说爱丽丝103a希望创建转移相关数字资产数额至鲍勃103b的事务152j。在图2中,爱丽丝的新事务152j标记为“Tx1”。该新事务获取在序列中先前事务152i的输出203中锁定至爱丽丝的数字资产数额,并至少将此类数额中的一部分转移至鲍勃。在图2中,先前事务152i标记为“Tx0”。Tx0和Tx1只是任意的标记,其不一定意味着Tx0指区块链151中的第一事务且Tx1指池154中的后续事务。Tx1可指向仍具有锁定至爱丽丝的未花费输出203的任何先前(即先行)事务。
当爱丽丝创建其新事务Tx1时,或至少在她将该新事务发送至网络106时,先前事务Tx0可能已经有效并包括在区块链150的区块151中。该事务此时可能已包括在区块151中的一个区块中,或者可能仍在有序集154中等待,在这种情况下,该事务将很快包括在新区块151中。或者,Tx0和Tx1可以创建并一起发送至网络106;或者,如果节点协议允许缓冲“孤立”事务,Tx0甚至可以在Tx1之后发送。本文事务序列上下文中使用的“先前”和“后续”一词是指由事务中指定的事务指针定义的序列中的事务顺序(哪个事务指向哪个其他事务等等)。它们同样可以替换为“前任”和“继任”、“先行”和“后代”或“父项”和“子项”等。这不一定指其创建、发送至网络106或到达任何给定区块链节点104的顺序。然而,指向先前事务(先行事务或“父事务”)的后续事务(后代事务或“子事务”)不会有效除非父事务有效。在父事务之前到达区块链节点104的子事务被视为孤立事务。根据节点协议和/或节点行为,其可被丢弃或缓冲一段时间,以等待父事务。
先前事务Tx0的一个或更多个输出203中的一个包括特定的UTXO,标记为UTXO0。每个UTXO包括指定UTXO表示的数字资产数额的值以及锁定脚本,该锁定脚本定义后续事务的输入202中的解锁脚本必须满足的条件,以使后续事务有效,从而成功赎回UTXO。通常情况下,锁定脚本将数额锁定至特定方(该数额的事务的受益人)。即,锁定脚本定义解锁条件,该解锁条件通常包括以下条件:后续事务的输入中的解锁脚本包括先前事务被锁定到的一方的加密签名。
锁定脚本(亦称scriptPubKey)是节点协议识别的域特定语言中写入的一段代码。此类语言的特定示例称为“脚本(Script)”(S大写),其可由区块链网络所使用。锁定脚本指定花费事务输出203所需的信息,例如爱丽丝签名的要求。解锁脚本出现在事务的输出中。解锁脚本(亦称scriptSig)是提供满足锁定脚本标准所需信息的域特定语言中写入的一段代码。例如,其可包含鲍勃的签名。解锁脚本出现在事务的输入202中。
因此在示出的示例中,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>,该解锁脚本包括爱丽丝的加密签名,该签名由爱丽丝通过将其密钥对中的私钥应用于预定的部分数据(有时在密码学中称为“消息”)创建。爱丽丝需要签名以提供有效签名的数据(或“消息”)可通过锁定脚本、节点协议或其组合进行定义。
当新事务Tx1到达区块链节点104时,该节点应用节点协议。这包括一起运行锁定脚本和解锁脚本,以检查解锁脚本是否满足锁定脚本中定义的条件(其中该条件可包括一个或更多个标准)。在实施例中,这涉及并置两个脚本:
<Sig PA><PA>||[Checksig PA]
其中“||”表示并置,“<…>”表示将数据放在堆栈上,“[…]”表示由锁定脚本组成的函数(在该示例中指基于堆栈的语言)。同样,脚本可以使用公共堆栈一个接一个地运行,而不是并置脚本。无论采用哪种方式,当一起运行时,脚本使用爱丽丝的公钥PA(包括在Tx0的输出的锁定脚本中),以认证Tx1的输入中的解锁脚本是否包含爱丽丝签名预期部分的数据时的签名。也需要包括预期的部分数据本身(“消息”),以便执行此认证。在实施例中,签名的数据包括整个Tx1(因此不需要包括一个单独的元素来明文指定签名的部分数据,因为其本身便已存在)。
本领域技术人员将熟悉通过公私密码进行验证的细节。基本上而言,如果爱丽丝已使用其私钥加密签署消息,则给定爱丽丝的公钥和明文中的消息,诸如节点104等其它实体可验证消息必须已经由爱丽丝签名。签署通常包括对消息进行哈希,签署哈希值和将此标记到消息作为签名,从而使公钥的任何持有者能够验证签名。因此,应当注意的是,在实施例中,在本文中对签名特定数据片段或事务部分等的任何引用可以意味着对该数据片段或事务部分的哈希值进行签名。
如果Tx1中的解锁脚本满足Tx0的锁定脚本中指定的一个或多个条件(因此,在所示示例中,如果在Tx1中提供了爱丽丝的签名并进行验证),则区块链节点104认为Tx1有效。这意味着区块链节点104会将Tx1添加到待定事务有序池154。区块链节点104还会将事务Tx1转发到网络106中的一个或多个其它区块链节点104,以便其会在整个网络106中传播。一旦Tx1有效并包括在区块链150中,这会将UTXO0从Tx0定义为已花费。应当注意的是,Tx1仅在花费未花费事务输出203时才有效。如果其试图花费另一事务152已经花费的输出,则即使满足所有其它条件,Tx1也将无效。因此,区块链节点104还需要检查先前事务Tx0中引用的UTXO是否已经花费(即,其是否已经形成另一有效事务的有效输入)。这是为何区块链150对事务152施加定义的顺序很重要的原因之一。在实践中,给定区块链节点104可维护单独的数据库,标记已花费事务152的UTXO 203,但最终定义UTXO是否已花费取决于是否在区块链150中形成了另一有效事务的有效输入。
如果给定事务152的所有输出203中指定的总数额大于其所有输入202所指向的总数额,则这是大多数事务模型中的另一失效依据。因此,此类事务不会传播或包括在区块151中。
请注意,在基于UTXO的事务模型中,给定UTXO需要作为一个整体使用。不能“留下”UTXO中定义为已花费的一部分数额,而同时又花费另一部分。但UTXO的数额可以在后续事务的多个输出之间分割。例如,Tx0的UTXO0中定义的数额可以在Tx1中的多个UTXO之间分割。因此,如果爱丽丝不想将UTXO0中定义的所有数额都给鲍勃,她可以使用剩余部分在Tx1的第二输出中自己找零,或者支付给另一方。
在实践中,爱丽丝通常还需要包括用于比特币节点104的费用,该比特币节点104在区块151中成功包含爱丽丝的事务104。如果爱丽丝未包括此类费用,则Tx0可能会被区块链节点104拒绝,并且因此尽管在技术上有效,但可能不会传播并且包括在区块链150中(如果区块链节点104不希望接受事务152,节点协议不强迫区块链节点104接受)。在一些协议中,事务费用不需要其自身的单独输出203(即不需要单独的UTXO)。相反,输入202指向的总数额与给定事务152的输出203指定的总数额之间的任何差额都将自动提供给发布事务的区块链节点104。例如,假设指向UTXO0的指针是Tx1的唯一输入,并且Tx1仅具有一个输出UTXO1。如果在UTXO0中指定的数字资产数额大于在UTXO1中指定的数额,则可以由赢得工作证明竞赛以创建包含UTXO1的区块的节点104分配该差值。替代地或附加地,这不一定排除可以在其自身事务152的其中一个UTXO 203中明确指定事务费用。
爱丽丝和鲍勃的数字资产由区块链150中任何位置的任何事务152中的锁定至他们的UTXO组成。因此,通常情况下,给定方103的资产分散在整个区块链150的各种事务152的UTXO中。区块链150中的任何位置均未存储定义给定方103的总余额的一个数字。客户端应用程序105的钱包功能的作用是将锁定至相应方且在其它随后事务中尚未花费的各种UTXO值整理在一起。为实现这一点,其可以查询存储在任何一个比特币节点104处的区块链150的副本。
应当注意的是,脚本代码通常用示意图表示(即使用非精确语言)。例如,可以使用操作码(opcode)来表示特定功能。“OP_...”是指脚本语言的特定操作码。举例来说,OP_RETURN是脚本语言操作码,当在锁定脚本的开始处在操作码前加上OP_FALSE时,操作码创建事务的不可花费输出,该输出可以在事务内存储数据,从而将数据不可改变地记录在区块链150中。例如,数据可包括需存储在区块链中的文件。
通常,事务的输入包含对应于公钥PA的数字签名。在实施例中,这基于使用椭圆曲线secp256k1的ECDSA。数字签名对特定的数据段进行签名。在实施例中,对于给定事务,签名将对部分事务输入以及部分或全部事务输出进行签名。对输出的特定部分进行签名取决于SIGHASH标志。SIGHASH标志通常是包含在签名末尾的4字节代码,用于选择签名的输出(并因此在签名时固定)。
锁定脚本有时称为“scriptPubKey”,指其通常包括相应事务被锁定到的当事方的公钥。解锁脚本有时称为“scriptSig”,指其通常提供相应的签名。但是更通俗地说,在区块链150的所有应用中,UTXO赎回的条件并不一定包括对签名进行验证。更通俗地说,脚本语言可用于定义任何一个或多个条件。因此,可以优选更为通用的术语“锁定脚本”和“解锁脚本”。
侧信道
如图1所示,爱丽丝和鲍勃的计算机设备102a、120b中的每个计算机设备上的客户端应用程序都可以包括附加通信功能。此附加功能可使爱丽丝103a建立与鲍勃103b的单独侧信道107(在任何一方或第三方的鼓动下)。侧信道107使得能够脱离区块链网络交换数据。此类通信有时称为“链下off-chain”通信。例如,这可用于在爱丽丝与鲍勃之间交换事务152,而不将该事务(尚未)注册到区块链网络106上或将其发布到链150上,直到其中一方选择将其广播到网络106上。以这种方式共享事务有时称为共享“事务模板transactiontemplate”。事务模板可能缺少形成完整事务所需的一个或多个输入和/或输出。替代地或附加地,侧信道107可用于交换任何其它事务相关数据,例如密钥、议付数额或条款、数据内容等。
通过与区块链网络106相同的分组交换网络101可建立侧信道107。替代地或附加地,侧信道301可以经由诸如移动蜂窝网络的不同网络或者诸如无线局域网络的局域网建立,甚至经由爱丽丝和鲍勃的设备102a、102b之间的直接有线或无线链路建立。通常,在本文中任何地方所指的侧信道107可以包括经由一项或多项联网技术或通信介质的任何一条或多条链路,这些链路用于“链下”交换数据,即脱离区块链网络106交换数据。在使用多条链路的情况下,链下链路束或集合整体上可以称为侧信道107。因此,应当注意的是,如果说爱丽丝和鲍勃通过侧信道107交换某些信息或数据等,则这不一定意味着所有这些数据都必须通过完全相同的链路或甚至相同类型的网络发送。
客户端软件
图3A示出了用于实现本公开方案的实施例的客户端应用程序105的示例性实施方式。客户端应用程序105包括事务引擎401和用户界面(UI)层402。根据上文讨论的方案以及稍后将进一步详细讨论的内容,事务引擎401被配置为实现客户端105的基础事务相关功能,诸如制定事务152,通过侧信道301接收和/或发送事务和/或其他数据,和/或发送事务至一个或更多个节点104以通过区块链网络106传播。
该UI层402被配置为通过相应用户的计算机设备102的用户输入/输出(I/O)方式呈现用户界面,包括通过设备102的用户输出方式向相应用户103输出信息,和通过设备102的用户输入方式接收来自相应用户103的输入。例如,用户输出方式可包括提供视觉输出的一个或显示多个屏(触摸或非触摸屏)、提供音频输出的一个或更多个扬声器、和/或提供触觉输出的一个或更多个触觉输出设备等。用户输入方式可包括例如一个或更多个触摸屏的输入阵列(可与用于输出方式的那个/那些相同或不同);一个或更多个基于光标的设备,诸如鼠标、轨迹板或轨迹球;一个或更多个麦克风和语音或声音识别算法,用于接收语音或声音输入;一个或更多个基于手势的输入设备,用于接收手动或身体手势形式的输入;或者一个或更多个机械按钮、开关或控制杆等。
注:虽然本文中的各种功能可以被描述为集成到同一客户端应用程序105中,但这并不一定构成限制,相反,它们可以在两个或更多个不同应用程序组成的一套程序中实现,例如一个应用程序作为另一个应用程序的插件或经由API(应用程序编程接口)进行接口。比如,事务引擎401的功能可以在单独的应用程序中实现,而不是在UI层402中实现,或者诸如事务引擎401的给定模块的功能可以在多个应用程序之间分割。同时,也不排除部分或全部描述的功能可以在比如操作系统层实现。在本文任何位置引用单个或给定应用程序105或诸如此类的情况下,应当理解的是这只是作为示例,并且更通俗地说,所描述的功能可以在任何形式的软件中实现。
图3B给出了用户界面(UI)500的示例的模型,该UI可由客户端应用程序105a的UI层402在爱丽丝的设备102a上呈现。应当理解的是,类似的UI可以由客户端105b在鲍勃的设备102b或任何其他方的设备上呈现。
通过图示的方式,图3B从爱丽丝的角度示出了UI 500。该UI 500可包括一个或更多个UI元素501、502、503,该一个或更多个UI元素通过用户输出方式呈现为不同的UI元素。
例如,UI元素可包括一个或更多个用户可选择的元素501,这些元素可以是屏幕上的不同按钮、菜单中的不同选项或者诸如此类。用户输入方式被设置成使用户103(在这种情况下为爱丽丝103a)能够选择或以其它方式操作其中一个选项,诸如通过点击或触摸屏幕上的UI元素,或者说出所需选项的名称(注:本文使用的“手动”一词仅用于与自动进行对比,而不一定限于用手执行操作)。
替代地或附加地,UI元素可包括一个或更多个数据输入字段502,用户能够通过其来进行......这些数据输入字段通过用户输出方式呈现,例如屏幕上,并且数据可通过用户输入方式输入到字段中,例如键盘或触摸屏。或者,数据可以例如基于语音识别口头地接收。
替代地或附加地,UI元素可包括向用户输出信息的一个或更多个信息元素503。例如,这/这些可以在屏幕上呈现或可听见。
应当理解的是,呈现各种UI元素、选择选项和输入数据的特定方式并不重要。这些UI元素的功能稍后将进行更详细地讨论。还应当理解的是,图3中示出的UI 500只是一个图示模型,在实践中,它可包括一个或更多个进一步的UI元素,为了简洁起见,未对其进行说明。
节点软件
图4示出了在基于UTXO或基于输出的模型的示例中,在网络106的每个区块链节点104上运行的节点软件450的示例。应当注意的是,另一实体可以运行节点软件450,而不被分类为网络106上的节点104,即,不执行节点104所需的动作。节点软件450可以包含但不限于协议引擎451、脚本引擎452、堆栈453、应用级决策引擎454以及一个或多个区块链相关功能模块455的集合。每个节点104可以运行节点软件,该节点软件包含但不限于以下所有三个:共识模块455C(例如,工作证明)、传播模块455P和存储模块455S(例如,数据库)。协议引擎401通常被配置为识别事务152的不同字段,并根据节点协议处理此类字段。当接收到具有指向另一先前事务152i(Txm-1)的输出(例如,UTXO)的输入的事务152j(Txj)时,协议引擎451标识Txj中的解锁脚本并将其传递给脚本引擎452。协议引擎451还基于Txj的输入中的指针来标识和检索Txi。Txi可以在区块链150上发布,在这种情况下,协议引擎可以从存储在节点104处的区块链150的区块151的副本中检索Txi。或者,Txi还可以在区块链150上发布。在这种情况下,协议引擎451可以从节点104维护的未发布有序事务集154中检索Txi。无论采用哪种方式,脚本引擎451都会标识Txi的引用输出中的锁定脚本,并将其传递给脚本引擎452。
因此,脚本引擎452具有Txi的锁定脚本和来自Txj的相应输入的解锁脚本。例如,在图2中示出了事务标记的Tx0和Tx1,但是同样的事务也可以应用于任何事务对。如前所述,脚本引擎452一起运行两个脚本,这将包括根据所使用的基于堆栈的脚本语言(例如脚本)将数据放置到堆栈453上和从堆栈453检索数据。
通过同时运行脚本,脚本引擎452确定解锁脚本是否满足锁定脚本中定义的一个或多个标准,即解锁脚本是否对包括锁定脚本的输出进行解锁?脚本引擎452将该确定的结果返回给协议引擎451。如果脚本引擎452确定解锁脚本确实满足在相应的锁定脚本中指定的一个或多个标准,则返回结果“TRUE”。否则,返回结果“FALSE”。
在基于输出的模型中,来自脚本引擎452的结果“TRUE”是事务有效性的条件之一。通常,还必须满足由协议引擎451评估的一个或多个进一步协议级条件;例如,Txj的输入中所指定的数字资产的总数额不超过其输出中指向的总数额,并且Txi的指向输出尚未被另一有效事务花费。协议引擎451评估来自脚本引擎452的结果以及一个或多个协议级条件,并且只有当它们都为TRUE时,协议引擎才核实事务Txj有效。协议引擎451将事务是否有效的指示输出到应用级决策引擎454。只有在Txj确实有效的条件下,决策引擎454才可以选择同时控制共识模块455C和传播模块455P,以执行其就Txj.的相应区块链相关功能。这包括共识模块455C,向节点的相应有序事务集154添加Txj,用于并入区块151中;以及传播模块455P,将Txj转发到网络106中的另一个区块链节点104。可选地,在实施例中,应用级决策引擎454可以在触发这些函数中的一个或两个函数之前应用一个或多个附加条件。例如,决策引擎可以只选择在事务有效且预留足够事务费用的条件下发布事务。
此外,还应当注意的是,在本文中,术语“TRUE”和“FALSE”不一定限于返回仅以单个二进制数(位)形式表示的结果,尽管这确实是一种可能的实现方式。更通俗地说,“TRUE”可以指指示成功或肯定结果的任何状态,而“FALSE”可以指指示不成功或不肯定结果的任何状态。例如,在基于账户的模型中,可以对签名的隐式协议级核实和智能合约的附加肯定输出的组合来指示结果为“TRUE”(如果两个单独的结果均为TRUE,则认为总体结果为TRUE)。
结论
一旦给出本文的公开内容,所公开技术的其它变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。
例如,上面的一些实施例已经根据比特币网络106、比特币区块链150和比特币节点104进行了描述。然而,应当理解的是,比特币区块链是区块链150的一个特定示例,并且上述描述通常可以应用于任何区块链。也就是说,本发明决不限于比特币区块链。更一般地,以上对比特币网络106、比特币区块链150和比特币节点104的任何引用可以分别参考区块链网络106、区块链150和区块链节点104来替换。区块链、区块链网络和/或区块链节点可以共享如上所述的比特币区块链150、比特币网络106和比特币节点104的部分或全部所述特性。
在本公开的优选实施例中,区块链网络106是比特币网络,并且比特币节点104至少执行对区块链150的区块151进行创建、发布、传播和存储中的所有所述功能。不排除可能存在仅执行这些功能中的一个或部分功能但不是全部功能的其它网络实体(或网络元件)。也就是说,网络实体可以执行传播和/或存储区块的功能,而不创建和发布区块(请记住,这些实体不被认为是优选的比特币网络106的节点)。
在本公开的其他实施例中,区块链网络106可以不是比特币网络。在这些实施例中,不排除节点可以执行对区块链150的区块151进行创建、发布、传播和存储中的至少一个或部分功能但不是所有功能。例如,在这些其它区块链网络上,“节点”可用于指被配置为创建和发布区块151但不存储和/或传播这些区块151到其它节点的网络实体。
甚至更通俗地说,上面对术语“比特币节点”104的任何引用可以用术语“网络实体”或“网络元件”代替,其中这样的实体/元件被配置为执行对区块进行创建、发布、传播和存储中的一些或全部角色。这种网络实体/元件的功能可以在硬件中实现,方法与上面参照区块链节点104所述的方式相同。
枚举语句
应当理解的是,上述实施例仅通过示例的方式进行描述。更通俗地说,可根据下述任何一个或多个语句提供一种方法、装置或程序。
在语句1(替代措辞1a至1h)中,第一实体可以是爱丽丝,并且/或者第二实体可以是鲍勃,这些实体也可以是爱丽丝/鲍勃授权或指示代表他们行事的实体。第三实体可以是卡罗尔。在向鲍勃发送请求之前,爱丽丝可以将鲍勃请求的变型保密。下面针对2个语句中的一个语句的任何特征可以并入语句1a至语句1h的任何一个或多个其他替代措辞中。在以下语句中,术语“请求”可以替换为“指示”。
语句1(包括替代措辞语句1a至语句1.h):
1.a可以提供一种计算机实现的方法,所述方法包括以下步骤:
由第一实体向第二实体,请求基于部分数据(D)的多个子部分中的至少一个子部分的变型计算的默克尔树(T')的根值(R');
以及/或者,
从第二实体向第一实体,提供基于部分数据(D)的多个子部分中的至少一个子部分的变型计算的默克尔树(T')的根值(R')。
1.b附加地或替代地,可以提供一种(计算机实现的)方法,所述方法包括以下步骤:
由第一实体向第二实体,请求基于部分数据(D)的多个子部分中的至少一个子部分的变型计算的默克尔树(T')的根值(R')。
1.c附加地或替代地,可以提供一种(计算机实现的)方法,所述方法包括以下步骤:
从第二实体向第一实体,提供基于部分数据(D)的多个子部分中的至少一个子部分的变型计算的默克尔树(T')的根值(R')。
1.d附加地或替代地,可以提供一种(计算机实现的)方法,所述方法包括以下步骤:
从第二实体向第一实体,提供基于部分数据(D)的多个子部分中的至少一个子部分的变型计算的默克尔树(T')的根值(R');以及
从所述第二实体和/或被授权代表所述第二实体的一方,接收基于所述子部分中的至少一个子部分的变型计算的默克尔树(T”)的根值(R')。
1.e附加地或替代地,可以提供一种(计算机实现的)方法,所述方法包括以下步骤:
从第一实体向第二实体,发送部分数据D;
从所述第一实体或第三实体向所述第二实体,发送请求,以基于所述部分数据的修改版本来计算挑战的输出;
由所述第一实体或第三实体,检查所述第二实体计算的所述输出是否与所述第一实体或所述第三实体针对同一挑战计算的输出匹配;
优选地,其中所述方法还包括以下各项中的一项或多项:
i)由所述第一方或第三方,存储一个或多个子部分中的至少一个、一些或全部子部分;
ii)由第一实体,选择或以其他方式识别部分数据(D)的至少一个子部分;
iii)由所述第一实体和/或第三实体,将所述至少一个子部分和/或至少一个操作对所述第二实体保密;
iv)计算所述挑战的所述输出包括以下步骤:
通过对所述部分数据的至少一个子部分执行至少一个操作来计算所述部分数据的修改版本,所述至少一个子部分在所述请求中指定;以及
计算表示所述部分数据的所述修改版本的默克尔树的根值;
v)检查步骤包括检查所述第二实体计算的所述根值是否与所述第一实体或所述第三实体计算的根值匹配。
1.f附加地或替代地,可以提供一种验证、备份、恢复和/或维护部分数据D的(计算机实现的)方法,所述方法包括以下步骤:
由第二实体,存储所述部分数据;
由第一实体或第三实体,通过将所述第二实体计算的挑战输出与所述第一实体和/或所述第三实体计算的挑战输出进行比较来执行验证检查;
其中计算所述挑战输出包括:
通过对所述部分数据的至少一个子部分执行至少一个操作来计算所述部分数据的修改版本,所述至少一个子部分在所述请求中指定;以及
计算表示所述部分数据的所述修改版本的默克尔树的根值;
优选地,其中所述方法包括以下各项中的至少一项:
从所述第一实体向所述第二实体发送所述部分数据D;
从所述第一实体或所述第三实体向所述第二实体,发送请求,以基于所述部分数据的修改版本来计算挑战的输出;
由所述第一实体或所述第三实体,检查所述第二实体计算的所述输出是否与所述第一实体或所述第三实体针对同一挑战计算的输出匹配;
所述至少一个子部分是从所述多个子部分中识别和/或选择的子部分集(M)中的元素;以及所述子部分集(M)被识别为使得允许使用最少的计算次数来计算根值(R')。
1.g附加地或替代地,可以提供一种(计算机实现的)方法,所述方法包括以下步骤:
由数据存储器从数据提供者或代表所述数据提供者,接收对默克尔树的根值的请求,所述请求针对所述数据存储器、在所述数据存储器处或代表所述数据存储器存储的部分数据的修改(即,变化的)版本。
优选地,所述数据的所述修改版本由所述数据提供者或代表所述数据提供者指定,并且所述数据提供者可以指定所述数据存储器在计算所述默克尔树的所述根值之前对所述数据的一个或多个段(子部分)进行的一个或多个修改。所述数据存储器可以称为第二实体。所述数据提供者可以称为第一实体。所述一个或多个修改可以称为一个或多个变型。所述请求可以包括请求或指示以a)修改所述数据的一个或多个子部分以及/或者b)计算所述根值。
1.h附加地或替代地,可以提供一种(计算机实现的)方法,所述方法包括以下步骤:
由数据提供者或代表数据提供者向数据存储者/由数据存储者的数据提供者或代表数据存储者的数据提供者,请求默克尔树的根值,所述请求针对由所述数据存储者、在所述数据存储者处或代表所述数据存储者存储的部分数据的修改(即,变化的)版本。
优选地,所述数据的所述修改版本由所述数据提供者或代表所述数据提供者指定,并且所述数据提供者可以指定所述数据存储器在计算所述默克尔树的所述根值之前对所述数据的一个或多个段(子部分)进行的一个或多个修改。所述数据存储器可以称为第二实体。所述数据提供者可以称为第一实体。所述一个或多个修改可以称为一个或多个变型。请求所述根值的步骤可以包括请求a)修改所述数据的一个或多个子部分以及/或者b)计算所述根值。
以下一个或多个语句可以应用于语句1a至语句1h中的任何语句。下面使用的短语“语句1”意味着“语句1a至语句1h中的任何一个或多个语句”。
语句2:根据语句1所述的方法,其中通过以下方式执行或提供所述至少一个子部分的所述变型:
i)由所述第二实体或代表所述第二实体;以及/或者
ii)使用由所述第一实体指定的至少一个操作;以及/或者
iii)通过对所述至少一个子部分使用至少一个操作(f)来产生输出(Y);
iv)通过使用所述至少一个子部分作为至少一个操作(f)的操作数或输入;
v)通过使用逐位、逻辑、数学或加密操作。
术语“操作(operation)”旨在包括产生值的转换、变化或处理版本的任何函数、过程、流程、子例程或方法。所述子部分可以由该操作用作一个或多个操作数(operand)或某种输入。
语句3:根据语句1或2所述的方法,其中:
i)所述部分数据(D)作为数据块(B)由所述第二实体存储和/或提供给所述第二实体,所述数据块包括所述至少一个子部分;以及/或者
ii)所述第一实体是所述部分数据的所有者、创建者、控制者、管理者、处理者和/或管理员;以及/或者
iii)所述第二实体是存储服务提供者。
语句4:根据前述任一项语句所述的方法,其中所述至少一个子部分是:
i)由所述第一实体识别的;以及/或者
ii)由所述第一实体从所述多个子部分中识别的一个或多个子部分的集合(M)中的元素;以及/或者
iii)所述部分数据(D)的样本;以及/或者
iv)能通过标识符来识别,所述标识符在所述多个子部分和/或所述一个或多个子部分的集合(M)中是唯一的。
语句5:根据前述任一项语句所述的方法,所述方法包括以下步骤:
i)由所述第二实体将所述部分数据(D)存储在存储资源中;
ii)由所述第一实体从所述第二实体,接收所述根值(R');和/或,
iii)将从所述第二实体接收的所述根值(R')与由所述第一实体计算的预先计算的根值进行比较。
语句6:根据前述任一项语句所述的方法,其中所述方法包括:
i)由所述第二实体或代表所述第二实体,存储所述部分数据(D),优选地,将所述部分数据存储在链下存储资源中;
ii)存储数据块(B)的头部(H),所述数据块包括区块链上的事务(Tx)中的所述部分数据(D)。
语句7:根据前述任一项语句所述的方法,其中所述方法包括以下各项中的一项或两项:
i)响应于对从所述第二实体向第一实体提供的所述根值的比较而触发动作,优选地,其中所述动作是传输信号或电子通信或者解锁资源;以及/或者
ii)将从所述第二实体接收的根值(R')与所述第一实体计算的预先计算的根值进行比较,并且如果所述接收的根值(R')与所述预先计算的根值匹配,则认为(对所述部分数据(D)的)验证成功,或者如果所述接收的根值(R')与所述预先计算的根值不匹配,则认为对所述部分数据(D)的验证失败。
语句8:根据前述任一项语句所述的方法,所述方法还包括:
由所述第一实体向所述第二实体,请求基于所述至少一个子部分的进一步变型计算的另一默克尔树的根值;以及/或者
从所述第二实体向所述第一实体,提供基于所述至少一个子部分的进一步变型计算的另一默克尔树的根值。
语句9:根据前述任一项语句所述的方法,其中:
所述至少一个子部分是从所述多个子部分中识别的子部分集合(M)中的元素;以及
所述子部分集合(M)被识别为使得允许使用最少的计算次数来计算所述根值(R')。
语句10:根据前述任一项语句所述的方法,其中:
所述至少一个子部分是从所述多个子部分中识别的子部分集合(M)中的元素;
所述方法还包括以下步骤:
由所述第一实体,基于所述子部分集合(M)的多个变型来确定多个预定挑战。
所述挑战可以是或可以包括计算所选择/预定操作的输出,其中所选择的操作可以被布置为对一个或多个子部分进行操作或以其他方式使用一个或多个子部分来产生基于或依赖于所述子部分的结果。
语句11:根据前述任一项语句所述的方法,其中所述方法包括:验证所述部分数据(D)的存在、状态、完整性、一致性、持久性、存储和/或安全性;
附加地/替代地,其可以是一种方法,用于执行以下项目中的一个或多个:数据备份和/或恢复、数据存档、文件系统转储和/或数据版本化活动。
语句12:一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或多个存储器单元;以及
处理装置,所述处理装置包括一个或多个处理单元;
其中所述存储器存储被布置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时执行根据前述任一项语句所述的方法。
语句13:一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或多个处理器上运行时,执行根据语句1至11中任一项所述的方法。
Claims (13)
1.一种计算机实现的方法,所述方法包括以下步骤:
i)由第一实体向第二实体,请求基于部分数据(D)的多个子部分中的至少一个子部分的变型计算的默克尔树(T')的根值(R');
或者
从第二实体向第一实体,提供基于部分数据(D)的多个子部分中的至少一个子部分的变型计算的默克尔树(T')的根值(R');以及
ii)由所述第一实体,将从所述第二实体接收的根值(R')与由所述第一实体计算的预先计算的根值进行比较,如果所述接收的根值(R')与所述预先计算的根值匹配,则认为对所述部分数据(D)的验证成功,或者如果所述接收的根值(R')与所述预先计算的根值不匹配,则认为对所述部分数据(D)的验证失败。
2.根据权利要求1所述的方法,其中通过以下方式执行或提供所述至少一个子部分的所述变型:
i)由所述第二实体或代表所述第二实体;以及/或者
ii)使用由所述第一实体指定的至少一个操作;以及/或者
iii)通过对所述至少一个子部分使用至少一个操作(f)来产生输出(Y);以及/或者
iv)通过使用所述至少一个子部分作为至少一个操作(f)的操作数或输入;以及/或者
v)通过使用逐位、逻辑、数学或加密操作。
3.根据权利要求1或2所述的方法,其中:
i)所述部分数据(D)作为数据块(B)由所述第二实体存储和/或提供给所述第二实体,所述数据块包括所述至少一个子部分;以及/或者
ii)所述第一实体是所述部分数据的所有者、创建者、控制者、管理者、处理者和/或管理员;以及/或者
iii)所述第二实体是存储服务提供者。
4.根据前述任一项权利要求所述的方法,其中所述至少一个子部分是:
i)由所述第一实体识别的;以及/或者
ii)由所述第一实体从所述多个子部分中识别的一个或多个子部分的集合(M)中的元素;以及/或者
iii)所述部分数据(D)的样本;以及/或者
iv)可通过所述多个子部分和/或所述一个或多个子部分的集合(M)中唯一的标识符来识别的。
5.根据前述任一项权利要求所述的方法,所述方法包括以下步骤中的一个或多个步骤:
i)由所述第二实体将所述部分数据(D)存储在存储资源中;
ii)由所述第一实体从所述第二实体,接收所述根值(R');
iii)将从所述第二实体接收的所述根值(R')与由所述第一实体计算的预先计算的根值进行比较。
6.根据前述任一项权利要求所述的方法,其中所述方法包括以下各项中的一项或两项:
i)由所述第二实体或代表所述第二实体,存储所述部分数据(D),优选地,将所述部分数据存储在链下存储资源中;
ii)存储数据块(B)的头部(H),所述数据块包括区块链上的事务(Tx)中的所述部分数据(D)。
7.根据前述任一项权利要求所述的方法,其中所述方法包括以下各项中的一项或多项:
响应于对从所述第二实体向第一实体提供的所述根值的比较而触发动作,优选地,其中所述动作是传输信号或电子通信或者解锁资源。
8.根据前述任一项权利要求所述的方法,所述方法还包括:
由所述第一实体向所述第二实体,请求基于所述至少一个子部分的进一步变型计算的另一默克尔树的根值;以及/或者
从所述第二实体向所述第一实体,提供基于所述至少一个子部分的进一步变型计算的另一默克尔树的根值。
9.根据前述任一项权利要求所述的方法,其中:
所述至少一个子部分是从所述多个子部分中识别的子部分集合(M)中的元素;以及
所述子部分集合(M)被识别为使得允许使用最少的计算次数来计算所述根值(R')。
10.根据前述任一项权利要求所述的方法,其中:
i)所述至少一个子部分是从所述多个子部分中识别的子部分集合(M)中的元素;以及/或者
ii)所述方法还包括以下步骤:
由所述第一实体,基于所述子部分集合(M)的多个变型来确定多个预定挑战。
11.根据前述任一项权利要求所述的方法,其中所述方法包括:
i)验证所述部分数据(D)的存在、状态、完整性、一致性、持久性、存储和/或安全性;以及/或者
ii)执行数据备份和/或恢复、数据存档、文件系统转储和/或数据版本化活动。
12.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或多个存储器单元;以及
处理装置,所述处理装置包括一个或多个处理单元;
其中所述存储器存储被布置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时执行根据前述任一项权利要求所述的方法。
13.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或多个处理器上运行时,执行根据权利要求1至11中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB202201533 | 2022-02-07 | ||
GB2201533.3 | 2022-02-07 | ||
PCT/EP2023/051529 WO2023148042A1 (en) | 2022-02-07 | 2023-01-23 | Blockchain based privacy enhanced outsourced data storage |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118679708A true CN118679708A (zh) | 2024-09-20 |
Family
ID=85076040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202380020587.XA Pending CN118679708A (zh) | 2022-02-07 | 2023-01-23 | 基于区块链的隐私增强外包数据存储 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN118679708A (zh) |
TW (1) | TW202334847A (zh) |
WO (1) | WO2023148042A1 (zh) |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BE1023199B1 (fr) | 2015-09-21 | 2016-12-19 | Laboratoire D'analyses Medicales Roman Pais Sc | Procede de dosage d'acides gras a chaînes courtes volatils |
CN108024739A (zh) | 2015-09-23 | 2018-05-11 | 皇家飞利浦有限公司 | 脉搏血氧计建议另一测试 |
JP6499952B2 (ja) | 2015-09-28 | 2019-04-10 | 株式会社日立製作所 | 水処理システム |
GB2561728B (en) | 2016-02-23 | 2021-09-22 | Nchain Holdings Ltd | Determining a common secret for the secure exchange of information and hierarchical deterministic cryptographic keys |
AU2017349752B2 (en) | 2016-10-28 | 2022-11-10 | nChain Holdings Limited | Systems and methods for implementing deterministic finite automata (DFAS) via a blockchain |
CN109345388B (zh) * | 2018-09-20 | 2020-09-08 | 百度在线网络技术(北京)有限公司 | 区块链智能合约验证方法、装置及存储介质 |
CN110009334B (zh) * | 2018-11-07 | 2020-04-28 | 阿里巴巴集团控股有限公司 | 一种构建梅克尔树、简单支付验证方法及装置 |
KR102452250B1 (ko) * | 2019-03-18 | 2022-10-07 | 한국전자통신연구원 | 오프체인 데이터 저장 방법 및 장치 |
US11201747B2 (en) * | 2019-07-15 | 2021-12-14 | Sap Se | Federated data management between partner systems |
US11468044B2 (en) * | 2019-11-25 | 2022-10-11 | Visa International Service Association | Optimizations for verification of interactions system and method using probability density functions |
CN111736963B (zh) * | 2020-06-08 | 2022-10-11 | 中国科学院计算技术研究所 | 一种用于无主链多分片区块链的事务处理系统及方法 |
-
2023
- 2023-01-23 CN CN202380020587.XA patent/CN118679708A/zh active Pending
- 2023-01-23 WO PCT/EP2023/051529 patent/WO2023148042A1/en active Application Filing
- 2023-02-02 TW TW112103654A patent/TW202334847A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
TW202334847A (zh) | 2023-09-01 |
WO2023148042A1 (en) | 2023-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2023508088A (ja) | ブロックチェーンオーバーレイネットワークへの鍵のマッピング | |
CN116508291A (zh) | 默克尔证明实体 | |
CN116547945A (zh) | 默克尔证明实体 | |
CN116157796A (zh) | 警报账户 | |
CN117136527A (zh) | 用于区块链实现的数据应用程序中的签名验证的改进方法和系统 | |
CN117480758A (zh) | 用于验证区块链上的通证的计算机实现的方法和系统 | |
JP2023554148A (ja) | 機密データのブロック | |
CN115885497A (zh) | 数字签名 | |
CN118805360A (zh) | 区块链事务 | |
CN117795516A (zh) | 一种计算机实现的方法和系统 | |
CN117280653A (zh) | 多方区块链地址方案 | |
CN117652124A (zh) | 区块链区块和存在证明 | |
KR20240024113A (ko) | 다중-레벨 블록체인 | |
CN118176694A (zh) | 用于分布式区块链功能的方法和系统 | |
CN118216121A (zh) | 用于分布式区块链功能的方法和系统 | |
CN118302989A (zh) | 签名验证 | |
CN117751550A (zh) | 分层共识 | |
CN116671061A (zh) | 节点版本控制 | |
CN118679708A (zh) | 基于区块链的隐私增强外包数据存储 | |
CN116671064A (zh) | 多重签名事务 | |
CN118901220A (zh) | 证明和验证有序事件序列 | |
CN117678193A (zh) | 区块链区块和存在证明 | |
CN117693926A (zh) | 区块链区块和存在证明 | |
CN118476186A (zh) | 基于签名的原子交换 | |
CN117693923A (zh) | 对区块链事务强制执行条件 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |