首页 / 专利库 / 银行与财务事项 / 数字货币 / 加密货币 / 比特币 / 用于通用计算的区块链

用于通用计算的

阅读:125发布:2020-05-17

专利汇可以提供用于通用计算的专利检索,专利查询,专利分析的服务。并且可以提供一种计算机实现的方法。所述方法可以使用 区 块 链 网络,例如 比特币 网络,来实现。所述计算机实现的方法,包括:i)监视计算任务分配系统,以响应于 请求 者 计算机系统 做出的请求,检测对提议者计算机系统提供的提议者字符串的挑战,所述请求 指定 计算任务以及与所述请求相关联的第一数字资产,所述提议者字符串由所述计算任务的解决方案的散列来表示,所述提议者字符串指定在与所述提议者字符串相关联的提议者交易的输入中引用的第二数字资产;和ii)作为检测到所述挑战的结果,至少:a)通过至少从提供给第一区块链网络的解决方案集合中选择一个解决方案来使用所述第一区块链网络解决所述挑战,所述解决方案集合至少包括所述提议者字符串;和b)至少部分基于所述解决方案,将来自所述第一数字资产和所述第二数字资产的数字资产分配给所述计算任务分配系统的一方或多方。,下面是用于通用计算的专利的具体信息内容。

1.一种计算机实现的方法,包括:
监视计算任务分配系统,以响应于请求计算机系统做出的请求,检测对提议者计算机系统提供的提议者字符串的挑战;所述请求指定计算任务以及与所述请求相关联的第一数字资产;所述提议者字符串由所述计算任务的解决方案的散列来表示;所述提议者字符串指定在与所述提议者字符串相关联的提议者交易的输入中引用的第二数字资产;和作为检测到所述挑战的结果,至少:
通过至少从提供给第一链网络的解决方案集合中选择一个解决方案来使用所述第一区块链网络解决所述挑战,所述解决方案集合至少包括所述提议者字符串;和至少部分基于所述解决方案,将来自所述第一数字资产和所述第二数字资产的数字资产分配给所述计算任务分配系统的一方或多方。
2.根据权利要求1所述的计算机实现的方法,其中,至少部分基于与所述提议者字符串相关联的时间戳,从所述解决方案集合中选择所述提议者字符串。
3.根据权利要求1或2所述的计算机实现的方法,其中,所述挑战向所述计算任务指定挑战者字符串的散列,并且所述解决方案集合包括所述挑战者字符串。
4.根据权利要求1至3中任一项所述的计算机实现的方法,其中,所述计算任务分配系统实现为与工作量证明区块链网络相关联的网络服务。
5.根据权利要求1至3中任一项所述的计算机实现的方法,其中,所述计算任务分配系统在工作量证明区块链网络上实现。
6.根据权利要求1至5中任一项所述的计算机实现的方法,其中,所述第一区块链网络是权益证明区块链网络。
7.根据权利要求1至6中任一项所述的计算机实现的方法,其中,所述提议者字符串表明对于所述计算任务没有解决方案。
8.根据权利要求1至7中任一项所述的计算机实现的方法,其中,所述挑战表明对于所述计算任务没有解决方案。
9.根据权利要求1至8中任一项所述的计算机实现的方法,其中,所述数字资产包括由所述提议者向所述第一区块链网络提供的存款。
10.根据权利要求1至9中任一项所述的计算机实现的方法,其中,从在与所述挑战相关联的交易的输入中引用的所述第一数字资产、所述第二数字资产和第三数字资产分配所述数字资产。
11.根据权利要求1至10中任一项所述的计算机实现的方法,其中,解决所述挑战包括执行所述解决方案集合的一个或多个解决方案的对应的验证操作集合。
12.根据权利要求1至11中任一项所述的计算机实现的方法,其中,解决所述挑战包括执行仲裁过程,所述仲裁过程至少包括:
从所述提议者接收所述解决方案集合的提议者字符串的中间结果的第一集合;
从挑战者接收所述解决方案集合的挑战者字符串的中间结果的第二集合;
比较所述中间结果的第一集合和所述中间结果的第二集合,以确定所述提议者字符串和所述挑战者字符串岔开的位置;和
至少部分基于以下因素选择解决方案:
使用所述第一区块链在所述位置重复所述中间结果的第一集合的一个或多个计算;和使用所述第一区块链在所述位置重复所述中间结果的第二集合的一个或多个计算。
13.根据权利要求1至12中任一项所述的计算机实现的方法,其中,解决所述挑战至少包括通过至少以下方式识别所述解决方案集合中的不正确的解决方案:
从所述提议者接收所述解决方案集合的提议者字符串的中间结果的第一集合;
从挑战者接收所述解决方案集合的挑战者字符串的中间结果的第二集合;
分析所述中间结果的第一集合和所述中间结果的第二集合,以识别所述提议者字符串和所述挑战者字符串岔开的位置;和
至少部分基于所述分析来识别所述不正确的解决方案。
14.一种系统,包括:
处理器;以及
包括可执行指令的存储器
作为所述处理器执行的结果,所述可执行指令使得所述系统执行权利要求1至13中任一项所述的计算机实现的方法。
15.一种存储可执行指令的非暂时性计算机可读存储介质,作为由计算机系统的处理器执行的结果,所述可执行指令使得所述计算机系统至少执行权利要求1至13中任一项所述的计算机实现的方法。

说明书全文

用于通用计算的

技术领域

[0001] 本发明主要涉及分布式系统,具体涉及用于提高分布式系统中交易的可靠性的方法和系统。本发明特别适合于,但不限于,用于提高计算任务分配系统中的计算可靠性。

背景技术

[0002] 在本文中,使用术语“区块链(Blockchain)”来包括所有形式的电子的、基于计算机的分布式分类账(Distributed Ledgers)。这些包括基于共识的区块链和交易链技术、许可及未许可的分类账、共享分类账及其变型。虽然也已经提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币分类账(Bitcoin ledger)。虽然出于方便和说明的目的,“比特币”在本文中可称为本发明中描述的技术的有用应用,但是比特币仅是本发明中所述技术可以应用到的许多应用中的一个。但是,应该注意的是,本发明不限于与比特币区块链一起使用;可选的区块链实现和协议,包括非商业应用,也落入本发明的范围内。例如,本发明中描述的技术将为使用区块链实现和其他加密货币提供优势,所述加密货币在区块链的验证和/或加密货币交易的验证方面具有与比特币类似的限制,无论是否发生加密货币的交换。
[0003] 区块链是基于共识的电子分类帐,其被实现为基于计算机的、去中心化的分布式系统,该系统由区块组成,区块又可以由交易组成,并且在一个实施例中,该系统包括附加信息。在一些示例中,“区块链交易”是指对包括数据和条件集合的字段值的结构化集合进行编码的输入消息,满足条件集合是将字段集写入区块链数据结构的先决条件。区块链也可称为点对点(peer-to-peer)电子分类帐,因为没有用于管理分类帐的集中式系统,并且可以使用分布式系统的节点之间的共识协议来验证分类帐的交易。就比特币而言,每个交易是对区块链系统中参与者之间的数字资产的控制转移进行编码的数据结构,并且包括至少一个输入和至少一个输出。每个区块包含前一区块的散列(hash),如此,这些区块被链接在一起,以创建一个永久的、不可更改的所有交易的记录,这些交易自区块链诞生之始写入区块链。交易包含小程序,这些小程序称为脚本,嵌入至所述交易的输入和输出中,这些小程序指定了如何以及由谁来访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。应该注意的是,基于堆栈的脚本语言可以指支持各种基于堆栈或面向堆栈的执行模型和操作的编程语言,但是在某些情况下并不仅限于严格的后进先出(Last-in-First-out,简称LIFO)方式的操作。例如,基于堆栈的脚本语言可以支持将堆栈中的第n个项目复制或移动到顶部的操作(例如,在比特币中分别为OP_PICK和OP_ROLL)。可以将使用基于堆栈的脚本语言编写的脚本压入逻辑堆栈,该逻辑堆栈可以使用任何适当的数据结构(例如向量、列表或堆栈)实现。
[0004] 如本文所使用的,“数字资产”可以是由区块链管理的资源的单位。在一些实施例中,例如使用比特币,资源是未代币化的,因此,例如,在区块链中标识的资源没有标识符,而是通过生成记录在区块链的有效交易的能来证明对资源的控制。但是请注意,一些区块链实现可能使用代币化资源,例如,可以使用记录在区块链上的信息来明确识别资源。尽管在一些实施例中,数字资产可以用作加密货币,但是可以预期,在实施例中,数字资产可以附加地或替代地在其他环境中使用。注意,本发明虽然适用于对数字资产的控制,但是本质上是技术性的,并且可以在利用区块链数据结构而不一定涉及数字资产转移的其他环境中使用。本发明中使用的“数字资产”可以指一个或多个数字资产。例如,一个交易可能有多个输入,每个输入中都可以代表不同的数字资产。在此示例中,控制权被转移的数字资产可以是多个数字资产的集合,该集合本身是数字资产。类似地,交易可以细分和/或组合所述多个输入以产生一个或多个输出,使得例如输入的数量和输出的数量可能不同。
[0005] 为了将交易写入区块链,必须对该交易进行“验证”。有效性可以由节点基于大多数具有区块生成能力的节点使用的公共规则集来确定。例如,在比特币协议中,一些网络节点充当“矿工”,执行工作以确保每个交易有效,无效交易被网络拒绝。在一些示例中,“矿工”是计算系统,所述系统执行工作以确保每个交易有效,无效交易被网络拒绝。例如,安装在节点上的软件客户端通过执行相关联的定和解锁脚本,在引用未兑现的交易输出(Unredeemed Transaction Outputs,简称UTXO)的交易上执行此验证工作。如果锁定和解锁脚本的执行评估为真(TRUE),并且如果满足某些其他条件,则该交易有效,可将该交易写入区块链。因此,为了将交易写入区块链,该交易:i)由接收交易的节点进行验证(即,如果交易得到验证,则该节点将该交易中继到网络中的其他节点);ii)添加到矿工建造的新区块中;iii)挖掘(即添加到过去交易的公共分类帐中)。
[0006] 近年来,数字企业家已经开始探索使用比特币所基于的加密安全系统和可以存储在区块链上的数据,以实现新系统。如果区块链能够用于不局限于加密货币领域的自动化任务和过程,那么将是非常有利的。这类解决方案能够利用区块链的优势(例如,事件的永久防篡改记录、分布式处理等),同时在其应用中更具通用性。
[0007] 区块链在很大程度上是不可改变的,并且通常可以是匿名的。区块链技术的不可改变且很大程度上匿名的特性在防范用户恶意行为时带来了许多技术挑战。例如,因为构建在包含交易的区块上的多个区块导致交易实际上不可逆,所以退回通常不可用,并且需要新的技术系统来保持交易的完整性。由于区块链技术的去中心化、不信任性质,这些挑战也很困难。也就是说,没有中央方来确保交易的完整性,而是通过技术手段来实现交易的完整性。因此,区块链技术需要提高交易的可靠性。
[0008] 计算任务分配系统中可能存在可靠性挑战。计算任务分配系统是允许链下(Off-Chain)执行昂贵计算的服务。这种计算任务分配系统允许网络中的节点将算法的执行外包给另一个远程节点。然后将算法的结果报告回外包算法操作的节点。接收结果的节点可能不知道结果是否可靠。为了让接收节点确定答案是否正确,接收节点通常需要自己执行算法,这将违背外包的目的。因此,区块链技术需要提高计算任务分配系统中结果的可靠性。

发明内容

[0009] 本发明描述了一个或多个基于区块链的计算机程序的技术方面。基于区块链的计算机程序是记录在区块链交易中的机器可读和可执行程序。基于区块链的计算机程序包括可以处理输入以产生结果的规则,然后可以根据这些结果执行动作。如果锁定脚本可以访问解锁和先前的交易,那么可以利用区块链来启用高度灵活和复杂的基于区块链的计算机程序。当前研究的一个领域是使用基于区块链的计算机程序来执行“智能合约”。与用自然语言编写的传统合约不同,智能合约是设计用来自动执行机器可读合约或协议条款的计算机程序。
[0010] 与区块链利益相关的另一领域是使用“代币(Tokens)”(或“彩色币(Coloured Coins)”)通过区块链来表示和转移现实世界的实体。潜在的敏感或机密项目可以由没有明显意义或价值的代币来表示。因此,代币充当允许从区块链引用现实世界的项目的标识符。
[0011] 因此,希望提供在这些方面的一个或多个方面改进区块链技术的方法和系统。
[0012] 因此,根据本发明,提供了如所附权利要求中定义的方法。
[0013] 因此,根据本发明,可以提供如所附权利要求中定义的计算机实现的方法(和相应的系统)。该方法可描述为使用区块链网络实现计算任务分配系统的方法。所述计算机实现的方法,包括:i)监视计算任务分配系统,以响应于请求者(Requester)计算机系统做出的请求,检测对提议者(Proposer)计算机系统提供的提议者字符串的挑战,所述请求指定计算任务以及与所述请求相关联的第一数字资产,所述提议者字符串由所述计算任务的解决方案的散列来表示,所述提议者字符串指定在与所述提议者字符串相关联的提议者交易的输入中引用的第二数字资产;和ii)作为检测到所述挑战的结果,至少:a)通过从提供给第一区块链网络的解决方案集合中至少选择一个解决方案来使用所述第一区块链网络解决所述挑战,所述解决方案集合至少包括所述提议者字符串;和b)至少部分基于所述解决方案,将来自所述第一数字资产和所述第二数字资产的数字资产分配给所述计算任务分配系统的一方或多方。
[0014] 镜像链(Ghost Chain)可以是临时的区块链。与传统的区块链相反,镜像链可配置为在执行或满足一个或多个标准、目标或指定目的时终止、消失和/或到期。也就是说,镜像链可以是单一目的的区块链,一旦其目的实现,就停止运行。镜像链可以包括第一区块,所述第一区块可称为创始区块,并且可以被创建用于镜像链的部署或者被创建用于镜像链的目的、标准或目标。
[0015] 所述计算机实现的方法还可以包括:与群组中的其他节点合作以构建交易,该交易可转移到该群组,以奖金和提议者存款作为输入,奖金和提议者存款和挑战者存款作为输出,并将该交易提供给挑战者,以添加挑战者存款作为输入。在实施例中,奖金(例如,提议者存款和挑战者存款)是交易中的值,该值用作向另一计算机系统表明可以执行工作的信号,该值表明该工作相对于其他奖金的重要性。在一些实施例中,奖金是数字资产。在实施例中,奖金一旦被记录在区块链上的第一交易中,就使得区块链网络中的另一计算机系统能够使第二交易被写入区块链(例如,通过作为第二交易的解锁脚本的执行结果成功地解锁第一交易的锁定脚本)。在构建挑战者交易之前,可以将奖金和提议者存款置于群组的控制之下。例如,当在提议者对请求的解决方案做出承诺之后的一段时间内检测到挑战时,可以将奖金和提议者存款置于群组的专有控制之下。
[0016] 至少部分基于与所述提议者字符串相关联的时间戳,可以从所述解决方案集合中选择所述提议者字符串。
[0017] 所述挑战可以为所述计算任务指定挑战者字符串的散列,并且所述解决方案集合包括所述挑战者字符串。
[0018] 所述计算任务分配系统可以实现为与工作量证明(proof-of-work)区块链网络相关联的网络服务。
[0019] 所述计算任务分配系统可以在工作量证明区块链网络上实现。
[0020] 所述第一区块链网络可以是权益证明(proof-of-stake)区块链网络。
[0021] 所述提议者字符串可以表明对于所述计算任务没有解决方案。
[0022] 所述挑战可以表明对于所述计算任务没有解决方案。
[0023] 所述数字资产可以包括由所述提议者向所述第一区块链网络提供的存款。
[0024] 可以从在与所述挑战相关联的交易的输入中引用的所述第一数字资产、所述第二数字资产和第三数字资产分配所述数字资产。
[0025] 解决所述挑战可以包括执行所述解决方案集合的一个或多个解决方案的对应的验证操作集合。
[0026] 解决所述挑战可以包括执行仲裁过程,所述仲裁过程至少包括从所述提议者接收所述解决方案集合的提议者字符串的中间结果的第一集合。附加地或替代地,解决所述挑战可以包括从挑战者接收所述解决方案集合的挑战者字符串的中间结果的第二集合。附加地或替代地,解决所述挑战可以包括比较所述中间结果的第一集合和所述中间结果的第二集合,以确定所述提议者字符串和所述挑战者字符串岔开的位置。附加地或替代地,解决所述挑战可以包括至少部分基于以下因素选择解决方案:使用所述第一区块链在所述位置重复所述中间结果的第一集合的一个或多个计算,和/或使用所述第一区块链在所述位置重复所述中间结果的第二集合的一个或多个计算。
[0027] 解决所述挑战至少可以包括至少通过从所述提议者接收所述解决方案集合的提议者字符串的中间结果的第一集合来识别所述解决方案集合中的不正确的解决方案。附加地或替代地,解决所述挑战可以包括从挑战者接收所述解决方案集合的挑战者字符串的中间结果的第二集合。附加地或替代地,解决所述挑战可以包括分析所述中间结果的第一集合和所述中间结果的第二集合,以识别所述提议者字符串和所述挑战者字符串岔开的位置。附加地或替代地,解决所述挑战可以包括至少部分基于所述分析来识别所述不正确的解决方案。在计算机实现的方法的一些实现中,部署镜像链来解决挑战可以包括在镜像链上执行与请求相关联的任务,以确定一个或多个提议者字符串和/或一个或多个挑战者字符串的正确解决方案。
[0028] 在计算机实现的方法的一些实现中,部署镜像链来解决挑战可以包括在镜像链上执行任务的一部分,以确定提议者或挑战者之一在与请求相关联的任务的中间步骤中出错。
[0029] 在计算机实现的方法的一些实现中,终止镜像链可以包括向工作量证明区块链网络传输与挑战的解决方案有关的信息。
[0030] 在计算机实现的方法的一些实现中,终止镜像链可以包括构造终端区块,该终端区块包括对在签署最终交易期间创建的区块应得的挖掘分配的记录。
[0031] 根据本发明,可以提供一种电子设备。所述电子设备包括接口设备、连接到所述接口设备的处理器以及连接到所述处理器的存储器。所述存储器在其上存储了计算机可执行指令,所述计算机可执行指令在被执行时将所述处理器配置为执行本文所述的方法。
[0032] 根据本发明,可以提供一种计算机可读存储介质。所述计算机可读存储介质包括计算机可执行指令,所述计算机可执行指令在被执行时将处理器配置为执行本文所述的方法。附图说明
[0033] 参考本文所述的实施例,本发明的这些和其他方面将变得清晰并得以阐明。现在将仅通过示例并参考附图来描述本发明的实施例,其中:
[0034] 图1示出了示例区块链网络的框图
[0035] 图2示出了可以充当区块链网络中的节点的示例电子设备的框图;
[0036] 图3示出了示例环境的框图,其中可以生成任务请求,并且可以为与区块链网络相关联的计算任务分配系统提出解决方案;
[0037] 图4示出了示例环境的框图,其中可以为与区块链网络相关联的计算任务分配系统生成与任务请求相关联的区块链交易和所提出的解决方案;
[0038] 图5示出了示例环境的框图,其中可以为与区块链网络相关联的计算任务分配系统生成与对所提出的解决方案的挑战相关联的区块链交易;
[0039] 图6示出了示例环境的框图,其中可以为与区块链网络相关联的计算任务分配系统解决对所提出的解决方案的挑战;
[0040] 图7示出了示例环境的框图,其中可以为与区块链网络相关联的计算任务分配系统不接收对所提出的解决方案的挑战;
[0041] 图8示出了用于与区块链网络相关联的计算任务分配系统的任务的所提出的解决方案和挑战的解决示例过程的流程图的第一部分;
[0042] 图9示出了用于与区块链网络相关联的计算任务分配系统的任务的所提出得解决方案和挑战的解决示例过程的流程图的第二部分;
[0043] 图10示出了用于与区块链网络相关联的计算任务分配系统的议会的发起示例过程的流程图;
[0044] 图11示出了用于与区块链网络相关联的计算任务分配系统的议会的加入示例过程的流程图;
[0045] 图12示出了用于与区块链网络相关联的计算任务分配系统的数字资产的没收示例过程的流程图;
[0046] 图13示出了用于与区块链网络相关联的计算任务分配系统的私钥份额分配的更新示例过程的流程图;
[0047] 图14示出了用于与区块链网络相关联的计算任务分配系统的私钥份额分配的更新示例过程的流程图;
[0048] 图15示出了用于与区块链网络相关联的计算任务分配系统的存款的返还示例过程的流程图;
[0049] 图16示出了示例环境的框图,其中可以为与区块链网络相关联的计算任务分配系统实现第一和第二区块链网络;
[0050] 图17示出了用于提供与区块链网络相关联的双向锚定(Two-way Peg)或计算任务分配系统的示例过程的流程图;
[0051] 图18示出了示例环境的框图,其中可以为与区块链网络相关联的计算任务分配系统实现区块链和镜像链;
[0052] 图19示出了用于请求完成与区块链网络相关联的计算任务分配系统的任务的示例过程的流程图;
[0053] 图20示出了用于与区块链网络相关联的计算任务分配系统的任务的解决方案的提出示例过程的流程图;
[0054] 图21示出了用于挑战与区块链网络相关联的计算任务分配系统的任务的解决方案的示例过程的流程图;
[0055] 图22示出了用于仲裁与区块链网络相关联的计算任务分配系统的任务的解决方案的挑战者的示例过程的流程图;和
[0056] 图23示出了可以实现各种实施例的示例环境的框图。

具体实施方式

[0057] 首先参考图1,图1以框图形式示出了与区块链相关联的示例区块链网络100。区块链网络可以是公共区块链网络,所述网络是一个点对点的开放式成员网络,任何人都可以加入,无需邀请,无需经其他成员同意。运行区块链协议实例的分布式电子设备可以加入区块链网络100,区块链网络100在该区块链协议下运行。这种分布式电子设备可以称为节点102。例如,区块链协议可以是比特币协议。
[0058] 运行区块链协议并形成区块链网络100的节点102的电子设备可以是各种类型的,包括例如计算机(如台式计算机、笔记本电脑平板电脑服务器)、移动设备(如智能手机)、可穿戴计算机(如智能手表)、或其他电子设备。
[0059] 区块链网络100的节点102可以使用合适的通信技术彼此连接,所述通信技术可以包括有线和无线通信技术。这种通信遵循与区块链相关的协议。例如,在区块链是比特币区块链的情况下,可以使用比特币协议。
[0060] 节点102维护区块链上所有交易的全局分类账。因此,所述全局分类账可以是分布式分类账。每个节点102可以存储全局分类账的完整副本或部分副本。对于通过工作量证明(Proof-of-Work)保护的区块链,节点102影响全局分类账的交易可以由其他节点102验证,从而保持全局分类账的有效性。当区块链是基于工作量证明的区块链时,也可以通过检查与区块一起提交的工作量证明来验证区块。
[0061] 至少一些节点102充当区块链网络100的挖掘节点104。图1的区块链网络100可以是工作量证明区块链,其中挖掘节点104执行昂贵的计算以便有利于区块链上的交易。例如,工作量证明区块链可能要求矿工解决加密问题。在比特币中,挖掘节点104找到随机数,使得区块头用SHA-256散列成小于由当前难度定义的值的数字。工作量证明算法所需的散列能力意味着,在交易的顶部挖掘出一定数量的区块后,该交易可视为实际上不可逆的。解决加密问题的挖掘节点104为区块链创建新区块,并将该新区块广播到其他节点102。其他节点102验证挖掘节点104实际上已经解决了加密问题,因此,在接受该区块应该被添加到区块链之前已经展示了足够的工作量证明。可以通过节点102的共识将该区块添加到区块链(即,添加到分布式全局分类账)。
[0062] 由挖掘节点104创建的区块可以包括已经由节点102广播到区块链的交易。例如,该区块可以包括从与节点102中的一个相关联的地址到与节点102中的另一个相关联的地址的交易。通过这种方式,该区块充当从一个地址到另一个地址的交易的记录。请求将交易包括在区块中的一方通过使用对应于其公钥的私钥签署请求来证明其被授权发起转移(例如,就比特币而言,转移比特币)。只有有效地签署了请求,才能将转移添加到区块中。
[0063] 就比特币而言,公钥和地址之间存在一对一的对应关系。也就是说,每个公钥都与一个地址相关联。因此,本文提到的向/从公钥转移数字资产(例如,转移到所述公钥)以及向/从与该公钥相关联的地址转移数字资产指的是相同的操作。
[0064] 一些节点102可能不会充当挖掘节点,而可能作为验证节点参与。交易的验证可能涉及检查签名、确认对有效UTXO的引用等。
[0065] 图1的示例包括六个节点102,其中两个作为挖掘节点104参与。实际上,节点102或挖掘节点104的数量可以不同。在许多区块链网络中,节点102和挖掘节点104的数量可以远大于图1所示的数量。
[0066] 如下所述,各种节点102可以合作形成一个群组,本文称为议会(Congress)106。在所示的示例中,三个节点102被示为参加议会106。然而,议会106成员的实际数量可能要大得多。
[0067] 议会106可以是开放式成员群组,当向与议会106相关联的池提交足够的权益时,任何节点102都可以加入该开放式成员群组。例如,节点可以通过转移诸如数字货币(如比特币)、代币或其他权益或价值的数字资产到与议会106相关联的账户来加入议会。加入议会的节点102可以是区块链网络中的任何节点,包括挖掘和非挖掘节点。在议会的至少一些应用中,充当议会成员的节点监视区块链,因为其下载(但不一定保留)完整的区块链。下文将更详细地讨论加入、离开和参加议会106的技术。
[0068] 如下文将更详细描述的,议会成员可以形成临时镜像链网络108。第一区块链网络创建并维护分布式分类账,本文称为镜像链。可以在本文所述的方法中部署镜像链网络108,以验证可靠性或在对响应于请求而生成的提议者字符串(Proposer string)提出挑战时进行仲裁。例如,镜像链网络108可以被部署来验证处理器生成的工作产品的完整性,该工作产品可以是由区块链网络100的节点102提交的工作产品。例如,镜像链网络108可以被部署来仲裁在区块链网络100上生成的算法相关的争议。当一个节点的处理器生成的工作产品的可靠性受到另一个节点的挑战时,可能存在这样的争议。
[0069] 镜像链可能是临时的区块链。与传统的区块链不同,镜像链可以配置为一旦达到本文所述的目的就终止。也就是说,镜像链可能是一个单一目的的区块链,一旦实现其目的就不复存在。镜像链包括第一区块,称为创始区块(Genesis Block),只有当镜像链被部署用于其目的(例如,验证处理器生成的工作产品的完整性)时,才可以创建镜像链。
[0070] 虽然与区块链网络关联的区块链是工作量证明区块链,但镜像链可能是权益证明区块链。基于权益证明的镜像链网络108提供了用于达成共识的替代机制。在权益证明镜像链中,可以通过权益证明而非工作量证明来保护区块链。在权益证明下,镜像链的挖掘节点110存放数字资产的存款,并且被选择为挖掘区块的节点的概率可以与作为存款提供的数字资产的数量成比例。权益证明区块链系统可用于避免在工作量证明区块链上进行挖掘所需的计算费用和精力。此外,与工作量证明区块链相比,权益证明区块链可以允许更高的频率和更规则的区块创建。
[0071] 多个节点102充当镜像链网络108的挖掘节点110。镜像链网络108的至少一些挖掘节点110可以不充当区块链网络100的挖掘节点104。因为镜像链网络108可以是权益证明区块链网络,所以挖掘节点110存放数字资产以便被包括为挖掘节点。更具体地,用于镜像链的挖掘节点110形成绑定的验证者集,以便在镜像链网络108上进行挖掘。这些挖掘节点110也可以是与区块链网络100相关联的议会106的成员。也就是说,可以是工作量证明区块链网络100和镜像链网络108的一部分的节点102充当镜像链网络108的挖掘节点110,并充当建立在工作量证明区块链网络100上的议会106的成员。这些挖掘节点110根据下文描述的方法加入议会106并参加议会106。所述挖掘节点110将数字资产存入议会池可以在工作量证明区块链中进行。也就是说,议会成员将他们的“权益”存放在工作量证明第一区块链网络100上,以成为议会成员,这允许所述议会成员通过形成绑定的验证者集来充当镜像链上的挖掘节点110。议会106可以是开放式成员群组,当向与议会106相关联的池提交足够的权益时,任何节点都可以加入该群组。
[0072] 应当注意的是,本文所述的计算机实现的方法描述了可以在缺乏足够丰富的脚本语言的比特币(或一些其他此类区块链)上实现的计算市场,而不是可以在具有足够丰富的脚本语言的区块链(即,可以用于实现基于区块链的计算市场的脚本语言)上实现的基于区块链的计算市场。更具体地,如本文所述,可用于实现基于区块链的计算市场的脚本语言可以足够丰富,以在提议者字符串受到挑战的情况下执行用于在提议者和挑战者之间进行裁决的功能(例如,确定获胜者)。在没有挑战的情况下,可以在比特币(或一些其他类似的区块链)上从头到尾执行计算市场,无需调用附加协议,也无需诸如本文所述的议会和镜像链之类的其他功能。例如,以太坊(Ethereum)具有足够丰富的脚本语言,使得其可以用于实现基于区块链的计算市场(例如,以太坊具有足够丰富的脚本语言来执行在提议者和挑战者之间进行裁决的功能)。例如,请参阅描述了这样一种系统的https://people.cs.uchicago.edu/~teutsch/papers/truebit.pdf上对Truebit的描述。
[0073] 本文所述的计算机实现的方法描述了如何使用额外的临时权益证明区块链(例如镜像链)和议会协议在更有限的平台诸如比特币(或一些其他此类区块链)上实现计算市场,以解决对提议者字符串的挑战。在本文所述的计算机实现的方法中,分配层(例如比特币)保留与其受限脚本语言相关联的安全性。例如,使用本文所述的计算机实现的方法(即,与诸如比特币之类的网络协同使用镜像链和议会),创建复杂的基于区块链的计算机程序可能会更加困难(在一些实施例中是不可能的),使得其行为难以甚至无法预测。但是,人们可以创建复杂的基于区块链的计算机程序,使得它们的行为可能难以或者甚至不可能在具有如此丰富脚本语言的区块链协议(例如以太坊)上预测。通过在诸如比特币之类的协议之上实现计算市场的附加功能(例如使用镜像链和议会),(资金所在)底层区块链的安全性可能不受影响,因此创建复杂的基于区块链的计算机程序可能更加困难(在一些实施例中是不可能的),从而使其行为可能难以甚至无法预测。
[0074] 图2以框图的形式示出了示例电子设备200,如结合图1所示(例如,结合图1示出的诸如节点102之一的节点)并且根据实施例(例如,结合图1示出的诸如区块链网络100的区块链网络),该示例电子设备200可以充当区块链网络中的节点。示例电子设备200可以充当区块链网络上的节点,所述节点例如结合图1示出的节点102之一,所述区块链网络例如结合图1示出的区块链网络100。在实施例中,所述区块链网络是点对点区块链网络。
[0075] 图2是示出示例电子设备200的组件的框图,该示例电子设备200可以用作点对点区块链网络100中的节点102。示例电子设备200也可称为处理设备。电子设备可以采取各种形式,包括例如台式计算机、笔记本电脑、平板电脑、服务器、移动设备(如智能手机)、可穿戴计算机(如智能手表)或另一种形式。
[0076] 电子设备200包括处理器210、存储器220和接口设备230。这些组件可以直接或间接地彼此连接,并且可以彼此通信。例如,处理器210、存储器220和接口设备230可以经由总线240彼此通信。存储器220存储计算机软件程序,该程序包括用于执行本文所述功能的机器可读指令和数据。例如,存储器可以包括处理器可执行指令,该处理器可执行指令在由处理器210执行时,使得电子设备执行本文所述的方法。处理器可执行指令可以包括当由处理器210执行时,使的电子设备实现与区块链网络100相关联的协议的指令。例如,指令可以包括用于实现比特币协议的指令。
[0077] 存储器220可以存储区块链网络100的全局分类账或其一部分。也就是说,存储器220可以存储区块链的所有区块或区块的一部分,例如最新的区块,或者一些区块中的信息的一部分。此外,在部署镜像链时,存储器220可以存储镜像链或其一部分。
[0078] 虽然存储器220在图2中用单个框示出,但是实际上电子设备200可以包括多个存储器组件。存储器组件可以是各种类型,包括例如随机存取存储器(RAM)、硬盘驱动器(HDD)、固态硬盘(SSD)、闪存驱动器(flash drive)等。不同类型的存储器可以适合于不同的目的。此外,虽然存储器220与处理器210分开示出,但是处理器210可以包括嵌入式存储器。
[0079] 如图2所示,处理器210可以包括安全区域,例如可信执行环境(Trusted Execution Environment,简称TEE)250。TEE 250可以是为电子设备200提供额外安全性的隔离执行环境,例如隔离执行、可信应用程序的完整性和资产机密性。TEE 250提供执行空间,该执行空间保证在TEE 250内部加载的计算机指令和数据可以在机密性和完整性方面受到保护。TEE 250可用于保护重要资源(例如密钥)的完整性和保密性。TEE 250可以至少部分地在硬件级别实现,使得可以保护TEE 250内执行的指令和数据免受来自电子设备200的其余部分和来自外部方(例如电子设备所有者)的访问和操纵。可以从操作包括TEE 250的节点102的一方来保护TEE 250内的数据和计算。
[0080] TEE 250可以操作来实例化保护区(enclave),然后在累积散列的同时一次添加一个存储页。如本文所使用的,保护区可以是TEE 250内的数据的隔离存储区域,其被保护免受外部访问。可以使用特殊指令将应用程序代码和数据放入保护区。通常使用硬件安全来保护保护区免受外部访问。如本文所使用的,除非上下文中另有明确说明,否则保护区可以与TEE 250相同,并且可以在TEE 250内实例化。
[0081] 实例化保护区的类似操作也可以在远程机器(可以是开发者机器或另一机器)上执行,使得远程机器确定并存储预期的散列。因此,任何远程机器都可以验证保护区的内容,以确保保护区正在运行批准的算法。这种验证可以通过比较散列来执行。当保护区完全建成后,它可能会被锁定。可以在TEE250中运行代码并向代码发送秘密,但是代码可能不会改变。最终散列可以由证明密钥签名,并且可以在数据所有者向保护区发送任何秘密之前供数据所有者进行验证。
[0082] TEE 250可用于保护与议会106使用的议会公钥相关联的私钥份额的机密性和完整性(上文结合图1进行了描述)。例如,TEE 250可以用于私钥份额的生成和存储。TEE 250可以旨在确保没有成员能够直接获得TEE 250保护区内持有的私钥份额,或者无法从成员间通信或保护区间通信获得关于其他私钥份额的信息。该协议对于保护区限的妥协也可能是鲁棒的。此外,TEE250可以启用远程证明,节点102可以使用远程证明来向其他节点102证明TEE250是可靠的,并且正在运行由议会106实现的协议的经批准的计算机可执行指令。TEE 250可以通过运行特定代码段并发送代码散列来提供远程认证,该散列在保护区内部,由保护区的内部认证密钥签名。
[0083] 当先前已经在电子设备200上使用私钥份额的议会106的成员选择离开议会时,TEE 250可以用来证明私钥份额的安全删除。电子设备200可以通过TEE 250中提供的远程证明协议向其他议会成员发出删除证明的信号。在允许成员撤回其成员存款之前,可能需要删除证明。也就是说,返还存款可以证明删除成员保护区内所持有的私钥份额为条件。
[0084] TEE 250可以配备安全随机数生成器,该生成器可以在TEE的保护区内部,可以用于生成私钥、随机挑战或其他随机数据。TEE 250还可以用于从外部存储器读取数据,并且可用于将数据写入外部存储器。可以用仅保存在保护区内的秘密密钥加密此类数据。
[0085] TEE 250可以使用各种平台来实现,例如可信平台模块(Trusted Platform Module,简称TPM)或英特尔软件保护扩展(Intel Software Guard Extensions,简称SGX)。例如,SGX支持远程证明,这使得保护区能够从处理器获取已签名的语句,该处理器正在执行具有给定成员散列(称为报价)的特定保护区。英特尔认证服务(Intel Attestation Service,简称IAS)等第三方认证服务可以证明这些已签名的语句来自符合SGX规范的真实CPU。
[0086] 电子设备200充当区块链网络100(图1)中的节点102(图1),并且可以加入并以其他方式参加议会106。当一组数字资产承载者汇集数字资产(例如数字货币、代币或区块链网络100支持的其他权益或价值)时,可以形成议会106。
[0087] 议会106可以是许可的或未许可的群组。也就是说,议会106可以由区块链网络100(图1)中的任何节点102(图1)加入(即,由在区块链中监视和存储至少一部分信息的任何节点)。为了加入议会106,节点102将一个或多个数字资产转移到与议会106相关联的数字资产池(即,转移到与一个或多个数字资产相关联的公共群组地址,该公共群组地址又与议会的其他成员相关联)。该数字资产池可以称为议会池。例如,节点102可以通过将这样的数字资产转移(即,存放)到与议会池相关联的地址(即,到也可以称为公共群组地址的“议会地址”)来加入议会106。可以使用单个公钥(称为议会公钥)将数字资产置于群组门限签名的控制之下。议会成员持有可以分配地生成的私钥份额。持有的份额数量可以与存放在池中的数量成比例。
[0088] 由议会106控制的数字资产,包括转移到议会地址的任何数字资产,可以置于门限签名方案的控制之下。在门限签名方案下,可能需要一组其私钥总持有量超过门限的成员来产生有效签名,该有效签名允许将数字资产转移到议会106的控制之外。也就是说,至少门限数量的私钥份额必须用于为议会106控制的数字资产的任何外流转移生成有效签名。
[0089] 议会公钥担保了议会106的成员存放在议会池中的数字资产,以换取私钥份额,以及由议会106的成员或非成员存放在与议会池相关联的地址上的任何数字资产(即置于全部,部分或有条件的情况下),这些数字资产是由于除了获得私钥份额之外的原因而存放的。非成员或成员可能出于各种原因将数字资产存放到与议会相关的地址。
[0090] 由于同一议会公钥可能会担保成员的存款(即,议会成员为换取私钥份额而提供的数字资产)和成员或非成员出于其他目的而提供的数字资产,因此至少一些与议会相关联的地址的存款可能会被特别标记以指示存款类型。例如,将数字资产转移到议会地址的交易可以包括标志、标识符或指示存款性质的其他属性。举例来说,将数字资产转移到议会地址的交易可能不是为了加入议会或增加议会成员的权益而进行的,该交易可以包括指示存款是为了另一个目的而进行的特殊标识符。当管理私钥生成时,与议会106相关联的节点102可以使用这样的标识符。更具体地,为了加入该群组而存放数字资产的节点102可以被分配议会106的私钥份额(例如,作为存放数字资产的结果),而为了其他目的(例如,转移到竞争币区块链(Altchain))存放数字资产的其他节点102可能不持有议会的议会私钥份额(即,对应于议会公钥)。
[0091] 议会106可以充当自治群组,其中通过没收全部或部分成员存款的威胁来强制执行合作行为。不合作或恶意的成员可能会因为一些诚实的成员参与合作协议而被没收此类数字资产。此外,当议会成员希望离开议会106时,他们可以退回其成员存款(即,请求议会106将成员存款转回到该成员的个人地址)。但是,只有当群组(即议会)成员使用超过生成有效数字签名所需门限的私钥份额批准退回时,才能退回资金。
[0092] 议会106实施的门限签名方案可以是各种类型的。只要至少门限数量的私钥份额在生成有效签名中做出贡献,门限签名方案就允许在n个参与方之间共享签名权。因此,小于门限的私钥份额的任何子集可能不用于生成有效签名。更具体地,各方控制私有签名密钥的份额,并且必须使用门限数量的密钥份额来通过部分签名的组合以生成有效签名。任何小于门限的密钥份额子集都不能用于通过部分签名的组合来生成有效签名。
[0093] 门限签名方案可以是椭圆曲线数字签名算法(Elliptic  Curve Digital Signature Algorithm,简称ECDSA)方案。例如,ECDSA方案可以是易卜拉欣(Ibrahim)等人在2003年EIII第46届中西部电路与系统专题研讨会,第1期:276-280(2003))的“提供新的可验证秘密共享方案的鲁棒门限椭圆曲线数字签名(A robust threshold elliptic curve digital signature providing a new verifiable secret sharing scheme)”(中所提出的类型,。该门限签名方案可以是数字签名方案的扩展,该数字签名方案是基于椭圆曲线加密的算法,其中可能需要来自n个密钥共享持有者的一方的t+1个密钥份额来重建私钥。该方案可用于构建有效签名,而无需重建私钥,且任何一方都无需向另一方透露其密钥份额。
[0094] 由于t+1个密钥份额可能足以重建秘密,因此根据此技术,允许的最大对手数量为t。在易卜拉欣等人的模型中,对手可能是破坏了持有秘密份额的一方并可以访问该秘密份额的实体。对手可以是各种类型。例如,拜占庭式(Byzantine)对手是一个可能假装参与协议的对手,而实际上他们正在发送不正确的信息。易卜拉欣所提出的ECDSA方案对多达t<=n/4个恶意对手是鲁棒的。这种鲁棒性可以上升到t<=n/3个,但代价是更加复杂。
[0095] 易卜拉欣等人的ECDSA方案对于阻止t<=n/3个犹豫不决的对手可能是鲁棒的。犹豫不决的对手可能能够阻止被破坏的一方参与协议或中途停止参与。
[0096] 该ECDSA方案包括可由节点102用来识别恶意或不合作方的各种机制。例如,可验证秘密共享(Verifiable Secret Sharing,简称VSS)可用于共享沙米尔秘密共享(Shamir’s Secret Sharing,简称SSS)所需的多项式。SSS可以是秘密共享的一种形式,在这种形式中,秘密被分成多个部分,并以给每个参与者提供他们自己唯一的部分。这些部分可用于重建秘密。如果可以向不同的节点102提供不一致的份额,或者如果份额秘密地发送到与广播给所有人的盲共享(Blinded Share)不同的节点,则节点102可以使用VSS来识别恶意节点102或成员。不一致的份额可以由任何一个节点102识别。可以通过包括辅助信息来验证秘密的共享,该辅助信息允许节点102验证其份额是否一致。
[0097] 可以通过份额的预期接收者节点来识别向单个节点发送不正确的份额(即,不同于广播的盲共享的份额)。使用可公开验证的秘密共享(Publically Verifiable Secret Sharing,简称PVSS)技术,可以公开验证对秘密发送到节点的不正确份额的识别。这种技术可以避免在识别欺诈发送者时可能出现的延迟,这种延迟可能发生在不使用PVSS和当发送不正确的份额时,不正确的份额的接收者离线或者与网络的大部分断开。
[0098] 不良行为,例如向不同节点提供不一致的份额,可以由议会106处理,以阻止恶意行为。例如,当节点102(图1)被其他节点102识别为恶意方时,超过门限(例如t+1)的多个节点102(即,与议会成员相关联的节点)可以合作惩罚恶意方。例如,节点102可以采取涉及由恶意方存放到议会的数字资产(例如数字货币、代币或其他权益或价值)的行动。例如,议会可能通过将数字货币、代币、权益或价值转移到返还地址来烧毁这些数字货币、代币、权益或价值,或者议会可以通过拒绝授权将这些数字资产返还给恶意方来没收这些数字资产。不是行为不良节点的节点102也可以通过协作排除行为不良节点来阻止不良行为(例如,通过有效地使密钥份额无效;例如,通过排除节点参与议会协议,或者通过重新共享私钥并且不向行为不良节点分配份额)。
[0099] 可以通过使用TEE来增强上述ECDSA技术。例如,基于易卜拉欣等人的门限ECDSA签名技术,设想了一种强大的对手形式,本文称为拜占庭式对手。这种类型的对手可能会任意行事,例如,他们不仅拒绝参与签名过程或中途停止议会,而且还可能假装诚实参与并发送不正确的信息。但是,通过使用TEE,并在用于存储秘密私钥份额的TEE的保护区内生成用于签名的数据,可以提供额外的安全性,因为保护区极不可能被大量破坏。例如,如果为每个TEE分配的密钥份额不超过一个,假设n足够大,那么可以合理预期可能妥协的TEE的数量不会接近对于拜占庭式对手的鲁棒性门限。如果协议能够容忍相对于密钥份额总数的一小部分恶意对手,这就使得协议是安全的。
[0100] 例如,如果所有节点都有TEE,那么在不损坏TEE的制造商的情况下,只能通过对节点的物理访问并且付出巨大的努力和费用才能获取存储在保护区内的秘密。这种制造商级别的损坏预计是可控的。例如,如果制造商错误地声称许多公钥对应于真正的TEE,那么该制造商可以获得对私钥份额的直接访问,并可能发起攻击。但是,这种攻击需要足够数量的密钥份额,以允许制造商在没有其他节点帮助的情况下产生有效的签名。这将意味着积累总权益的很大一部分,这将是非常昂贵的。此外,通过实施攻击,所持权益的大部分价值将被破坏。
[0101] 当使用TEEs时,考虑协议对“损坏节点(corrupted nodes)”的鲁棒性可能是有用的。损坏节点可以是这样一个节点,即TEE外部的硬件损坏,但TEE的完整性不会受到损害。损坏节点可以控制保护区接收和不接收的信息。特别地,损坏节点可以停止,即避免参与协议。如果提供给协议的信息需要由秘密地保存在保护区中的私钥进行签名(在证明期间相应的公钥被认证),则私钥可能与保护区本身一样可信。因此,损坏节点可能不会向协议发送任意(经认证的)信息,并且可能仅试图通过停止或试图欺骗保护区不正确地操作来进行干扰(例如,通过向其提供过时的信息)。因此,对于损坏节点,成功的攻击需要聚集足够数量的部分签名来产生完整的签名。对于TEE,易卜拉欣等人的协议对于2t个损坏节点可能是鲁棒的。因为如果n-2t>=2t+1,可以产生签名,那么大小为2t+1<=(n+1)/2的密钥份额的任何合格子集都可能足够。因此,当使用TEE时,用于门限签名方案的门限可以被配置为大于或等于密钥份额的50%的数字,以在存在损坏节点的情况下产生有效签名。
[0102] 也可以使用其他门限签名方案。例如,门限签名方案可以是戈德费德(Goldfeder)等人在“通过新的DSA/ECDSA门限签名方案保护比特币钱包(Securing Bitcoin Wallets via a New DSA/ECDSA threshold signature scheme)”(2015)中所提出的ECDSA门限方案。该协议允许t+1方产生有效签名。因此,对手必须控制用于产生有效签名的密钥份额的数量,可以等于对手必须拥有以重建私钥的密钥份额的数量。在需要全体一致才能产生有效签名的情况下,这种技术可以提供一种有效的方案。在最一般的情况下,该方案强加了空间要求,该空间要求随议会成员人数呈指数扩展,因为对于任意门限,需要对n中t+1个参与者的任何可能子集重复整个协议。因此,对于n和t都较大的值,可能需要存储大量密钥份额。为了降低这种存储要求,标准比特币多重签名可以与门限签名相结合。特别地,可以使用多重签名锁定数字资产,以便将每个私钥划分为多个份额。就空间要求而言,这种技术将使更大的议会更有效率。缩放属性也可以通过以迭代方式在多个级别上为较小群组规模中的大量参与者组成一个方案来改进。例如,门限签名方案可以与科恩(Cohen)等人的技术《采用对数深度门限公式的高效多方协议》(2013),《加密技术进展——加密》2013年,第185-202页(Efficient Multiparty Protocols via Log-Depth Threshold Formulae(2013),Advances in Cryptology–CRYPTO 2013pp 185-202)相结合。
[0103] 可以使用其他门限方案,包括非ECDSA签名方案。例如,节点102可以使用基于施诺尔(Schnorr)方案的门限方案来实现议会106。
[0104] 区块链网络中的节点可以基于所选择的门限签名方案来实现议会协议。这样的节点可以包括存储在存储器中的计算机可执行指令,例如结合图2描述的存储器220,所述存储器220实现议会协议。当由处理器(例如结合图2所描述的处理器210)执行这些指令时,使得节点(例如结合图2所描述的类型的电子设备200)执行议会协议的一个或多个方法。这类方法可以包括本文所述的示例过程中的任何一个或组合。因此,议会协议可以包括一个或多个示例过程(例如本文所述过程)。示例过程可以由与其他议会成员相关联的其他节点协作的节点来执行。
[0105] 图3以框图的形式示出了示例环境300,其中可以生成任务请求,并且结合图1所述和根据实施例,可以针对与区块链网络相关联的计算任务分配系统提出解决方案。在图3所示的示例环境300中,具有任务304的请求者(Requester)302向308发起请求310,该请求310包括任务304和为完成任务304所提出的分配306。任务304可以是解决一些需要一定计算能力来解决的问题的任务。在说明性示例中,任务304是确定某个数量是否可因子分解的任务,如果是,则确定该数量的因子是什么。任务的其他示例可以是确定问题的最佳解决方案的任务、确定在特定规定门限值内的解决方案的任务或者其他此类任务。任务304可以是单个计算密集型任务,或者可以是大量任务的组合,这些任务虽然不是单独计算密集型的,但总体可能需要大量计算能力来解决。
[0106] 所提出的分配306可以是数字资产的数量,该数量足够多以吸引实体来确定任务的解决方案(即,吸引实体花费足够的计算能力来确定解决方案)。可以预期,如果所提出的分配306太低,则可以向请求者提供很少(或没有)解决方案和/或解决方案可能是低质量的。相反地,如果所提出的分配306高得不合理,则可能向请求者提供过多的解决方案,尽管更多的解决方案可以增加对一个或多个答案的信心,但是过多的解决方案可能难以处理。
[0107] 在图3所示的示例环境300中,请求310可以发布到可以包括多个这样的请求316的计算任务分配系统314。在实施例中,计算任务分配系统与例如结合图1和图2所述的区块链网络(例如,比特币)相关联,并且被实现为网页,其中请求者发布对本文所述的解决方案的请求。在这样的实施例中,计算任务分配系统314可以包括一个或多个网络服务(Webservice)和/或一个或多个应用编程接口(Application Programming Interfaces,简称“APIs”),其可用于例如发布对解决方案的请求、响应于这类请求发布提议者字符串的通知、和/或发布对提议者字符串的挑战的通知。在这样的实施例中,使用区块链网络使各方能够在不信任的环境中(即,在没有中央方来确保交易的完整性并且使用区块链网络实现交易的完整性的环境中)请求解决方案、提供解决方案并挑战解决方案。
[0108] 在实施例中,区块链网络用作仅附加的公告板(即,不能从公告板移除通知,只能添加)。这是因为,一旦确认了区块链的一个区块,区块链网络的每个节点都可以看到该区块中包含的信息,并且该区块中的每一条信息都带有时间戳并且是不可变的。如本文所述的,通过使用区块链网络来请求解决方案、提供解决方案以及挑战解决方案,各方可以确保请求、解决方案和挑战可能是不可变的。应当注意的是,在实施例中,计算任务分配系统314不要求区块链网络向所述计算任务分配系统314发布对解决方案的请求、响应于这样的请求发布提议者字符串的通知和/或发布对提议者字符串的挑战的通知(例如,广告诸如请求310的请求)。
[0109] 在实施例中,计算任务分配系统314在诸如结合图1和图2所述的区块链网络(例如比特币)上实现。在这样的实施例中,如下所述,请求310作为交易被挖掘到计算任务分配系统314的区块链网络。在这样的实施例中,请求者302可以用作区块链网络的节点。
[0110] 提议者318也可以用作与区块链网络相关联的区块链网络的节点或者计算任务分配系统314在区块链网络上实现的节点,提议者318可以监视320计算任务分配系统314,以识别包括分配的任何请求,提议者认为所述分配足以使提议者318感兴趣以花费计算能力来解决相关任务。在图3所示的示例中,提议者已经将请求310标识为具有所提出的分配306,该分配足以使提议者感兴趣以生成任务304的解决方案(本文称为“提议者字符串”)。
应当注意的是,除非明确声明或通过上下文明确指出,否则来自提议者的任何提议的解决方案都是提议者字符串(本文中也可以简称为“解决方案”),因此,例如,由提议者所提出的解决方案(例如,提议者字符串)可以简称为“所提出的解决方案”或“提议者字符串”,而不是“所提出的提议者解决方案”或“所提出的提议者字符串”。
[0111] 尽管未在图3中示出,提议者318可以是多个提议者之一,这些提议者提出解决方案,希望主张所提出的分配。例如,一个任务(即一个请求)可以生成数十个、数百个、数千个或更多的提议者字符串。在实施例中,至少部分地基于与解决方案相关联的时间戳,从多个提议者中选择解决方案。例如,在实施例中,解决方案可能因为其是第一个接收到的解决方案而被选择(即,因为与该解决方案相关联的时间戳早于其他提议者的其他解决方案的其他时间戳)。
[0112] 如果提议者318能够生成提议者字符串322(即,在实施例中使用区块链网络之外的计算),那么提议者318使用提议者字符串322的散列332生成对提议者字符串的承诺(Commit),生成用于对解决方案进行签名的私钥324,并且生成328对提议者字符串330(其包括提议者字符串322的散列332)的承诺和公钥334(对应于私钥324),以便对提议者字符串330的承诺可以被安全地发送336到请求者302。如本文所使用的,提议者字符串可以是由提议者生成并发送到请求者的一条数据,提议者主张该数据是所请求的计算任务的输出。类似地,如本文所使用的,挑战者字符串可以是挑战者在挑战期内生成并提供给议会(如下所述)的一条数据,挑战者主张该数据是所请求的计算任务的输出,并且不同于提议者字符串(即,呈现不同的解决方案)。
[0113] 如本文所使用的,取决于实施例,解决方案可以是几个不同项目中的一个。在一个实施例中,解决方案是在挑战期中幸存的提议者字符串。在一个实施例中,解决方案是提议者字符串或挑战者字符串,其中对应的字符串与由对本文所述解决方案的挑战所触发的链上计算一致。同样如本文所使用的,所提出的解决方案可以是提议者字符串(如果由提议者提供)或者挑战者字符串(如果由挑战者响应于提议者字符串而提供)。同样如本文所使用的,对解决方案的承诺可以是解决方案的散列(如上所述)。对解决方案的承诺可以与对提议者字符串的承诺相反,对提议者字符串的承诺可以是提供给请求者的提议者字符串的散列,与对挑战者字符串的承诺形成对比,对挑战者字符串的承诺可以是提供给议会的挑战者字符串的散列。
[0114] 应当注意的是,使用提议者字符串322的散列332的对提议者字符串的承诺在本文可以简称为“散列”。例如,对提议者字符串330的承诺中的散列332。在实施例中,对提议者字符串330的承诺也可以作为区块链网络上的交易发送(如本文所述)。如本文所使用的,对提议者字符串的承诺包含所提出的解决方案(例如,提议者字符串322)。
[0115] 应当注意的是,解决方案承诺330不包括提议者字符串322,而仅包括提议者字符串322的散列332,使得请求者302可以确信提议者实际上具有任务的解决方案。在实施例中,发送对提议者字符串330的承诺的目的是使请求者可以确信稍后购买的字符串(例如,作为解决方案)与经过挑战期的字符串(如下所述)相同,因此是任务的解决方案。请求者可以通过比较散列值来验证这一点。然而,提议者字符串322(即,承诺给提议者字符串的散列预图像)可以稍后被挖掘到区块链网络,使得当解决方案被提供给请求者302时,提议者318可以收集所提出的分配(即,由请求者提供的奖金)。通过使用区块链网络上的交易,请求者在不放弃所提出的分配306的情况下不能访问解决方案,并且直到提议者字符串322被验证,提议者才能主张所提出的分配306,两者均如本文所述。据此,在实施例中,提议者提供具有提议者字符串322的散列332的存款326,该存款足以在挑战(如下所述)的情况下用于验证解决方案,并且如果没有挑战,则将存款返还给提议者。
[0116] 计算任务分配系统314在区块链网络上的实现防止了请求者302方面(例如,通过不接受有效解决方案来决定不识别有效解决方案,或者一旦接收到解决方案就决定为解决方案提供分配)或提议者方面(例如,提出未验证的解决方案(即,未通过裁决)或在收到分配后不提供解决方案)的恶意行为,因为区块链网络促进了相互不信任的各方之间的交易,而不需要中央“托管”代理,同时使分配解决方案的公平交换成为可能。如果任务304的有效提议者字符串322由提议者318呈现(如本文所述,排除挑战),则所提出的分配306可以由请求者302分配。
[0117] 尽管未在图3中示出,但是存在一种示例情况,其中分配可能在没有有效解决方案的情况下分配。如果任务304是没有有效解决方案的任务,那么“没有解决方案(No Solution”)”可能是唯一有效的解决方案。例如,如果任务是确定数字51的素数因式分解(Prime Number Factorization),则解为3和17(即两个素数相乘等于51)。但是,如果任务是确定恰好有两个因子的数字52的素数因式分解,则没有解决方案(2、2和13可以是解决方案,但根据该任务并不是有效的解决方案)。虽然这些任务可能简单,但所述任务说明了一个问题,即提议者如何在仍然获得分配的情况下表明没有解决方案。对于相当困难的任务,确定没有解决方案可能需要相当大的计算能力。
[0118] 可以预期,如果提议者通过提供“没有解决方案”的散列来表明“没有解决方案”,则请求者可能能够容易地识别散列并简单地忽略解决方案(即,不完成交易,因为请求者不需要完成交易来“知道”该解决方案)。因为请求者可以容易地识别该散列,所以请求者可能没有理由从提议者那里购买结果。
[0119] 解决这种情况的一种方法可以是要求提议者将适当的标志(例如,“没有解决方案”这几个字)与其他一些信息连接起来。为了避免上述情况,所述信息可以是只有那些已经执行了计算(并且发现它没有解决方案)的才能访问的。在实施例中,提议者使用计算的至少一部分副本,该副本没有导致任何解决方案。当完整副本非常大时,可以使用副本的该部分,因为散列预图像(例如,解决方案)被挖掘到区块链中,供提议者收集奖金。因此,提议者可以使用副本的稀疏样本,根据商定的公式选择该样本作为预散列解决方案。然后,该示例可以与表明没有找到解决方案的标志连接,将其散列并提交给请求者。请注意,如果没有文本标志,则发送副本样本是无效的,因为这可能被误认为是计算的解决方案。
[0120] 图4以框图的形式示出了示例环境400,其中,对于与区块链网络相关联的计算任务分发系统(如结合图3并且根据实施例所述),可以生成与任务请求相关联的区块链交易和所提出的解决方案。在图4所示的示例环境400中,请求者402提供404第一交易406,该第一交易406具有所提出的分配(“B”)作为输入,所提出的分配加上提议者的存款(“D”)作为其输出。该输出可以由提议者在挑战期(即,本文所述的其他节点可以挑战提议者的解决方案的时段)后声明。
[0121] 第一交易406可以被提供408给提议者410,使得提议者410可以将存款(“D”)添加到输入中,以产生412最终的第一交易414,所述最终的第一交易414可以被发送416到计算任务分配系统的区块链418(即,计算任务分配系统所关联的区块链网络的区块链或者实现计算任务分配系统的区块链网络的区块链)。应当注意的是,所述交易,其中请求者402提供404第一交易406,其中第一交易406被提供408给提议者410,以及其中提议者410将存款添加到输入以产生412最终第一交易414,都可以使用本文所述的区块链418(例如,在比特币区块链上)的区块链交易来执行。
[0122] 图5以框图的形式示出了示例环境500,其中,对于与区块链网络相关联的计算任务分发系统(如结合图3并且根据实施例所述),可以生成与对所提出的解决方案的挑战相关联的区块链交易。在图5所示的示例环境500中,挑战者502在挑战期结束之前挑战由提议者(如本文所述)提供的解决方案。
[0123] 在图5所示的示例中,挑战者502广播508挑战解决方案的意图(即,通过生成表明挑战意图的区块链交易)。挑战的意图包括存款506,在实施例中,存款506足以抵消回答挑战的努力。在实施例中,提议者的存款(本文所述)和挑战者的存款506数量相同。在实施例中,挑战者还包括替代解决方案的散列504。挑战者生成的替代解决方案504在本文可称为“挑战者字符串”。但是,与提议者字符串一样,应当注意的是,除非明确陈述或通过上下文明确指出,否则挑战者所提出的任何解决方案(可简称为“解决方案”)可以是挑战者字符串使得例如来自挑战者所提出的解决方案(例如,挑战者字符串)可以简称为“所提出的解决方案”或“挑战者字符串”,而不是“所提出的挑战者解决方案”或“所提出的挑战者字符串”。在实施例中,如果挑战者502提供存款506,则挑战者502可以挑战所提出的解决方案,无需替代解决方案504的散列。
[0124] 在实施例中,可以通过议会510响应于挑战生成512交易514,所述挑战包括作为输入(“B+D”)的先前交易(请求交易)的输出以及作为输出(“B+D+D”)的先前分配加上提议者存款和挑战者存款。与第一交易一样,第二交易可以被提供516给挑战者502,使得挑战者可以将挑战者存款506添加到输入以产生518更新的交易520,该更新的交易520可以被挖掘522到区块链524。如上所述,图5所示的每个交易可以使用区块链来执行。尽管未在图5中示出,挑战者502可以是多个挑战者之一(即,每个提议者字符串也可以生成数十个、数百个、数千个或更多挑战者字符串)。
[0125] 图6以框图的形式示出了示例环境600,其中,对于与区块链网络相关联的计算任务分发系统(如结合图3并且根据实施例所述),可以解决对所提出的解决方案的挑战。在图6所示的示例环境600中,议会602从区块链606的源区块608中的信息开始实例化镜像链604(如本文所述)。源区块608在本文也可称为挑战发生的区块(例如,结合图18描述的挑战
1806的区块)。在镜像链使用本文所述的方法解决挑战之后,如本文所述,议会602创建610一个或多个交易612,以将所提出的分配(“B”)加上任何存款(“D”)分配给一方或多方。在当前区块616,可以将一个或多个交易612挖掘614到区块链606。
[0126] 在如何创建一个或多个交易612以将所提出的分配(“B”)加上任何附加存款(“D”)汇给一方或多方的第一个示例中,如果没有所提出的解决方案,则可能没有实例化的镜像链来裁决该挑战,因此,请求者可以仅收回原始交易的UTXO(“B”)。在实施例中,如果没有提议的解决方案,则没有存款,并且奖金(“B”)不会被添加到提议者字符串的输入中。
[0127] 在如何创建一个或多个交易612以将所提出的分配(“B”)加上任何附加存款(“D”)汇给一方或多方的第二个示例中,如果存在提议的解决方案,但是没有挑战者,则也可能没有实例化的镜像链来裁决该挑战,因此,如果该解决方案可以被请求者接受,并且提议者还可以收回提议者的存款(“D”)(减去验证该解决方案的任何费用),那么提议者可以索要原始交易的UTXO(“B”)。在实施例中,如果没有挑战,那么用于验证解决方案的成本为零,并且如果该解决方案被请求者接受,那么提议者可以索要原始交易的UTXO(“B”),并且提议者也可以收回提议者的全部存款(“D”)。相反地,如果请求者不接受该解决方案,请求者可以索要原始交易的UTXO(“B”),并且提议者可以收回提议者的存款(“D”)。在实施例中,如上所述,提议者可以在挑战期之后用解决方案索要资金,前提是用于索要资金的解决方案的散列与解决方案承诺中的解决方案的散列相同。
[0128] 在实施例中,提议者可以通过挑战如上所述的解决方案(即,通过充当所提出的提议者字符串的挑战者)来拒绝所提出的解决方案。
[0129] 在如何创建一个或多个交易612以将所提出的分配(“B”)加上任何附加存款(“D”)汇给一方或多方的第三个示例中,如果存在单个挑战者,并且镜像链604可以被实例化以裁决挑战,如果提议者“赢得”挑战,那么提议者可以索要原始交易的UTXO(“B”),提议者还可以收回减去验证该解决方案的任何费用的提议者的存款(“D”),并且挑战者可以收回减去挑战该解决方案的任何费用的挑战者的存款(“D”)。相反地,如果挑战者“赢得”挑战,挑战者可以索要原始交易的UTXO(“B”),提议者也可以收回减去验证该解决方案的任何费用的提议者的存款(“D”),挑战者可以收回减去挑战该解决方案的任何费用的挑战者的存款(“D”)。在实施例中,挑战的失败方(例如,提议者或挑战者)重新分配挑战的全部费用。在实施例中,挑战的双方(例如,提议者和挑战者)平均分担挑战的费用。在实施例中,挑战的双方(例如,提议者和挑战者)也平均分担验证的费用。可以预期,如何创建一个或多个交易612以将所提出的分配(“B”)加上任何附加存款(“D”)汇给一方或多方的示例仅是说明性示例,因此,如何创建一个或多个交易612以将提议的分配(“B”)加上任何附加存款(“D”)汇给一方或多方的其他示例可以被认为在本发明的范围内。
[0130] 应该注意的是,使用仲裁程序可以大大减少在镜像链上执行的计算的长度。在实施例中,可以进行仲裁而无需重新运行整个计算。在这样的实施例中,仲裁协议要求提议者和挑战者提供导致其最终答案的计算的中间结果。由于计算的输入可能相同(由请求者发布的输入),输出可能不同(提议者和挑战者得到不同的答案),所以在提议者和挑战者的计算出现分歧的两个中间值之间必须至少有一个转换。这种“转换点”可以使用对两个值列表(即,两个值列表之间的差异)的二进制搜索来识别。执行该搜索所需的操作数量是两个列表长度的底数为2的对数(即log2)。例如,如果两个计算列表有1024个元素,则执行转换搜索所需的操作数是ln1024,或10。
[0131] 一旦确定了两个计算产生分歧的中间步骤(即,转换点已经被定位),镜像链可以用于重新计算该单个转换,从而在两个提议之间进行仲裁。注意,与通过链上(例如,在主链上)重新运行计算的仲裁不同,诸如本文所述的二进制搜索技术可以排除一方不正确,但是可能不能确认另一方的正确性。因此,在实施例中,未被二进制搜索消除的一方的解决方案可能经历另一个挑战期。
[0132] 图7以框图的形式示出了示例环境700,其中,对于与区块链网络相关联的计算任务分发系统(如结合图3并且根据实施例所述),可以不接收对所提出的解决方案的挑战。在图7所示的示例环境700中,提议者702接收704分配706,所述分配706包括所提出的分配708(“B”)和提议者在从区块链714生成的交易712中的存款710(“D”)。在实施例中,分配706包括所提出的分配708(“B”)和提议者的存款710(“D”),减去验证该解决方案的任何费用。在实施例中,如果没有挑战,则用于验证提议者702的解决方案的成本为零,并且分配706包括所提出的分配708(“B”)和提议者的所有存款710(“D”)。
[0133] 图8以流程图的形式示出了用于解决与如结合图3并且根据实施例所述区块链网络相关联的计算任务分配系统的任务的所提出的解决方案和挑战的示例过程的流程图的第一部分800。用于解决与区块链网络相关联的计算任务分配系统的任务的所提出的解决方案和挑战的示例过程的第一部分800可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于解决与区块链网络相关联的计算任务分配系统的任务的所提出的解决方案和挑战的示例过程的流程图的第一部分800(结合图8所述)。
[0134] 在用于解决与区块链网络相关联的计算任务分配系统的任务的所提出的解决方案和挑战的示例过程的第一部分800的步骤802中,请求者请求完成具有如本文所述的解决方案相关联的分配的任务。
[0135] 在用于解决与区块链网络相关联的计算任务分配系统的任务的所提出的解决方案和挑战的示例过程的第一部分800的步骤804中,提议者用公钥和所提出的解决方案的散列联系请求者。尽管未在图8中示出,但是在步骤804之前,提议者已经接收到任务,确定相关联的分配足够,生成解决方案,并且生成解决方案的散列,所有这些都如本文所述。在实施例中,提议者使用第二安全通道,用公钥和所提出的解决方案的散列来联系请求者。在实施例中,提议者使用实现计算任务分配系统的区块链,用公钥和所提出的的解决方案的散列来联系请求者。在实施例中,存在多个具有解决方案的提议者。
[0136] 在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第一部分800的步骤806中,请求者以相关联的分配作为输入,相关联的分配加上存款作为输出,来构建第一交易,如本文所述,该第一交易可以由提议者在挑战期之后解锁,或者由议会在任何时候解锁。
[0137] 在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第一部分800的步骤808中,如本文所述,请求者将第一交易发送给提议者,以便提议者可以将提议者的存款添加到交易输入中,从而将提议者投入到任务中。通过使提议者向交易中添加存款,可以阻止提议者向请求者提供虚假的解决方案。
[0138] 在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第一部分800的步骤810中,如本文所述,提议者将他或她的存款作为输入添加到第一交易中,并将第一交易广播到区块链。
[0139] 在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第一部分800的步骤812中,可以确定是否接收到挑战。在实施例中,如本文所述,可以从另一个节点(例如,挑战者)接收挑战。在实施例中,如上所述挑战者通过将交易挖掘到区块链来生成挑战,并且因此由包括请求者和提议者的区块链上的节点接收。在实施例中,对于每个所提出的解决方案,接收多个挑战。在实施例中,计算任务分配系统是一个链下系统(例如,网络服务),其中列出任务,发布所提出的解决方案的通知,并且发布对那些所提出的解决方案的挑战。在这样的实施例中,与计算任务分配系统相关联的区块链用于提供解决方案,提供解决方案的分配,以及管理挑战(例如,通过镜像链)。
[0140] 如果在步骤812中,可以确定接收到挑战,则用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第一部分800在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第二部分900的步骤902处继续。
[0141] 如果在步骤812中,没有确定接收到挑战,则在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第一部分800的步骤814中,可以确定挑战期是否已经到期。在实施例中,挑战期由请求者设置。在实施例中,挑战期由计算任务分配系统设置。在实施例中,挑战期至少部分基于挖掘多个区块所需的时间周期来确定。例如,可以每十分钟挖掘一个区块链网络(例如比特币网络)。在这样的示例中,挑战期可以基于挖掘288个区块所需的时间(例如,每小时六个区块,持续48小时,或大约两天)。
[0142] 如果在步骤814中,没有确定挑战期已经到期,则用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第一部分800在步骤812处继续,以确定是否接收到挑战。
[0143] 如果在步骤814中,确定挑战期已经到期,则在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第一部分800的步骤816中,如本文所述,提议者索要奖金加上用于未挑战的实际解决方案的提议者的存款。
[0144] 注意,在图8所示的示例过程的第一部分800中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0145] 图9以流程图的形式示出了用于解决与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统的任务的所提出的解决方案和挑战的示例过程的流程图的第二部分900。用于解决与区块链网络相关联的计算任务分配系统的任务的所提出的解决方案和挑战的示例过程的第二部分900可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于解决与区块链网络相关联的计算任务分配系统的任务的所提出的解决方案和挑战的示例过程的流程图的第二部分900(结合图9所述)。
[0146] 在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第二部分900的步骤902处,如本文所述,可以接收挑战。
[0147] 在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第二部分900的步骤904处,议会构建第二交易,相关联的分配加上存款作为输入,相关联的分配加上两倍存款作为输出,议会可以随时解锁所述第二交易。在步骤904中,相关联的分配包括两倍存款,因为其包括来自提议者的存款和来自挑战者的存款。然而,在步骤904,来自挑战者的存款尚未被添加到交易的输入中。
[0148] 在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第二部分900的步骤906处,如本文所述,议会发送第二交易给存款人(例如,发送给挑战者),以便挑战者的存款可以被添加到交易的输入中。
[0149] 在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第二部分900的步骤908处,也如本文所述,存款人添加第二存款作为第二交易的输入,并将第二交易广播到区块链。
[0150] 在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第二部分900的步骤910处,议会创建了一个镜像链,以使用本文所述方法来解决挑战。
[0151] 在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第二部分900的步骤912处,议会解决挑战并根据挑战的解决方案提供实际的解决方案(即,来自一个或多个提议者字符串和/或一个或多个挑战者字符串)。在步骤912中,议会使用如本文所述的镜像链来解决挑战。在实施例中,议会使用链上计算方法来解决挑战。实施例中,议会使用本文所述的二进制搜索技术来解决挑战。
[0152] 在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第二部分900的步骤914处,如本文所述,议会根据解决方案和解决方案成本将第二交易的输出分配给一个或多个交易。
[0153] 在用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程的第二部分900的步骤916处,议会终止镜像链。在实施例中,如本文所述,终止的镜像链(例如,镜像链的终端区块)用作子序列镜像链的起始区块。
[0154] 在实施例中,在解决方案集合中有一个或多个解决方案,解决方案集合包括提议者字符串和挑战者字符串。在实施例中,结合图8和9所描述的用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程包括通过至少从提供给第一区块链网络的解决方案集合中选择一个解决方案来使用第一区块链网络解决挑战,解决方案集合至少包括提议者字符串。在实施例中,从解决方案集合中选择解决方案包括至少部分基于一个或多个选择标准选择正确的解决方案。在实施例中,从解决方案集合中选择解决方案包括至少部分基于一个或多个选择标准来消除一个或多个不正确的解决方案。在实施例中,算法(诸如二进制搜索算法)用于消除一个或多个不正确的解决方案,直到从解决方案集合中选择一个解决方案。
[0155] 在以相同散列接收多个解决方案的实施例中(例如,其中每个提议者字符串具有相同散列值),结合图8和9所描述的用于解决与区块链网络相关联的计算任务分配系统的任务的提出的解决方案和挑战的示例过程包括至少部分基于与提议者字符串相关联的时间戳从解决方案集合中选择解决方案(即,时间戳可用于从具有相同散列值的多个解决方案中选择一个解决方案,例如,从而可以选择第一个接收到的解决方案)。
[0156] 注意,在图9所示的示例过程的第二部分900中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0157] 图10以流程图的形式示出了用于与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统的议会的发起示例过程1000。示例过程1000可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于发起与区块链网络相关联的计算任务分配系统的议会的示例过程1000(结合图10所述)。在实施例中,过程1000由初始受信方执行以建立议会。
[0158] 过程1000包括在步骤1002提供议会公钥。如果其他节点希望加入议会,可以将议会公钥提供给其他节点,以允许其他节点存入议会公钥。也就是说,其他人可以将代币转移到与议会公钥相关联的地址,以便加入议会。
[0159] 在步骤1004,执行过程1000的节点可以允许分配到公钥,直到满足一个或多个条件。例如,节点可以允许在确定的时间段或确定数量的区块内分配到公钥。在满足条件之后(例如,在该时间段到期或挖掘到所述数量的区块之后),执行过程1000的节点在步骤1006识别议会的初始成员。
[0160] 在识别将构成议会的初始成员的各方之后,在步骤1008,可以根据门限签名方案将私钥分成私钥份额。在步骤1010,私钥份额可以从执行过程1000的节点被分配到所识别的各方。私钥份额可以与门限签名方案相关联,该门限签名方案可以是本文所述的类型。
[0161] 在步骤1010期间,被识别为议会成员的节点合作生成新的私钥份额和新的公钥。由初始受信方发送到这些节点的原始密钥份额可用于签名和广播交易,以将议会池中的所有数字资产发送到新的公钥,该新的公钥随后成为议会公钥。也就是说,在步骤1010期间,可以建立新的群组公共地址,并且可以将议会控制下的数字资产转移到该新地址,该新地址成为群组的新地址,并且可以与议会公钥相关联。在确认此转移后,议会可以无信任地运作。可以形成新的群组公共地址,将来可以从希望加入议会的其他节点接收数字资产的存款,或者用于上述其他目的。现在可将议会成员视为已经加入议会,这些节点现在可以在没有初始受信方的帮助下运行。此外,初始受信方不再参与议会的运作。
[0162] 注意,在图10所示的示例过程1000中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0163] 图11以流程图的形式示出了用于与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统的议会的加入示例过程1100。示例过程1100可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于加入与区块链网络相关联的计算任务分配系统的议会的示例过程1100(结合图11所述)。
[0164] 图11所示的示例过程1100可以与结合图10所描述的示例过程1000一起操作。在实施例中,示例过程1100由运行在执行示例过程1000的节点同一区块链网络100(图1)中的节点的不同节点(例如,诸如节点102的节点)来执行。示例过程1100包括在步骤1102获得议会公钥。议会公钥可以直接从发起议会的一方获得(例如执行图10的示例过程1000的节点),或者可以从第三方获得(包括例如在区块链网络外部运行的第三方系统)。例如,议会公钥可以从可通过公共互联网访问的公共网络服务器获得。
[0165] 在步骤1104,执行示例过程1100的节点通过将数字资产的交易从与该节点相关联的私人账户广播到议会地址(即,与议会公钥相关联的地址),将该交易存入议会公钥。更具体地,节点可以广播交易以将一个或多个数字资产转移到与议会公钥相关联的公共群组地址。公共群组地址可以是议会池的地址。议会池包括与议会其他成员相关联的其他数字资产。因此,步骤1104的交易一旦被矿工(例如,结合图1描述的挖掘节点104)添加到区块中,就将数字资产转移到包括来自其他成员的数字资产的议会池。公共群组地址既可以接收希望加入议会的各方的转移,也可以接收不希望加入议会的各方的转移。不希望加入议会的各方将数字资产转移到议会池,以便议会可以使用议会采用的门限签名方案对这些数字资产进行全部、部分或有条件的控制。
[0166] 步骤1104的交易可以包括标志、标识符或其他属性,其表明转移数字资产的一方希望加入议会,并且为此目的进行存款。
[0167] 在将数字资产存放在议会池之后,在步骤1106,执行示例过程1100的节点接收私钥份额。然后,在步骤1108,节点通过运行协议的单个实例再次生成私钥份额。私钥份额的生成可以在节点的TEE内执行。
[0168] 在步骤1108,节点生成可用于门限签名方案的私钥份额,在该门限签名方案中,必须使用至少门限个私钥份额来代表议会生成交易的有效签名。私钥份额的其他持有人是议会的其他成员,他们通过将各自的数字资产转移到公共群组地址,在允许或不允许的基础上加入议会。
[0169] 为了重新生成私钥份额,在步骤1108,现有议会成员可以合作更新密钥份额。例如,节点可以生成t阶的随机多项式,其常数项为零 节点可以计算点并将该点设置为现有议会成员的私钥份额。节点可以将多项式 (i)上
的点分配给每个现有议会成员,i=1,…,n。每个现有议会成员(i=1,…,n)将接收到的值添加到其现有的私钥份额,以获得新的私钥份额。该节点具有等同于所有其他成员的私钥份额,并且相应的公钥保持不变。如上所述,门限签名方案可以是各种类型的,包括椭圆曲线数字签名算法或基于施诺尔方案的门限方案。
[0170] 私钥份额可以在(至少结合图2的上述)TEE内生成,并且可以安全地存储在节点上。例如,私钥份额可以存储在TEE中。
[0171] 在各个节点生成了私钥份额之后,在先前的议会公钥的控制下的资金(例如,转移到与原始议会公钥相关联的公共群组地址的资金)可以(通过在门限签名方案下足以生成有效签名的多个群组节点的合作)转移到与新的私钥份额相关联的新的议会公钥。
[0172] 在步骤1108生成私钥份额之后,私钥份额可以在示例过程1100的步骤1110使用。私钥份额可用于从公共群组地址协同地生成交易的有效签名,该公共群组地址可由成员广播。也就是说,私钥份额可以用于门限签名方案中,以有助于签名生成。根据门限签名方案,可能需要各个成员使用门限数量的议会私钥份额来产生有效的签名,该签名允许将数字资产从议会上转移出去。执行示例过程1100的节点可以从存储中检索私钥份额并使用私钥份额,以便有助于签名生成。如果有足够数量的其他议会成员也使用他们各自的私钥来帮助生成签名,则可以生成签名,并且可以广播有效的外流(outgoing)交易。当区块链网络的挖掘节点将交易添加到通过区块链网络中节点的共识而添加到区块链的挖掘区块中并确认该区块时,外流易可以完成。此时,交易中代表的数字资产可以不再受议会的控制。也就是说,此类数字资产可以不再受议会公钥的限制。
[0173] 在步骤1108,私钥份额的使用可以在节点的TEE内执行。TEE保护私钥份额,使得系统的其他部分或成员本身不能访问存储在保护区中的任何数据(例如私钥份额)。此外,TEE保护私钥,因为如果成员希望返还其存款并收到其存款,则TEE不可以保留私钥的副本,因为它必须在返还成员存款之前证明私钥已被删除。
[0174] 图11的示例过程1100可以在初始设置阶段期间或之后执行。也就是说,示例过程1100可以在初始密钥份额可以被分配之前(例如,在示例过程1000的步骤1010期间)或之后(例如,在重新平衡期间,这将在下文更详细地讨论)执行。
[0175] 步骤1110的交易可以将数字资产转移回最初将这些数字资产存入议会池的一方。也就是说,转移可能将数字资产返还给存款人。转移也可以将数字资产转移到其他地方。例如,数字资产可以被转移到第三方或返还地址。
[0176] 注意,在图11所示的示例过程1100中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0177] 图12以流程图的形式示出了用于与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统的数字资产的没收示例过程1200。示例过程1200可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于没收数字资产的示例过程1200(结合图12所述)。在实施例中,执行图12所示的示例过程1200的节点与执行结合图11描述的示例过程1100的节点是相同的节点。示例过程1200可以在示例过程1100的步骤1108之后执行,使得执行示例过程1200的节点在执行示例过程1200时已经可以访问私钥份额。
[0178] 在步骤1202,节点检测恶意方的恶意活动。恶意方可能是议会的另一名成员。当节点确定议会成员违反预定义的协议或标准时,可以检测到恶意活动。例如,当作为议会成员的节点向议会其他成员报告错误信息(即,虚假、不一致或其他不可接受的信息)时,该成员可能被视为恶意成员。
[0179] 在步骤1204,响应于检测到恶意活动,节点与议会中的其他节点合作,可以暂停作为恶意方的成员。也就是说,议会可以将恶意方排除在进一步参与议会之外。
[0180] 为了确保所有节点按照预先定义的协议或标准运行,可能没收进入议会池的成员存款。没收意味着永久阻止被视为没收的成员存款的返还。构成由于恶意活动而未返还的成员存款的数字资产可以留在议会池中,但不会返还、不会立即或在将来转移到另一个返还地址,也不会没收,没收的性质可取决于议会是否充当竞争币区块链的绑定验证者集。例如,在步骤1206,响应于检测到恶意方的恶意活动,执行示例过程1200的节点可以使用私钥份额以提供没收交易上的部分签名。也就是说,该节点与议会的其他节点合作以没收恶意方先前转移到公共群组地址(即,到议会池)的至少一部分数字资产。也就是说,响应于观察到群组成员违反预定义的协议或标准,私钥份额可用于促进一个或多个数字资产的交易的授权,该数字资产可与群组成员相关联并保存在议会池中。
[0181] 由于门限签名方案可以与议会公钥一起使用,因此单独行动的单个节点可能不会将另一议会成员的数字资产存款从议会池转移(例如,转移到返还地址)。相反,只有当门限数量的私钥份额被其各自的成员用来生成有效签名以将数字资产转移到另一个地址时,或者当具有至少门限数量的私钥份额的一组成员达成共识以暂停成员时(在步骤1204),才能通过转移来没收数字资产,这导致自动忽略来自被暂停成员的任何撤回请求。当通过转移没收数字资产时,数字资产可以转移到的其他地址可以与返还地址相关联。例如,另一个地址可以是不存在私钥的地址,这样任何一方都不能访问由该地址的公钥绑定的数字资产。当数字资产被转移到返还地址时,所述数字资产可视为已被烧毁,因为议会的任何成员或者区块链网络中的任何节点都不再可以兑现它们。
[0182] 因此,在步骤1206,节点可以通过与议会其他成员合作使用私钥份额来没收数字资产,以生成交易到返还地址的有效签名。
[0183] 此外,在一些实现中,议会可以充当绑定验证者集,保护权益证明竞争币区块链,并且该竞争币区块链可以用作广播频道。例如,议会成员可以在竞争币区块链上就成员恶意行为达成共识。这种共识可能对应于包含恶意活动的罪证的竞争币区块链交易的确认。当达成共识后,恶意成员提出的任何撤回成员存款的请求都可以被拒绝,存款可视为已没收。所有或部分已没收的数字资产可以在未来某个时候烧毁。也就是说,在稍后某个时间,门限数量的成员(不包括恶意成员)可协作以授权将已没收的数字资产转移到返还地址。一些或全部数字资产可以作为分配发送到提供成员不法行为证据的节点。
[0184] 由于议会可以是一个开放的群组,区块链网络的任何节点都可以通过存放数字资产加入,因此该群组的成员资格可以定期变化。当发生此类变化,可以更新私钥份额分配。
[0185] 注意,在图12所示的示例过程1200中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0186] 图13以流程图的形式示出了用于与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统的私钥份额分配的更新示例过程1300。示例过程1300可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于更新私钥份额分配的示例过程1300(结合图13所述)。
[0187] 在示例过程1300的步骤1302,节点检测重新分配请求,该请求是在其上实现需要密钥份额重新分配的请求。例如,节点可以检测预期的新成员已经将数字资产转移到公共群组地址,或者现有成员已经请求提取成员存款。
[0188] 数字资产可以由请求加入议会或增加其在议会中的参与的节点以及不请求加入议会而是为了另一目的(例如将数字资产转移到竞争币区块链,如下所述)将数字资产转移到议会的其他节点转移到公共群组地址(即,转移到议会池)。在步骤1302,节点可以使用包括在数字资产到公共群组地址的至少一些交易中的一个或多个属性来识别议会成员(即,将数字资产转移到议会公钥以加入议会而不是为了另一目的的各方)。例如,某些交易可以使用交易中的属性标记为特殊交易。这些属性(或其存在与否)可以指示进行转移的目的。例如,当转让方不请求加入议会时,交易可以包含一个标志。
[0189] 响应于检测步骤1302处的请求,该请求的实现需要密钥份额的重新分配,在步骤1304,节点可以以类似于如上所述生成私钥份额的方式生成新的私钥份额。议会的其他成员节点也生成各自的私钥份额。这些私钥份额可以与新的议会公钥的门限签名方案一起使用。此时离开议会的成员在步骤1304期间可能不会产生新的私钥份额,并且因为他们可能没有被分配私钥份额以与新的议会公钥一起使用,所以失去了参加议会的能力,并且可能不再被视为议会成员。
[0190] 此外,响应于检测重新分配请求(其可以是请求,实现该请求需要重新分配密钥份额),在步骤1306,节点与其他议会成员协作,以转移公共群组地址中的所有数字资产到与新的公钥相关联的新的公共地址(其随后可以成为新的议会公钥)。
[0191] 因此,根据图13的示例过程1300,当存款的分配改变时或者当从成员接收到提取存款的请求时,私钥份额可以被再次生成,并且在议会控制下的所有数字资产可以被移动到新的公钥。可以更新议会的成员资格的频率可能会受到区块链网络的区块时间的限制。许多应用可能只需要在低频时重新平衡。
[0192] 注意,在图13所示的示例过程1300中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0193] 图14以流程图的形式示出了用于与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统的私钥份额分配的更新示例过程1400。示例过程1400可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于更新私钥份额分配的示例过程1400(结合图14所述)。
[0194] 在图14的示例过程1400中,每次成员存款的分配改变时,议会公钥不会改变。当检测到分配新的密钥份额的请求时(在步骤1402处,这可以通过将数字资产存放到公共群组地址而发生),节点与议会的其他成员协作以向群组的新成员发布(在步骤1404)相同公钥的新的私钥份额。协作的节点数量可以至少是在门限签名方案下生成数字签名所需的节点的门限数量。在步骤1404,可以分配额外的密钥份额,而其他密钥份额保持不变。尽管这种改变实际上可能很小,但这可能需要改变(门限签名方案的)门限。或者,在步骤1404,可以分配额外的密钥份额,同时更新其他密钥份额。这种更新可能需要附有删除上一代任何密钥份额的证明。在这种情况下,可以分配新的份额,同时保持相同的门限(在SSS的情况中,这涉及在阶数增加的新的多项式上进行共享)。
[0195] 在步骤1402,节点可以使用包括在数字资产到公共群组地址的至少一些交易中的一个或多个属性来识别议会成员(即,将数字资产转移到议会公钥以加入议会而不是为了另一目的的各方)。例如,某些交易可以使用交易中的属性标记为特殊交易。这些属性(或其存在与否)可以指示进行转移的目的。例如,当转让方不请求加入议会时,交易可以包含一个标志。
[0196] 当成员离开使用示例过程1400的议会时,他们可以安全地删除其私钥份额。为了确保旧成员的私钥份额不可用,议会成员可能需要使用具有特殊TEE的节点。TEE可以是在硬件级实现的体系结构,其保证在其中执行的指令和数据受到保护,免受来自上述系统其余部分的访问和操纵。TEE可以使用硬件机制来响应远程证明挑战,这些挑战可用于向外部方(例如议会中的其他节点)验证系统的完整性。
[0197] 每个成员节点可以使用经认证的TEE,该TEE用于生成一个或多个主机系统不可访问的随机秘密值,而不损害集成电路级别的硬件。如上所述,以这种方式生成的秘密值将用于私钥份额的分布式生成。该秘密值也可以用于在议会的建立阶段建立共享公钥。与建立协议相关联的计算可以在TEE保护区内执行,使得任何成员或前成员都不可以从成员间通信或任何其他方法中获得关于其自身或其他私钥份额的任何信息。TEE中的保护区能够执行远程证明协议,该协议可用于向其他节点证明TEE保护区是可信的,并且该TEE保护区正在运行经批准的计算机可读指令。
[0198] 与群组变化相关联的计算可以在TEE保护区内执行。例如,在TEE保护区中执行新的安全随机秘密的生成,该新的安全随机秘密可用于计算用于SSS的新的多项式。
[0199] TEE保护区还旨在确保在返还成员存款之前,安全地删除不再使用的先前的密钥份额和先前的秘密。更具体地,为了返还成员存款,证明协议可以要求TEE保护区证明密钥份额的删除。每个节点可以将这种证明解释为通过远程证明协议确认在其他节点上已经发生所需删除。因此,示例过程1400还可以包括确认已经离开议会的成员的TEE中先前持有的私钥份额已经从与该成员相关联的节点中删除。该确认可以通过接收私钥份额删除的证明来执行。因此,远程证明协议可用于获得对已经离开议会的成员的先前在TEE中持有的私钥份额的删除的证明。
[0200] 应当注意,示例性过程1300和示例性过程1400在实现时各自提供各种益处。例如,示例过程1300不依赖于安全删除,也不需要依赖于受信硬件。然而,示例过程1300可以受益于这样的硬件,因为例如,在某些情况下,这样的硬件可能使得密钥份额的恶意汇集更加不可能。在另一示例中,示例过程1400避免了每次成员资格改变时必须在新的议会公钥下重新锁定数字资产。此外,在一些情况下,示例过程1400可以比示例过程1300更快地更新成员资格,因为在示例过程1400中,由于数字资产没有被移动到新公钥,所以不需要向区块链添加交易以将所有数字资产移动到新的公钥。也就是说,可以使用示例过程1400来更新成员资格,因为公钥没有改变,所以无需等待生成几个区块(例如,六个区块)来确认数字资产向新的公钥的转移。
[0201] 注意,在图14所示的示例过程1400中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0202] 图15以流程图的形式示出了用于与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统的存款的返还示例过程1500。示例过程1500可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于返还与区块链网络相关联的计算任务分配系统的存款的示例过程1500(结合图15所述)。如上所述,群组成员可以偶尔要求离开议会,当群组成员退出议会时,存入议会池的数字资产可以返还给他们。
[0203] 在示例过程1500的步骤1502,节点可以从作为议会成员的请求者接收撤回请求。撤回请求也可以称为注销请求。撤回请求可以是撤回先前由请求者存放且目前由议会控制的数字资产的请求。该请求可能已由请求者向所有议会成员广播。
[0204] 响应于接收该请求,在步骤1504,节点根据确定的标准评估该请求。这种标准可以是预定的标准。如果议会根据议会协议(在该协议中,每次群组成员资格改变时,议会公钥都不改变)操作,那么在步骤1504,节点可以确认私钥份额已经被请求者删除。这种确认可使用与TEE相关联的远程证明协议来获得。
[0205] 如果议会协议是当成员资格发生变化时议会公钥发生变化的协议,节点可以不确认私钥份额的删除,因为私钥份额不再有效。相反,可以使用新的议会密钥,议会控制下的其他数字资产可以转移到新的议会密钥。
[0206] 在步骤1504,评估还可以考虑当前是否部署了镜像链。如果部署了镜像链,则撤回请求可以被拒绝,直到镜像链停止运行。也就是说,至少在镜像链终止之前,在镜像链上挖掘的议会成员被阻止收回其代币的“权益”。
[0207] 如果节点基于评估批准撤回请求,则在步骤1506,节点促进数字资产的撤回。也就是说,节点使用其私钥份额来协作地生成数字签名,并且使用该数字签名将请求者先前存放的数字资产转移回请求者。例如,数字资产可以被发送回其先前接收的地址。步骤1506可以根据门限签名方案来执行,使得仅在至少门限数量的议会成员授权撤回时,才发生撤回。步骤1506可以在希望注销的成员暂停活动一段时间后执行。这一等待期防止成员在执行返还成员存款协议时出现不良行为。
[0208] 议会协议可以用于许多不同的目的。议会为执行各种功能而提供了安全的机制。议会可以不信任地运作,并提供对数字资产所有权的控制。
[0209] 例如,议会协议可以用于实现如本文所述的镜像链,在这种情况下,议会协议可称为镜像链协议。
[0210] 注意,在图15所示的示例过程1500中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0211] 图16以框图的形式示出了示例环境1600,其中可以为与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统实现第一和第二区块链网络。第一区块链网络1614可以是参考图1的上述类型。第一区块链网络1614包括多个节点1602、1606,这些节点可以使用合适的通信技术彼此连接,所述通信技术可以包括有线和无线通信技术。
[0212] 第一区块链网络1614的节点1602、1606维护第一区块链(在本文可称为“主链”)上的所有交易的全局分类账。如本文所述,节点1602、1606中的至少一些充当第一区块链网络1614的挖掘节点1604。
[0213] 第二区块链网络1616可以是权益证明区块链网络。第二区块链网络1616包括多个节点1612、1606,这些节点可以彼此连接并维护第二区块链网络1616的全局分类账。第二区块链网络1616的全局分类账与第一区块链网络1614的全局分类账可以是分离且不同的。第二区块链网络1616的全局分类账在本文可称为“竞争币区块链(altchain)”
[0214] 基于权益证明的第二区块链网络1616提供了用于达成共识的替代机制。在权益证明区块链网络中,可以通过权益证明而不是工作量证明来保护区块链。在权益证明下,挖掘节点1608存放数字资产的保证金(Security Deposit),并且被选为去挖掘区块的节点的概率可以与作为保证金提供的数字资产的数量成比例。权益证明区块链系统可用于避免在区块链工作量证明上挖掘所需的计算费用和精力。与工作量证明区块链相比,权益证明区块链可允许更高的频率和更规则的区块创建。
[0215] 第二区块链网络1616还包括多个节点1606、1612,所述节点可以使用合适的通信技术连接在一起。这些节点1606、1612维护第二区块链网络1616的全局分类账。
[0216] 多个节点1606用作第二区块链网络1616的挖掘节点1608。因为第二区块链网络1616可以是权益证明区块链网络,所以挖掘节点1608存放数字资产以便被包括作为挖掘节点。更具体地,竞争币区块链的挖掘节点1608形成绑定验证者集,以便在第二区块链网络
1616上挖掘。这些挖掘节点1608也可以是与第一区块链网络1614相关联的议会1610的成员。也就是说,节点1606(所述节点1606可以是第一区块链网络1614和第二区块链网络1616的一部分)充当第二区块链网络1616的挖掘节点1608以及在第一区块链网络1614上建立的议会1610的成员。这些挖掘节点1608根据上述方法加入议会1610并参与议会1610。所述节点1606将数字资产存入议会池可以在主链上进行。也就是说,议会成员将他们的“权益”存放在工作量证明第一区块链网络1614上,以成为第一区块链网络1614的议会成员,并且还通过形成绑定验证者集来充当第二区块链网络1616上的挖掘节点1608。第一区块链网络
1614上的成员存款用作第二区块链网络1616的保证金。
[0217] 应当注意的是,因为成员持有的私钥份额的数量可以基于该成员保证金的数额,并且因为这种保证金会因恶意行为而被没收,所以对议会活动具有更大影响的成员(即持有更多私钥份额的成员)比影响力较小的成员损失更多。议会1610可以是开放式成员资格群体,当向与议会1610相关联的池提交足够的权益时,任何节点都可以加入该开放式成员资格群体。因为议会成员可以是第二区块链网络1616上的挖掘节点,因此他们可以在第二区块链网络1616上创建新的数字资产,以将数字资产从第一区块链网络1614有效地转移到第二区块链网络1616。如本文至少结合图17所述,议会1610可用于在工作量证明和权益证明区块链之间提供双向锚定。
[0218] 图16所示的节点1602、1606和1612可以是电子设备,例如结合图2描述的电子设备200。
[0219] 图17以流程图的形式示出了用于与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统的双向锚定的提供示例过程1700。示例过程1700可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于提供与区块链网络相关联的双向锚定或计算任务分配系统的示例过程1700(结合图17所述)。
[0220] 在实施例中,示例过程1700由诸如结合图16描述的节点1606之类的节点来执行,该节点在上文结合图16描述的第一区块链网络1614(即,工作量证明区块链网络)和第二区块链网络1616(即,权益证明区块链网络)中运行。计算机可读指令可以存储在这种节点的存储器中,并且当这些指令由节点的处理器执行时,配置所述处理器以执行示例过程1700。
[0221] 在步骤1702,节点(例如,节点1606)加入议会。议会可以参照图4以上述方式加入。例如,节点可以将一个或多个数字资产转移到与议会公钥相关联的公共群组地址。公共群组地址具有与议会的其他成员(例如,诸如节点1606的其他节点)相关联的一个或多个其他数字资产。当节点加入议会时,该节点生成用于门限签名方案的私钥份额,在该方案中,必须使用至少一个门限数量的私钥份额的来代表议会生成有效签名。如上所述,门限签名方案可以是各种类型的,包括椭圆曲线数字签名算法或基于施诺尔方案的门限方案。
[0222] 私钥份额的其他持有人可以是议会的其他成员,他们通过将各自的数字资产转移到公共群组地址以在允许或不允许的基础上加入议会。
[0223] 在步骤1704,加入议会的节点与议会的其他成员一起在权益证明区块链网络(例如,在第二区块链网络1616上)上形成绑定验证者集。也就是说,在数字资产作为保证(存放所述数字资产在本文可称为“绑定”)存放之后,议会成员(通过存放在第一区块链网络1614上而形成)现在充当第二区块链网络(例如,第二区块链网络1616)上的挖掘节点,周期性地为第二区块链网络生成新区块。
[0224] 在议会形成之后,作为议会成员的节点可以在步骤1706向群组公共地址检测在工作量证明区块链网络上的数字资产的特殊交易的确认。如果所述交易满足将所述交易与用于加入议会的交易区分开来的预定标准,则可以确定该交易是特殊的。例如,如果交易包括特定的标志、变量或属性,则可以确定该交易是特殊的。
[0225] 在检测到特殊交易之后,节点可以等待,直到至少门限数量的区块已经被添加到工作量证明区块链网络的区块链。该等待期可以降低工作量证明区块链网络上的区块链可能重组的险,该风险可能在步骤1706使交易无效。因此,尽管未在图17中示出,但是该方法可以包括在检测到特殊交易之后,确定至少门限数量的区块已经被添加到工作量证明区块链网络的区块链的操作。
[0226] 在门限数量的区块已经被添加到工作量证明区块链之后,节点在权益证明区块链网络上生成(在步骤1708)相应的数字资产。这些数字资产可以响应于检测特殊交易而生成,并且可以生成与在步骤1706检测的特殊交易中的数字资产数量相对应的数量。
[0227] 所生成的数字资产可以被放置在权益证明区块链网络上,进入与在1706检测到进行特殊交易的公钥所有者相关联的账户。因此,在工作量证明区块链网络上将数字资产转移到议会的一方恢复了对权益证明区块链网络上数字资产的控制。该方现在可以自由地以各种方式使用这些数字资产,包括例如将这些数字资产转移到其他账户。
[0228] 所述生成可以由选定的议会成员执行。更具体地,权益证明区块链网络可以选择还充当权益证明区块链网络的挖掘节点的议会成员(例如,诸如结合图16描述的挖掘节点1608的矿工)来生成区块。节点被选中的概率可以基于该节点已经投入的数字资产的数量。
该概率可能与该节点已存入议会公钥的数字资产数量成比例。
[0229] 在某个时刻,数字资产的所有者可能希望将其转移回工作量证明区块链网络(即主链)。为此,所有者可以发出将数字资产转移回工作量证明区块链网络的请求。这种请求可以在权益证明区块链网络上以特殊交易的形式发出。该交易可能是特殊的,因为它是到特殊返回地址的交易,当发送者希望将这些资金转移回主链时,该特殊返回地址是资金应该被发送到的地址。也就是说,交易可能是特殊的,因为地址是特殊的地址。在步骤1710,节点可以检测将权益证明区块链网络上的数字资产转移回工作量证明区块链网络的请求。例如,在步骤1710,可以进行将资金发送到特殊地址的交易的挖掘。
[0230] 为了防止重组,在步骤1710检测到请求之后,节点可以等待,直到至少门限数量的区块被添加到权益证明区块链网络的区块链。因此,虽然未在图17中示出,但是示例过程1700可以包括在检测到请求之后,确定至少门限数量的区块已经被添加到权益证明区块链网络的区块链的操作。
[0231] 响应于检测到这样的请求并确定门限数量的区块已经被添加到权益证明区块链,在步骤1712,节点使用其用于议会的私钥份额来协作地从公共群组地址生成交易的有效签名。例如,交易可以通过在竞争币区块链上的交易中包括所需的信息来直接或经由竞争币区块链在议会成员之间流通,成员可以添加他们的部分签名,直到获得有效签名,此时交易可以广播到工作量证明区块链网络的挖掘节点(例如,结合图16描述的挖掘节点1604)。交易将数字资产转移到工作量证明区块链网络上的地址,该地址可以是与发出在步骤1710检测到的请求的节点相关联的地址。
[0232] 数字资产在步骤1710被转移到的特殊地址可以是返回地址。因此,在步骤1710,数字资产的转移烧毁(即,破坏)权益证明区块链上的数字资产,以防止数字资产在两个区块链上的复制。
[0233] 为了增强安全性,可以在节点中的受信执行环境中执行转移的至少一部分操作。例如,可以在节点上的受信执行环境中执行确定至少门限数量的区块已经被添加到权益证明区块链网络的区块链。在使用私钥份额之前,节点还可以在受信执行环境中确认在步骤
1710检测到的请求的有效性。私钥份额的生成和使用也可以在受信执行环境中执行。
[0234] 注意,在图17所示的示例过程1700中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0235] 应当注意的是,为了进一步增强本文描述的协议的安全性,协议可以包括一种或多种保护措施,以防止“单向赌博攻击(One-way Bet Attack)”。单向赌博攻击的示例在欺诈者(即,与恶意方相关联的节点)在主链上构建交易时发生,所述交易在议会的控制下(即,由议会公钥担保)转移所有或部分数字资产。欺诈者可以将交易提供给其他成员以添加部分签名。如果与成员相关联的门限数量的私钥份额参与,则可以生成有效签名。如果协议中使用的门限签名方案不是聚合签名方案(例如,如果使用ECDSA),则可能难以识别贡献了部分签名的成员。如果欺诈成功,则可以得到分配的成员可以将其部分签名添加到交易中并继续进行交易,无需冒暴露为欺诈方的风险。因为可能发生的最坏情况可以是收集的签名不足以获得完整签名,所以添加部分签名可能被视为单向赌博。
[0236] 因此,协议可以包括一个或多个用于保护协议免受单向赌博影响的特征。例如,每个节点的TEE可以用于周期性地证明其部分地签名的所有交易和/或它们可能被要求在其存款可被收回之前广播这样的证明。如果节点证明已经将部分签名添加到后来(由议会成员的门限)被判定为欺诈性交易的交易中,则此类恶意活动可以由本文所述的其他诚实成员节点检测到。当检测到这种恶意活动时,诚实的成员节点可以如本文所述合作以暂停该成员和/或如本文所述没收该成员的数字资产。这种技术虽然有助于保护协议不受单向赌博的影响,但在使用定期证明时会带来开销。此外,如果在返还存款之前需要证明,欺诈可能在很长一段时间内不会被发现。
[0237] 该协议可以包括其他安全措施,以防止单向赌博。例如,可以使用聚合签名方案,如Boneh、Gentry、Lynn和Shacham“BGLS”方案(《基于双线性映射的聚合可验证加密签名》,国际密码技术理论和应用议会,欧洲密码2003:密码学进展-第416-432页)(Aggregate and Verifiably Encrypted Signatures from Bilinear Maps.International Conference on the Theory and Applications of Cryptographic Techniques,EUROCRYPT 2003:Advances in Cryptology-pp416-432)。聚合签名允许不同的签名者对不同的消息进行签名,同时只生成一个签名,可以在“单发(Single Shot)”中验证该签名。
[0238] 为了使用BGLS,每个成员的TEE可以持有用于主链上所使用的门限签名方案的单个私钥份额和BGLS私钥。对应于BGLS私钥的公钥可称为共享ID(“SID”)。BGLS私钥可以是使用TEE内的安全随机数生成器生成的随机数。用于门限签名方案的私钥份额可以是在TEE内部使用多方密钥生成协议计算的份额。
[0239] BGLS可以通过以下方式安全防范单向赌博。如本文所述,当节点出于注册的目的向议会分配公钥时,注册交易可以包括该保护区已经看到的主链上的最近区块的数量和散列,以及第二区块链(即竞争币区块链)上的最新区块的数量和散列,该第二区块链可以用作成员和报价(由TEE的证明密钥签名并绑定到SID的保护区内的存储器的初始内容的散列)之间用于通信的广播信道。
[0240] 在请求TEE提供注册交易所需的数据之前,成员必须从每个区块链的创始区块开始,将主链和第二区块链上的所有区块依次发送到其TEE中。TEE可用于检查主链上的工作量证明,并保留当前成员的记录,该记录可以通过分析注册和注销交易来获得。这允许TEE独立地(例如,独立于其所有者)建立当前的SID。也就是说,它允许TEE建立与议会所有当前成员相对应的SID。
[0241] 为了注册,(预期)成员可以构建、签署和广播注册交易,该交易可转移到代表议会的公共群组地址,转移到作为主链的区块链网络(例如,转移到第一区块链网络1614)。注册交易引用的UTXO足以支持至少一个密钥份额。当注册交易在主链上被确认时,如本文所述,议会成员可以协作以向注册成员的TEE发出新的密钥份额。
[0242] 当议会希望发起由议会公钥担保的数字资产的交易时,议会中的节点可以在第二区块链网络(即竞争币区块链)上提出交易(本文表示为交易“T(M)”)。此时,交易T(M)是试图在主链M上转移数字资产的未签名交易,其可以在竞争币区块链A上提出。也就是说,第二区块链网络(即竞争币区块链)可以用作广播信道。当一个成员希望向所有其他成员传达一些信息时,他们可以将其放在交易中,并将其发送到竞争币区块链。
[0243] 当在第二区块链网络(例如竞争币区块链)顶部挖掘到至少门限数量的区块时,交易T(M)可以被视为在第二区块链网络上被批准。当TEE观察到交易在第二区块链网络(即竞争币区块链)上被批准(即提出并确认)时,TEE广播预承诺。预承诺可以包括交易T(M)上的BLGS签名和对应于BLGS签名的SID。预承诺可以被发送到第二区块链网络,以便与其他议会成员共享。也就是说,预承诺可以封装在第二区块链网络上的交易中。
[0244] 一旦通过节点观察到门限数量的预承诺,更具体地,提供输入主链和第二区块链网络的区块的TEE观察到门限数量的预承诺,节点可以在已预承诺到的交易T(M)上输出承诺(部分签名)。例如,可以将门限设置为当前所有SID的简单多数。承诺可以包含在交易中,在第二区块链网络上发送,该第二区块链网络包含引用了T(M)的T(M)的部分签名。
[0245] 当在第二区块链网络中观察到至少门限数量的承诺来构造完整签名时,可以构造已签名的交易T(M),并将其广播到第一区块链网络(例如,到主链)。
[0246] 使用预承诺可以提供额外的安全性,因为聚合签名方案的属性意味着成员在不暴露身份的情况下可能无法促进预承诺。也就是说,他们的身份可以以SID的形式披露,该SID在注册过程中与成员存款相关联。
[0247] 除了上述措施之外,可以进一步配置与节点相关联的TEE,使得只有在第二区块链网络上批准了交易时,才承诺或预承诺交易。例如,所有的区块都可以在已配置的TEE中构建,以使区块可以始终包含对需要所述TEE的已批准交易的预承诺或承诺(对应于构建其TEE的SID)。因此,成员不得拒绝向已批准的交易发送承诺或预承诺,并继续在竞争币区块链上挖掘。
[0248] 观察对第二区块链网络上未批准交易的预承诺的节点可以向绑定验证者集的其他成员报告这种恶意行为。如上所述,恶意成员(由其SID识别)可通过暂停和/或没收成员存款来处罚。例如,响应于观察到对未批准交易的预承诺,成员可以合作以立即暂停SID,以便不再接受任何进一步的预承诺,并且有罪成员被暂停参与协议。此外,一旦包含罪证的交易在第二区块链网络中得到确认,有罪成员的存款可能被没收并被烧毁。诚实成员可以合作以补偿报告恶意行为的节点(例如,通过将至少一部分没收的数字资产转移到报告恶意行为的节点)。因此,在预承诺阶段应用聚合签名方案可以增强协议的安全性,例如通过防止单向赌博攻击。
[0249] 为了防止成员试图欺骗TEE确定主链中工作量证明的当前难度可以小于其当前难度,TEE可以被配置为在观察到难度急剧降低时采取行动。更具体地,如果区块在到达时被提交给TEE,那么难度可以根据区块之间的时间间隔来确定。可以预期难度的任何降低都是渐进的,急剧的降低(根据预定的标准可以确定为“急剧的”)可能是由于成员试图通过在到达时不提供区块来欺骗TEE,使其看起来难度已经降低,从而更容易伪造工作量证明主链的区块。为了提供进一步的安全性,TEE可用于通过向第二区块链网络输出要挖掘的新难度的预承诺(连同区块的散列和区块号)来响应观察到的主链难度的急剧降低。可以包括区块的散列,以允许验证该区块对应于新难度,并且可以包括区块号,以允许其他成员快速将所要求的难度/区块散列与其区块链副本上相同高度的区块进行比较。
[0250] 只有在为包含对相同难度的预承诺门限的第二区块链提供区块时,所述门限对应于在难度急剧下降之前已有存款的其他成员,它才可以重新校准主链难度,并接受由于观察到难度急剧下降而在主链上注册的任何新成员。
[0251] 当使用诸如BGLS的集合签名方案时,返还成员存款的过程可以包括附加要求。例如,请求返还存款的节点可能需要(通过其TEE)证明私钥份额和BGLS私钥都已删除。如果撤回成员已证明删除了私钥份额和BGLS私钥,则可以将其他成员节点配置为仅在将成员存款返回给撤回成员的交易中包括其预承诺或部分签名。
[0252] 用于撤回成员的节点也可能需要通过其TEE证明其已预承诺或承诺的所有交易。如果该撤回成员没有预承诺被确定为未批准的任何交易,则其他成员节点可以被配置为仅在将成员存款返回给撤回成员的交易中包括其预承诺或部分签名。
[0253] 由于上述过程,恶意成员很可能不会从拒绝来自TEE的区块中获益。除了那些与已确认的SID相对应的预承诺外,TEE认为唯一有效的预承诺可能是那些与已不复存在的BLGS私钥相对应的预承诺(可能以相当大的概率发生这种情况的唯一方式是,如果该成员没有向TEE提供最新的区块,并且TEE在一些成员实际上已经离开议会、删除其密钥份额并收回其成员存款时将他们注册为当前成员)。此外,由于上述原因,成员可能无法说服其TEE为欺诈性(即未批准的)交易提供预承诺,并且随后由议会批准返还其存款。因此,可以激励成员以确保TEE具有最新的区块链(即,主链和竞争币区块链)副本。
[0254] 因此,可以通过将节点配置为根据包括以下一个或多个特征的协议进行操作来保护协议:在TEE可以在预承诺交易上输出部分签名之前,TEE可用于要求在第二区块链网络(例如,权益证明竞争币区块链)上观察的预承诺的门限;只有当该成员的TEE证明其私钥份额和BGLS私钥以及其已预承诺的所有交易已被删除,且没有一项交易(通过第二区块链网络的共识)被判定未批准时,才可返还该成员的存款;TEE内构建的任何区块都可以始终包含对要求(预)承诺的已批准交易的(预)承诺(即那些尚未收集(预)承诺门限的已批准/预承诺交易);并且TEE可用于通过向第二区块链网络输出要挖掘的新难度的预承诺(连同区块的散列)来响应观察到的主链上难度的急剧降低。只有在为包含对相同难度的预承诺门限的第二区块链网络提供区块时,所述门限对应于在难度急剧下降之前已有存款的其他成员,它才可以重新校准主链难度,并接受由于观察到难度急剧下降而在主链上注册的任何新成员。
[0255] 支持本文所述的第二区块链网络的协议可以置于现有的工作量证明公共区块链协议(如比特币)顶部,而无需许可,因为它通过主链(如比特币)外部的多方协议构建数字签名进行交互,这意味着它可以在未经主链矿工或开发者同意的情况下运行。因此,该协议可以通过在现有的工作量证明公共区块链协议“之上”实施,而可以不取决于对该公共工作量证明区块链协议的修改。从这个意义上讲,因为不需要修改区块链协议本身以适应进一步的协议,因此可以未经许可地(即无需许可)将该协议添加到区块链中。
[0256] 应当注意的是,本文所述的示例过程主要描述为在节点处执行,但是本文所述的示例过程的特征依赖于与其他节点的协作,并且可以由诸如本文所述的其他计算设备来执行。此外,虽然以上描述主要描述了在工作量证明区块链网络上实现的议会,但是议会可以替代地在权益证明区块链网络上实现。
[0257] 除了已经提到的某些益处和特征,本文所述的技术可以提供额外的益处。例如,双向锚定可以允许图灵完备、基于区块链的计算机程序功能添加到由现有的工作量证明区块链(例如比特币)和权益证明竞争币区块链组成的二进制区块链系统中。更具体地,可以通过使用图灵完备的脚本语言赋予权益证明竞争币区块链来实现这种功能。此外,本文的至少一些技术可以提供权益证明区块链,所述权益证明区块链不会遭受权益证明区块链的先前建议实现的无利害关系(Nothing-at-Stake)问题、与传统权益证明方案相关联的更快和更规则的区块创建的优点。此外,本文所述的至少一些技术为权益证明主链的矿工提供了持有大量数字资产的理由,这增加了工作量证明主链的安全性。
[0258] 图18以框图的形式示出了示例环境1800,其中可以为与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统实现区块链和镜像链。
[0259] 区块链1802可以是如本文所述的基于区块的分布式工作量证明分类账。如本文所述,镜像链1804可以是基于区块的分布式权益证明分布式分类账,该分类账可用于例如仲裁区块链网络中节点之间的争议。例如,区块链可以包括挑战1806,其中一个节点挑战由另一个节点提交的工作产品。例如,当节点(即挑战者)指示为满足请求而提出的结果无效时,可以出现挑战1806。
[0260] 当挑战1806由节点发出时,可以部署镜像链1804。在挑战1806响应于挑战而出现后,可以实例化镜像链。可以用创始区块来实例化镜像链,该创始区块是来自镜像链的先前实例化的最终区块(也称为终端区块)。可以通过挖掘节点将多个区块添加到镜像链,以解决数字争议,直到镜像链达到判断1808。
[0261] 当达到判断1808时,可以构建并签署交易(下文称为最终交易或结算交易)(下文将详细描述)。该交易可以是这样一个交易,其效果可以是根据判断1808在主区块链1802上分配资金,向镜像链的挖掘节点分配资金,等等。该交易还可以将判断结果传达回主区块链1802(例如,交易可以被挖掘到判断区块1810中)。更具体地,结果可以封装在交易中。
[0262] 在已经达到判断并且构建和签署了最终交易之后,镜像链1804可以终止,所构建的交易可以在判断区块1810处被挖掘到主区块链1802中。因为镜像链1804终止,所以该镜像链1804可以因其具有终止区块而不同于典型的区块链。该终端区块(可以是镜像链1804中的最后区块)在确定判断(例如,镜像链1804的判断1808区块)并有效地签署由此产生的交易(根据该判断在主区块链1802上分配资金、向镜像链的挖掘节点分配资金等)时出现。
[0263] 因此,区块链网络中的节点可以实现请求者-提议者-挑战者协议和/或镜像链解决协议。这类节点可以包括存储在存储器(诸如结合图2描述的存储器220)中的计算机可执行指令,所述指令实现这类协议。当由处理器(诸如结合图2描述的处理器210)执行这类指令时,使得节点(诸如结合图2描述的类型的电子设备200)执行与请求者-提议者-挑战者协议和/或镜像链解决协议相关联的一个或多个方法。这类方法可以包括本文所述的示例过程1900、2000、2100或2200中的任何一个或组合。
[0264] 现将参考图19至图22,其示出了可以包括在请求者-提议者-挑战者协议和/或镜像链解决协议中的方法。请求者方法(例如,图19所示的示例过程1900的方法)可以由计算任务分配系统中的任务的请求者来执行。也就是说,请求完成任务的节点可以执行图19所示的请求者方法。在实施例中,该节点是区块链网络中的节点,并且该节点可称为请求者。
[0265] 提议者方法(例如,图20所示的示例过程2000的方法)可以由所述任务的解决方案的提议者来执行。也就是说,声称已经完成任务的节点可以执行图20所示的提议者方法。该节点可以是区块链网络中的节点,并且该节点可称为提议者。
[0266] 挑战者方法(例如,图21所示的示例过程2100的方法)可以由所述任务的解决方案的挑战者来执行。也就是说,挑战由提议者提出的解决方案的节点可以执行图21所示的挑战者方法。该节点可以是区块链网络中的节点,并且该节点可称为挑战者。
[0267] 仲裁者方法(例如,图22所示的示例过程2200的方法)可以由区块链网络的节点与区块链网络的其他节点协作来执行。与其他节点协作执行仲裁者方法的节点可称为仲裁者。
[0268] 在图19至图22的示例过程1900、2000、2100和2200中所述的方法可以协同执行,以共同提供请求者-提议者-挑战者协议,在该协议中,如本文所述,镜像链用于确定提议者字符串的有效性(和/或当提议者字符串受到挑战时确定挑战者字符串的有效性)。
[0269] 图19以流程图的形式示出了用于请求完成与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统的任务的示例过程1900。示例过程1900可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于请求完成与区块链网络相关联的计算任务分配系统的任务的示例过程1900(结合图19所述)。注意,在图19所示的示例过程1900中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0270] 图20以流程图的形式示出了用于提出与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统的任务的解决方案的示例过程2000。示例过程2000可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于提出与区块链网络相关联的计算任务分配系统的任务的解决方案的示例过程2000(结合图20所述)。注意,在图20所示的示例过程2000中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0271] 图21以流程图的形式示出了用于挑战与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统的任务的解决方案的示例过程2100。示例过程2100可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于挑战与区块链网络相关联的计算任务分配系统的任务的解决方案的示例过程2100(结合图21所述)。注意,在图21所示的示例过程2100中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0272] 图22以流程图的形式示出了用于仲裁与如结合图3并且根据实施例所述的区块链网络相关联的计算任务分配系统的任务的解决方案的挑战者的示例过程2200。示例过程2200可以由区块链网络(例如结合图1描述的区块链网络100)的节点(例如结合图1描述的节点102之一)来执行。也就是说,节点(例如结合图1描述的节点102之一)可以执行用于仲裁与区块链网络相关联的计算任务分配系统的任务的解决方案的挑战者的示例过程2200(结合图22所述)。注意,在图22所示的示例过程2200中执行的一个或多个操作可以以各种顺序和组合来执行,包括并行执行。
[0273] 在示例过程1900的步骤1902,节点(本文可称为“请求者”)发出请求。该请求可以是完成任务的请求。例如,任务可以是对工作产品的请求。更具体地,该任务可以是对处理器工作产品的请求(即,对处理器生成定义的工作产品,例如用于计算的输出)。该任务可以是昂贵的计算、需要来自外部源(如金融合约)的输入的任务,或者是产生具有特定属性(如算法或文件)的数据的任务。该请求以与区块链网络(例如,结合图1描述的区块链网络100)相关联的数字资产的形式提供奖金,以换取任务的成功完成。可以在区块链之外发出(即“链下”)请求。例如,可以在可通过互联网访问的网络服务器上发出请求。当对请求的候选解决方案在固定时间段内(本文可称为“挑战期”)未受到挑战时,或者在发现候选解决方案与链上计算的结果匹配时,可以通过在镜像链上重新运行计算来解决挑战的情况下,请求可以被定义为成功完成。
[0274] 该请求(在步骤1902)可以在计算任务分配系统中发出。计算任务分配系统可以包括由各种请求者请求的任务的集合。例如,可以在计算任务分配系统中发布多个任务。任务可以由同一请求者发布,也可以由不同的请求者发布。计算任务分配系统允许节点将计算或算法性能转移到其他节点。
[0275] 在示例过程2000的步骤2002,本文称为提议者的节点识别该请求。该节点继续(在步骤2004)在链下完成任务。例如,处理器可以将请求者请求的算法、数据或其他结果作为工作产品而获得。
[0276] 提议者可以在示例过程2000的步骤2006提交提议。该提议可以是已经完成与请求者在示例过程1900的步骤1902发出的请求相关联的任务的声明。为了提交该提议,提议者可以将其区块链网络公钥发送给请求者。提议者也可以承诺任务的解决方案。该承诺可以是解决方案的散列的形式(即工作产品的散列,例如计算的输出或另一种类型的解决方案)。
[0277] 请求者在示例过程1900的步骤1904接收提议。例如,请求者可以接收提议者的公钥和“承诺”(例如,所声称的工作产品的散列)。
[0278] 响应于接收到该提议,在示例过程1900的步骤1906,请求者可以构建交易T1。交易T1包括奖金作为输入。交易包括奖金和提议者存款作为输出(即T1的输出,T1_out=奖金+提议者存款)。可以对交易T1进行签名以允许提议者添加他们自己的输入。例如,可以对交易T1进行签名SIGHASH_ALL|SIGHASH_ANYONECANPAY。SIGHASH_ALL可以是一种默认的签名散列类型,其对除任何签名脚本之外的整个交易进行签名,防止对签名部分的修改。SIGHASH_ANYONECANPAY可以是一种仅对当前输入进行签名的签名散列类型。
[0279] 交易T1可以构造为以两种方式解锁。在挑战期(如下所述)到期后,可以用提议者的签名(即,对应于提议者提供给请求者的公钥的签名)和对应于承诺的解决方案来解锁该挑战期。例如,操作码OP_CHECKSEQUENCEVERIFY可用于在挑战期锁定交易,但如果在此期间没有挑战,则允许提议者解锁。交易T1也可以构造成在任何时候用如上所述的议会的群组签名解锁。也就是说,当作为议会成员的节点根据议会的门限签名方案使用其各自的私钥份额来合作解锁交易T1时,交易T1可以在挑战期到期之前或之后解锁。
[0280] 交易T1还可包括关于所宣称的解决方案的信息(例如承诺)。例如,可以使用OP_PUSHDATA操作码将所声称的工作产品的散列添加到交易T1。更具体地,可以将所声称的工作产品的散列添加到交易T1的锁定脚本中。该锁定脚本可以被配置为由解锁脚本(在挑战期到期后)解锁,该解锁脚本提供了对包含在锁定脚本中的所声称的工作产品的散列进行散列的解决方案。
[0281] 虽然未在图19和20中未示出,但是提议者可以接收在步骤1906处构建的交易T1,并且可以将提议者存款添加为交易T1的输入。提议者将交易广播到区块链网络的其他节点。交易T1可以被挖掘到区块链(即,被添加到区块中),以便公开可见。
[0282] 一旦交易T1被挖掘到区块链,可以启动挑战期,在此期间任何节点都可以挑战提议者提交的提议。如果在挑战期没有发出挑战,提议者可以从交易T1中索要奖金和提议者存款。提议者可以启动计时器来跟踪挑战期剩余的时间量,一旦挑战期到期,提议者可以自动采取行动。例如,提议者可以向请求者提供工作产品(本文可称为解决方案),并且可以解锁交易。
[0283] 提议者可能不得直接向请求者提供解决方案。相反,提议者可以通过将解决方案嵌入主区块链网络上的交易中来提供解决方案。例如,提议者可以在解锁脚本中提供解决方案,该解锁脚本解锁(在交易T1中)担保奖金和提议者存款的锁定脚本(例如,在导致T1的锁定脚本评估为真(TRUE)的解锁脚本中)。如上所述,锁定脚本可用于检查解锁脚本中提出的解决方案散列到请求者先前由提议者给出的值(即,在“承诺”中)。当解锁脚本成功地解锁先前由交易T1的锁定脚本(即,交易T1的UTXO)所担保的数字资产的锁定脚本时,包含解锁脚本的交易通过使用新的锁定脚本(例如,所述新的锁定脚本可以使用提议者的公钥来担保数字资产,使得提议者现在完全控制数字资产)担保数字资产(即,提议者的存款和奖金)来解锁交易。
[0284] 如上所述,交易T1可以构造成使用OP_CHECKSEQUENCEVERIFY代码来锁定奖金和提议者存款。这允许提议者在挑战期到期后自动索要奖金和提议者存款,无需请求者的进一步批准。
[0285] 可以注意到,如果对提议者的解决方案没有挑战,则可以在工作量证明主区块链上执行完整的交易,而无需执行挑战协议或镜像链协议。
[0286] 但是,挑战者可以在挑战期发出挑战。例如,在示例过程2100的步骤2102,挑战者发出挑战。挑战者可能已经执行了类似于示例过程2000中的步骤2002和步骤2004的操作。也就是说,在步骤2102发出挑战之前,挑战者可能已经识别了请求并且可能已经在链下完成了任务。挑战者也可以通过确定挑战者的解决方案与提议者的解决方案不同来确定发出挑战。例如,挑战者可以执行其解决方案的散列,并将该散列与提议者的解决方案的散列进行比较,如果散列不同,则挑战者可以发出挑战。
[0287] 在图21的示例过程2100的步骤2102,挑战者在挑战期内发出挑战。挑战者可以通过向区块链网络广播挑战意图来发出挑战。在发出挑战时,一组节点可以帮助确定解决方案的有效性。
[0288] 例如,一组节点可以组成一个议会,该议会可以在提出挑战时用来执行仲裁。如上所述,议会通过将数字资产存放在工作量证明区块链网络上而得到保障。在示例过程2200的步骤2202,执行仲裁者示例过程2200的仲裁者可以如上所述加入议会。因此,在步骤2202,仲裁者通过将数字资产存放到与议会相关联的公共群组地址来加入可以称为议会的群组,以成为群组成员。仲裁者在工作量证明区块链网络上进行所述存放。如上所述,该群组可以与门限签名方案相关联,节点为该门限签名方案控制私钥份额。例如,群组的加入(也可以称为注册)可以在镜像链的部署期间执行。由于图22示出步骤2202(加入议会)是在步骤2206(部署镜像链)之前执行的,因此步骤2202可以由在镜像链的先前部署期间(即,不是在步骤2206的部署期间)加入议会的节点来执行。然而,例如步骤2206、步骤2208和步骤
2210可以由在步骤2206期间加入群组的节点来执行。
[0289] 在步骤2204,仲裁者与群组中的其他节点合作,以检测在示例过程2100的步骤2102中由挑战者发出的挑战。更具体地,仲裁者与群组中的其他节点合作,以检测挑战者响应于请求者的请求而对提议者的工作产品提出的挑战。
[0290] 由于上述交易T1,当发出挑战时,群组承担奖金和提议者存款的控制权。也就是说,交易T1可以构造成在任何时候都可由议会解锁。因此,奖金和存款置于并保持在群组的控制之下。因此,无论是否发生挑战,群组都拥有奖金和提议者存款的控制权。在实施例中,在检测到挑战时,群组集体签署与挑战相关联的解锁交易,以如本文所述地分配所述分配和/或所述存款。如本文所述,所述分配和/或所述存款可由该群组在任何时候兑现,但仅可由提议者(或者如果成功的话,由挑战者)在相关联的超时时段之后兑现。
[0291] 在群组控制了奖金和提议者存款并且响应于检测到挑战者之后,仲裁者可以与群组的其他节点合作,以便于挑战者存放数字资产。例如,响应于检测到挑战,议会可以构建具有输入和输出的交易T2,所述输入等于奖金加提议者存款(例如,T2_in=奖金+提议者存款),所述输出等于奖金、提议者存款和挑战者存款的总和(例如,T2_out=奖金+提议者存款+挑战者存款)。交易T2可配置为在任何时候分配给群组。也就是说,交易T2可以配置为向议会分配公钥。可以对交易T2进行签名SIGHASH_ALL|SIGHASH_ANYONECANPAY。仲裁者可与其他仲裁者一起向挑战者提供交易T2,以添加挑战者存款作为输入。例如,仲裁者与其他节点一起,可以使交易T2对其他节点公开可用。
[0292] 在交易T2公开可用后,挑战者将挑战者存款添加为交易T2的输入。也就是说,挑战者提供数字资产的存款(在示例过程2100的步骤2104),并将这种存款置于群组的控制之下。更具体地,挑战者存款可以置于议会公钥的控制之下。因此,奖金、提议者存款和挑战者存款都由群组控制,并由议会公钥担保。如以上对议会描述中更详细描述的,门限签名方案允许门限数目的议会成员使用各自的私钥份额来合作地为涉及奖金、提议者存款和挑战者存款的交易生成有效签名。提议者存款和挑战者存款可以大小相同。
[0293] 挑战者也可能对其挑战解决方案进行承诺。例如,挑战者可以使用操作码OP_PUSHDATA向交易T2添加解决方案的散列。
[0294] 交易T2可以广播到主区块链网络,也可以挖掘到主区块链网络,使得挑战者存款由议会公钥所担保。奖金、提议者存款和挑战者存款现在可以置于群组的专有控制之下。
[0295] 因此,挑战者向仲裁者提供了替代解决方案和存款的证据。在交易T2被挖掘到主区块链网络上之后,在示例过程2200的步骤2206,仲裁者与群组中的其他节点合作,以部署镜像链来解决挑战。如上所述,镜像链可以是权益证明区块链,其中镜像链的挖掘节点是群组的成员。也就是说,可以允许议会成员在镜像链上挖掘。所述议会成员在工作量证明区块链网络上的成员存款用作其权益,使其能够在镜像链上挖掘,任何成员被选中进行挖掘的概率可以与其存款的相对数额成比例。
[0296] 当部署镜像链时(在步骤2206),可以由仲裁者与群组中的其他节点合作来创建或获得镜像链的创始区块。创始区块可以是来自最后一个镜像链部署的最终区块(例如,来自镜像链运行的最后一个实例的终端区块,并且先前的运行可能已经响应于过去的挑战)。该区块可以包含有关创始分配的信息。创始分配可以是数字资产的转移,这些转移尚待完成,并且基于镜像链的先前部署而定。
[0297] 此外,在部署镜像链时,可以允许成员注册或可以允许成员请求从群组中注销。在注册阶段,可以注册新成员,以便为新成员分配本文所述所述的私钥份额。可以向新成员提供创始区块(可以通过当前成员的门限进行验证)以及在注册过程中生成的任何后续区块。
[0298] 镜像链运行中还可以包括预注销阶段。在此预注销阶段,任何请求注销的成员都可以发送删除某些私有数据的证明。返还成员存款可能需要这种证明。任何可能阻止返还成员存款的不良行为的证据都可以在此阶段发送(例如,新注册的成员可以提交由当前成员预先承诺但被怀疑是伪造的创始区块)。上文更详细地描述了注销技术。
[0299] 镜像链的部署可以包括仲裁者与群组中的其他节点合作的裁决操作。裁决操作可以包括从提议者和挑战者接收证据,并基于证据解决挑战。例如,接收到的证据可以包括最终解决方案或中间结果中的一个或两个。中间结果可以是执行所请求任务所需的一个步骤或一系列步骤的结果。例如,中间步骤可以是任务的部分工作产品。最终解决方案可以是完成所请求任务的最终工作产品。证据可以由提议者在示例过程2000的步骤2008提交,由挑战者在示例过程2100的步骤2106提交。
[0300] 仲裁者和议会的其他节点可以通过执行与确定正确解决方案的请求相关联的任务来解决挑战。例如,任务(例如,计算或算法)可以在链上(即,在镜像链本身上)执行。群组可以通过将此类解决方案与其在镜像链上确定的自己的解决方案进行比较,来确定提案者和挑战者字符串中的哪一个是正确的。在此过程中,群组成员(即,镜像链挖掘节点)执行计算和/或分析以对争议进行仲裁。在此过程中,群组成员达成共识并签署区块。
[0301] 为了减少计算需求和时间延迟,群组可以执行二进制搜索过程,同时使用镜像链来解决挑战。更具体地,提议者和挑战者可以各自为其计算或分析提供一个或多个中间结果。由于计算或分析的输入对于提议者和挑战者可能是相同的(如请求者所指定的),并且由于输出可能是不同的,所以对于挑战者和提议者来说,中间步骤之间可能有转换。一旦识别出这种转换,群组可以使用镜像链来仅执行与该转换相关联的单个操作、步骤或过程。因此,仲裁者与其他节点合作,可以仅在镜像链上执行一部分任务,以确定提议者或挑战者之一在与请求相关联的任务的中间步骤中出错。在这种二进制搜索技术下,群组可能无法识别正确的解决方案,而可能识别不正确的解决方案。由于小组没有确定正确的解决方案,因此未被确认为不正确的解决方案不一定是正确的。
[0302] 仲裁者(与群组中的其他节点合作)在部署镜像链时做出判断。当仲裁者和议会的其他节点解决挑战时(即,当此类节点就解决方案形成共识时),可以说已经做出判断。
[0303] 在判断区块链已达成仲裁后,仲裁者与群组的其他节点合作以构建最终交易(完全签名后将被挖掘到主区块链网络中)。最终交易(也可以称为结算交易)可以包含各种数字资产转移;例如,奖金+存款(可以转移到在裁决过程中被视为成功或被证明是正确的节点);挖掘分配(用于已进行的镜像链挖掘);创始转移(可以是基于镜像链的先前运行而到期的数字资产转移,由创始区块确定);和/或退还已注销成员的成员存款。
[0304] 该交易还可以包含有用的元数据;例如,结算交易可以将解决方案转移回区块链网络。因此,在该过程中,群组(即,仲裁者与群组的其他节点合作)可以向区块链网络承诺裁决结果。群组还可以向区块链网络承诺中间计算状态的默克尔根散列(Merkle Root Hash),该中间计算状态在镜像链上链上地确定。
[0305] 可以由仲裁者与群组中的其他节点协作来分配(在步骤2208处)处于群组控制下的数字资产。这种数字资产的分配可以根据为议会(即,为群组)定义的门限签名方案来执行。如上述议会讨论中所指出的,门限签名方案可以被配置,使得需要至少门限数量的成员来生成用于议会公钥的有效签名。因此,仲裁者与群组的其他节点(即,与其他仲裁者一起)可以同意通过使用仲裁者的私钥份额在最终交易中添加部分签名来转移数字资产。其他节点也使用其各自的私钥份额添加部分签名,直到门限签名方案下所需的至少门限数量的私钥份额用于为最终交易创建有效签名为止。
[0306] 在最终交易中分配数字资产的特定方法可能取决于仲裁结果。例如,当挑战成功时,仲裁者可以与其他节点合作,以至少将挑战者存款转移到挑战者,并且将提议者存款按所挖掘区块的绝对数量成比例地分配到镜像链的挖掘节点。当挑战成功并确定挑战者的解决方案正确时,奖金也可以转移给挑战者。因此,挑战者可以在示例过程2100的步骤2108接收数字资产。但是,在使用二进制搜索以致无法识别正确的解决方案的情况下,奖金可以退还给请求者,请求者可以重新发布请求,允许挑战者根据他们的回答提交提议。或者,当通过二进制搜索排除提议者时,请求者可以将挑战者的承诺视为提议,并且可以在示例过程1900的步骤1906恢复操作。也就是说,请求者可以基于挑战者的提议构建新的交易T1。除了先前被认为是挑战者的节点现在可以被认为是提议者之外,该交易可以如上文参考步骤
1906所述。因此,通过提供与挑战者在上述交易T2中提供的解决方案的散列相对应的解决方案,新的交易T1可以构造成在挑战期到期后由挑战者解锁。
[0307] 当确定提议者的工作产品有效时,仲裁者可以与其他节点合作以将奖金和提议者存款转移给提议者,并将挑战者存款按所挖掘区块的绝对数量成比例地分配到镜像链的挖掘节点。因此,提议者可以在示例过程2000的步骤2010处接收数字资产。
[0308] 如果提议者的解决方案和挑战者的解决方案都不正确,那么挑战者存款的一半和提议者存款的一半可以按所挖掘区块的绝对数量成比例地分配给挖掘节点。任何剩余存款都可以返还给接收方。
[0309] 请求者在示例过程1900的步骤1908接收解决方案。请求者在步骤1908接收解决方案的方法可以取决于是否发出了挑战。例如,如果没有发出挑战,提议者使用上述参考示例过程1900的步骤1906所述的交易T1将解决方案提交给区块链。然而,如果发出了挑战,并且如果镜像链确定了对请求的解决方案,镜像链节点可以在镜像链终止时将该解决方案发送给请求者(例如,在示例过程2200的步骤2210)。因此,镜像链协议可以使得参与镜像链的节点在确定解决方案时自动将解决方案发送给请求者。
[0310] 此外,在对镜像链做出判断并且交易被构建和有效签署之后,镜像链可以终止(在示例过程2200的步骤2210)。也就是说,一旦挑战解决,镜像链终止。当镜像链终止时,与挑战解决方案相关的信息可以传输回工作量证明区块链网络。
[0311] 当镜像链终止时,不能再将更多区块挖掘到镜像链上。也就是说,与典型的区块链不同,镜像链具有终端区块。镜像链可以实现为不分叉的权益证明区块链。缺少分叉意味着在镜像链终止时可能有一个确定的终端区块(即,群组中所有节点都同意的终端区块)。在此终端区块之后,镜像链已达到其目的,因此不能被添加。
[0312] 如前所述,当仲裁者(即议会的节点)做出判断时,一旦根据如上所述的门限签名方案通过添加部分签名生成了有效签名,节点则协作构建可以在主链上广播的交易(在步骤2208)。因为该交易本身是多方计算,所以对此交易做出贡献的节点可以接收参与该交易的数字资产的至少一部分的分配。然而,由于交易是在签名之前指定的,所以参与签名(可以包括通过交易向镜像链发送部分签名以及实际挖掘区块)的报酬可以被推迟到进一步的镜像链部署。可以在步骤2210中提供这种推迟。更具体地,可以用允许在镜像链的未来部署期间处理创始分配的信息来构造终端区块。这种信息可以是挖掘分配的记录,该挖掘分配可以预定给在构建最终交易之后创建的区块(例如在最终交易的签名期间创建的区块)。也就是说,创始分配可以设计成分配到对最终交易签名做出贡献的节点。镜像链的终端区块可以成为下一个镜像链运行(即,下次部署镜像链)的创始区块。因此,为将来的创始分配在终端区块中创建记录。
[0313] 注意,根据上面提到的实现,成员在镜像链运行期间注册/注销,这可能由挑战触发。另一种实施方式也允许定期或在其他条件下注册/注销。这可能涉及专门为此目的的镜像链的调度运行,除了没有裁决和判断阶段之外,这与上述镜像链部署类似。在这种情况下,挖掘分配可以至少部分地从注册所需的“注册分配(Enrolment Distributions)”中分配。
[0314] 还要注意,上述示例过程2200描述了可能不是第一镜像链运行的镜像链运行。也就是说,示例过程2200描述了在过去的某个时刻已经部署的镜像链的部署,使得包含创始分配的终端区块已经存在于镜像链中。示例过程2200可以被修改以允许部署第一镜像链。例如,第一次部署镜像链时,可以用另一种方式建立创始区块。例如,创始区块可以由初始受信方提供。
[0315] 通过使用基于权益证明的区块链仲裁挑战,镜像链解决方案可以提供比在工作量证明区块链网络本身上执行此类仲裁更快的解决方案,因为权益证明允许更规则的区块生成,并且可以被配置为允许高频的区块生成。此外,通过在镜像链上而不是在主区块链本身上执行这种仲裁操作,可以将任务从主区块链网络中推出,使得主区块链网络的负担减轻。
[0316] 此外,镜像链的瞬时性质(即镜像链本质上是临时的并终止的事实)可以避免或降低通常影响权益证明区块链网络的无利害关系问题的风险。镜像链网络的临时性质允许议会要求镜像链的挖掘节点将其存款留在原地,直到镜像链终止。也就是说,议会可以被配置为不允许任何议会成员在镜像链运行时撤回其权益。
[0317] 应当注意,尽管上述示例已经参考了比特币中可用的操作码,但是本文所述的方法也可以与其他类型的区块链网络一起使用。
[0318] 图23以框图形式示出了示例计算设备2300,其中可以实现本发明的各种实施例。图23示出了可用于实践本发明的至少一个实施例的示例计算设备2300的简化框图。在各种实施例中,示例性计算设备2300可以用于实现本文所示和上述的任何系统或方法。例如,示例计算设备2300可以被配置为用作数据服务器、网络服务器、便携式计算设备、个人计算机或任何电子计算设备。如图23所示,示例计算设备2300可以包括一个或多个处理器2302,所述处理器2302可配置为经过总线子系统2304与多个外围子系统通信并可操作地连接到多个外围子系统。这些外围子系统可以包括存储子系统2306,存储子系统2306包括存储器子系统2308和文件存储子系统2310。这些外围子系统还可以包括一个或多个用户界面输入设备2312、一个或多个用户界面输出设备2314以及网络接口子系统2316。这种存储子系统
2306可以用于与本发明中描述的交易或操作相关联的信息的临时或长期存储。
[0319] 总线子系统2304可以提供用于使示例计算设备2300的各种组件和子系统能够按照预期相互通信的机制。尽管总线子系统2304示意性地示出为单个总线,但是总线子系统的替代实施例可以利用多个总线。网络接口子系统2316可以提供到其他计算设备和网络的接口。网络接口子系统2316可以用作从示例计算设备2300接收数据和向其他系统发送数据的接口。例如,网络接口子系统2316可以使用户能够将设备连接到无线网络或诸如本文所述的一些其他网络。总线子系统2304可用于通过网络接口子系统2316将与本发明所述的交易或操作相关联的数据传送给一个或多个处理器2302和/或系统外部的其他实体。
[0320] 用户界面输入设备2312可以包括一个或多个用户输入设备,例如键盘、指示设备(例如集成鼠标轨迹球触摸板或图形输入板)、扫描仪条形码扫描仪、结合到显示器中的触摸屏、音频输入设备(例如语音识别系统、麦克风)和其他类型的输入设备。通常,术语“输入设备”的使用旨在包括用于向计算设备2300输入信息的所有可能类型的设备和机制。一个或多个用户界面输出设备2314可以包括显示子系统、打印机或诸如音频输出设备等非视觉显示器。显示子系统可以是阴极射线管(Cathode Ray Tube,CRT)、平板设备(例如液晶显示器(Liquid Crystal Display,简称LCD)、发光二极管(Light Emitting Diode,简称LED)显示器)、或投影或其他显示设备。通常,术语“输出设备”的使用旨在包括用于从计算设备2300输出信息的所有可能类型的设备和机制。例如,一个或多个输出设备2314可以用于呈现用户界面,当交互可能是适当的时候,有助于用户与执行本文所述的过程及其变化的应用程序交互。
[0321] 存储子系统2306可以提供一种用于存储可以提供本发明的至少一个实施例的功能的基本编程和数据结构的计算机可读存储介质。当应用程序(程序、代码模块、指令)由一个或多个处理器执行时,可以提供本发明的一个或多个实施例的功能,并且可以存储在存储子系统2306中。这些应用模块或指令可以由一个或多个处理器2302执行。存储子系统2306可以额外提供用于存储根据本发明使用的数据的储存库。存储子系统2306可以包括存储器子系统2308和文件/磁盘存储子系统2310。
[0322] 存储器子系统2308可以包括多个存储器,包括用于在程序执行期间存储指令和数据的主随机存取存储器(Random Access Memory,简称RAM)2318和可以存储固定指令的只读存储器(Read Only Memory,简称ROM)2320。文件存储子系统2310可以为程序和数据文件(本文也称为非暂时性计算机可读存储介质)提供非暂时性永久(非易失性)存储,并且可以包括硬盘驱动器、软盘驱动器以及相关联的可移动介质、光盘只读存储器(Compact Disk Read Only Memory,简称CD-ROM)驱动器、光驱、可移动介质盒以及其他类似的存储介质。
[0323] 示例计算设备2300可以包括至少一个本地时钟2324。本地时钟2324可以是表示从特定开始日期已经流逝的滴答数的计数器,并且可以集成地位于示例计算设备2300内。本地时钟2324可以用于在特定时钟脉冲下同步示例计算设备2300的处理器和其中包括的所有子系统中的数据传输,并且可以用于协调示例计算设备2300和数据中心中的其他系统之间的同步操作。在一个实施例中,本地时钟2324是原子时钟。在另一个实施例中,本地时钟是可编程间隔计时器。
[0324] 示例计算设备2300可以是各种类型的,包括便携式计算机设备、平板计算机、工作站或本文描述的任何其他设备。另外,示例计算设备2300可以包括另一个设备,该设备可以通过一个或多个端口2326(例如,USB、机插孔、闪电连接器等)连接到示例计算设备2300。可以连接到示例计算设备2300的设备可以包括用于接受光纤连接器的多个端口。因此,可以连接到示例性计算设备2300的设备可以用于将光信号转换成电信号,该电信号可以通过将设备连接到示例性计算设备2300的端口传输以进行处理。由于计算机和网络的日新月异的性质,因此图23中所描绘的示例计算设备2300的描述仅旨在作为用于示出该设备的实施例的特定示例。许多其他配置可能比图23所示系统具有更多或更少组件。
[0325] 因此,说明书和附图应被认为是说明性的而非限制性的。但是,显而易见的是,在不脱离权利要求中所阐述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和变化。
[0326] 其他变型在本发明的精神范围内。因此,虽然所公开的技术易受各种修改和替代构造的影响,但特定示出的实施例在附图中示出并且已经在上文中详细描述。然而,应当理解的是,无意将本发明限制于所公开的一种或多种特定形式,相反,其目的是涵盖所附权利要求所定义的落入本发明的精神和范围内的所有修改、替代构造和等同物。
[0327] 除非本文另有说明或者与上下文明显矛盾,否则在描述所公开的实施例的上下文中(特别是在下文权利要求的上下文中),术语“一(a)”和“一个(an)”和“所述(the)”以及类似的指代的使用应理解为涵盖单数和复数。除非另有说明,术语“包括(comprising)”、“具有(having)”、“包括(including)”和“包含(containing)”应理解为开放式术语(即,意味着“包括但不限于”(including,but not limited to))。术语“连接(connected)”在未修改的情况下指的是物理连接,即使有东西介入,应理解为部分或全部包含在、连接到或连接在一起。除非本文另有说明,否则本文中数值范围的引用仅旨在用作分别指代落入该范围内的每个单独数值的简写方法,并且每个单独数值都被并入说明书中,如同本文中单独引用一样。除非另有说明或与上下文矛盾,否则术语“集合(set)”(例如,“项目集合(a set of items)”)或“子集(subset)”的使用应理解为包括一个或多个成员的非空集合。此外,除非另有说明或与上下文矛盾,否则对应集合的术语“子集”不一定表示对应集合的适当子集,但是子集和对应集合可以相等。
[0328] 除非另有明确说明或与上下文明显矛盾,否则诸如“A、B和C中的至少一个(at least one of A,B,and C)”或“A、B和C中的至少一个(at least one of A,B,and C)”形式的短语之类的连接语言,在上下文中理解为通常用来表示一个项目、术语等,可以是A或B或C,也可以是A和B和C集合的任何非空子集。例如,在具有三个成员的集合的说明性示例中,连接短语“A、B和C中的至少一个”和“A、B和C中的至少一个”是指以下任意集合:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}。因此,这种连接语言通常并不意味着特定实施例要求存在A中的至少一个、B中的至少一个和C中的至少一个。
[0329] 除非本文另有说明或者与上下文明显矛盾,否则本文所述过程的操作可以任何合适的顺序执行。本文所述过程(或其变型和/或组合)可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以通过硬件或其组合实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)。所述代码可以例如以计算机程序的形式存储在计算机可读存储介质上,所述计算机程序包括可由一个或多个处理器执行的多个指令。所述计算机可读存储介质可以是非暂时性的。
[0330] 除非另有说明,否则本文提供的任何和所有示例或示例性语言(例如,“诸如(such as)”)的使用仅旨在更好地说明本发明的实施例,并且不对本发明的范围构成限制。说明书中的任何语言都不应解释为表明任何未要求保护的要素对于实现本发明必不可少。
[0331] 本文描述了本发明的实施例,包括发明人已知的用于实施本发明的最佳模式。通过阅读前述说明书,这些实施例的变型对于本领域普通技术人员来说将变得显而易见。发明人期望熟练的技术人员适当地采用这类变型,发明人打算以不同于本文具体描述的方式来实践本发明的实施例。因此,本发明的范围包括适用法律允许的所附权利要求中列举的主要内容的所有修改和等同物。此外,除非本文另有说明或者与上下文明显矛盾,否则上述要素在其所有可能的变型中的任何组合都包含在本发明的范围内。
[0332] 应当说明的是,上述实施例说明而非限制本发明,在不脱离本发明的由所附权利要求限定的范围的情况下,本领域技术人员将能够设计出许多替代性实施例。在权利要求中,括号中的任何附图标记不应解释为对权利要求的限制。词语“包括(comprising)”和“包括(comprises)”等并非在整体上排除其他元件和步骤的存在,尽管这些元件和步骤并没有在任何权利要求或说明书中列出。在本说明书中,“包括(comprises)”意指“包括(includes)或由......组成(consists of)”,“包括(comprising)”意指“包括(including)或由......组成(consisting of)”。元件的单数引用不意味着排除这些元件的复数引用,反之亦然。本发明可以借助包括若干不同元件的硬件,以及借助适当编程的计算机来实施。在列举了若干装置的设备权利要求中,这些装置中的若干个可以由硬件的同一个部件来体现。不争的事实是,在相互不同的从属权利要求中列举了某些方法,并不代表这些方法的结合不能获得有益效果。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈