CN111133463B - 使用分布式协调的智能合约执行 - Google Patents
使用分布式协调的智能合约执行 Download PDFInfo
- Publication number
- CN111133463B CN111133463B CN201880061618.5A CN201880061618A CN111133463B CN 111133463 B CN111133463 B CN 111133463B CN 201880061618 A CN201880061618 A CN 201880061618A CN 111133463 B CN111133463 B CN 111133463B
- Authority
- CN
- China
- Prior art keywords
- result
- transaction
- party
- members
- computer
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 67
- 238000012546 transfer Methods 0.000 claims abstract description 20
- 238000004422 calculation algorithm Methods 0.000 claims description 41
- 230000015654 memory Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 description 25
- 238000013515 script Methods 0.000 description 22
- 238000012795 verification Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 9
- 238000005065 mining Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000010200 validation analysis Methods 0.000 description 5
- HEFNNWSXXWATRW-UHFFFAOYSA-N Ibuprofen Chemical compound CC(C)CC1=CC=C(C(C)C(O)=O)C=C1 HEFNNWSXXWATRW-UHFFFAOYSA-N 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 241000238876 Acari Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000027756 respiratory electron transport chain Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Abstract
本发明涉及分布式账本技术,例如基于共识的区块链。描述用于智能合约结果确定的计算机实现的方法。使用区块链网络来实现本发明。确定对手方之间的条件集合,条件集合具有多个可能结果,所述结果包括:与数字资产的第一分配相关联的第一可能结果以及与数字资产的第二分配相关联的第二可能结果,第二分配不同于第一分配。创建对手方交易,所述对手方交易包括被编码为计算机可执行指令的条件集合和数字资产作为输出。从第三方接收结果,所述结果对应于第一可能结果或第二可能结果。创建结果交易,以转移对手方交易的数字资产的控制,所述结果交易包括所述结果作为输入。由于在区块链网络中的节点处验证结果交易,至少部分地基于所述结果,根据第一可能结果或第二可能结果将数字资产分配给对手方。
Description
技术领域
本发明总体涉及区块链技术,并且更具体地涉及使用无经销商(dealer-free)秘密共享、椭圆曲线算术和签名的的特性的组合来控制基于区块链的智能合约的执行。本发明还利用密码和数学技术来增强与通过区块链网络进行的电子转移有关的安全性。本发明特别适合但不限于在智能合约中使用。
背景技术
在本文献中,术语“区块链”可以指若干类型的基于计算机的电子分布式账本中的任何一种。它们包括基于共识的区块链和交易链技术、许可和非许可账本、共享账本及其变体。可应用本公开所述技术到很多区块链技术中。包括非商业应用在内的多种区块链实现方式和协议落入本发明的范围。
区块链是一种被实现为基于计算机的去中心化分布式系统的对等电子账本,该系统由区块组成,而区块相应地由交易和其他信息组成。在一些示例中,“区块链交易”是指将包括数据和条件集合的字段值的结构化集合进行编码的输入消息,其中条件集合的实现是将字段集合写入区块链数据结构的前提。例如,每个交易可以是一种数据结构,该数据结构对数字资产的控制在区块链系统的参与者之间的转移进行编码,并包括至少一个输入和至少一个输出。在一些实施例中,“数字资产”是指与使用权相关联的二进制数据。在一些实施方式中,可通过将数字资产的至少一部分从第一实体重新关联到第二实体来进行数字资产的控制的转移。每个区块都包含前一个区块的散列,因此区块变为链接在一起,以创建自区块链创建以来就已经写入区块链的所有交易的永久、不变的记录。交易包含嵌入其输入和输出的称为脚本的小程序,它们指定如何以及由谁可以访问交易的输出。这些脚本可以是用基于堆栈的脚本语言编写的。
在一些示例中,“基于堆栈的脚本语言”是指支持各种基于堆栈或面向堆栈的执行模型和操作的编程语言。也就是说,基于堆栈的脚本语言可以利用堆栈。使用堆栈,可以将值推入堆栈顶部或从堆栈顶部弹出。对堆栈进行的各种操作可以导致将一个或多个值推入堆栈顶部或从堆栈顶部弹出。例如,OP_EQUAL操作会将顶部两个项目从堆栈弹出,对它们进行比较,然后将结果(例如,如果相等则为1,如果不相等则为0)推入堆栈顶部。对堆栈进行的其他操作(例如OP_PICK)可以允许从除了堆栈顶部之外的位置选择项目。在一部分实施例采用的一些脚本语言中,可以至少有两个堆栈:主堆栈和备用堆栈。脚本语言的一些操作可将项目从一个堆栈的顶部移动到另一个堆栈的顶部。例如,OP_TOALTSTACK,将值从主堆栈的顶部移动到备用堆栈的顶部。应当注意,在某些情况下,基于堆栈的脚本语言可能不仅限于严格按照后进先出(LIFO)的方式操作。例如,基于堆栈的脚本语言可以支持将堆栈中的第n个项目复制或移动到顶部的操作。可以将使用基于堆栈的脚本语言编写的脚本推入逻辑堆栈,该逻辑堆栈可以使用任何适当的数据结构(例如向量、列表或堆栈)来实现。
为了将交易写入区块链,必须对其进行“验证”。网络节点(挖掘节点)进行工作以确保每个交易都有效,而无效交易从网络中被拒绝。节点可以具有不同于其他节点的有效性标准。因为区块链中的有效性是基于共识的,所以,如果大多数节点同意交易有效,则该交易视为有效。安装在节点上的软件客户端通过执行UTXO锁定和解锁脚本来部分地对引用未耗用交易(UTXO)的交易执行该验证工作。如果锁定和解锁脚本的执行评估为TRUE,并且满足其他验证条件(如果适用),则交易被节点验证。经验证的交易传播到其他网络节点,由此挖掘节点可以选择将交易包括在区块链中。因此,为了将交易写入区块链,该交易必须i)由接收交易的第一节点来验证——如果交易被验证,则节点将其中继到网络中的其他节点;ii)被加入由挖掘节点建造的新区块;以及iii)被挖掘,即,加入过去交易的公共账本。当向区块链添加足够数量的区块以使得交易实际上不可逆时,认为该交易被确认。
虽然区块链技术因使用加密货币实施方式而广为人知,但数字企业家已经开始探索使用一些区块链实现方式所基于的密码安全系统以及可以存储在区块链上的数据来实现新系统。如果区块链可用于不限于加密货币领域的自动化任务和过程,那么将非常有利。这种解决方案能够利用区块链的好处(例如,事件、分布式处理等的永久性、防篡改记录),同时在其应用程序中更具通用性。
本公开描述一个或多个基于区块链的计算机程序的技术方案。基于区块链的计算机程序是记录在区块链交易中的机器可读和可执行程序。基于区块链的计算机程序包括可以处理输入以产生结果的规则,然后这些规则可以导致根据这些结果进行动作。当前研究的一个领域是将基于区块链的计算机程序用于实现“智能合约”。与自然语言编写的传统合约不同,智能合约可以是这样的计算机程序,它被设计为自动执行机器可读合约或协议的条款。
在实施例中,虽然可以在智能合约的特定步骤对于与特定实体的交互进行编码,但是智能合约也可以自动执行和自我实施。它是机器可读和可执行的。在一些示例中,自动执行是指成功进行以实现UTXO的转移的智能合约的执行。注意,在这种示例中,能够导致UTXO转移的“实体”是指能够创建解锁脚本而无需证明掌握一些秘密的实体。换言之,可以在不证实数据源(例如,创建解锁交易的实体)能够访问密码秘密(例如,私人非对称密钥、对称密钥等)的情况下验证解锁交易。此外,在这种示例中,自我实施是指使得区块链网络的验证节点根据约束来实施解锁交易。在一些示例中,从技术意义上使用“解锁”UTXO(也称为“耗用”UTXO),是指创建引用UTXO并执行有效的解锁交易。
区块链交易输出包括锁定脚本和有关数字资产所有权的信息。锁定脚本(也可以称为阻碍)通过指定转移UTXO所需满足的条件来“锁定”数字资产。例如,锁定脚本可能要求在解锁脚本中提供某些数据,以解锁关联数字资产。要求一方提供数据以解锁数字资产的技术涉及将数据的散列值嵌入锁定脚本中。但是,如果在创建锁定脚本时未确定数据(例如,未知和固定的数据),这会带来问题。
可将本发明描述为验证方法/系统,和/或描述为用于控制区块链交易的验证的控制方法/系统。在一些实施例中,经验证的区块链交易导致将交易记录在区块链上,在一些应用中,这会导致经由区块链进行数字资产的交换或转移。数字资产可以是区块链管理的资源单位。虽然在一些实施例中,可将数字资产用作加密货币,但是可以预期,在实施例中,数字资产可以在其他背景下附加性或替代性地使用。注意,本发明虽然可以应用于数字资产的控制,但是其本质是技术性的,并且可以在利用区块链数据结构的其他背景下使用,而不必涉及数字资产的转移。
发明内容
因此,希望提供在这些方案的一个或多个中改进区块链技术的方法和系统。现在已经设计出这种改进的解决方案。因此,根据本发明,提供如后附权利要求书限定的方法。
因此,希望提供一种计算机实现的方法,所述计算机实现的方法包括:
确定对手方之间的条件集合,所述条件集合具有多个可能的结果,所述结果包括:
与数字资产的第一分配相关联的第一可能结果;以及
与所述数字资产的第二分配相关联的第二可能结果,所述第二分配不同于所述第一分配;
创建对手方交易,所述对手方交易包括被编码为计算机可执行指令的所述条件集合和所述数字资产作为输出;
从第三方接收结果,所述结果对应于所述第一可能结果或所述第二可能结果;
创建结果交易,以转移对所述对手方交易的所述数字资产的控制,所述结果交易包括所述结果作为输入;以及
由于在区块链网络的节点上验证所述结果交易,而至少部分地基于所述结果,根据所述第一可能结果或所述第二可能结果将所述数字资产分配给所述对手方。
所述第三方可以是包括多个成员的群组。
所述结果可以是所述多个成员提交的答复的共识的结果。
可以确定成员数量,以包括所述多个成员。附加性或替代性地,可以确定阈值数量,以确定所述结果。所述结果可以与所述多个成员中至少阈值数量的成员提交的答复相匹配。
所述结果可以至少部分地基于所述多个成员提交的密钥份额来确定。附加性或替代性地,所述密钥份额可以根据秘密共享方案来确定。
所述密钥份额可通过所述多个成员提交给权益证明区块链中的区块。
可以创建与第二数字资产相关联的至少一个协调算法交易。附加性或替代性地,由于验证为转移对所述第二数字资产的控制而创建的分配交易,可将所述第二数字资产分配给所述第三方。
所述第二数字资产可包括所述第三方贡献的押金部分。
附加性或替代性地,所述第二数字资产可包括所述对手方贡献的分配部分。
所述多个成员可包括其答复与所述共识不匹配的成员。附加性或替代性地,由于答复与答复的所述共识不匹配,所述第二数字资产的分配可使得所述成员不能接收所述分配部分。
所述数字资产可包括第一方贡献的第一数量的数字资产和第二方贡献的第二数量的数字资产。
所述多个可能结果之一可以与所述条件集合的超时条件相关联。附加性或替代性地,进一步由于验证所述结果交易以及发生所述超时条件,可将所述第一数量退还所述第一方。附加性或替代性地,进一步由于验证所述结果交易以及由于发生所述超时条件,可将所述第二数量退还所述第二方。
可以从所述第三方接收与所述多个可能结果相对应的多个私密结果密钥。附加性或替代性地,所述结果可以是与所述多个私密结果密钥之一相对应的密码密钥。可将所述对手方确定的秘密值与所述多个私密结果密钥中的每个密钥组合,以产生多个混淆的结果密钥。可以创建所述对手方交易,以进一步包括所述多个混淆的私钥。验证所述结果交易可包括:将所述密码密钥与所述秘密值组合,以产生结果签名密钥。附加性或替代性地,验证所述结果交易可包括:至少部分地基于所述多个混淆的私钥中的哪一个与所述结果签名密钥相关联,将所述数字资产分配给所述对手方。
因此,还希望提供一种计算机实现的方法,所述计算机实现的方法包括:
向对手方集合传达同意以确定条件集合的结果,所述条件集合具有第一可能结果和第二可能结果;
使用秘密共享协议生成与所述第一可能结果相对应的第一私钥份额以及与所述第二可能结果相对应的第二私钥份额;
将一定数量的数字资产转移到与第一区块链交易相关联的地址;
由于将所述结果确定为所述第一可能结果,在特定时间区间(time frame)内揭示第一私钥份额,所述第一私钥份额至少部分地可由所述对手方集合用于确定所述结果;
至少部分地基于所述第一私钥份额生成签名,所述签名至少部分地可用于验证第二区块链交易,以耗用与所述第一区块链交易相关联的所述一定数量的数字资产;以及
使得所述第二区块链交易在区块链网络中的节点处得到验证,以获得对所述一定数量的数字资产的控制。
此外,希望提供一种计算机实现的方法,所述计算机实现的方法包括:
向对手方集合传达同意以确定条件集合的结果,所述条件集合具有第一可能结果和第二可能结果;
使用秘密共享协议生成与所述第一可能结果相对应的第一私钥份额以及与所述第二可能结果相对应的第二私钥份额;
将一定数量的数字资产转移到与第一区块链交易相关联的地址;
由于将所述结果确定为所述第一可能结果,在特定时间区间内揭示第一私钥份额,所述第一私钥份额至少部分地可由所述对手方集合用于确定所述结果;
至少部分地基于所述第一私钥份额生成签名,所述签名至少部分地可用于验证第二区块链交易,以解锁与所述第一区块链交易相关联的所述一定数量的数字资产;以及
使得所述第二区块链交易在区块链网络中的节点处得到验证。
可以生成与第一可能结果相关联的第一公钥以及与第二可能结果相关联的第二公钥。附加性或替代性地,可将第一公钥和第二公钥提供给对手方集合。附加性或替代性地,通过至少部分地使用第一私钥份额生成第一私钥,第一私钥份额可用于确定结果。附加性或替代性地,通过确定第一私钥与第一公钥相关联,第一私钥份额可用于确定结果。
秘密共享协议可以是无经销商秘密共享协议。
揭示第一私钥份额可包括在第三区块链交易中揭示第一私钥份额。
第三区块链交易可以是权益证明区块链中的交易。
特定时间区间可以是第二时间区间。附加性或替代性地,揭示第一私钥份额可以进一步包括在第二时间区间之前的第一时间区间内,在承诺交易中提交第一私钥份额的密码散列。附加性或替代性地,验证第三区块链交易可包括确定第三区块链交易中的第一私钥份额对应于承诺交易中的密码散列。
第一区块链交易可以进一步包括从对手方集合的子集中转移的第二数量的第二数字资产。附加性或替代性地,由于使得第二区块链交易得到验证,可以进一步转移对第二数量的第二数字资产的控制。
第一区块链交易可以进一步包括超时条件。附加性或替代性地,由于满足超时条件的结果,使得第二区块链交易得到验证可将对第二数量的第二数字资产的控制转移到对手方集合的子集中。
第二区块链交易的验证可包括验证使用群组密码密钥生成的数字签名,所述群组密码密钥与已经同意确定所述结果的参与者群组相关联。
参与者群组可包括揭示与第一可能结果相对应的密钥份额的参与者的第一子集。附加性或替代性地,参与者群组可包括揭示与第二可能结果相对应的密钥份额的参与者的第二子集。附加性或替代性地,转移对第二数量的控制可包括将对第二数量的控制转移到参与者的第一子集,不包括参与者的第二子集。
可以生成与参与者群组相关联的群组公钥。附加性或替代性地,可将群组公钥提供给对手方集合。附加性或替代性地,可以至少部分地使用群组公钥来创建第一区块链交易。附加性或替代性地,第二区块链交易的验证可包括确定群组密码密钥与第一区块链交易的群组公钥相关联。
可以使用秘密共享协议来生成群组私钥份额。附加性或替代性地,进一步由于确定所述结果,可以至少部分地基于群组私钥份额来生成群组密码密钥。
第一私钥份额可以属于在参与者群组之间分配的多个第一私钥份额。附加性或替代性地,第一私钥份额可以对应于第一可能结果。附加性或替代性地,将结果确定为第一可能结果可包括:确定阈值数量的所述多个第一私钥份额已经由所述参与者群组揭示。
此外,希望提供一种系统,包括:处理器;以及存储器,包括可执行指令,由于所述处理器执行,所述可执行指令导致所述系统进行要求保护的任何一种方法。
此外,希望提供一种非暂时性计算机可读存储介质,其上存储有可执行指令,由于计算机系统的一个或多个处理器执行,所述可执行指令导致所述计算机系统至少进行要求保护的任何一种方法。
可将本发明描述为验证方法/系统,和/或描述为用于经由区块链控制数字资产的交换或转移的控制方法/系统。在一些实施例中,数字资产是通证或加密货币的一部分。如下所述,还可将本发明描述为用于经由区块链网络或平台进行操作的新的、改进的、有利的方式的安全方法/系统。
附图说明
通过参考本文所述实施例,本发明的这些和其他方案将变得显而易见并得以阐明。下面仅通过示例并参考附图来描述本发明的实施例,其中:
图1示出可以实现各种实施例的区块链环境;
图2示出根据实施例的智能合约的示例;
图3示出根据实施例的建立智能合约的示例;
图4示出根据实施例的协调结果确定的示例;
图5示出根据实施例的智能合约执行的示例;
图6是示出根据实施例的创建智能合约和协调算法交易的示例的示意图;
图7是示出根据实施例的执行智能合约的示例的示意图;以及
图8示出可以实现各种实施例的计算环境。
具体实施方式
首先参考图1,其示出根据本公开实施例的与区块链相关联的示例性区块链网络100。在该实施例中,示例性区块链网络100包括实现为对等分布式电子装置的区块链节点,每个节点运行软件和/或硬件的实例,该软件和/或硬件的实例进行服从区块链协议的操作,区块链协议至少部分地在节点102的操作者之间达成一致。在一些示例中,“节点”是指在区块链网络之间分配的对等电子装置。
在一些实施例中,节点102可包括任何合适的计算装置(例如,数据中心的服务器,客户端计算装置(例如,台式计算机、膝上型计算机、平板计算机、智能手机等),计算资源服务提供商的分布式系统中的多个计算装置,或任何合适的电子客户端装置(例如,图8的计算装置800))。在一些实施例中,节点102有多个输入,以接收代表所提议交易(例如交易104)的数据消息或对象。在一些实施例中,对于它们所维护的信息(例如对于交易104的状态的信息),节点是可以查询的。
如图1所示,一些节点102可通信地耦接到一个或多个其他节点102。这种通信耦接可包括有线或无线通信中的一个或多个。在该实施例中,每个节点102都维护区块链中所有交易的“账本”的至少一部分。通过这种方式,账本将是分布式账本。由影响账本的节点处理的交易可以被一个或多个其他节点证实,从而维护账本的完整性。
关于哪些节点102可以与哪些其他节点通信,如下情况就是足够的:示例性区块链网络100中的每个节点能够与一个或多个其他节点102通信,使得节点之间传递的消息能够在整个示例性区块链网络100中(或它的一些重要部分)传播,假定该消息是区块链协议指示应当转发的消息。一个这样的消息可能是其中一个节点102(例如节点102A)对所提议交易的公布,然后消息将沿着诸如路径106的路径传播。另一个这样的消息可能是提议包含到区块链上的新区块的公布。
在实施例中,至少一部分节点102是进行复杂计算(例如解决密码问题)的挖掘节点。解决密码问题的挖掘节点创建用于区块链的新区块,并将新区块广播到节点102中的其他节点。节点102中的其他节点证实挖掘节点的工作,并在证实后将区块接受到区块链中(例如,通过将其添加到区块链的分布式账本中)。在一些示例中,区块是交易群组,通常用先前区块的时间戳和“指纹”(例如,散列)来标记。通过这种方式,每个区块都可以变为链接到先前区块,从而在区块链中创建链接区块的“链”。在实施例中,通过节点102的共识将有效区块添加到区块链。此外在一些示例中,区块链包括已验证区块的列表。
在实施例中,如本公开所述,至少一部分节点102作为验证交易的验证节点来操作。在一些示例中,交易包括提供数字资产所有权的证明以及用于接受或转移数字资产所有权/控制的条件的数据。在一些示例中,“解锁交易”是指这样的区块链交易:其将先前交易的未耗用UTXO所指示的数字资产的至少一部分重新关联(例如,转移所有权或控制权)到与区块链地址相关联的实体。在一些示例中,“先前交易”是指包含解锁交易所引用的UTXO的区块链交易。在一些实施例中,交易包括“锁定脚本”,该“锁定脚本”通过在可以转移(“解锁”)所有权/控制之前必须满足的条件来阻碍交易。
在一些实施例中,区块链地址是一串字母数字字符,它与数字资产的至少一部分的控制正在转移/重新关联到的实体相关联。在一些实施例中实现的一些区块链协议中,与实体相关联的公钥与区块链地址之间存在一一对应关系。在一些实施例中,交易的验证涉及验证在锁定脚本和/或解锁脚本中指定的一个或多个条件。在成功验证交易104之后,验证节点将交易104添加到区块链中并将其分配给节点102。
本公开中引用的操作代码的示例包括:
·OP_CHECKSIG,其中,根据SIGHASH类型从堆栈中弹出公钥和签名,并针对交易字段的签名对其进行证实。如果签名有效,则返回1,否则返回0。
·OP_DUP,其复制顶部堆栈项
·OP_ELSE,如果先前的OP_IF或OP_NOTIF或OP_ELSE未执行,则将执行这些语句;否则,如果先前的OP_IF或OP_NOTIF或OP_ELSE已执行,则不执行这些语句
·OP_ENDIF,其结束if/else区块
·OP_IF,如果顶部堆栈值并非False,则其执行语句并删除顶部堆栈值
·OP_CHECKMULTISIG,其将第一签名与每个公钥进行比较,直到找到匹配。然后,使用后续公钥,将第二签名与每个剩余公钥进行比较,直到找到匹配。重复此过程,直到检查完所有签名。如果签名有效,则返回1,否则返回0。
·OP_CHECKLOCKTIMEVERIFY,如果顶部堆栈项大于交易nLockTime,则因错误退出;否则,脚本评估继续
图2示出本公开的示例性实施例200。如图2所示,示例性实施例200可包括对手方202A-02N(C1-Cn),对手方202A-02N(C1-Cn)创建智能合约206,智能合约206分配一定数量的数字资产220,其取决于从成员群组204A-04M(p1-pm)接收的答复214的共识,该成员群组204A-04M(p1-pm)被招募以客观地确定答复214,来换取分配222。也就是说,在实施例中,成员204A-04M共同充当分布式可信权威,以提供决策问题或功能问题的答复。在某些示例中,“权威”是指提供可确定结果的输入的外部代理;权威相关的服务包括Oraclize、TownCrier和Orisi服务。在一些实施例中,成员204A-04M不一定知道群组其他成员的身份或者不一定知道群组其他成员提供的答复。通过使得成员相互之间保持匿名,可将成员之间串通的可能性最小化。
在一些实施例中,对手方202A-02N可以是已经就智能合约条款达成一致的两个以上实体。在各种实施例中,对手方202的其中一个是能够确定或同意智能合约206条款的个人、个人的群组、公司、计算装置或一些其他实体。在一个用例中,第一对手方是客户,第二对手方是保险公司。在一些实施例中,对手方202A-02N的至少其中一个提供分配222作为分配以吸引其他实体参与作为确定智能合约206的结果的成员204A-04M。在一些实施例中,对手方202A-02N的至少其中一个确定有多少成员来包括成员群组204A-04B。在各种实施例中,所述数量是成员的确切数量、最小数量或最大数量。群组中的成员越多,群组提供的共识答复就越可靠。
在一些实施例中,成员204A-04M是能够确定智能合约206的条件的结果的实体群组。如同对手方202A-02N一样,在各种实施例中,成员的其中一个是能够提供可用于确定智能合约206结果的答复的个人、个人群组、公司、软件应用程序、计算装置或一些其他实体。如上所述,在一些实施例中,成员204A-04M的数量可由对手方202A-02N指定。在一个示例中,对手方202A-02N指定群组中必须有15个成员。
在实施例中,如果没有足够的成员加入群组(例如,在指定时间内),则对手方202A-02N生成智能合约206,以退还对手方202A-02N存入的任何数量的数字资产(减去交易分配)。如上所述,在一些实施例中,可以通过对手方202A-02N提出的分配222向成员204A-04M提供参与确定答复214的理由,以。在一些实施例中,成员204A-04M提交与答复的共识相匹配的答复,接收分配222或分配222的一部分(例如,除以多个成员)。在这些实施例的一部分实施例中,提交非共识答复(与共识答复不一致的答复)的成员丧失其分配222或分配222的一部分。在其他实施例中,相比于提交与共识相匹配的答复的成员所接收的分配222,提交非共识答复的成员接收更少的分配或者分配222的更少一部分。
在各种示例中,共识是指简单多数的匹配答复、绝对多数的匹配答复、在达到阈值之前提交的多数匹配答复(例如,将前三个匹配答复视为共识答复)、或阈值数量的匹配答复。在一些实施例中,对手方202A-02N确定用于确定共识的阈值。在示例中,对手方202A-02N确定成员204A-04M中的至少60%必须提交匹配答复,以达成共识。
此外,在一些实施例中,每个成员都承诺押金(例如,某些数量的数字资产的押金),这为成员204A-04M提交答复提供了进一步的理由。也就是说,在这些实施例中,同意参与但不遵守协议的成员损失其承诺的押金。在一些实施例中,即使成员提交非共识答复,也仍然向该成员退还押金,使得该成员至少不因为参与而损失数字资产。在确定所需押金数量时,对手方202A-02N可以进行权衡,使得押金大到向成员204A-04M提供一个为了返还其押金而提供及时准确答复的理由,但是没有大到阻止成员204A-04M使其根本不想参与。
在一些实施例中,智能合约206是计算机可执行指令的集合(例如,操作代码),被设计为根据对手方202A-02N同意的条件自动转移对数字资产的控制。在一些实施例中,在区块链交易中将智能合约206代码化(例如,作为用脚本语言编写的计算机可执行指令),并通过区块链网络的验证节点对区块链交易的验证而激活。在实施例中,与区块链交易相关联的数字资产可通过满足智能合约206中指定的条件来赎回(例如,可获得)。在实施例中,智能合约206包括在区块链网络的分布式账本中已验证交易的锁定脚本中。通过这种方式,可执行指令被呈现为不可变,并且包含智能合约206的锁定脚本的成功执行是转移已验证交易的数字资产的前提。
此外,如上所述,在实施例中,智能合约206包括条件集合,并且解锁已验证交易的UTXO取决于条件集合的满足。在示例中,智能合约206是保险合约,当提供了被保险人遭受保险合约承保的损失的证明作为区块链交易的锁定脚本的输入时,根据保险合约向被保险人分配数字资产。此外,在一些实施例中,智能合约206与多个可能结果相关联,并且成功执行包含智能合约206的验证的结果可以取决于特定结果而不同。在以上示例中,智能合约206具有至少两个可能结果:第一可能结果,第二可能结果。第一可能结果是,被保险人遭受承保损失并根据保险合约接收赔付。第二可能结果是,被保险人没有遭受损失,而保险公司保留数字资产和被保险人的保费。在实施例中,如果将证明特定结果的数据作为输入提供给锁定脚本,则智能合约206中计算机可执行指令的执行将导致智能合约206根据可能结果的其中一个转移数字资产。
在一些实施例中,答复214是与智能合约206中指定的一个或多个结果条件相对应的答复。作为示例,智能合约可包括影响支付的数字资产220的数量以及将数字资产220支付给哪个实体的多个条件。成员204A-04M提交答复214,该答复214可用于确定满足多个条件中的哪一个(如果有的话)。在一些实施例中,答复214以密码密钥或数字签名的形式提交。通过这种方式,可通过确定智能合约206中的哪个条件对应于成员204A-04M的共识所提交的密码密钥或数字签名来确定满足的条件。
在一些实施例中,数字资产220是根据满足的智能合约206的特定条件而支付的数字资产的数量。也就是说,根据满足哪个特定条件,数字资产的数量可以不同。例如,如果第一条件是满足条件,则可以向特定实体支付10个单位的数字资产,如果第二条件是满足条件,则可以向相同或不同的实体支付2个单位的数字资产。
如上所述,在一些实施例中,分配222是对手方202A-02N中的一个或多个作为分配提供给成员204A-04M以同意参与提供答复214的一定数量的数字资产。在一些实施例中,由第三方提供分配222。
在本公开中,假定所有参与者可以相互认证并可以经由安全通信信道相互通信。在实施例中,可以使用公钥密码系统或Diffie-Hellman密钥交换协议来实现安全通信。在实施例中,要求方案中的每个参与者生成具有至少一定程度的熵的、从密码安全伪随机数生成器(CSPRNG)导出的秘密值(私钥)。在实施例中,这些值是256位数字。
在实施例中,通过使用椭圆曲线操作来帮助某些功能。在实施例中,使用Secp256k1曲线定义的参数来进行椭圆曲线(EC)操作,当前在一些区块链实现方式中使用该参数来进行公钥生成、签名生成和签名证实。除曲线参数外,Secp256k1标准还指定生成器点G及其阶数p。除非另有说明,否则在实施例中,本公开所述算法中的操作是对模p进行的。此外注意,可以设想,本文描述的这些概念也适用于采用椭圆曲线签名方案的任何区块链。
在实施例中,涉及两个单独的参与者群组,即主合约的对手方(Ci)以及为协调算法(例如谢林协调游戏)做出贡献的成员(Pi)。例如,谢林协调游戏是一种协调游戏,其中两个以上个体试图在不相互沟通的情况下获得相同的解决方案(也称为“中心点”或“谢林点”)。通过这种方式,成员充当分布式群组权威,其提供准确的输入以确定主合约的结果。在实施例中,对手方202A-02N在合约的控制下获得资金,并且在单独的区块链交易中共同向成员提供分配222。但是注意,因为协调算法为成员提供分配,用于提交与阈值数量的成员提交的答复相同的答复,所以答复不一定正确,但是可以反映单个成员认为其他成员将提交的答复。
此外,在实施例中,成员在单独的区块链交易中承诺保证金,可以在成员提交其答复之后将保证金退还,并且如果他们的答复与共识答复匹配,则可以潜在地赢得分配或分配的一部分。如果他们的答复不是共识答复,则成员可以收回其押金,但是不一定接收分配222或分配222的一部分,或者可以接收与提交共识答复的成员接收的部分相比更少的部分。
合约建立
在实施例中,可通过以下方式将主合约(也称为“对手方合约”)实现为链接协调算法(例如谢林协调游戏):数量为n的对手方202A-02N(C1,C2...,Cn)同意合约的条款和条件,包括所涉及的资金。注意,在此阶段,协议可以是非正式的,直到签署交易之前不需要承诺资金。下面在表1中示出该阶段合约的总体结构。
表格1:
在实施例中,在满足第一条件时,对手方202A-02N接收结果中指定的数量为X的数字资产(DA)。注意,在实施例中,条件(结果)必须明确地指定并且必须是互斥的。此外,在实施例中,每个条件i的数量的总和也等于要支付到合约中的资金(减去任何交易挖掘金)。此外,在一些实施例中,添加超时条件以指定如果协议在超时时间段之后失败,资金将如何处理。在实施例中,每个对手方Cj具有公钥PKCj。
图3示出本公开的示例性实施例300。具体而言,图3示出用于本公开的示例性实施例300的公钥建立过程的高级示意图。示例性实施例300包括对手方302,对手方302已经同意合约306并且已经向多个成员304发出请求308,以向合约中的条件提供结果。如图所示,请求308可包括以下相关信息,例如合约条件的定义(Def)、提供的分配(F)、所需的成员数量(N)、每个成员所需的保证金数量(D)、所需阈值(M)、虚拟链区块间隔(ΔT)和承诺区块高度(hB)。在请求308中可以不存在/拒绝智能合约交易330所控制的对手方的身份和数字资产的分配,从而不影响群组成员的投票。
在示例性实施例300中,对手方还生成合约公钥316。在实施例中,对手方302能够相互通信(例如,经由电子邮件和/或其他电子通信),并且对手方302的至少其中一个能够与成员304通信,例如通过门户、在线市场、网络日志、对等通信或某些其他通信论坛。在实施例中,在足够的成员(至少等于请求308中的对手方302所指定的数量)发信号表示同意成为群组的一部分之后,成员304同意生成群组公钥312以及与每个合约条件/结果相对应的共享公钥314。在示例性实施例309中,成员304利用无经销商秘密共享方案生成群组公钥312和共享公钥314。在示例性实施例300中,将对手方302提供的合约公钥316的值与单独的公钥314组合,以产生合约条件公钥318。
在示例性实施例300中,根据基于与合约条件公钥318之一相对应的适当数字签名所确定的结果,对手方交易330分配给一个或多个对手方302。类似地,在示例性实施例300中,协调算法交易332在确定(经由协调算法)获胜结果之后将分配和押金转移到成员304。
以下是上述合约建立的示例性用例。在示例性用例中,在两个对手方302(客户(C1)和保险公司(C2))之间创建保险合约。在该示例中,客户希望针对在2018年4月的任何时候在他的葡萄园严重霜冻的可能性进行投保。在该示例中,将严重霜冻明确地定义为“2018年4月至少4个小时的任何连续时间段,萨里郡的气温保持在-4℃以下”。在该示例中,保险公司同意这样的保单,如果出现严重霜冻,它将支付10DA,以换取客户2DA的保费。因此,保险公司向合约承诺10DA,客户向合约承诺2DA。因此,合约将如下表2所示,总共控制12DA(保险公司的押金和保费)。
表2:
因此,在发生严重霜冻的条件下,客户收到10DA,而保险公司收到2DA。另一方面,在没有发生严重霜冻的条件下,客户不会收回任何资金,而保险公司收回原始的10DA加2DA的保费,总计12DA。在两个条件均未明确证实且发生超时条件的情况下,向客户退还2DA保费,同样地,向保险公司退还10DA的赔付。注意,如果事件没有歧义,则超时条件应为冗余;如果协议未能提供决定,则存在超时以防止资金丢失,并且在该示例中,仅向各方退款。还要注意,在实施例中,对手方还就执行合约的分配以及谁将支付该分配达成一致;为分配选择的数量可以取决于所需的安全性和条件的性质。
在实施例中,其中一个对手方(或充当其代表的第三方/服务)向开放市场(或公共论坛)发布请求,指定合约条件的定义(Def)、提供的分配(F)、所需的成员数量(N)、每个成员所需的保证金数量(D)、所需阈值(M)、虚拟链区块间隔(ΔT)和承诺区块高度(hB)。在实施例中,虚拟链区块间隔是指将区块提交给虚拟链区块链的频率。此外在实施例中,承诺区块高度是指虚拟链中区块的数量。
因此,在上述示例性用例中,保险公司提供0.2DA的分配,并要求10名成员组成的群组提交以下两个结果的其中一个:
1.结果1:“在2018年4月,在英国萨里郡的任何地方,气温保持在-4℃以下并持续至少4小时”。
2.结果2:“[条件1以外的其他结果]”
在示例性用例中,保险公司和客户均同意6的阈值。也就是说,10个成员中的至少6个成员的同意将规定满足上述条件的哪一个。在示例中,要求成员各自提交0.1DA的押金。结果,有效成员可以查看结果定义,并基于其对条件(例如,他们可以直接或间接(即,经由新闻/互联网)访问所需信息)、潜在获胜(F)和所需押金的进行评估的能力来决定是否希望参与。成员将其接受传达给对手方,并包括包含押金的经过认证的UTXO、以及用于通信的公共地址。
在实施例中,当足够数量(N)的成员(Pi)发信号表示他们接受请求时,对手方将其通信地址分配给成员群组。在实施例中,成员和对手方然后可以相互建立安全的对等通信信道。在实施例中,成员群组执行具有阈值M的无经销商秘密共享协议,以针对每个合约条件/结果(IPKi)生成群组公钥(GPK)和单独的公钥(以及关联的个人密钥份额),并且这些公钥被发送到对手方。
在实施例中,成员使用共享秘密密钥的方法,使得每个成员都具有(尚不知道的)秘密密钥的份额。可以根据阈值数量的份额(其中阈值小于或等于成员数量)来计算秘密密钥本身。因此,虽然秘密密钥对于任何单个方都不是已知的,但是成员群组可经由安全的多方计算来确定与尚不知道的秘密密钥相对应的椭圆公钥。通过这种方式,可以以不信任的方式将区块链输出置于共享群组密钥的控制之下,并且可通过阈值数量的成员的合作来确定秘钥(或生成签名)。
在一些实施例中,夏米尔秘密共享方案(Shamir’s Secret Sharing scheme,SSSS)用于此目的。SSSS基于这样的概念,即,可将次数为t的多项式拟合到t+1(阈值)个点的任意集合。以共享私钥作为常数项(a0=f(0))形成次数为t的多项式f(x),其余系数随机选取。曲线上数量等于群组中成员数量的点被给予每个成员。如果将他们的点组合的的成员的数量等于或大于(t+1),则有足够的信息将t阶多项式拟合到这些点,并且ao被揭示为秘密。在实施例中,该方案使得能够在具有任意阈值的任意大数量的成员之间共享单个私钥。
可以扩展标准SSSS,以消除可信经销商创建多项式和分配秘密份额的要求,从而消除对可信经销商的依赖。在这个无经销商SSSS中,每个成员(Pi)生成自己的随机次数为t的多项式fi(x),然后将fi(j)安全地发送给每个其他参与者Pj。然后每个Pi对所有接收的点求和,以获得它们的秘密份额si=f(i),它是共享多项式f(x)上的Pi点。
在创建秘密份额之后,使用椭圆曲线生成器G如下计算对应于共享私钥(尚无成员知道)的公钥(A)。参与者Pi,其中i=1,...,t+1,将其公钥份额计算为bisi×G,其中
然后将这些公钥份额广播给所有成员,然后将共享公钥A简单计算为t+1份额之和:
注意,在本公开中利用椭圆曲线密码术(ECC)的算术特性。可以用p阶的生成器点G定义ECC操作。一旦选择随机私钥(a)(介于1和p之间),就可通过点乘法来导出公钥(A):
A=a×G
此外,由于点乘法的基本属性:
(a+r)×G=a×G+r×G
其中r可以是一个随机数。在实施例中,该属性可用于对椭圆曲线签名采用随机盲态随机数。此外在本公开中,在各种实施例中使用椭圆曲线数字签名算法方案,以使得群组能够使用阈值数量的密钥份额来共同签署交易,而无需重构完整的私钥。
为了进一步继续上述示例性用例,由10个成员组成的群组共同执行无经销商SSSS协议三次(如上所述,阈值为6)。由10个成员组成的群组生成一个群组公钥(GPK)和两个结果公钥(IPK1和IPK2)。结果,每个成员j然后拥有3个秘钥份额(GPrivj,和)。群组公钥还使得成员304能够确定其押金发送到的区块链地址。
在实施例中,对手方302然后就随机盲态随机数(RB)达成一致。在该实施例中,所选择的值由所有对手方存储,但是对成员群组保密。在实施例中,对手方然后计算RB的对应椭圆曲线公钥:
PKR=RB×G
然后,将PKR的值添加到每个合约条件公钥中:
因此,在该示例中,对手方302计算合约条件公钥318,和等等。通过这种方式,由于使用随机盲态随机数(RB),公钥314被混淆,使得除了对手方302之外的实体(例如成员304)将极不可能将在对手方交易330中使用的任何合约条件公钥318链接到成员304产生的单独公钥314。通过这种方式,对手方交易330(及其包含的数量)保持匿名,并且成员304做出的决定不受合约交易细节知识的影响(例如,处于危险中的一定数量的数字资产)。
在该示例中,通过对手方302的协议来创建两个交易:对手方交易330(TxC)和协调算法交易332(TxS)。在实施例中,对手方交易330具有来自对手方302的合约资金作为输入。此外在实施例中,对手方交易330具有取决于合约结果的可支付给一个或两个对手方302的每个数量的单独输出(例如,的每个唯一值)。因此,这些UTXO中的每一个都根据条件和超时条件分配给各自的对手方。此外必须注意,在一些示例中,可以构造输出以支付给并非对手方302的成员的第三方。在一些实施例中,将输出约束实现为2-of-2的多重签名功能。
表3示出用于示例性用例的对手方交易320中的条件的示例。
表3:
表4示出用于示例性用例的脚本。
表4:
在实施例中,协调算法交易332将来自每个成员押金的N个UTXO和构成来自对手方的分配的UTXO作为输入。在一些实施例中,存在两个UTXO:一个可通过来自包含押金的群组公钥(GPK)的签名来解锁,另一个包含分配,在超时之后该分配也可通过来自GPK的签名或者通过对手方签名解锁,如图4的上下文中所述。
在实施例中,阈值数量的群组成员可以合作生成与群组私钥(GPriv)相对应的签名,而无需明确地确定GPriv。在实施例中,签名与直接从GPriv产生的签名将没有区别,但是其实际上可经由阈值签名方案直接从私钥份额(GPrivj)产生。通过这种方式,无需在任何时间点确定GPriv,但是可以根据阈值数量的私钥份额(GPrivj)来确定与其对应的签名。
在这些实施例中,阈值数量的群组成员同意(并共同生成签名)以转移第一UTXO(押金)。在这些实施例中,阈值数量的群组成员还可以合作生成签名,以主张分配,但是产生与结果私钥的其中一个相对应的附加签名。在这种实施例中,如果群组成员不能通过达成共识来重构结果私钥的其中一个,则他们不能主张分配,并且该分配将在超时之后返还给对手方(ies)。
注意,在一些实施例中,群组成员可能能够在任何时候(例如,作为无经销商秘密共享协议的一部分)检查其阈值数量的私钥份额(GPrivj)是否会生成对应于(GPK)的有效签名,而无需重构完整的私钥。在这种实施例中,阈值数量的群组成员也可能能够在任何时候收回押金,但是如果他们没有在产生获胜结果密钥中发挥作用,则将丧失分配。表5示出用于示例性用例的协调算法交易332的输入和输出的示例。
表5:
在实施例中,协调算法交易332由提供分配的对手方302签名,然后被发送到成员群组,被每个成员304依次签名。在该实施例中,一旦每个输入被签名,就将协调算法交易332广播到区块链网络。注意,在一些实施例中,直到协调算法交易332被签名为止,任何参与者都可以退出协议(或不能合作)并且没有资金风险。在实施例中,一旦在区块链上确认协调算法交易332,每个对手方就将它们各自的输入签名到对手方交易330并将其广播到区块链网络。在该实施例中,一旦在区块链中确认对手方交易330,对手方合约就可以被激活。
合约执行
在实施例中,在确认对手方交易330之后,成员304等待直到在请求308中的条件/项目中指定的时间段到期之后。在实施例中,成员304然后利用单独的区块链(例如,虚拟链)来记录他们的投票。在一些示例中,“虚拟链”是指被成员群组挖掘的权益证明区块链,成员群组的押金经由群组密钥(GPK)承诺给协调算法交易。也就是说,与基于工作量证明的区块链(其中,通过有兴趣因进行工作而授予分配的挖掘节点来验证交易)不同,在虚拟链权益证明区块链中,参与者可能有兴趣收回在虚拟链中进行的押金(例如,他们“抵押”自己的数字资产的一部分数量)。
与传统区块链不同,虚拟链可以配置为在进行或满足一个或多个标准、目标或指定目的时终止、消失和/或到期。也就是说,在一些实施例中,虚拟链是单用途区块链,其一旦达到其目的就不再使用。在一些实施例中,虚拟链包括初始区块(也称为“创世区块”),初始区块是在为其目的、标准或目标部署或创建虚拟链时创建的。
在一些实施例中,虚拟链所采用的权益证明共识算法可具有以下特性:规则的区块时间、带时间戳的区块和低分叉概率。在一些实施例中,以预定速率从分配(F)中支付区块分配(“挖掘量”)。在一些实施例中,由于验证区块的成本可忽略,所以挖掘分布可以不高。注意,在一些实施例中,在给定足够的脚本能力和可识别区块链的单次支付证实(SPV)证明的情况下,可通过协调算法交易在区块链(即,代替虚拟链)上完全进行协调算法。这种区块链平台的一个实例为以太坊。
在实施例中,以ΔT的间隔生成虚拟链区块,在某些情况下,在请求中指定该间隔。在一些实施例中,基于希望的合约解决速度和希望的来自成员304响应时间来选择ΔT的值。在实施例中,每个成员304达成对手方合约所寻求的结果的确定。使用上面给出的示例性用例,每个成员304确定在2018年4月是否发生严重霜冻。考虑到并非所有成员304都可以获得相同确定结果的可能性(例如,一部分成员可能具有不正确的信息,或者可能无意或有意地提交了错误答复),只有阈值数量M的成员304需要获得相同的确定结果,以便接受该确定结果作为结果。
图4示出本公开的示例性实施例400。具体而言,图4示出本公开实施例的智能合约设置的高级示意图。如图所示,图4包括以多个间隔提交给虚拟链434的交易438。在一些实施例中,虚拟链434可以是临时的权益证明侧链,其被创建为在协调算法中记录投票。在一些实施例中,交易438是被挖掘到虚拟链434的区块的区块链交易。在一些实施例中,每个连续的区块包括散列436,它是虚拟链中先前区块的密码散列。散列436链接虚拟链434中的区块。
在实施例中,提交方案使得成员能够事先提交特定值,同时保持该值对其他人隐藏。一旦将该值提交,就可以在后面的阶段中揭示它。通过这种方式,群组成员在他们提交该值以后不能更改该值,但是不会向其他成员揭示它,并且通过这种方式可以用作安全表决协议。
通常,提交方案可以在两个阶段中出现:提交阶段,其中成员选择并提交该值;以及揭示阶段,其中成员揭示该值并确认该值与提交一致。通常,安全的提交方案可以依靠随机盲态随机数,以防止关于所提交的值的任何信息在提交阶段之后被揭示。但是,在本公开中,所提交的值可能已经是随机生成的密钥。因此,可以减少提交协议,以简单地采用安全散列函数。
因此,在本公开的匿名投票协议中:在提交阶段,每个成员散列(例如,使用SHA256)他们希望提交的值并向群组揭示散列,然后在揭示阶段,每个成员向群组揭示散列预图像(所提交的值),并且群组证实每个散列。通过这种方式,群组可以提交投票,而无需事先知道群组的任何剩余成员怎样投票。
因此,在实施例中,在请求所指定的区块高度(hB),每个成员(例如,图3的成员304)向与他们分别确定的合约结果相对应的条件/项目公钥的私钥份额提交承诺424(用于第i个条件的成员j的私钥份额)。在实施例中,每个成员签署他们各自的承诺424,并且这些承诺被挖掘到虚拟链中。在实施例中,每个承诺可以是与所确定的结果相对应的各个成员的私钥份额的简单散列(例如,安全散列算法(SHA)256);通过散列私钥份额,每个成员的投票都被保密,直到以下所述的揭示阶段为止。通过这种方式,可将一个成员的投票影响另一个成员投票的风险降到最低。
在实施例中,每个成员然后提交他们所承诺的密钥份额426然后密钥份额426被挖掘到下一个区块(hB+1)中。在一些实施例中,每个群组成员持有的密钥份额426是根据诸如上述的秘密共享方案确定的完整私钥的份额。在这种秘密共享方案中,获得至少阈值数量的密钥份额426可以允许在数学上确定完整私钥428。在实施例中,一旦该区块被验证,那么如果阈值数量的成员已经提交与一个特定结果相对应的密钥份额,则与获胜结果公钥(IPKw)(例如,图3的单独公钥314的其中一个)相对应的获胜完整私钥428(IPrivw)可以被容易地确定并且被公开地揭示(w是获胜结果索引)。在一些实施例中,获胜完整私钥428是发送到对手方并在智能合约交易中编码的获胜公钥(例如,单独公钥314的其中一个)的对手方的密码密钥。
在示例性实施例中,承诺高度(hB)是区块x-1,并且在区块x处揭示所提交的密钥份额426(用于成员j的结果私钥的份额)。在揭示之后,阈值数量的获胜私钥份额使得能够确定获胜完整私钥428。
图5示出本公开的示例性实施例500。具体而言,图5示出在根据图4确定结果之后执行图3中的智能合约设置的高级示意图。示例性实施例500包括对手方502,通过签署解锁对手方交易530A的结果交易530B,对手方502根据与获胜完整私钥528相关联的结果收集一定数量的数字资产520。示例性实施例500进一步包括群组的成员504,通过签署分配交易532B,群组成员504经由输出522收集分配(一个或多个)和押金,分配交易532B解锁协调算法交易532A,作为用于向对手方502提供获胜完整私钥528的分配。
在一些实施例中,对手方502与图2的对手方202类似。在一些实施例中,成员504与图2的成员204类似。在一些实施例中,签名518A是成员504的集体数字签名,以便每个成员接收其分配和押金。在一些实施例中,签名518B是对手方的数字签名,并且是使用完整结果签名密钥526生成的数字签名,完整结果签名密钥526是通过将获胜完整私钥528与随机盲态随机数516组合而形成的。
在一些实施例中,获胜完整私钥528与图4的获胜完整私钥428类似。在一些实施例中,随机盲态随机数516与图6的612中生成的随机数相同,以混淆合约条件公钥。在一些实施例中,完整结果签名密钥526是使用椭圆曲线算法与随机盲态随机数516组合的获胜完整私钥428,使得能够通过将完整结果签名密钥526与其在对手方交易530A锁定脚本中的智能合约中的对手方合约条件公钥匹配来确定智能合约的结果。
在一些实施例中,数字资产520是在签名518B验证之后,根据智能合约的获胜结果的、先前锁定在对手方交易530中的数字资产的分配。在一些实施例中,输出522反映在签名518A的验证之后、先前锁定在可支付给成员504的至少一个协调算法交易中的数字资产。在一些实施例中,对手方交易530A是与图3的对手方交易330类似的区块链交易,其包括智能合约,例如图2的智能合约206。在一些实施例中,结果交易530B是被创建为根据智能合约的确定结果赎回/主张对手方交易530A的适当数字资产的区块链交易。
在一些实施例中,协调算法交易532A是与图3的协调算法交易332类似的区块链交易,包含成员504的分配和押金522。在一些实施例中,分配交易532B是成员504创建的区块链交易,以便主张其押金和分配。作为确定图4中的获胜完整私钥428的结果,提交获胜私钥份额的成员是可确定的。在实施例中,虚拟链共识算法识别“获胜”成员(即,以共识进行投票的成员),并且,通过群组,针对群组,或者通过群组的成员来创建分配交易532B(TxF),以向获胜成员支付分配(F),通过阈值数量(m)的成员使用GPK来签名(例如,经由阈值签名方案)。在实施例中,成员将获胜完整私钥428嵌入分配交易532B的元数据中。
在一些实施例中,作为验证分配交易532B的结果,还偿还成员的押金。在一些实施例中,将成员504的押金提交到与协调算法交易532A不同的交易。在这些实施例的一部分实施例中,通过群组,为了群组,或者通过群组的成员来创建退还交易(TxD),以退还每个成员的押金。在一些实施例中,破坏某些虚拟链共识规则的成员将在其他成员之间分配他们的押金。在实施例中,然后将分配交易和退还交易广播到区块链网络。
使用上述用例作为示例,其中客户和保险公司达成保险合约,以投保客户在2018年4月的任何时候在他的葡萄园严重霜冻的可能性,成员群组在2018年5月的第一天实例化一个虚拟链,区块生成时间为ΔT=1天。在用例示例中,将hB设置为5,结果,在5月的第五天,成员(例如,图3的成员304)在5月的第五天提交他们的签名承诺(例如,承诺424)。接下来的ΔT,在5月的第六天,每个成员都提交密钥份额(例如426)以揭示其承诺。
在示例性用例中,每10个成员504中的9个承诺他们的份额IPK1,成员504中的1个承诺他们的份额IPK2(例如,持异议的成员的信息来源有误)。在该示例中,成员群组确定可以根据阈值数量(6)的承诺重构IPriv1,然后可以识别哪些成员承诺获胜份额(9)。在实施例中,阈值数量的成员群组(获胜者的子集)然后可以创建并共同签名(签名518A)交易532,将分配支付给9个获胜者并返还所有成员押金(费用和押金522)。
对手方群组
在实施例中,成员群组揭示与获胜结果公钥(IRKw)相对应的获胜完整私钥528(例如,图4的获胜完整私钥428)(IPrivw)。在实施例中,对手方502(例如,图3的对手方302)或者“获胜”对手方(y/ies)将随机盲态随机数516添加到该值,以获得完整结果签名密钥526:
在该实施例中,该值然后可以由“获胜”对手方(ies)502用于产生签名518B(连同来自他们自己的公钥的签名),以主张与获胜结果相对应的对手方交易530(例如,图3的对手方交易330)的输出522。在示例性用例中,对手方通过根据成员的共识确定严重霜冻的结果客观上发生,来获知已经由协调算法产生的获胜完整私钥528(IPriv1)。结果,保险合约转移分配。在示例性用例中,每个对手方502(例如,每个对手方302)将随机盲态随机数516(RB)添加到IPriv1,以获得完整结果签名密钥526然后,可将此值与每个对手方的私钥一起使用,以产生签名518B,来转移对手方交易530的对应输出522B:
输出#1:10DA
输出#2:2DA
图6是示出根据各种实施例的用于创建智能合约和协调算法交易的过程600的示例的示意图。可以在配置有可执行指令和/或其他数据的一个或多个计算机系统的控制下进行过程600(或所述的任何其他过程,或这些过程的变形和/或组合)的一部分或全部,并且过程600(或所述的任何其他过程,或这些过程的变形和/或组合)的一部分或全部可以实现为在一个或多个处理器上共同执行的可执行指令。可将可执行指令和/或其他数据存储在非暂时性计算机可读存储介质上(例如,永久存储在磁、光或闪存介质上的计算机程序)。
例如,过程600的一部分或全部可通过一个或多个计算装置(例如,通过数据中心的服务器,通过客户端计算装置,通过计算资源服务提供商的分布式系统中的多个计算装置,或通过任何合适的电子客户端装置(例如,图8的计算装置800))进行。过程600包括一系列操作,其中两个以上对手方在对智能合约的要求和协调算法交易的参数上达成一致,与成员群组建立关系以确定智能合约的结果,并创建智能合约和协调算法交易。
在一些实施例中,在602中,两个以上对手方(例如,图2的对手方202)确定智能合约的参数。例如,对手方可以就每个对手方向智能合约交易承诺的数字资产的数量、条件集合、以及在满足每个条件以后要支付的数字资产的数量和向谁支付达成协议。作为更具体的示例,在三个对手方(爱丽丝、鲍勃和卡罗尔)之间达成协议,由此爱丽丝将向智能合约交易承诺数量为X1的数字资产,鲍勃将承诺数量为X2的数字资产,卡罗尔将承诺数量X3的数字资产。
在该示例中,达成一致的条件的集合是:在满足第一条件的情况下,爱丽丝接收智能合约的承诺数字资产的60%,鲍勃接收承诺数字资产的30%,卡罗尔接收承诺数字资产的剩余10%。替代性地,如果满足第二条件,则鲍勃和卡罗尔各自获得承诺数字资产的50%(而爱丽丝一无所获)。替代性地,如果满足第三条件,则爱丽丝的丈夫泰德(未向智能合约承诺任何数字资产)继承智能交易的数字资产的100%。作为第四条件,如果在指定时间框内未满足第一、第二和第三条件,则鲍勃、卡罗尔和爱丽丝可以被退还其承诺的数字资产。
在一些实施例中,在604中,对手方确定将充当群组权威的成员的特征,以确定满足哪些条件。也就是说,对手方就如下事项达成协议:提供多少数字资产作为分配以便提供成员同意参与确定结果的理由、群组所需的成员数量、每个成员必须提交多少来作为保证金、以及有资格作为共识的匹配投票的数量的阈值。作为示例,鲍勃、卡罗尔和爱丽丝同意向就智能合约的特定结果达成一致的群组中的最多10个成员中每个成员提供10个单位的数字资产,其中来自群组的至少6个答复必须匹配以便被视为共识答复。在该示例中,鲍勃、卡罗尔和爱丽丝将要求群组中的每个成员都提交0.1个单位的数字资产作为抵押。
在一些实施例中,在606中,对手方确定协调算法交易的定时参数,例如群组成员将向其提交答复的虚拟链的区块高度和区块间隔。例如,如果将区块高度(例如,区块链中的区块数量)指定为5,并将区块间隔指定为一天(从特定时间开始),这给予群组成员在启动时间之后的五天时间(1天×5)提交他们的决定;在第五区块,群组成员提交他们的签署的承诺,下一天,他们揭示其承诺。
在一些实施例中,在608中,对手方提交对群组成员的请求,类似于图3的请求308。也就是说,该请求可包括以下信息,例如合约条件的定义、所提供的分配、所寻求成员的数量、每个成员所需的保证金数量、共识答复所需的匹配投票的阈值、虚拟链区块间隔、以及承诺区块高度(hB)。如上所述,可以在适于提交/发布这种请求的任何论坛或通信媒体上提交/发布该请求,例如网站论坛、公告板、对等应用程序、或在线市场。
在一些实施例中,在610中,群组成员发信号说他们同意参与确定智能合约的结果。在一些实施例中,通过与向其提交/发布请求的论坛相同或类似的论坛来完成协议的信令。在其他实施例中,通过与一个或多个对手方的直接通信(例如,经由请求中的通信链路)来进行协议的信令。
在一些实施例中,在612中,在接收到已经满足群组成员资格要求的通知之后,对手方生成随机盲态随机数,通过随机数来混淆智能合约交易中的结果。可通过多种方式来确定随机盲态随机数。例如,一个对手方可以生成随机盲态随机数,而另一方或多方可以发信号表示批准/同意这一方。替代性地,每一方可以生成随机盲态随机数的一部分,并且可以根据数学算法将所有生成的部分进行组合,以形成随机盲态随机数。
在一些实施例中,在614中,对手方针对智能合约生成与图3的合约公钥316类似的公钥/就该公钥达成一致。在实施例中,公钥对应于随机盲态随机数(例如,其中盲态随机数是私钥,而公钥是盲态随机数的椭圆曲线公钥)。在一些实施例中,将合约公钥与成员在616中生成的每个结果公钥相结合。如上所述,在616中,群组成员生成群组公钥,并且对于每个合约结果,生成结果公钥。如上所述,可以使用如上所述的无经销商秘密共享协议来创建群组公钥和结果密钥。每个群组成员可以具有与结果公钥相对应的私钥份额。可以使用本公开所述的秘密共享协议来生成私钥份额,其中使用图6的604中的对手方指定的匹配表决数量的阈值作为重新创建完整私钥(其与获胜结果的结果公钥相对应)所需的密钥份额的数量。在实施例中,群组成员经由在608-12中建立的通信媒体向对手方提供群组公钥和结果公钥。
在一些实施例中,在618中,对手方的至少其中一个通过将成员群组在616中生成的每个结果公钥与在612中生成的随机盲态随机数相结合来创建合约条件公钥。通过这种方式,对于群组成员在620中创建的智能合约交易中隐瞒合约条件公钥。如上所述,在一些实施例中,在620中,智能合约交易由对手方创建并签名,并利用每个对手方同意的资金(例如,数字资产的数量)将智能合约提交给区块链。取决于合约结果,对于可支付给一个或两个对手方的每个数量,智能合约交易可具有单独的UTXO。
最后,在一些实施例中,在622中,对手方创建协调算法交易,与图3的协调算法交易332类似。在一些实施例中,协调算法交易可包括来自群组成员的押金作为UTXO,在群组成员提交其答复或者在超时之后,可通过来自群组公钥(在616中由成员群组生成)的签名来支出押金。在一些实施例中,协调算法交易可以附加性或替代性地包括对手方提供的分配,其也可通过使用群组公钥的签名或者在超时之后通过对手方签名来解锁。在一些实施例中,UTXO可以处于相同的协调算法交易中,而在其他实施例中,UTXO可以处于单独的交易中。注意,可通过各种顺序和组合(包括并行)来进行在602-22中进行的一个或多个操作。
图7是示出根据各种实施例的用于执行智能合约的过程700的示例的示意图。可以在配置有可执行指令和/或其他数据的一个或多个计算机系统的控制下进行过程700(或所述的任何其他过程,或这些过程的变形和/或组合)的一部分或全部,并且过程700(或所述的任何其他过程,或这些过程的变形和/或组合)的一部分或全部可以实现为在一个或多个处理器上共同执行的可执行指令。可将可执行指令和/或其他数据存储在非暂时性计算机可读存储介质上(例如,永久存储在磁、光或闪存介质上的计算机程序)。
例如,过程700的一部分或全部可通过一个或多个计算装置(例如,通过数据中心的服务器,通过客户端计算装置,通过计算资源服务提供商的分布式系统中的多个计算装置,或通过任何合适的电子客户端装置(例如,图8的计算装置800))进行。过程700包括一系列操作,其中成员提交并揭示他们的答复密钥份额,并且如果存在匹配答复的阈值,则可以确定与共识答复相关联的私密结果密钥,并且可以根据该私密结果密钥计算完整的结果签名密钥。
在一些实施例中,在启动时间开始之后,每个群组成员在特定时间帧内做出关于智能合约结果的确定。特定时间帧可以取决于以下因素,例如虚拟链(例如图4的虚拟链434)的区块高度和区块间隔。在以上示例中,区块高度为五且区块间隔为一天,其给予群组成员五天时间来确定他们的答复。
在时间周期结束时,在一些实施例中,在702中,每个群组成员将与他们自己确定的答复相对应的密钥份额提交给虚拟链中的区块,如图4的承诺424所示。如上所述,每个群组成员都可将答复作为特定答复的群组成员密钥份额的简单散列(例如SHA-256)提交。注意,在一些实施例中,并非所有群组成员都需要在同一区块中提交他们的答复。例如,如果群组成员在五天内的第三天获得他/她的答复,则群组成员可以在第三区块中提交他们的答复。
在一些实施例中,在704中,在虚拟链的下一个区块中,成员揭示他们的承诺,如图4的揭示426所示,这可通过将揭示的散列与先前提交的散列进行比较来证实。在一些实施例中,在706,确定密钥份额的数量是否足以构造与有效结果私钥相对应的私钥。如果否,则在708中,对手方可以收回其资金,并且可以向成员退还其押金。在这种情况下,因为没有达成共识答复,在一些实施例中,成员可能不接收分配,也可能接收更少的分配。
否则,在一些实施例中,在710中,生成获胜结果私钥。提交获胜答复的成员可以共同签名交易,例如图5中的分配交易532B,创建该交易是为了收集分配并在712中返还成员押金。获胜结果私钥可通过群组提供给对手方,在714,对手方可将获胜结果私钥与在图6的612中确定的随机盲态随机数相结合,以产生完整的结果签名密钥(例如,图5的完整的结果签名密钥526)。
在一些实施例中,在716中,每个对手方可以使用如下签名来签署与结果交易520B类似的结果交易:使用他们自己的私钥生成的签名和使用完整的结果签名密钥生成的签名,从而主张适合于智能合约结果的资金,如在图6的602中所同意的。注意,在702-16中进行的一个或多个操作可通过各种顺序和组合来进行(包括并行)。
注意,在描述公开的实施例的上下文中,除非另有说明,否则使用关于进行“指令”通常不独立进行的操作(例如,数据的传输、计算等)的可执行指令(也称为代码、应用程序、代理等)的表达式表示指令正在由机器执行,从而导致机器进行指定的操作。
图8是可用于实践本公开至少一个实施例的计算装置800的示意性简化方框图。在各种实施例中,计算装置800可用于实现以上示出和描述的任何系统。例如,可将计算装置800配置为用作数据服务器、网络服务器、便携式计算装置、个人计算机或任何电子计算装置。如图8所示,计算装置800可包括一个或多个处理器802,在实施例中,将处理器802配置为经由总线子系统804与多个外围子系统通信并且可操作地耦接。在一些实施例中,这些外围子系统包括存储子系统806(包括存储器子系统808和文件/磁盘存储子系统810)、一个或多个用户界面输入装置812、一个或多个用户界面输出装置814、以及网络接口子系统816。这种存储子系统806可用于暂时或长期存储信息。
在一些实施例中,总线子系统804提供一种机制,使得计算装置800的各个组件和子系统能够按预期相互通信。虽然示意性地将总线子系统804示出为单个总线,但是总线子系统的替代实施例利用多个总线。在一些实施例中,网络接口子系统816提供到其他计算装置和网络的接口。在一些实施例中,网络接口子系统816充当接口,用于从计算装置800接收数据以及从计算装置800向其他系统传输数据。在一些实施例中,总线子系统804用于传达诸如细节、搜索项等等数据。
在一些实施例中,用户界面输入装置812包括一个或多个用户输入装置(例如键盘);点击装置(例如集成鼠标、轨迹球、触摸板或图形输入板);扫描仪;条形码扫描仪;合并到显示器中的触摸屏;音频输入装置(例如语音识别系统、麦克风);以及其他类型的输入装置。通常,术语“输入装置”的使用旨在包括用于将信息输入到计算装置800的所有可能类型的装置和机制。在一些实施例中,一个或多个用户界面输出装置814包括显示子系统、打印机、或者非视觉显示器(例如音频输出装置等)。在一些实施例中,显示子系统包括阴极射线管(CRT)、平板装置(例如液晶显示器(LCD))、发光二极管(LED)显示器、或投影仪或其他显示装置。通常,术语“输出装置”的使用旨在包括用于从计算装置800输出信息的所有可能类型的装置和机制。一个或多个用户界面输出装置814例如可用于呈现用户界面,当这种交互适当时,有助于用户与进行所述过程的应用以及其中的变化的交互。
在一些实施例中,存储子系统806提供一种计算机可读存储介质,用于存储提供本公开至少一个实施例的功能的基本编程和数据构造。在一些实施例中,在通过一个或多个处理器执行时,应用程序(程序、代码模块、指令)提供本公开一个或多个实施例的功能,并且在实施例中,存储在存储子系统806中。这些应用程序模块或指令可通过一个或多个处理器802执行。在各种实施例中,存储子系统806附加性地提供用于存储根据本公开使用的数据的存储库。在一些实施例中,存储子系统806包括存储器子系统808和文件/磁盘存储子系统810。
在实施例中,存储器子系统808包括多个存储器,例如用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)818和/或只读存储器(ROM)820,其中可以存储固定指令。在一些实施例中,文件/磁盘存储子系统810为程序和数据文件提供非暂时性永久(非易失性)存储,并且可包括硬盘驱动器、软盘驱动器以及相关联的可移动介质、压缩磁盘只读存储器(CD-ROM)驱动器、光盘驱动器、可移动介质盒、或其他类似的存储介质。
在一些实施例中,计算装置800包括至少一个本地时钟824。在一些实施例中,本地时钟824是计数器,代表从特定开始日期发生的滴答声的数量,并且在一些实施例中,位于计算装置800内部。在各种实施例中,本地时钟824用于以特定时钟脉冲同步用于计算装置800和其中包括的子系统的处理器中的数据传输,并且可用于协调计算装置800和数据中心的其他系统之间的同步操作。在另一个实施例中,本地时钟是可编程间隔计时器。
计算装置800可以是多种类型中的任何一种,包括便携式计算机装置、平板计算机、工作站或以下描述的任何其他装置。此外,计算装置800可包括在一些实施例中可通过一个或多个端口(例如,USB、耳机插孔、Lightning连接器等)连接到计算装置800的其他装置。在实施例中,这种装置包括被配置为接受光纤连接器的端口。因此,在一些实施例中,该装置被配置为将光信号转换为电信号,电信号通过将装置连接到计算装置800的端口传输,以进行处理。由于计算机和网络不断变化的性质,图8所示计算装置800的描述只是要作为特定示例,以示出装置的优选实施例。具有与图8所示系统相比更多或更少的组件的很多其他配置都是可能的。
因此,说明书和附图应视为说明性而非限制性的。但是显然,在不脱离权利要求书给出的本发明范围的情况下,可以对其做出各种修改和改变。同样,其他变型也落入本公开范围。因此,虽然所公开的技术易于进行各种修改和替代性构造,但是某些示出的实施例在附图中示出并且在上面进行了详细描述。但是应当理解,无意将本发明限制为所公开的一种或多种特定形式,相反,本发明意在涵盖落入后附权利要求书中限定的本发明范围的所有修改、替代性构造和等同物。
在描述所公开的实施例的上下文中(特别是在后附权利要求的上下文中)术语“一”、“一个”和“所述”以及类似指代的使用应解释为涵盖单数和复数,除非上下文另有说明或矛盾。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应解释为开放式术语(即,意思是“包括但不限于”)。术语“连接”在未修改且指物理连接时,应解释为部分或全部包含在其中、附接到或结合在一起,即使有物介入。除非另有说明,否则本公开中数值范围的列举只是要充当落入所述范围的每个单独值的个别引用的速记方法,并且每个单独值都合并到说明书中,就像它被个别列举一样。除非上下文另有说明或矛盾,否则术语“集合”(例如“项目集合”)或“子集”的使用应解释为包括一个或多个成员的非空集合。此外,除非上下文另有说明或矛盾,否则对应集合的术语“子集”不一定表示对应集合的适当子集,但是子集和对应集合可以相等。
除非上下文另有说明或明显矛盾,否则应当通过上下文将像“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中的至少一个。
所述过程的操作可以按照任何合适的顺序执行,除非上下文另有说明或明显矛盾。可以在配置有可执行指令的一个或多个计算机系统的控制下执行所述过程(或其变形和/或组合),并且可将其实现为通过硬件或其组合在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)。在一些实施例中,代码例如可以以包括多个可通过一个或多个处理器执行的指令的计算机程序的形式存储在计算机可读存储介质上。在一些实施例中,计算机可读存储介质是非暂时性的。
所提供的任何和所有示例或示例性语言(例如,“诸如”)的使用只是要更好地阐明本发明的实施例,并且不对本发明的范围构成限制,除非另有主张。说明书中的任何语言都不应解释为指示任何未要求保护的要素对于实施本发明必不可少。
描述了本公开的实施例,包括发明人已知的用于实现本发明的最佳实施方式。通过阅读前面的描述,这些实施例的变化对于本领域技术人员而言将变得显而易见。发明人希望本领域技术人员视情况采用这些变型,并且发明人希望本公开的实施例可以按照不同于具体描述的方式来实践。因此,本公开的范围包括适用法律所允许的后附权利要求中列举的主题的所有修改和等同物。此外,除非上下文另有说明或明显矛盾,否则上述要素在其所有可能变化中的任何组合均被本公开的范围涵盖。
所引用的所有参考文献(包括出版物、专利申请和专利)均通过引用合并于此,其程度如同每个参考文献被单独且具体地指示为通过引用合并,且全部给出。
应当注意,上述实施例是说明而不是限制本发明,并且本领域技术人员将能够设计很多替代实施例而不脱离后附权利要求限定的本发明的范围。在权利要求中,括号中的任何附图标记都不应解释为限制权利要求。词语“包括”等不排除除了在任何权利要求或说明书中作为整体列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包括”表示“包含”或者“由…构成”。元素的单数引用不排除这些元素的复数引用,反之亦然。本发明可通过包括若干不同元件的硬件,以及通过适当编程的计算机来实现。在列举了若干器件的装置权利要求中,这些器件中的若干个可通过硬件的一个项目或相同项目来具体实施。在相互不同的从属权利要求中陈述某些措施的纯粹事实并不表示这些措施的组合不能用于获益。
总结
在本公开中描述和建议的新颖技术扩展了区块链的功能,而没有破坏确保区块链数据结构内存储的数据完整性的区块链的属性。例如,通过在区块链上按照去信任的方式关于真实世界的事件进行和执行用于获得准确和客观信息的方法,这些技术改善了计算领域,特别是在数字记录验证领域,其中在嵌入在记录中的区块链交易内定义用于验证的条件。此外,本公开中描述和建议的技术通过利用临时权益证明区块链来改善区块链计算机网络内智能合约的执行,管理被安排为充当用于确定智能合约结果的分布式可信权威的参与者的表决。
此外,在本公开中描述和建议的技术可能必须植根在计算机技术中,以便通过从被安排为确定所述结果的参与者中混淆智能合约,克服具体由于操纵智能合约结果的风险所导致的问题,从而保持对手方的隐私并消除参与者串通颠覆结果协议的原因。此外,通过采用诸如谢林协调的博弈论概念,可以为匿名参与者提供向协议提供准确信息的理由。
Claims (14)
1.一种计算机实现的方法,包括:
确定对手方之间的条件集合,所述条件集合具有多个可能的结果,所述结果包括:
与数字资产的第一分配相关联的第一可能结果;以及
与所述数字资产的第二分配相关联的第二可能结果,所述第二分配不同于所述第一分配;
创建对手方交易,所述对手方交易包括被编码为计算机可执行指令的所述条件集合和所述数字资产作为输出;
从第三方接收结果,所述结果对应于所述第一可能结果或所述第二可能结果;
创建结果交易,以转移对所述对手方交易的所述数字资产的控制,所述结果交易包括所述结果作为输入;以及
由于在区块链网络中的节点处验证所述结果交易,而至少部分地基于所述结果,根据所述第一可能结果或所述第二可能结果将所述数字资产分配给所述对手方;
所述方法还包括:
从所述第三方接收与所述多个可能结果相对应的多个结果密钥,其中所述结果是与所述多个结果密钥之一相对应的密码密钥;
将所述对手方确定的秘密值与所述多个结果密钥中的每个密钥组合,以产生多个混淆的结果密钥;
创建所述对手方交易,以进一步包括所述多个混淆的结果密钥;以及
验证所述结果交易包括:
将所述密码密钥与所述秘密值组合,以产生结果签名密钥;以及
至少部分地基于所述多个混淆的结果密钥中的哪一个与所述结果签名密钥相关联,将所述数字资产分配给所述对手方。
2.根据权利要求1所述的计算机实现的方法,其中,所述第三方是包括多个成员的群组。
3.根据权利要求2所述的计算机实现的方法,其中,所述结果是所述多个成员提交的答复的共识的结果。
4.根据权利要求2所述的计算机实现的方法,还包括:
确定:
成员数量,以包括所述多个成员;以及
阈值数量,以确定所述结果;以及
所述结果与所述多个成员中至少阈值数量的成员提交的答复相匹配。
5.根据权利要求4所述的计算机实现的方法,其中,所述结果至少部分地基于所述多个成员提交的密钥份额来确定,所述密钥份额根据秘密共享方案来确定。
6.根据权利要求5所述的计算机实现的方法,其中,所述密钥份额通过所述多个成员提交给权益证明区块链中的区块。
7.根据前述权利要求中任一项所述的计算机实现的方法,还包括:
创建与第二数字资产相关联的至少一个协调算法交易;以及
由于验证为转移对所述第二数字资产的控制而创建的费用交易,而将所述第二数字资产分配给所述第三方。
8.根据权利要求7所述的计算机实现的方法,其中,所述第二数字资产包括所述第三方贡献的押金部分。
9.根据权利要求7所述的计算机实现的方法,其中,所述第二数字资产包括所述对手方贡献的费用部分。
10.根据权利要求9所述的计算机实现的方法,其中:
所述结果是所述多个成员提交的答复的共识的结果;
所述多个成员包括其答复与所述共识不匹配的成员;以及
由于所述答复与答复的所述共识不匹配,所述第二数字资产的分配使得所述成员不能接收所述费用部分。
11.根据前述权利要求中任一项所述的计算机实现的方法,其中,所述数字资产包括第一方贡献的第一数量的数字资产和第二方贡献的第二数量的数字资产。
12.根据权利要求11所述的计算机实现的方法,其中:
所述多个可能结果之一与所述条件集合的超时条件相关联;以及
进一步由于验证所述结果交易以及由于发生所述超时条件,将所述第一数量退还所述第一方以及将所述第二数量退还所述第二方。
13.一种系统,包括:
处理器;以及
存储器,包括可执行指令,由于所述处理器执行,所述可执行指令使得所述系统进行根据权利要求1至12中任一项所述的计算机实现的方法。
14.一种非暂时性计算机可读存储介质,其上存储有可执行指令,由于计算机系统的处理器执行,所述可执行指令使得所述计算机系统进行根据权利要求1至12中任一项所述的计算机实现的方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1715423.8 | 2017-09-22 | ||
GBGB1715423.8A GB201715423D0 (en) | 2017-09-22 | 2017-09-22 | Computer-implemented system and method |
GB1715701.7 | 2017-09-28 | ||
GBGB1715701.7A GB201715701D0 (en) | 2017-09-22 | 2017-09-28 | Computer-implemented system and method |
PCT/IB2018/057058 WO2019058241A1 (en) | 2017-09-22 | 2018-09-14 | INTELLIGENT CONTRACT EXECUTION USING DISTRIBUTED COORDINATION |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111133463A CN111133463A (zh) | 2020-05-08 |
CN111133463B true CN111133463B (zh) | 2024-11-12 |
Family
ID=
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017145007A1 (en) * | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | System and method for controlling asset-related actions via a blockchain |
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017145007A1 (en) * | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | System and method for controlling asset-related actions via a blockchain |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111164626B (zh) | 使用分布式协调的智能合约执行 | |
US12074963B2 (en) | Blockchain for general computation | |
US20240064007A1 (en) | Methods and systems for blockchain-implemented event-lock encryption | |
US11388010B2 (en) | Blockchain account migration | |
CN111316615B (zh) | 使用调解器计算机系统确保计算机程序正确执行的系统和方法 | |
Yadav et al. | A comparative study on consensus mechanism with security threats and future scopes: Blockchain | |
US20190268139A1 (en) | Data authentication using a blockchain approach | |
CN111066283A (zh) | 对区块链网络上实体提供的数据进行通信、存储和处理的系统和方法 | |
KR102537774B1 (ko) | 기밀 지식의 특화된 증명을 제공하는 시스템들 및 방법들 | |
CN110784320A (zh) | 分布式密钥实现方法、系统及用户身份管理方法、系统 | |
US20230269090A1 (en) | Apparatus for secure multiparty computations for machine-learning | |
CN116361823A (zh) | 用于隐私保护的区块链的选择性审计处理 | |
CN111133463B (zh) | 使用分布式协调的智能合约执行 | |
Sariboz et al. | FIRST: frontrunning resilient smart contracts | |
Neiheiser | Scalable and Resilient Byzantine Fault Tolerant Consensus | |
Conley | The Geeq Project Technical Paper | |
US20210192498A1 (en) | Random number generation in a blockchain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |