CN118041602A - 使用调解器计算机系统确保计算机程序正确执行的系统和方法 - Google Patents
使用调解器计算机系统确保计算机程序正确执行的系统和方法 Download PDFInfo
- Publication number
- CN118041602A CN118041602A CN202410094181.2A CN202410094181A CN118041602A CN 118041602 A CN118041602 A CN 118041602A CN 202410094181 A CN202410094181 A CN 202410094181A CN 118041602 A CN118041602 A CN 118041602A
- Authority
- CN
- China
- Prior art keywords
- computer system
- program
- value
- prover
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 105
- 238000004590 computer program Methods 0.000 title description 13
- 238000013515 script Methods 0.000 claims description 75
- 238000004891 communication Methods 0.000 claims description 33
- 230000004044 response Effects 0.000 claims description 20
- 230000015654 memory Effects 0.000 claims description 15
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 238000012937 correction Methods 0.000 abstract description 34
- 230000000116 mitigating effect Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 41
- 238000012795 verification Methods 0.000 description 32
- 238000012546 transfer Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 12
- 238000011156 evaluation Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000000644 propagated effect Effects 0.000 description 9
- 230000006735 deficit Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000001934 delay Effects 0.000 description 5
- 238000007792 addition Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003902 lesion Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000013259 porous coordination polymer Substances 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012946 outsourcing Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/74—Image or video pattern matching; Proximity measures in feature spaces
- G06V10/75—Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
- G06V10/755—Deformable models or variational models, e.g. snakes or active contours
- G06V10/7557—Deformable models or variational models, e.g. snakes or active contours based on appearance, e.g. active appearance models [AAM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
- H04L9/3221—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3297—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Software Systems (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Storage Device Security (AREA)
- Retry When Errors Occur (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在分布式系统中,第一计算机系统可能需要由第二计算机系统执行的计算(例如,作为程序执行的一部分执行)的真实性和完整性的在计算上可验证的保证。本文描述的方法可以被用于实施和/或确保程序的正确执行。第一计算机系统可以将程序的执行委托给第二计算机系统,并且可以采用协议来约束第二计算机系统以执行程序的正确执行。协议可以包括减轻和校正例程,其减轻和/或校正程序的不正确执行。在本文描述的各种系统和方法中,协议可以利用区块链网络。
Description
本申请为中国申请号为201880072773.7,申请日为2018年10月30日,名称为“使用调解器计算机系统确保计算机程序正确执行的系统和方法”的专利申请的分案申请。
技术领域
本发明总体上涉及确保在分布式计算环境中计算机程序的正确执行,更具体地,涉及用于确保程序正确执行的协议,其中第一计算实体将程序的执行委托给第二计算实体。本发明特别适合于但不限于在区块链网络中使用。
背景技术
在本文中,术语“区块链(Blockchain)”一词可指任何一种电子的、基于计算机的分布式账本(Distributed Ledgers)。这些包括基于共识的区块链和交易链技术、许可及未许可的账本、共享账本及其变型。应该注意的是,本发明不限于与特定区块链一起使用;可选的区块链实现和协议,包括非商业应用,也落入本发明的范围内。
区块链是点对点的电子账本,其被实现为基于计算机的、去中心化的分布式系统,该系统由区块组成,区块又可以由交易(transaction)和其他信息组成。在一些示例中,“区块链交易”是指对包括数据和条件集合的字段值的结构化集合进行编码的输入消息,其中满足条件集合是将字段集写入区块链数据结构的先决条件。例如,每个交易是对区块链系统中参与者之间的数字资产的控制转移进行编码的数据结构,并且包括至少一个输入和至少一个输出。在一些实施例中,“数字资产”是指与使用权相关联的二进制数据。在一些实现中,可以通过将数字资产的至少一部分从第一实体重新关联到第二实体来执行数字资产的转移控制。区块链的每个区块可以包含前一区块的散列(hash),如此,这些区块被链接在一起,以创建所有交易的永久的、不可更改的记录,这些交易自区块链诞生之始写入区块链。交易包含小程序,这些小程序称为脚本,嵌入至交易的输入和输出中,这些小程序指定了如何以及由谁来访问交易的输出。在一些平台上,这些脚本是使用基于堆栈的脚本语言编写的。
为了将交易写入区块链,必须对其进行“验证”。网络节点执行工作以确保每个交易都是有效的,而无效的交易从网络中被拒绝。节点可以具有不同于其他节点的有效性标准。由于区块链中的有效性是基于共识的,因此,如果大多数节点同意交易有效,则该交易被视为有效。安装在节点上的软件客户端部分通过执行未花费的交易输出(unspenttransaction output,简称UTXO)锁定和解锁脚本,对交易执行此验证工作。如果锁定和解锁脚本的执行评估为真(TRUE),并且满足其他验证条件(如果适用),则该交易被节点验证为有效。已验证为有效的交易被传播到其他网络节点,随后网络节点可以选择将该交易包括在区块链中。因此,为了将交易写入区块链,该交易必须:i)由第一个接收交易的节点进行验证(如果交易被验证为有效,则该节点将该交易中继到网络中的其他节点);以及ii)添加到由网络节点建造的新区块中;iii)挖掘(添加到过去交易的公共账本中)。
数字企业家已经开始探索使用加密安全系统和可以存储在区块链上的数据,以实现新系统。如果区块链能够用于自动化任务和过程,那么将是非常有利的。这类解决方案能够利用区块链的优势(例如,事件的永久防篡改记录、分布式处理等),同时在其应用中更具通用性。
本发明描述了一个或多个基于区块链的计算机程序的技术方面。基于区块链的计算机程序可以是记录在区块链交易中的机器可读和可执行程序。基于区块链的计算机程序可以包括规则,该规则可以处理输入以产生结果,然后可以根据这些结果执行动作。当前研究的一个领域是使用基于区块链的计算机程序来执行“智能合约”。与用自然语言编写的传统合约不同,智能合约可以是旨在使机器可读合约或协议条款的执行自动化的计算机程序。
与区块链利益相关的另一领域是使用“令牌(Tokens)”通过区块链来表示和转移现实世界的实体。潜在的敏感或秘密的项目可以由没有明显意义或价值的令牌来表示。因此,令牌充当允许在区块链上引用现实世界的项目的标识符。
发明内容
因此,期望提供在这些方面中的一个或多个方面改进区块链技术的方法和系统。现在已经设计出这样一种改进的方案。
根据本发明,可以提供一种用于区块链网络的节点的计算机实现的方法,该计算机实现的方法包括:在与调解器(mediator,也称为调解者)计算机系统相关联的公钥下加密秘密值;向工作者计算机系统提供加密的秘密值,其中加密的秘密值可由工作者计算机系统和调解器计算机系统用来共同执行第一程序;使第二程序在区块链数据结构上可用(make available,能被使用),其中第二程序的执行具有输入;确定区块链数据结构反映了:第二程序的正确执行的证明;和输入值,其中执行第二程序以生成证明至少部分基于使用输入值作为第二程序的输入;以及响应于确定输入值有效,向工作者计算机系统提供秘密值,其中工作者计算机系统能够至少使用秘密值来执行第一程序。
优选地,该方法可以包括:至少部分基于秘密值生成加密散列输出;生成至少部分基于秘密值确定加密值和加密散列输出的认证;向工作者计算机系统提供加密散列输出和该认证,其中工作者计算机系统可运行以使用该认证来确定加密的秘密值和加密散列输出是否至少部分基于相同的值。
该认证可以是零知识证明(zero-knowledge proof),并且零知识证明的正确性由工作者计算机系统在计算上可验证。计算验证可能涉及使用加密操作来提供完整性和/或真实性的保证。
优选地,输入值可以是第一输入值,并且该方法可以包括:响应于确定第一输入值不正确:至少部分基于第一输入值计算第二输入值;向工作者计算机系统提供第二输入值;以及响应于确定工作者计算机系统使用第二输入值执行了第三程序,向工作者计算机系统提供秘密值。
优选地,计算第二输入值可以包括计算加权的汉明距离(Hammingdistance)。
优选地,该方法可以包括:获得第二认证,该第二认证包括工作者计算机系统和数据源之间的通信集合,该通信集合能够用于确定输入值是否有效,其中第二认证由数据源数字签名;至少使用与数据源相关联的公钥来验证第二认证的真实性;以及至少部分基于通信集合来确定输入是否有效。
在一些情况下,使第二程序在区块链数据结构上可用,包括使区块链交易被挖掘到区块链数据结构,其中区块链交易包括能够用于确定第二程序的信息和锁定脚本。该锁定脚本可以留置数字资产,其中共同执行锁定脚本和相应的锁定脚本释放数字资产上的留置,其中共同执行锁定脚本和相应的解锁脚本包括验证至少两个数字签名是数字签名集合。数字签名集合可以包括:与执行本文描述的计算机实现的方法的计算实体相关联的第一数字签名;与工作者计算机系统相关联的第二数字签名;和与调解器计算机系统相关联的第三数字签名。对数字签名集合的至少大部分签名的验证可以作为共同执行锁定脚本和解锁脚本以释放留置的一部分来执行。
第一程序的执行可以将数字资产的控制转移到工作者计算机系统。
优选地,该方法可以还包括,响应于确定工作者计算机系统未能在时间阈值内使用第二输入值执行第三程序,使第四程序对区块链数据结构可用(使第四程序被提供于区块链数据结构上),第四程序能够用于获得数字资产的控制。
时间阈值可以对最早时间进行编码,在最早时间,包括第四程序的一部分的区块链交易可以被挖掘到区块链数据结构。
优选地,该方法可以包括生成数字签名并将数字签名编码为解锁脚本。该解锁脚本还可以对与工作者计算机系统相关联的声称的数字签名进行编码,其中第四应用包括锁定脚本和解锁脚本,并且由与区块链数据结构相关联的区块链网络的一个或多个节点执行第四程序包括确定数字签名和所声称的数字签名均有效。
第一应用可以包括锁定脚本和解锁脚本,其中解锁脚本对与工作者计算机系统相关联的声称的秘密值和声称的数字签名进行编码。由与区块链数据结构相关联的区块链网络的一个或多个节点执行第一应用可以包括确定声称的秘密值和声称的数字签名均有效。
锁定脚本可以包括加密散列输出。确定声称的秘密有效可以包括使用声称的秘密值计算加密散列算法的输出,以及确定输出和加密散列输出匹配。
根据本发明,还可以提供一种计算机实现的方法,包括:在客户端计算机系统:在与调解器计算机系统相关联的公钥下进行秘密值的加密,向工作者计算机系统提供加密的秘密值,其中所述加密的秘密值能够由所述工作者计算机系统和所述调解器计算机系统用来共同执行第一程序,和,使第二程序在区块链数据结构上可用,其中所述第二程序的执行具有输入;在所述工作者计算机系统:获取所述加密的秘密值,获取所述第二程序以供执行,确定用于执行所述第二程序的输入值,根据所述输入值执行所述第二程序,以生成输出和正确执行的证明,和,使所述输出和所述证明在区块链数据结构上可用;以及,在所述客户端计算机系统:检测所述输出和所述证明已经是可用的,至少部分基于所述证明,确定所述输入值有效,和,响应于确定所述输入值有效,向所述工作者计算机系统提供所述秘密值,其中所述工作者计算机系统能够至少使用所述秘密值来执行所述第一程序。
可选地,该方法还包括:在所述客户端计算机系统:至少部分基于所述秘密值生成加密散列输出,生成至少部分基于所述秘密值确定所述加密的值和所述加密散列输出的认证,和,向所述工作者计算机系统提供所述加密散列输出和所述认证;以及,在所述工作者计算机系统:使用所述认证来确定所述加密的秘密值和所述加密散列输出是否至少部分基于相同的值。
可选地,其中所述认证是零知识证明,并且所述零知识证明的正确性由所述工作者计算机系统在计算上可验证。
可选地,其中所述输入值是第一输入值,并且所述方法还包括,在所述客户端计算机系统,响应于确定所述第一输入值不正确:至少部分基于所述第一输入值计算第二输入值;向所述工作者计算机系统提供所述第二输入值;和,响应于确定所述工作者计算机系统使用所述第二输入值执行了第三程序,向所述工作者计算机系统提供所述秘密值。
可选地,其中计算所述第二输入值包括计算汉明距离。
可选地,该方法还包括,在所述客户端计算机系统:获得第二认证,所述第二证明包括所述工作者计算机系统和数据源之间的通信集合,所述通信集合能够用于确定所述输入值是否有效,其中所述第二认证由所述数据源数字签名;至少使用与所述数据源相关联的公钥来验证所述第二认证的真实性;和,至少部分基于所述通信集合来确定所述输入是否有效。
可选地,其中使所述第二程序在所述区块链数据结构上可用,包括,在所述客户端计算机系统,使区块链交易被挖掘到所述区块链数据结构,其中所述区块链交易包括:能够用于确定所述第二程序的信息;和,留置数字资产的锁定脚本,其中共同执行所述锁定脚本和解锁脚本释放所述数字资产上的留置,共同执行所述锁定脚本和所述解锁脚本包括验证两个数字签名是数字签名集合,所述数字签名集合包括:与执行所述计算机实现的方法的计算实体相关联的数字签名;与所述工作者计算机系统相关联的数字签名;和,与所述调解器计算机系统相关联的数字签名。
可选地,其中所述第一程序的执行将数字资产的控制转移到所述工作者计算机系统。
可选地,该方法还包括,在所述客户端计算机系统:响应于确定所述工作者计算机系统未能在时间阈值内使用所述第二输入值来执行所述第三程序,使第四程序对所述区块链数据结构可用,所述第四程序能够用于获得所述数字资产的控制。
可选地,其中所述时间阈值对最早时间进行编码,在所述最早时间,包括所述第四程序的一部分的区块链交易能够被挖掘到所述区块链数据结构。
可选地,该方法还包括,在所述客户端计算机系统:生成数字签名;和,将所述数字签名编码为解锁脚本,其中所述解锁脚本还对与所述工作者计算机系统相关联的声称的数字签名进行编码,其中所述第四应用包括锁定脚本和解锁脚本,并且由与所述区块链数据结构相关联的区块链网络的一个或多个节点执行所述第四程序包括确定所述数字签名和所述声称的数字签名均有效。
可选地,所述第一应用包括锁定脚本和解锁脚本,其中所述解锁脚本对与所述工作者计算机系统相关联的声称的秘密值和声称的数字签名进行编码;和,由与所述区块链数据结构相关联的区块链网络的一个或多个节点执行所述第一应用包括确定所述声称的秘密值和所述声称的数字签名均有效。
可选地,其中所述锁定脚本包括所述加密散列输出,并且确定所述声称的秘密值有效包括:使用所述声称的秘密值计算加密散列算法的输出;和,确定所述输出和所述加密散列输出匹配。
还期望提供一种网络,包括客户端计算机系统和工作者计算机系统,其中每个系统包括:处理器;和,存储器,包括可执行指令;其中,所述可执行指令由于被每个处理器执行,而使得每个系统执行根据任一前述权利要求所述的计算机实现的方法。
还期望提供一种系统,包括:处理器;和包括可执行指令的存储器,可执行指令由于被处理器执行而使得系统执行所述的任何方法。
还期望提供一种非暂时性计算机可读存储介质,其上存储有可执行指令,可执行指令由于被计算机系统的一个或多个处理器执行而使得计算机系统至少执行所述的任何方法。
附加地或替代地,本发明可以提供一种改进的区块链编程工具或辅助工具。它可以提供一种改进的、有效的和优化的布置,其促进或实现分布式、可验证的计算。
附图说明
参考本文描述的实施例,本发明的这些和其他方面将变得显而易见并得以阐述。现在将仅通过示例并参考附图来描述本发明的实施例,其中:
图1示出了根据至少一个实施例的用于验证程序的正确执行的环境;
图2示出了根据各种实施例的可用于实现协议的计算环境;
图3示出了适于执行可验证计算的环境的示图;
图4示出了其中可以实现协议以在分布式计算环境中实施程序的正确执行的环境的示图;
图5示出了根据基于区块链的协议的交易记录的示例,该协议用于在分布式计算环境中实施程序的正确执行。
图6是根据协议请求程序执行的过程的示意图;
图7是根据协议验证程序的正确执行的过程的示意图;
图8是根据协议实现程序执行请求的过程的示意图;
图9是根据协议执行校正例程的过程的示意图;
图10是根据协议调解争议的过程的示意图;和
图11示出了可用于实践本发明的至少一个实施例的计算设备。
具体实施方式
在各种实施例中,本文描述的系统和方法用于确保在分布式计算环境中计算机程序的正确执行,其中多个实体可以控制分布式计算环境的节点。在这种分布式环境中,计算实体可能难以将任务的执行委托给另一实体,至少因为这两个实体缺乏信任关系,在这种信任关系中,向委托实体提供执行实体实际执行任务并正确执行任务的保证。根据本发明的协议可用于提供程序的正确执行的加密可验证的保证,其中第一计算实体将程序的执行委托给第二计算实体。因此,通过更有效地利用整个系统中的可用计算资源来执行程序,同时还提供程序被正确执行的加密可验证的保证,使得这种协议的使用可以用于提高计算系统(例如,分布式计算环境)的效率。
图1示出了一种环境,其中可以利用本文描述的系统和方法来实施和/或确保程序的正确执行。在一些实施例中,第一计算机系统(例如,客户端102)将程序108的执行委托给第二计算机系统(例如,证明者104)。证明者104可以执行程序,并且向客户端102提供正确执行的证明110,其证明了证明者104已经正确执行程序(例如,使用输入的正确值,该输入可以从附加计算机系统接收)。在一些情况下,根据协议,第三计算机系统(例如,调解器106)可以用于确定证明者是否正确执行了程序108。本文描述的技术可以在分布式计算环境中实践,并且可以与区块链网络结合使用。
客户端102可以指将计算任务的执行委托给证明者104的计算机系统,其可以是不同的计算机系统。一般来说,证明者104可以是能够执行计算任务的任何合适的计算机系统,其可以以任何合适的格式编码,例如程序108。客户端102可以从能够执行该程序的多个计算机系统中选择证明者104。证明者104可以是客户端102不具有控制权的计算机系统,并且一般来说,不需要与客户端102具有信任关系,并且客户端102在本文描述的协议之外,不需要证明者104将以特定方式(例如,根据由客户端102指定的输入集合执行程序)执行操作的任何额外保证。
程序108可以指计算任务,并且可以使用结合图2描述的技术来生成。程序108例如可以是二次程序Q,例如结合图2描述的那些。一般来说,程序108可以具有一个或多个输入,该一个或多个输入用于结合指令集合来确定一个或多个输出。输入和/或输出可用于生成正确执行的证明110,该证明110是由证明者104生成的认证,该证明110是输入和/或输出具有正确值的计算上可验证的认证。在一个实施例中,该认证是零知识证明。
调解器106可以是具有和/或建立与客户端102和/或证明者104的信任关系的计算机系统。在这种情况下,信任关系可以指由客户端102和/或证明者104确定的调解器作为调解客户端102和证明者104之间可能出现的争议的合适组件。例如,信任关系可能意味着愿意授予调解器与客户或证明者之一协作执行一个或多个校正程序的能力。
在一些实施例中,协议能够通过区块链交易来实现程序的执行和验证。如本文更详细描述的,零知识协议可以具有阶段集合,包括但不限于创建阶段、计算阶段和验证阶段。在创建阶段,执行可用于零知识证明的生产和验证的公共参数的计算。在执行阶段,可以基于一个或多个输入来执行程序,并且一个或多个输入可以包括从区块链外部的源(例如,受信任的权威机构,网站等)获得的数据。证明者可以从外部数据源获得数据作为程序执行的一部分。在验证阶段,输入可以表示根据零知识证明验证运行的验证函数的一个或多个参数。在一些情况下,需要有一种协议来确保用于执行程序的输入是正确的——换句话说,可能需要约束证明者正确地行为,并在执行程序时提供准确的输入。
图2示出了根据各种实施例的可用于实现协议的计算环境200。可以使用区块链技术来实现该协议,以存储正确性证明,并将“按构造校正”的加密方法与智能合约相结合。在实施例中,公共可验证计算方案包括三个阶段:设置阶段、计算阶段和验证阶段。
设置阶段可以作为外包计算任务执行的过程的一部分来执行。如下所述,客户端可以指将计算任务的执行委托给证明者的实体(例如,客户或客户端计算机系统),该证明者可以是不同的计算机系统。一般来说,客户端可以出于各种原因委托计算任务的执行,包括但不限于有限的计算资源、计算资源的缺乏、与利用客户端计算机系统来执行任务相关联的财务成本、与利用客户端计算机系统来执行任务相关联的能源成本(例如,依赖电池供电的移动装置或笔记本电脑可以利用证明者来执行计算密集型任务,从而节省电力并延长电池供电设备的使用)等。
在实施例中,设置阶段涉及组织的客户端、客户、雇员或任何其他使用具有精确语义的正式语言编写合约的合适的实体。可以用高级编程语言,例如,C或Java等来编写合约。一般来说,合约可以用任何语言或语法来表达,这些语言或语法可以转换成计算机系统可以处理的格式。在实施例中,具有有限目的的领域特定语言可以提供类型安全,并且可以利用受限的表达能力。生成的源代码可能是合约的精确描述。
编译器202可以是包括可执行代码的任何硬件、软件或其组合,如果可执行代码由计算机系统的一个或多个处理器执行,则使系统将源代码206视为输入并产生电路。编译器202可以指基于已经编译成机器可读格式(例如,二进制代码)的指令来执行或完成指令的计算机程序。应当注意,虽然示出了编译器202,但是可以利用解释器、汇编器和其他合适的软件和/或硬件组件来将源代码转换成电路。在实施例中,该电路是算术电路,该算术电路包括运载来自域F的值并连接到逻辑和/或算术门的线(wires)。在实施例中,系统使用电路来生成二次程序Q 208,该二次程序Q208包括提供原始电路的完整描述的多项式集合。
在实施例中,编译器202能够识别编程语言(例如,C或Java)的实质子集,包括但不限于:预处理器指令、静态初始化器、全局和局部函数、区块范围的变量、数组、数据结构、指针、函数调用、函数运算符(例如,函子)、条件句和循环以及算术和逐位布尔运算符。在实施例中,编译器202根据编程语言的标准不支持整个命令集合(在某些情况下,这可能旨在防止在智能合约中执行某些类型的算法,例如,禁止递归算法)。在实施例中,编译器将源代码的表达扩展成算术门语言,以产生算术电路。Campanelli,M.等人(2017年)在《零知识偶然支付再访:服务攻击和支付》(Zero-KnowledgeContingent Payments Revisited:Attacksand Payments for Services)中,Tillich,S.和Smart,B在《适用于MPC和FHE的基本功能电路》(Circuits of BasicFunctions Suitable For MPC and FHE)中,都曾考虑过电路实现方式。算术电路可以被编译器202或任何其他合适的硬件、软件或其组合(例如,图2中未示出的软件模块)用来构建二次算术问题(Quadratic Arithmetic Problem,简称QAP)。根据实施例,二次程序被编译成用于客户端(例如,密钥生成和验证)和证明者(例如,计算和证明生成)的加密例程集合。
在实施例中,密钥生成器204是包括可执行代码的硬件、软件或其组合,如果可执行代码由计算机系统的一个或多个处理器执行,则使得系统生成评估密钥和验证密钥,以形成二次程序。在Gennaro,R.等人(2013年)的《没有PCP的二次跨度程序和简洁的NIZK》(Quadratic Span Programs and Succinct NIZKs without PCPs)中考虑将计算编码为二次程序的技术。在实施例中,二次算术问题(QAP)Q对域F上的电路进行编码,并且包含m+1个多项式的集合:
V={vk(x)},W={wk(x)},Y={yk(x)}
其中,0≤k≤m。还定义了目标多项式t(x)。给定函数f将F的n个元素作为输入并输出n’个元素,其中,N=n+n’,则如果{c1,…,cN}∈FN是f的输入和输出组的有效赋值,并且如果存在系数列表{cN+1,…,cm},则Q计算f,使得t(x)除以p(x):
因此,在实施例中,必须存在某个多项式h(x),使得h(x)·t(x)=p(x)。Q的大小是m,其次数(Degree)是t(x)的次数。
在实施例中,为算术电路构建QAP包括为电路中的每个乘法门g选取任意根rg∈F,并将目标多项式定义为t(x)=∏g(x-rg)。在实施例中,索引k∈{1...m}与电路的每个输入以及来自乘法门的每个输出相关联。V中的多项式对每个门的左输入进行编码,W对每个门的右输入进行编码,Y对输出进行编码。例如,如果第k条线是g门的左输入,则vk(rg)=1,否则vk(rg)=0。因此,对于特定的门g及其根rg,前面的方程式可以简化如下:
门的输出值等于其输入的乘积。可除性检验分解成deg(t(x))个单独的检验,t(x)的每个门g和根rg具有一个检验,使得p(rg)=0。加法门和乘以常数门对QAP的大小和次数没有影响。
在实施例中,在域Fp上定义QAP,其中,p是大素数。在实施例中,期望Fp上的QAP有效地计算可以用以p为模的加法和乘法来表示的任何函数。算术分离门可以被设计成将算术线a∈Fp(已知在[0,2k-1]中)转换成k条二进制输出线。因此,由此可见,可以使用算术门来表示布尔函数。例如,NAND(a,b)=1–ab。每个嵌入式布尔门只需要一次乘法运算。此外,诸如分离(split)之类的新门可以被定义为独立的,并与其他门组合在一起。给定输入a∈Fp(已知在[0,2k-1]中)情况下,分离门输出保持a的二进制数字a1,...,ak的k条线,使得∑k2i-1ai=a,每个ai为0或1。
最后,作为设置阶段的一部分,系统生成所有证明者和验证者使用的公共参数。应当注意,使用由客户端选择的秘密值导出评估密钥EK和验证密钥VK。密钥生成器204可以结合密钥生成算法利用二次算术程序(QAP)来生成评估密钥EK210和验证密钥VK212。
在实施例中,执行计算任务包括由证明者计算输入216上的函数(即,用于评估f(x)的过程)。在实施例中,证明者是客户端可以向其委托计算任务的任何合适的计算机系统。在实施例中,输入216包括认证了证明者身份的信息,例如,使用与证明者相关联的私钥生成的数字签名。在一个实施例中,证明者是客户端同意向其转移数字资产的计算机系统,作为成功完成计算任务的回报。在实施例中,客户端向证明者提供输入x和评估密钥EK,证明者使用到计算例程的评估模块214,来计算输出y(即,y=f(x),其中,输入是x,函数是f),并且使用评估密钥EK 210来产生正确性证明218。在实施例中,评估模块是包括指令的硬件和/或软件,如果指令由计算机系统的一个或多个处理器执行,则使得计算机系统评估QAP208的内部电路线的值并产生QAP的输出y。
在实施例中,二次程序的每个多项式vk(x)∈F被映射到双线性组中的元素gvk(s),其中,s是由客户端选择的秘密值,g是组的生成器,F是g的离散对数的域。在实施例中,对于给定的输入,证明者评估电路,以获得该输出和对应于二次程序的系数ci的内部电路线的值。因此,证明者可以评估v(s)=∑k∈{m}ck·vk(s),以得到gv(s);计算w(s)和y(s);计算h(x)=p(x)/t(x)=∑dhi·xi;并使用评估密钥中的hi和gs(i)项计算gh(s)。在实施例中,正确性证明218包括(gv(s),gw(s),gy(s),gh(s)),并且验证者使用双线性映射来检验p(s)=h(s)·t(s)。在实施例中,该证明π存储在区块链网络222上,以供以后使用,或者可以由多方验证,而不需要证明者单独与这些中的每一个交互。在实施例中,可以执行对正确性证明的电路存储器的评估,以解锁由交易的锁定脚本所留置的资源(例如,数字资产)。
在实施例中,图2所示的示例区块链网络222包括区块链节点,这些节点被实现为点对点的分布式电子设备,每个节点运行软件和/或硬件的实例,该实例执行遵循区块链协议的操作,该协议至少部分地在节点的操作者之间被同意。在一些示例中,“节点”是指分布在区块链网络中的点对点电子设备。
在实施例中,节点中的至少一些是执行复杂计算(例如解决加密问题)的网络节点。解决加密问题的网络节点为区块链创建新区块,并将新区块传播到其他节点。其他节点验证该网络节点的工作,并且在验证后,将该区块接受到区块链中(例如,通过将其添加到区块链的分布式账本中)。在一些示例中,区块是一组交易,通常标记有时间戳和前一区块的“指纹”(例如,散列)。通过这种方式,每个区块可以被链接到前一区块,从而创建区块链中的链接区块的“链”。在实施例中,通过节点的共识将有效区块添加到区块链。同样在一些示例中,区块链包括已验证为有效的区块的列表。
在实施例中,将该证明π传播到区块链网络222,并且验证者220用于验证该证明。在实施例中,验证者220是任何合适的计算实体,例如,区块链上的节点。还应注意,在某些情况下,生成评估密钥EK和验证密钥VK的同一计算实体也验证该证明。在实施例中,区块链的节点可以使用验证密钥VK和该证明π来验证转移数字资产的控制权的交易,从而如果验证成功,则验证该合约为有效。协议的一个要求是,即使证明者知道验证密钥VK,也不能提供不正确的证明。因此在此协议中,公共参考串(common reference string,简称CRS)由客户端或由至少发布评估密钥EK和验证密钥VK的可信第三方产生。在实施例中,任何计算实体可以使用公布的验证密钥VK来验证计算。
一般来说,客户端能够使用标准交易,例如,支付到公钥(pay-to-public-key,简称P2PK)和支付到公钥散列(pay-to-public-key-hash,简称P2PKH),向对手方或证明者支付。例如,在实施例中,客户端将P2PK锁定脚本转换成算术电路,并传播交易,该交易包括从该电路导出的谜题(puzzle)。对手方或证明者接收电路,提供适当的输入(例如,认证了证明者身份的信息,例如,在客户端和证明者之间共享的秘密,或使用证明者的私钥生成的数字签名),并运行电路,以生成正确性证明π。在实施例中,该证明用于解锁数字资产,此外,可能的情况是,识别对手方或证明者的信息(例如,与对手方或证明者相关联的公钥和/或数字签名)不以未混淆的格式记录到区块链。
在实施例中,根据上面和/或下面描述的技术生成验证密钥和相应的证明。因此,给验证者提供验证密钥VK和证明π:
使得验证者计算多个椭圆曲线乘法(例如,对每个公共输入变量使用一个乘法)和五个配对检验,其中一个配对检验包括额外的配对乘法。
在给定验证密钥VK、证明π和(a1,a2,…,aN)的情况下,为了验证t(x)除以p(x),和由此(xN+1,…,xm)=f(x0,…,xN),验证者进行操作如下。首先,检验所有三个α项:
其中,并且 然后,验证者检验项目β:
并且最后,验证者检验可除性要求:
其中 并且
因此,根据一个实施例,在考虑来自上述部分的符号和本发明中描述的示例后,该验证包括以下元素的配对检验集合:
图3示出了用于协调可验证计算的执行的示图300。客户端302、证明者304和验证者306可以是区块链网络的节点。客户端302可以是可以包括可执行代码的任何合适的计算机系统,如果该可执行代码由计算机系统的一个或多个处理器执行,则使得计算机系统接收智能合约308。在实施例中,以高级编程语言将智能合约308编码为源代码,例如,C、C++或Java。在实施例中,诸如编译器、解释器和/或汇编器之类的软件可以被用来将智能合约308转换成算术电路310,该算术电路310由运载来自域F的值并连接到加法和乘法门的“线”组成。应当注意,算术电路是指可以由物理电路实现的逻辑电路,该物理电路包括通过物理导线连接的一系列物理门(例如,使用晶体管-晶体管逻辑(TTL)集成电路,例如,7400系列门、触发器、缓冲器、解码器、多路复用器等)。尽管在图3和其他地方的上下文中描述了智能合约308的执行,但是智能合约的使用仅仅是可以被转换成算术电路的源代码的一个非限制性示例。在实施例中,客户端302(例如,单独或与另一实体结合)确定用于执行由操作集合定义的任务的源代码,其中任务的执行被委托给证明者304。一般来说,验证者306可以执行与确定证明者304正确执行任务相关联的任务,例如通过验证由证明者304生成的正确性证明的有效性。
在实施例中,客户端302向证明者304提供算术电路310,并且证明者304获得电路的输入312。输入数据的源可以是存储在区块链上的数据,或者可以作为与算术电路310中指定的某一数据馈送交互的结果从外部获得。输入数据可以经由网络318(例如,本地网络、内部网络、诸如因特网的公共网络、广域网、无线网络、移动网络、卫星网络、具有多个网络节点的分布式计算系统等)从数据馈送获得,例如从数据提供者320和/或受信实体322获得。在一些情况下,输入312可以是数据(例如关于真实世界状态和事件的数据)。电路310可用于生成二次程序Q,该二次程序Q包括提供原始电路的完整描述的多项式集合。在任一情况下,证明者304可以在输入312上执行电路或二次程序Q,以生成一个或多个输出中间输出和一个最终输出。在一些实施例中,期望证明者获得的有效副本作为输出,该副本是向电路线分配的数值,使得分配给输入线的值是x,中间值对应于中的每个门的正确操作,分配给输出线的值是如果要求的输出不正确(即,),则不存在的有效副本。在实施例中,期望证明者提供电路线的值的子集,其中,所选择的电路线的值的子集对于证明者来说是先验未知的。
在实施例中,证明者304通过以下方式从数据提供者320获得外部数据:证明者304和数据提供者320建立加密保护的通信会话;证明者304通过加密保护的通信会话做出请求;数据提供者响应于该请求提供数据;证明者接收数据,并且响应于接收数据,请求各方之间通信的认证;数据提供者在加密保护的通信会话期间计算证明者和数据提供者之间的加密可验证的通信证明πCommunications,并且用数据提供者的私钥来对该认证进行数字签名;证明者接收通信证明。一般来说,通信证明是客户端和服务器之间(例如,证明者304和数据提供者320之间)发生一个或多个通信的加密可验证的认证。在实施例中,该认证可以用于验证客户端和服务器之间的通信内容,尽管应当注意,在一些情况下,通信的一部分可以被编辑(例如,其公开受到法律限制的信息),例如通过用信息的混淆(例如,加密或散列格式的信息)替换被编辑的信息来编辑通信的一部分,或者用预先确定的默认值来替换通信的一部分。在实施例中,该认证至少部分地基于默克尔树(Merkle tree)的根值来确定。在实施例中,使用数据提供者320可访问的加密私钥来对该认证(例如,通信证明)进行数字签名。诸如证书颁发机构之类的实体可以发布数字证书,该数字证书证明加密公钥对应于私钥。应当注意的是,在本发明的范围内,通常使用符号πCommunications来指代通信证明,而正确执行的证明可以称为πProver或更简单地称为π。可以根据英国专利申请No.1720946.1中描述的技术来执行用于从数据提供者320获得数据和/或验证从数据提供者320获得的数据的完整性和/或真实性的技术。
在实施例中,受信实体322或受信机构可以是诸如预计能够访问输入数据(例如,当前或未来)的计算系统的实体。数据馈送的公钥可以嵌入到锁定脚本中,该锁定脚本约束解锁脚本中的签名和消息,以与密钥具有数学关系,而不是固定值。以这种方式,锁被配置为使得将检测到数据的任何修改并且可以采取校正措施,例如减轻和/或无效。未确定的数据可以用于锁定数字资产,并且可以是在配置锁定脚本时锁定节点尚未知道的数据。该数据可以是尚未建立的数据(例如预期在未来创建但尚未创建的数据),或者是另一个节点已知但锁定节点尚不可用的数据。然而,该数据是预期可从受信实体322(当前或未来)获得的数据。锁定脚本可以包括所确定的数据源(例如,受信实体322)的公钥,并且包括指令,该指令使执行锁定脚本的验证节点通过以下方式来验证解锁脚本中提供的数据源:a)基于所确定的数据源的公钥并基于解锁脚本中定义的数据来生成修改的公钥;以及b)基于修改的公钥评估解锁脚本中的签名。与本文描述的各种技术一致的利用受信实体322的技术可以与结合英国专利申请No.1705749.8描述的技术一致。
在实施例中,输出内部电路线(或其子集)的值和评估密钥EK用于产生正确性证明316。该证明π可以存储在区块链上并由多方验证,而不需要证明者304分别与多方交互。以这种方式,验证者306可以使用公共验证密钥VK和证明π验证已传播的交易,从而验证合约。在一些情况下,如果验证失败,则客户端302可以收回由已传播的交易所留置的数字资产。在一些情况下,验证者306和客户端302是相同的计算机系统。
在实施例中,图4示出了用于保护程序执行的协议的示意图400,其中程序(例如,智能合约)的输入数据被验证。在实施例中,协议提供对由程序的不正确执行引起的潜在损害的自动补偿。客户端402、证明者404和调解器406可以与本发明中其他地方描述的一致。
如在其他地方所讨论的,客户端(例如,图4中所示的客户端402)可以指由实体控制的计算机系统,其中客户端计算机系统和/或客户端实体是合约的一方。例如,客户端402可以与下订单购买令牌以换取数字资产的实体相关联,该数字资产被转移到令牌的发行者或所有者。令牌可能是智能合约。
如在其他地方所描述的,证明者404可以是监控网络以发现嵌入或引用程序(诸如智能合约)的交易的计算机系统。例如,证明者404可以是区块链网络的节点。证明者也可以被称为工作者或工作者计算机系统。
调解器406可以是具有和/或建立与客户端402和/或证明者404的信任关系的调解器计算机系统。在这种情况下,信任关系可以指由客户端402和/或证明者404确定的调解器是调解客户端402和证明者404之间可能出现的争议的合适组件。例如,信任关系可能意味着愿意将与客户端或证明者之一协作解锁与智能合约的执行相关联的数字资产的能力授予调解器。例如,调解器可用于对由于程序(例如,智能合约)的不正确执行而引起的可能损害提供自动补偿。
客户端402可以确定秘密值,该秘密值可以是随机或伪随机生成的。秘密值可以指不应以明文提供给证明者404的值,直到客户端402确定由证明者404提交的保证金可以被退回。应当注意的是,在一些情况下,保证金起到激励证明者404遵循协议以正确执行程序的作用——如果不遵循协议,证明者404有失去对由保证金交易所留置的资产的控制的风险。因此,可能的情况是,响应于客户端402确定证明者404已经根据协议履行了证明者的所有责任,客户端402向证明者404揭示秘密值。
在确定秘密值之后,客户端402可以对秘密值进行加密,从而生成加密的秘密。可以使用与调解器406相关联的公钥来对秘密值进行加密,以生成密文。在实施例中,调解器406由客户端402和证明者404共同选择。在实施例中,调解器406是结合图1描述的区块链网络的节点。在实施例中,秘密值在客户端402和调解器406都悉知的对称密钥下进行加密。客户端402还可以使用秘密值作为加密散列算法(诸如SHA-256加密散列算法)的输入来生成计算散列输出。另外,客户端402可以生成密文和散列输出都对相同秘密值进行编码的认证。在实施例中,该认证是零知识证明。客户端402可以将密文、散列输出和该认证作为协议的一部分发送给证明者404。
证明者404可以将保证金交易提交到区块链网络,其中保证金交易留置证明者404的数字资产,并且用于确保证明者404按照协议行事。如果证明者404不遵循协议,则证明者404有丧失由保证金交易留置的资产的风险。在实施例中,保证金交易由证明者404创建,并且赎回价值为D个合适的数字资产的先前交易,并且可以以两种方式被赎回:第一,通过公布证明者404的秘密值和数字签名(称为收回存款交易);或者第二,通过客户端402和证明者404在同一交易(称为补偿交易)上产生数字签名。保证金交易可以引用具有属于证明者404的D个合适的数字资产的先前交易。保证金交易可以包括一个或多个输入(例如证明者404的数字签名)。由安全交易留置的数字资产的类型和/或数量可以由客户端402和证明者404共同商定,或者可以由客户端402指定,并且可以至少部分地基于由使用不正确的输入数据执行程序(例如,智能合约)可能导致的最大损害来选择。
在实施例中,客户端402和对手方就程序(例如,智能合约)的执行条款达成一致。对手方可以创建锁定交易,其中输出之一被程序(例如,智能合约脚本)锁定,并将锁定交易发送到客户端402。对手方可以被称为程序(例如,智能合约)的发行者。应该注意的是,由于输入的值不等于锁定交易的输出的值,因此锁定交易在此时尚未被验证为有效。一旦客户端402接收到锁定交易,客户端402向锁定交易添加输入,并解锁由客户端402控制的交易的输出,以向发行者转移商定的数字资产、以及要支付给证明者404的用于执行程序(例如,智能合约)的费用、以及具有到证明者404的费用的值的输出、以及多签名解锁脚本,该多签名解锁脚本在提供以下三个签名中的两个时,释放费用留置:来自客户端402的签名;来自证明者404的签名;和来自调解器406的签名。响应于检测到证明者404提交了保证金交易,客户端402可以向区块链网络传播锁定交易。
证明者404可以收集外部数据并计算合约执行所需的零知识证明。收集外部数据的技术可以包括公证与数据源的通信。Hajjeh和M.Badra在《TLS签名》(TLS Sign)中考虑了一种对通信进行公证的方法,该方法定义了一种称为TLSSignOnOff的新的子协议,其中客户端(可以是与零知识协议的上下文中描述的客户端不同的实体)和服务器在它们开始或停止传输签名数据时通知对等方。在停止消息后,服务器收集对话的散列并签名。可以使用对加密保护的通信会话的记录数据进行公证的各种其他方法(例如,保存会话的记录,并使用记录的对话的真实性和/或完整性的加密可验证的证明对对话进行签名),例如由“R.Housley和M.Brown”的《传输层安全性(TLS)证据扩展》(Transport Layer Security(TLS)Evidence Extensions)和由H.Ritzdorf、K.Wust、A.Gervais、G.Felley和S.Capkun的《TLS-N:基于TLS的不可否认性,支持普遍存在的内容签名以实现去中介化》(TLS-N:Non-repudiation over TLS Enabling Ubiquitous Content Signing forDisintermediation)所描述的技术,该技术定义了证据窗口,该窗口在客户端发出请求时启动,且当其中一方关闭证据窗口时,服务器将对消息的散列和证据生成的时间戳进行签名,并可选择隐藏敏感记录。用于收集外部数据的技术也可以与收集外部数据中描述的技术一致,也可以利用与英国专利申请1705749.8相关的受信数据源。证明者404可以向区块链网络传播解锁交易。
在证明者404传播解锁交易之后,验证者计算机系统可以执行验证过程以确定正确执行的证明是否有效。在一些实施例中,验证者是不同于客户端402的计算实体,但是这不是必需的——客户端可以执行验证过程。在实施例中,验证过程既包括验证正确执行(例如,输出至少部分基于电路的一个或多个输入从电路生成)的证明的有效性,也包括验证由证明者404输入到电路的数据是正确的输入。例如,该验证可以包括基于来自提供外部数据(例如,一方为其投保延迟的航班信息;金融衍生品合约的天气数据,其使用天气的数据馈送,而不是作物保险的价格指数)的受信数据源的经公证的对话,检验程序的输入的值是否是预期值。
如果客户端402(或者更一般地,用于执行验证过程的任何合适的系统)确定输入数据不正确,则证明者404可以计算损害d,该损害d反映了基于正确输入值生成的第一输出和基于在解锁交易中由证明者404传播的不正确输入值生成的第二输出之间的差异。例如,智能合约(例如,程序)可以为一方提供特定航班延迟保险,并且程序的执行可以包括使用外部数据(例如特定日期特定商业航班的航班信息)来确定特定航班是否被延迟。如果航班延迟,程序的一方可能会收到资产的转移(例如,针对延迟提供旅行保险的智能合约)。本文也考虑了各种扩展、修改和替代实施例——例如,资产的转移可以至少部分地基于附加标准,诸如由于特定原因的延迟(例如,与天气相关的延迟/取消)、延迟至少是特定持续时间的要求(例如,仅为超过3小时的延迟保险),以及根据延迟的持续时间而变化转移(例如,为更长的延迟保险更大的数额)。作为第二示例,在程序的输入对应于货币之间的汇率的情况下,基于正确的货币汇率(例如,基于由受信源在公证的通信会话中编码的汇率)和证明者404用于执行程序的货币汇率,损害d可以衡量客户端402应接收的数额差。在实施例中,证明者404将损害d的计算委托给另一计算机系统,例如不同于图4所示的证明者404的另一个工作者。应当注意的是,在一些情况下,系统还可以请求由证明者404计算损害。在实施例中,可以生成损害量的零知识证明,以提供损害量的认证,该认证可以对应于不同电路(例如,程序)的输出。
一旦系统(例如,客户端402)计算或以其他方式确定(例如,通过接收来自另一证明者的计算结果)损害的值,则系统可以使所计算的损害对证明者404可用。在实施例中,通过向区块链网络传播损害值和/或证明,可以使所计算的损害值和认证了损害值的有效性的零知识证明对证明者404可用,这可以使区块链的其他节点能够确定损害值是否正确。在实施例中,损害值和/或证明对区块链之外的证明者404可用——例如,系统可以以任何合适的方式向证明者404发送消息,该消息包括损害值和/或证明。在一些实施例中,当且仅当损害值非零时,系统向证明者404提供损害。
在一些实施例中,证明者404接收或以其他方式获得损害值。如果损害值为零,则证明者404可以以相同或相似的方式进行,如同未接收到损害值一样。例如,证明者404可以接收指示与特定程序(例如,智能合约)的执行相关联的损害为零的消息,并且确定不需要执行补偿例程。在实施例中,证明者404等待客户端402提供秘密值。该秘密值可用于赎回由区块链交易留置的数字资产——例如,区块链交易可以包括锁定脚本和解锁脚本,该锁定脚本和解锁脚本被共同执行时,验证在解锁脚本中提供了正确的秘密值,并释放对数字资产的留置。
但是,如果证明者404接收到非零的损害值,则证明者404可以根据协议执行一个或多个操作。在实施例中,证明者404接收损害值和关于损害值的相应零知识证明。证明者404可以验证该证明。如果该证明被验证,证明者404可以确定证明者404是否同意接收到的损害值的值。在实施例中,证明者404执行任何合适的操作集合来确定损害值,例如通过执行程序来计算损害,将程序的执行委托给另一个计算实体(例如,证明者404由此成为由不同的证明者执行程序的客户端)。
如果由证明者404确定的损害值与提供给证明者404的损害值相匹配,则证明者404可以确定损害值是正确的,并且执行一个或多个步骤,该步骤导致将等于损害值d的资产的控制权转移到客户端402作为补偿。在实施例中,证明者404向区块链网络传播交易,该交易包括将等于损害值d的资产的控制权向与客户端402相关联的地址的转移。但是,如果证明者404确定了不同的损害值(或者零知识证明没有验证),则证明者404可以向调解器406提供对话的带时间戳的副本。调解器可以利用副本来确定由客户端402或证明者404计算的损害值是否正确。
证明者404可以在不同的时间从不同的实体接收秘密值。例如,在验证了证明者404正确执行了程序(例如,智能合约)以及用于生成程序的输出的一个或多个输入与基于区块链外部数据(例如,仅使用存储在区块链网络上的数据无法在计算上验证其正确性和/或值的数据)的预期值相匹配的正确工作的证明之后,客户端402可以将秘密值提供给证明者404。客户端402可以在计算损害值d并从证明者404接收数字资产的转移作为该数额的补偿时,向证明者404提供秘密值。验证者404可以从调解器406接收秘密值,以响应于调解器确定客户端402提供给验证者404的损害值d不正确、验证者404提供了不同的损害值d’(该不同的损害值d’是正确的损害值)、向客户端402进行了等于损害值d’的数字资产的转移、以及上述的组合。
在接收到秘密值后,证明者404可以生成区块链交易以收回留置在保证金中的数字资产。证明者404可以生成区块链交易,该区块链交易包括对秘密值和证明者404的数字签名进行编码的解锁脚本。留置数字资产的相应锁定脚本可以包括指令,该指令通过将秘密值的散列与锁定脚本中编码的输出值进行比较来验证解锁脚本对正确的秘密值进行编码,并且还使用与证明者404相关联的公钥来验证锁定脚本的数字签名。因此,锁定脚本和解锁脚本可以共同形成程序,如果该程序被执行,则转移对由保证金交易的锁定脚本所留置的数字资产的控制。在一些实施例中,用于收回数字资产的区块链交易可能受到时间限制,使得收回保证金交易必须在持续时间tw内被传播(例如,被挖掘)到区块链网络。在实施例中,此限制被编码在锁定脚本中。在一些实施例中,该限制不是在编程上被编码,而是通过允许不同的交易(例如,补偿交易)在时间tw后代表客户端402要求由保证金交易留置的数字资产来被实施。
例如,在实施例中,客户端402基于从受信来源(例如,通过公证的通信会话)获得的信息,确定证明者404用于执行程序(例如,智能合约)的输入值不是预期的输入值,并向证明者404发送指示所计算的损害值d的消息。如果证明者404没有转移对应于至少d的补偿值的数字资产,则客户端402可以等待直到时间tw才提交区块链交易以要求保证金的数字资产。补偿交易可以对客户端402和证明者404两者的数字签名进行编码,并且可以被时间锁定,使得补偿交易不能在时间tw之前被挖掘到区块链网络。补偿交易可以包括解锁脚本,该解锁脚本允许客户端402控制由保证金交易留置的数字资产。在实施例中,补偿交易的主体在通信的开始时由证明者签名,通信的开始可以在协议开始时或之前。
图5示出了由鲍勃(Bob)操作的第一客户端计算机系统和爱丽丝(Alice)操作的第二客户端计算机系统生成的交易记录的示例。鲍勃可以被称为令牌的发行者,爱丽丝可以被称为客户端。图500示出了创建用于程序(例如,智能合约)的执行的锁定交易。锁定交易502可以引导数字资产转移到鲍勃可访问的钱包或地址,以交换智能合约。在所示的示例中,爱丽丝通过指定与由鲍勃控制的私钥相关联的公钥的散列来利用支付到公钥散列。在其他示例中,爱丽丝可以利用支付到公钥或支付到脚本散列操作码来将数字资产转移给鲍勃。使用第一客户端计算机系统,鲍勃用两个输入和两个输出为所提供的合约准备锁定交易502。在所示的示例中,鲍勃生成具有值x的第一输入504、以及第一输出508,第一输入504可以具有几个中本聪(Satoshis)的值,第一输出508包括描述合约条款的元数据。第一输出508可以具有零值(OP_RETURN)。在所示的示例中,鲍勃生成也具有值x或几个中本聪的第二输入506、以及具有值y的第二输出510,该第二输出510指示爱丽丝必须转移的数字资产,以及支付到公钥散列(“P2PKH”)。锁定交易502可以从由鲍勃操作的第一客户端计算机系统传输到由爱丽丝操作的第二客户端计算机系统。
在实施例中,如本发明中所描述的,节点中的至少一些用作验证交易的验证节点。在一些示例中,交易包括提供数字资产的所有权证明的数据以及用于接受或转移数字资产的所有权/控制权的条件。在一些示例中,“解锁交易”指的是将数字资产的至少一部分重新关联(例如,转移所有权或控制权)到与区块链地址相关联的实体的区块链交易,该数字资产由先前交易的未花费的交易输出指示。在一些示例中,“先前交易(previoustransaction)”指的是包含解锁交易所引用的交易输出的区块链交易。在一些实施例中,交易包括“锁定脚本”,该“锁定脚本”以在所有权/控制权可以被转移(“解锁”)之前必须满足的条件来留置交易。
锁定交易502由爱丽丝使用第二客户端计算机系统修改。在图5所示的示例中,得到的已修改的锁定交易512包括三个输入和输出。第一输入514不变,并且包括值x(几个中本聪)。第一输出520不变,并保留描述合约条款的元数据。第二输入516不变,并且具有值x(几个中本聪)。与锁定交易502一样,第二输出522保留值y(对应于爱丽丝必须转移控制权的数字资产)和P2PKH。使用第二客户端计算机系统,爱丽丝添加第三输入518和第三输出524。第三输入518具有值y+z,该值对应于爱丽丝为合约转移控制权的数字资产,以及工作者的费用。第三输出524具有对应于工作者费用的值z。多方签名功能可以用在这样的方案中,其中客户端将用于合约执行的资源(例如,数字资产)发送到3个中的2个多重签名地址(multisig address),其中一个密钥由每个交易方(例如,客户端和证明者)控制,另一个由调解器控制。为此,客户端(例如,爱丽丝)为客户端、证明者和调解器的私钥创建多签名地址。在实施例中,锁定交易被时间锁定,允许爱丽丝在时间窗口tw之后收回她的资源(例如,数字资产)。
调解器可以是如上结合图4描述的调解器计算机系统。如果存在争议(例如,爱丽丝不同意证明者在执行程序时使用的输入值),则调解器可以适当地与客户或证明者协作来赎回资金——例如,如果客户端不遵守既定协议,则调解器可以与证明者协作,以使得在第三输出下留置的数字资产(例如,费用值z)转移到证明者。相反,如果证明者不遵守协议,则调解器可以与客户端合作,因为三个签名中的两个足以赎回托管资金。应当注意的是,为了增加隐私,各方可以使用盲地址,而不是包括与调解器公开关联的长期地址。为了让调解器确信数据的正确性,各方可以出示包含通信证明的副本。在某些情况下,使用调解器的盲地址并使方案在内部隐藏——但是,如果协议的目标是提供透明性(例如,允许区块链网络的节点验证交易),则在实施例中可以使用非盲地址。
在某些情况下,协议是安全的,这可能是指调解器不能单方面赎回托管资金。在某些情况下,协议是乐观的,这可能是指调解器将自愿调解争议的假设。在一些实施例中,协议要求调解器提供第四输入,该第四输入具有与交易方一起的保证金相对应的值M,并且调解器能够当且仅当留置工作者费用的托管交易被赎回时收回保证金值M。通过这种方式,调解器通过拒绝调解争议而导致拒绝服务攻击的可能性得以降低,因为调解器在赎回工作者费用之前无法要求归还保证金值。
图6示出了根据本发明中描述的协议的过程的流程图600。该流程图可以根据本发明中其他地方(诸如图1、图4和图11)描述的实施例来实现。过程可以由实现结合图7描述的过程的同一系统来实现。过程可以由本发明中其他地方描述的客户端或任何其他合适的计算实体来实现。合适的系统(例如,结合图4描述的客户端)包括一个或多个处理器和存储器,该存储器包括可执行指令,该可执行指令如果被执行,则使得一个或多个处理器执行结合图6描述的过程的至少一部分。
作为过程的一部分,系统可以选择602合适的证明者和调解器。在实施例中,客户端通过程序执行平台发出请求,请求程序(例如,智能合约)的执行。请求可以包括程序的指示(例如,包括关于程序的计算复杂度或预期运行时间的信息、对应于客户端愿意为程序的执行转移控制权的数字资产的费用等)。平台的一个或多个预期证明者可以提供对请求的响应,指示预期证明者愿意执行程序。在实施例中,平台包括反馈系统,其中预期的证明者具有与平台上的过去表现相关联的评级。例如,证明者可能因正确满足了过去的请求而获得肯定的评级,因未能满足或不正确满足过去的请求而获得否定的评级。评级可以包括附加信息,例如预期证明者使用不正确的输入数据的频率、传播校正交易的频率、涉及由调解器解决的争议的频率等。在实施例中,客户端至少部分地基于与预期证明者相关联的评级来选择证明者(例如,证明者在所有做出响应的证明者中具有最高评级)。
在实施例中,客户端确定604秘密值x。秘密值可以指,直到客户端确定证明者执行了程序(例如,智能合约)并验证该程序被正确执行时,客户端才向证明者揭露的值。验证程序的正确执行可以包括确定正确的输入数据是否用于控制程序的执行。
系统可以获得与调解器计算机系统相关联的公钥,并且在调解器的公钥下对秘密值进行加密606,从而生成加密的秘密值EncMediator(x)。系统可以使用秘密值作为加密散列算法(例如SHA-256加密散列算法)的输入以生成606输出y=H(x)。一般来说,可以利用原像抗性函数(pre-image resistant function)(诸如单向函数)来代替在此上下文中描述的加密散列函数。系统还可以生成608加密的秘密值EncMediator(x)和输出y对同一秘密进行编码的零知识证明。该零知识证明可以由无法访问共享值的计算实体在计算上可验证(例如,无法访问秘密值x的计算机系统仍然能够在计算上验证秘密值EncMediator(x)和y是从同一值生成的)。
在生成前述数据之后,系统可以向证明者发送610加密的秘密值、散列输出和零知识证明。信息可以以任何合适的方式对证明者可用,例如通过跨多个数据包提供信息,通过将数据存储在证明者可访问的位置并提供对该位置的引用(例如,统一资源标识符)。
客户端可以使程序对证明者可用612。程序可以指客户端请求证明者执行的程序。程序可以是智能合约,它的执行依赖于输入数据,该输入数据可以从区块链网络或链下数据源(例如结合图3描述的数据源)获得。在实施例中,客户端通过传播对程序的引用进行编码的资金交易来使程序对证明者可用,其中资金交易与结合例如图5描述的交易一致。响应于检测到证明者向区块链网络传播了保证金交易,客户端可以传播资金交易和/或程序。证明者可以根据图8和图9描述的过程来执行程序。
图7示出了根据本发明中描述的协议的过程的流程图700。该流程图可以根据本发明中其他地方(诸如图1、图4和图11)描述的实施例来实现。过程可以由实现结合图6描述的过程的同一系统来实现。过程可以由本发明中其他地方描述的客户端或任何其他合适的计算实体来实现。合适的系统(例如,结合图4描述的客户端)包括一个或多个处理器和存储器,该存储器包括可执行指令,该可执行指令如果被执行,则使得一个或多个处理器执行结合图7描述的过程的至少一部分。
系统可以检测702程序(例如,如图6所述)被执行的指示。在一些实施例中,证明者传播解锁交易,该解锁交易指示程序的执行。指示可以包括正确性证明或程序的正确执行的证明。指示还可以包括证明者和数据提供者之间的通信证明。程序的执行可以由一个或多个输入控制,这些输入的值可以基于区块链网络外部的数据来确定。
一旦检测到指示,系统可以验证704程序的执行。在一些情况下,系统将验证步骤委托给另一计算机系统(例如结合图3描述的验证者计算机系统)。验证程序执行可以包括验证程序运行完成并生成输出,验证证明者生成的正确性证明的有效性,验证程序的输入具有正确的值,等等。如果系统确定程序(例如,智能合约)被正确且有效地执行,则系统可以使秘密值x对证明者可用712。一般来说,在确定证明者已经根据协议执行了各种步骤(例如,程序的正确执行)时,系统可以使秘密值x对证明者可用。证明者可以使用秘密值x来要求归还由安全交易留置的数字资产。在某些情况下,客户端和证明者合作生成多方签名,该多方签名将数字资产作为执行程序的费用发放给证明者。
如果系统确定程序未被正确执行,则系统可以确定不正确的执行是由于使用了不正确的输入值——例如,程序的输入可能不同于如上文结合图3描述的从数据馈送获得的预期输入值。系统可以确定706校正值,该校正值可以基于用于执行程序的实际输入值和从数据馈送获得的预期输入值之间的差。在实施例中,校正值可以通过表示加权汉明距离(weighted Hamming distance)的度量来表示:此处u=u[1..m],v=v[1..m],其中u和v是待比较的字符串。在实施例中,校正值可以反映客户端遭受的损害量,该损害量是基于智能合约的预期执行和实际执行的差异、验证程序执行的成本等。系统可以将校正值发送至证明者,或以其他方式使证明者可用708——系统还可以生成并提供校正值的零知识证明。
在向证明者发送校正值之后,系统可以确定710是否检测到校正交易。校正交易可以指由证明者向区块链网络传播的交易,该交易是对程序被不正确执行的确认,并且可以是对程序的不正确执行的校正。例如,在某些情况下,校正交易包括数字资产的转移,其数额等于系统在正确执行程序的情况下接收到的数字资产与系统在实际不正确执行程序的情况下接收到的数字资产之差。
如果检测到校正交易,则系统可以向证明者提供秘密值x,或以其他方式使秘密值x可用712。如果在超时间隔tw之后没有检测到校正交易,则客户端可以传播不同的交易(例如,补偿交易),以代表客户端要求由保证金交易留置的数字资产。
图8示出了根据本发明中描述的协议的过程的流程图800。该流程图可以根据本发明中其他地方(诸如图1、图4和图11)描述的实施例来实现。过程可以由实现结合图9描述的过程的同一系统来实现。过程可以由本发明中其他地方描述的证明者或任何其他合适的计算实体来实现。合适的系统(例如,结合图4描述的证明者)包括一个或多个处理器和存储器,该存储器包括可执行指令,该可执行指令如果被执行,则使得一个或多个处理器执行结合图8描述的过程的至少一部分。
证明者可以接收802或以其他方式获得加密值、散列输出以及加密值和散列输出源自同一值的零知识证明。证明者可以直接从客户端接收此数据(例如,通过客户端发送给证明者的消息),或者间接接收该数据(例如,通过客户端将数据传播到区块链网络,将数据存储在数据存储位置并提供到该位置的链接)。证明者可以验证804零知识证明。
证明者可以获得806待执行的程序。如本发明的其他地方所述,对程序的引用可以被编码在资金交易中。此外,系统可以确定808用于程序执行的输入数据。例如,输入数据可以是直接从区块链网络获得的数据,或者从结合图3描述的网络上的数据馈送获得的数据。在实施例中,证明者根据输入数据执行810程序(例如,智能合约)。在完成程序的执行后,系统可以生成812程序执行的输出以及正确性证明。该输出和该证明可以在解锁交易中对验证者计算机系统可用814。验证者计算机系统可以是用于执行验证过程的任何合适的计算机系统(例如结合图4描述的客户端)。
图9示出了根据本发明中描述的协议的过程的流程图900。该流程图可以根据本发明中其他地方(诸如图1、图4和图11)描述的实施例来实现。过程可以由实现结合图8描述的过程的同一系统来实现。过程可以由本发明中其他地方描述的证明者或任何其他合适的计算实体来实现。合适的系统(例如,结合图4描述的证明者)包括一个或多个处理器和存储器,该存储器包括可执行指令,该可执行指令如果被执行,则使得一个或多个处理器执行结合图9描述的过程的至少一部分。
证明者可以确定是否902接收到校正值。证明者可以根据协议等待预先确定的时间段来接收校正值,并且如果在时间段内没有接收到校正值,则隐式确定没有接收到校正值和/或校正值为零并且不需要校正交易。响应于客户端或任何合适的验证者确定证明者对程序的不正确执行,可以从客户端接收校正值。
如果证明者确定没有接收到校正值和/或校正值为零,则证明者随后接收910秘密值。该秘密值可用于生成和/或执行解锁脚本,如果该解锁脚本与保证金交易的锁定脚本一起被执行,则允许证明者要求归还由保证金交易留置的数字资产。秘密值也可以用于赎回资金交易的工作者费用。应当注意的是,如果客户端拒绝向证明者提供秘密值(即,客户端违反了协议的约束),则证明者可以从调解器获得秘密值。
如果证明者接收到校正值,则证明者可以确定904校正值是否被正确计算。证明者可以获得校正值的计算的零知识证明,并使用该证明确定计算是正确的还是不正确的,和/或执行单独的计算。在某些情况下,证明者总是接受正确计算的客户端的校正值。如果系统确定校正值被正确计算并且该值是正确的,则证明者可以至少部分基于校正值生成914校正交易。例如,校正交易可以是被挖掘到区块链并转移与校正值的数额相等的数字资产的交易。系统然后可以等待以上述方式接收910秘密值。
但是,如果证明者不同意所提供的校正值,则系统可以确定906不同的校正值(例如,基于单独的计算)。证明者可以向调解器提供908加密的秘密值和可用于调解证明者和客户端之间关于哪个校正值是正确的争议的副本。该副本可以包括信息,例如,由证明者和/或客户端计算的校正值和相应的零知识证明、用于生成校正值的一个或多个输入值和/或通信证明。调解器可以确定由证明者计算的不同校正值是正确的,解密加密的秘密值,并将秘密值提供给证明者。
在某些情况下,用于计算损害值的方法在协议的早期阶段在客户端和证明者之间(例如当客户端选择证明者来执行计算时)达成一致。在实施例中,客户端可以向预期证明者发送待运行的程序和用于计算由程序的不正确执行引起的损害的等式,作为请求的一部分。在实施例中,在确定是否同意执行程序之前,证明者知道用于计算损害值的等式。在某些情况下,调解器从客户端、证明者或两者接收等式,并且等式可以由任一方或双方数字签名——协议可以要求调解器从客户端和证明者接收相同的等式,并且如果等式不同,则终止协议。
图10示出了根据本发明中描述的协议的过程的流程图1000。该流程图可以根据本发明中其他地方(诸如图1、图4和图11)描述的实施例来实现。过程可以由本发明中其他地方描述的调解器计算机系统或任何其他合适的计算实体来实现。合适的系统(例如,结合图4描述的证明者)包括一个或多个处理器和存储器,该存储器包括可执行指令,该可执行指令如果被执行,则使得一个或多个处理器执行结合图10描述的过程的至少一部分。在实施例中,调解器——也被称为调解器计算机系统——被协议的客户端和/或证明者用来解决争议。当一方或双方未能遵守协议时(例如未能执行步骤或未能正确执行步骤),客户端和证明者之间可能会发生争议。
在实施例中,证明者发起与调解器的争议,并且调解器从证明者接收1002加密的秘密值和副本。加密的秘密值可以在调解器的公钥下进行加密,其中调解器可以访问相应的私钥。该副本可以包括可用于裁决争议的信息。例如,副本可以包括认证特定状态和/或值的零知识证明。调解器可以以任何合适的方式来验证副本,例如通过验证证明的正确性。调解器可以将验证过程的一些或所有步骤委托给另一计算系统(例如区块链网络的节点)。如果调解器同意证明者(例如,认证了该证明者主张的状态或值的证明的正确性),则调解器可以解密1006加密的秘密值,并将秘密值提供给证明者。此外,调解器可以与证明者合作1008以生成一个或多个多方签名,该一个或多个多方签名可以用于执行一个或多个程序,例如可用于赎回锁定交易的工作者费用的程序。但是,如果调解器改为同意客户端,则调解器可以与客户端合作1012以生成一个或多个多方签名,该一个或多个多方签名可以用于执行各种程序,例如要求由证明者提交的数字资产的程序(例如,作为对未遵循协议的惩罚),和/或要求归还锁定交易的工作者费用的程序。
通过类似的方式,客户端可以通过向调解器提供加密的秘密值和副本来用调解器启动争议解决例程。副本可以包括诸如零知识证明的信息。调解器可以接收1010加密的秘密值和副本,并通过应用上述技术来裁决争议。
图11是可用于实践本发明的至少一个实施例的计算设备1100的说明性简化框图。在各种实施例中,计算设备1100可以用于实现上文所示和描述的任何系统。例如,计算设备1100可以被配置为用作数据服务器、网络服务器、便携式计算设备、个人计算机或任何电子计算设备。如图11所示,计算设备1100可以包括一个或多个处理器1102,该处理器1102在实施例中可配置为经由总线子系统1104与多个外围子系统通信并可操作地连接到多个外围子系统。在一些实施例中,这些外围子系统包括存储子系统1106,该存储子系统1106包括存储器子系统1108和文件/磁盘存储子系统1110、一个或多个用户界面输入设备1112、一个或多个用户界面输出设备1114以及网络接口子系统1116。这种存储子系统1106可以用于信息的临时或长期存储。
在一些实施例中,总线子系统1104提供用于使计算设备1100的各种组件和子系统能够按照预期相互通信的机制。尽管总线子系统1104示意性地示出为单个总线,但是总线子系统的替代实施例利用多个总线。在一些实施例中,网络接口子系统1116提供到其他计算设备和网络的接口。在一些实施例中,网络接口子系统1116用作从计算设备1100的其他系统接收数据和向计算设备1100的其他系统发送数据的接口。在一些实施例中,总线子系统1104用于通信诸如细节、搜索项目等数据。
在一些实施例中,用户界面输入设备1112包括一个或多个用户输入设备,例如键盘;指向设备(例如集成鼠标、轨迹球、触摸板或图形输入板);扫描仪;条形码扫描仪;结合到显示器中的触摸屏;音频输入设备(例如语音识别系统、麦克风)和其他类型的输入设备。通常,术语“输入设备”的使用旨在包括用于向计算设备1100输入信息的所有可能类型的设备和机制。在一些实施例中,一个或多个用户界面输出设备1114包括显示子系统、打印机或非视觉显示器(例如音频输出设备)等。在一些实施例中,显示子系统包括阴极射线管(Cathode Ray Tube,CRT)、平板设备(例如液晶显示器(LiquidCrystal Display,简称LCD)、发光二极管(Light Emitting Diode,简称LED)显示器)、或投影或其他显示设备。通常,术语“输出设备”的使用旨在包括用于从计算设备1100输出信息的所有可能类型的设备和机制。例如,一个或多个用户界面输出设备1114可以用于呈现用户界面,当交互可能是适当的时候,有助于用户与执行所述的过程及其变化的应用程序交互。
在一些实施例中,存储子系统1106提供一种计算机可读存储介质,其用于存储提供本发明的至少一个实施例的功能的基本编程和数据结构。当应用程序(程序、代码模区块、指令)由一个或多个处理器执行时,在一些实施例中,提供本发明的一个或多个实施例的功能,并且在实施例中,存储在存储子系统1106中。这些应用模区块或指令可以由一个或多个处理器1102执行。在各种实施例中,存储子系统1106额外提供用于存储根据本发明使用的数据的储存库。在一些实施例中,存储子系统1106包括存储器子系统1108和文件/磁盘存储子系统1110。
在实施例中,存储器子系统1108包括多个存储器,例如用于在程序执行期间存储指令和数据的主随机存取存储器(Random Access Memory,简称RAM)1118和/或可以存储固定指令的只读存储器(Read Only Memory,简称ROM)1120。在一些实施例中,文件/磁盘存储子系统1110为程序和数据文件提供非暂时性永久(非易失性)存储,并且可以包括硬盘驱动器、软盘驱动器以及相关联的可移动介质、光盘只读存储器(Compact Disk ReadOnlyMemory,简称CD-ROM)驱动器、光驱、可移动介质盒或其他类似的存储介质。
在一些实施例中,计算设备1100包括至少一个本地时钟1124。本地时钟1124在一些实施例中是表示从特定开始日期已经流逝的滴答数的计数器,并且在一些实施例中,集成地位于计算设备1100内。在各种实施例中,本地时钟1124用于在特定时钟脉冲下同步计算设备1100的处理器和其中包括的子系统中的数据传输,并且可以用于协调计算设备1100和数据中心中的其他系统之间的同步操作。在另一个实施例中,本地时钟是可编程间隔计时器。
计算设备1100可以是各种类型的,包括便携式计算机设备、平板计算机、工作站或下述的任何其他设备。另外,计算设备1100可以包括另一个设备,在一些实施例中,该另一个设备可以通过一个或多个端口(例如,USB、耳机插孔、闪电连接器等)连接到计算设备1100。在一些实施例中,这样的设备包括用于接受光纤连接器的端口。因此,在一些实施例中,该设备用于将光信号转换成电信号,该电信号通过将设备连接到计算设备1100的端口传输以进行处理。由于计算机和网络的日新月异的性质,因此对于图11中所描绘的计算设备1100的描述仅作为旨在说明该设备的优选实施例的具体示例。与图11中描绘的系统相比,许多具有更多或更少组件的其他配置也是可能的。
因此,说明书和附图应被认为是说明性的而非限制性的。但是,显而易见的是,在不脱离本发明的范围的情况下,可以对其进行各种修改和变化。同样,其他变型在本发明的范围内。因此,虽然所公开的技术易受各种修改和替代构造的影响,但特定示出的实施例在附图中示出并且已经在上文中详细描述。然而,应当理解的是,无意将本发明限制于所公开的一种或多种特定形式,相反,其目的是涵盖落入本发明的范围内的所有修改、替代构造和等同物。
除非本文另有说明或者与上下文明显矛盾,否则在描述所公开的实施例的上下文中(特别是在下文权利要求的上下文中),术语“一(a)”和“一个(an)”和“所述(the)”以及类似的指代的使用应理解为涵盖单数和复数。除非另有说明,术语“包括(comprising)”、“具有(having)”、“包括(including)”和“包含(containing)”应理解为开放式术语(即,意味着“包括但不限于”(including,but not limited to))。术语“连接(connected)”,在未修改且指的是物理连接的情况下,即使有东西介入,应理解为部分或全部包含在、附接到或连接在一起。除非另有说明,否则本发明中数值范围的引用仅旨在用作分别指代落入该范围内的每个单独数值的简写方法,并且每个单独数值都被并入说明书中,如同单独引用一样。除非另有说明或与上下文矛盾,否则术语“集合(set)”(例如,“项目集合(a set of items)”)或“子集(subset)”的使用应理解为包括一个或多个成员的非空集合。此外,除非另有说明或与上下文矛盾,否则对应集合的术语“子集”不一定表示对应集合的适当子集,但是子集和对应集合可以相等。
除非另有明确说明或与上下文明显矛盾,否则诸如“A、B和C中的至少一个(atleast one of A,B,and C)”或“A、B或C中的至少一个(at least one of A,B,or 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中的至少一个。
除非另有说明或者与上下文明显矛盾,否则过程的操作可以任何合适的顺序执行。所描述的过程(或其变型和/或组合)可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以通过硬件或其组合实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)。在一些实施例中,代码可以例如以计算机程序的形式存储在计算机可读存储介质上,计算机程序包括可由一个或多个处理器执行的多个指令。在一些实施例中,计算机可读存储介质是非暂时性的。
除非另有说明,否则提供的任何和所有示例或示例性语言(例如,“诸如(suchas)”)的使用仅旨在更好地说明本发明的实施例,并且不对本发明的范围构成限制。说明书中的任何语言都不应解释为表明任何未要求保护的要素对于实现本发明必不可少。
描述了本发明的实施例,包括发明人已知的用于实施本发明的最佳模式。通过阅读前述说明书,这些实施例的变型对于本领域普通技术人员来说将变得显而易见。发明人期望熟练的技术人员适当地采用这类变型,发明人打算以不同于具体描述的方式来实践本发明的实施例。因此,本发明的范围包括适用法律允许的所有修改和等同物。此外,除非另有说明或者与上下文明显矛盾,否则上述要素在其所有可能的变型中的任何组合都包含在本发明的范围内。
所引用的所有参考文献(包括出版物、专利申请和专利)通过引用并入本文,其并入程度与每个参考文献单独且明确地指出通过引用并入并完整列出的程度相同。
应当说明的是,上述实施例说明而非限制本发明,在不脱离本发明的范围的情况下,本领域技术人员将能够设计出许多替代性实施例。在权利要求中,括号中的任何附图标记不应解释为对权利要求的限制。词语“包括(comprising)”和“包括(comprises)”等并非在整体上排除其他元件和步骤的存在,尽管这些元件和步骤并没有在任何权利要求或说明书中列出。在本说明书中,“包括(comprises)”意指“包括(includes)或由......组成(consistsof)”,“包括(comprising)”意指“包括(including)或由......组成(consistingof)”。元件的单数引用不意味着排除这些元件的复数引用,反之亦然。本发明可以借助包括若干不同元件的硬件,以及借助适当编程的计算机来实施。在列举了若干装置的设备权利要求中,这些装置中的若干个可以由硬件的同一个部件来体现。不争的事实是,在相互不同的从属权利要求中列举了某些方法,并不代表这些方法的结合不能获得有益效果。
Claims (14)
1.一种计算机实现的方法,包括:
在客户端计算机系统:
在与调解器计算机系统相关联的公钥下加密秘密值,
向工作者计算机系统提供所述加密的秘密值,其中所述加密的秘密值能够由所述工作者计算机系统和所述调解器计算机系统用来共同执行第一程序,和
使第二程序在区块链数据结构上可用,其中所述第二程序的执行具有输入;
在所述工作者计算机系统:
获取所述加密的秘密值,
获取所述第二程序以供执行,
确定输入值,所述输入值用于所述第二程序的执行,
根据所述输入值执行所述第二程序,以生成输出和正确执行的证明,和
使所述输出和所述证明在区块链数据结构上可用;以及
在所述客户端计算机系统:
检测所述输出和所述证明已经是可用的,
至少部分基于所述证明,确定所述输入值有效,和
响应于确定所述输入值有效,向所述工作者计算机系统提供所述秘密值,其中所述工作者计算机系统能够至少使用所述秘密值来执行所述第一程序。
2.根据权利要求1所述的方法,还包括:
在所述客户端计算机系统:
至少部分基于所述秘密值生成加密散列输出,
生成至少部分基于所述秘密值确定所述加密的值和所述加密散列输出的认证,和
向所述工作者计算机系统提供所述加密散列输出和所述认证;以及
在所述工作者计算机系统:
使用所述认证来确定所述加密的秘密值和所述加密散列输出是否至少部分基于相同的值。
3.根据权利要求2所述的方法,其中所述认证是零知识证明,并且所述零知识证明的正确性由所述工作者计算机系统在计算上可验证。
4.根据任一前述权利要求所述的方法,其中所述输入值是第一输入值,并且所述方法还包括,在所述客户端计算机系统,响应于确定所述第一输入值不正确:
至少部分基于所述第一输入值计算第二输入值;
向所述工作者计算机系统提供所述第二输入值;和
响应于确定所述工作者计算机系统使用所述第二输入值执行了第三程序,向所述工作者计算机系统提供所述秘密值。
5.根据权利要求4所述的方法,其中计算所述第二输入值包括计算汉明距离。
6.根据任一前述权利要求所述的方法,还包括,在所述客户端计算机系统:
获得第二认证,所述第二证明包括所述工作者计算机系统和数据源之间的通信集合,所述通信集合能够用于确定所述输入值是否有效,其中所述第二认证由所述数据源数字签名;
至少使用与所述数据源相关联的公钥来验证所述第二认证的真实性;和
至少部分基于所述通信集合来确定所述输入是否有效。
7.根据任一前述权利要求所述的方法,其中使所述第二程序在所述区块链数据结构上可用,包括,在所述客户端计算机系统,使区块链交易被挖掘到所述区块链数据结构,其中所述区块链交易包括:
能够用于确定所述第二程序的信息;和
留置数字资产的锁定脚本,其中共同执行所述锁定脚本和解锁脚本释放所述数字资产上的留置,共同执行所述锁定脚本和所述解锁脚本包括验证两个数字签名是数字签名集合,所述数字签名集合包括:
与执行所述计算机实现的方法的计算实体相关联的数字签名;
与所述工作者计算机系统相关联的数字签名;和
与所述调解器计算机系统相关联的数字签名。
8.根据任一前述权利要求所述的方法,其中所述第一程序的执行将数字资产的控制转移到所述工作者计算机系统。
9.根据权利要求4所述的方法,还包括,在所述客户端计算机系统:
响应于确定所述工作者计算机系统未能在时间阈值内使用所述第二输入值来执行所述第三程序,使第四程序对所述区块链数据结构可用,所述第四程序能够用于获得所述数字资产的控制。
10.根据权利要求9所述的方法,其中所述时间阈值对最早时间进行编码,在所述最早时间,包括所述第四程序的一部分的区块链交易能够被挖掘到所述区块链数据结构。
11.根据任一前述权利要求所述的方法,还包括,在所述客户端计算机系统:
生成数字签名;和
将所述数字签名编码为解锁脚本,其中所述解锁脚本还对与所述工作者计算机系统相关联的声称的数字签名进行编码,其中所述第四应用包括锁定脚本和解锁脚本,并且由与所述区块链数据结构相关联的区块链网络的一个或多个节点执行所述第四程序包括确定所述数字签名和所述声称的数字签名均有效。
12.根据任一前述权利要求所述的方法,其中:
所述第一应用包括锁定脚本和解锁脚本,其中所述解锁脚本对与所述工作者计算机系统相关联的声称的秘密值和声称的数字签名进行编码;和
由与所述区块链数据结构相关联的区块链网络的一个或多个节点执行所述第一应用包括确定所述声称的秘密值和所述声称的数字签名均有效。
13.根据任一前述权利要求所述的方法,其中所述锁定脚本包括所述加密散列输出,并且确定所述声称的秘密值有效包括:
使用所述声称的秘密值计算加密散列算法的输出;和
确定所述输出和所述加密散列输出匹配。
14.一种网络,包括客户端计算机系统和工作者计算机系统,其中每个系统包括:
处理器;和
存储器,包括可执行指令;
其中,所述可执行指令由于被每个处理器执行,而使得每个系统执行根据任一前述权利要求所述的计算机实现的方法。
Applications Claiming Priority (14)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB1718505.9A GB201718505D0 (en) | 2017-11-09 | 2017-11-09 | Computer-implemented system and method |
GB1718505.9 | 2017-11-09 | ||
GB1719998.5 | 2017-11-30 | ||
GBGB1719998.5A GB201719998D0 (en) | 2017-11-30 | 2017-11-30 | Computer-Implemented system and method |
GB1720768.9 | 2017-12-13 | ||
GBGB1720768.9A GB201720768D0 (en) | 2017-12-13 | 2017-12-13 | Computer-implemented system and method |
GBGB1720946.1A GB201720946D0 (en) | 2017-12-15 | 2017-12-15 | Computer-implemented system and method |
GB1720946.1 | 2017-12-15 | ||
GBGB1805948.5A GB201805948D0 (en) | 2018-04-10 | 2018-04-10 | Computer-implemented system and method |
GB1805948.5 | 2018-04-10 | ||
GB1806444.4 | 2018-04-20 | ||
GBGB1806444.4A GB201806444D0 (en) | 2018-04-20 | 2018-04-20 | Computer-implemented system and method |
CN201880072773.7A CN111316615B (zh) | 2017-11-09 | 2018-10-30 | 使用调解器计算机系统确保计算机程序正确执行的系统和方法 |
PCT/IB2018/058491 WO2019092552A1 (en) | 2017-11-09 | 2018-10-30 | Systems and methods for ensuring correct execution of computer program using a mediator computer system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880072773.7A Division CN111316615B (zh) | 2017-11-09 | 2018-10-30 | 使用调解器计算机系统确保计算机程序正确执行的系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118041602A true CN118041602A (zh) | 2024-05-14 |
Family
ID=64267869
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410094181.2A Pending CN118041602A (zh) | 2017-11-09 | 2018-10-30 | 使用调解器计算机系统确保计算机程序正确执行的系统和方法 |
CN201880072773.7A Active CN111316615B (zh) | 2017-11-09 | 2018-10-30 | 使用调解器计算机系统确保计算机程序正确执行的系统和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880072773.7A Active CN111316615B (zh) | 2017-11-09 | 2018-10-30 | 使用调解器计算机系统确保计算机程序正确执行的系统和方法 |
Country Status (8)
Country | Link |
---|---|
US (2) | US11546162B2 (zh) |
EP (2) | EP3707872B1 (zh) |
JP (2) | JP7208990B2 (zh) |
KR (1) | KR20200080263A (zh) |
CN (2) | CN118041602A (zh) |
SG (1) | SG11202004150XA (zh) |
TW (1) | TWI770307B (zh) |
WO (1) | WO2019092552A1 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11151558B2 (en) | 2018-12-12 | 2021-10-19 | American Express Travel Related Services Company, Inc | Zero-knowledge proof payments using blockchain |
US11699203B2 (en) | 2019-02-20 | 2023-07-11 | Aon Risk Services, Inc. Of Maryland | Digital property authentication and management system |
US11182866B2 (en) * | 2019-02-20 | 2021-11-23 | Aon Risk Services, Inc. Of Maryland | Digital property authentication and management system |
EP3702951A1 (de) * | 2019-03-01 | 2020-09-02 | Siemens Aktiengesellschaft | Computerimplementiertes verfahren und blockchain-system zur erkennung eines angriffs auf ein computersystem bzw. computernetzwerk |
GB2583767A (en) * | 2019-05-10 | 2020-11-11 | Nchain Holdings Ltd | Methods and devices for public key management using a blockchain |
GB201907396D0 (en) | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | Hash function attacks |
GB201907347D0 (en) * | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | In-script functions within a blockchain transaction |
GB201907345D0 (en) | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | Protocol for validating blockchain transactions |
EP3754899B1 (en) * | 2019-06-20 | 2022-03-02 | Telefónica Iot & Big Data Tech, S.A. | Method and system for inter-dlt networks trust enhancement |
CN111108734B (zh) * | 2019-06-26 | 2022-05-31 | 蚂蚁双链科技(上海)有限公司 | 基于存储空间互换的改进的防重放设备 |
CN110532036A (zh) * | 2019-07-26 | 2019-12-03 | 云湾科技(嘉兴)有限公司 | 程序验证方法、装置、计算设备及计算机存储介质 |
CN110413345A (zh) * | 2019-07-26 | 2019-11-05 | 云湾科技(嘉兴)有限公司 | 程序验证方法、装置、计算设备及计算机存储介质 |
GB201913143D0 (en) * | 2019-09-12 | 2019-10-30 | Nchain Holdings Ltd | Running a program from a blockchain |
US11245514B1 (en) * | 2019-10-15 | 2022-02-08 | ArcBlock, Inc | Blockchain delegation |
JP7284064B2 (ja) * | 2019-10-16 | 2023-05-30 | 株式会社日立製作所 | コンソーシアムブロックチェーンシステム、計算機、トランザクション承認方法 |
KR102103177B1 (ko) * | 2019-11-20 | 2020-04-22 | 충남대학교 산학협력단 | 블록체인의 확장성을 위한 영지식 증명의 선택적 검증 시스템 및 그 방법 |
KR102103179B1 (ko) * | 2019-11-25 | 2020-04-22 | 충남대학교 산학협력단 | 블록체인 오라클에서의 프라이버시 보호를 위한 영지식 증명 시스템 및 그 방법 |
US20210374731A1 (en) * | 2020-05-26 | 2021-12-02 | Coinbase, Inc. | Systems and methods for consensus-based access control for smart contract functions |
CN112636928B (zh) * | 2020-12-29 | 2023-01-17 | 广东国腾量子科技有限公司 | 一种基于区块链的去中心化可信认证方法、存储装置及移动终端 |
TWI807479B (zh) * | 2021-11-11 | 2023-07-01 | 財團法人國家實驗研究院 | Qap型式同態加密中的半公鑰系統設計的方法 |
US11770263B1 (en) * | 2022-12-06 | 2023-09-26 | Citibank, N.A. | Systems and methods for enforcing cryptographically secure actions in public, non-permissioned blockchains using bifurcated self-executing programs comprising shared digital signature requirements |
US11882216B1 (en) * | 2023-06-08 | 2024-01-23 | Auradine, Inc. | End-to-end hardware acceleration for ZKP from witness generation to proof generation |
Family Cites Families (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4667290A (en) | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
JPH03126133A (ja) | 1989-10-11 | 1991-05-29 | Matsushita Electric Ind Co Ltd | コンパイラ処理方法 |
US5499191A (en) | 1992-06-15 | 1996-03-12 | Minc Incorporated | Multi-level logic optimization in programmable logic devices |
US5297150A (en) | 1992-06-17 | 1994-03-22 | International Business Machines Corporation | Rule-based method for testing of programming segments |
US5920830A (en) | 1997-07-09 | 1999-07-06 | General Electric Company | Methods and apparatus for generating test vectors and validating ASIC designs |
US6519754B1 (en) | 1999-05-17 | 2003-02-11 | Synplicity, Inc. | Methods and apparatuses for designing integrated circuits |
EP1283422A1 (en) | 2001-08-07 | 2003-02-12 | Lucent Technologies Inc. | Testbench for the validation of a device under test |
US7085701B2 (en) | 2002-01-02 | 2006-08-01 | International Business Machines Corporation | Size reduction techniques for vital compliant VHDL simulation models |
US7281017B2 (en) | 2002-06-21 | 2007-10-09 | Sumisho Computer Systems Corporation | Views for software atomization |
US20050195975A1 (en) * | 2003-01-21 | 2005-09-08 | Kevin Kawakita | Digital media distribution cryptography using media ticket smart cards |
US7610407B2 (en) * | 2003-12-11 | 2009-10-27 | Hewlett-Packard Development Company, L.P. | Method for exchanging information between at least two participants via at least one intermediary to limit disclosure between the participants |
US8234638B2 (en) * | 2004-12-28 | 2012-07-31 | Hercules Software, Llc | Creating a relatively unique environment for computing platforms |
US8200700B2 (en) | 2005-02-01 | 2012-06-12 | Newsilike Media Group, Inc | Systems and methods for use of structured and unstructured distributed data |
US20160004820A1 (en) | 2005-02-01 | 2016-01-07 | Newsilike Media Group, Inc. | Security facility for maintaining health care data pools |
TW200725415A (en) | 2005-12-30 | 2007-07-01 | Tatung Co Ltd | Method for automatically translating high level programming language into hardware description language |
US7926040B2 (en) * | 2006-09-06 | 2011-04-12 | International Business Machines Corporation | Method and system for timing code execution in a korn shell script |
US20100067686A1 (en) | 2006-10-30 | 2010-03-18 | Kazuhiro Minematsu | Shared key block cipher apparatus, its method, its program and recording medium |
AU2015261664B2 (en) * | 2007-09-14 | 2016-07-14 | Security First Corp. | Systems and Methods for Managing Cryptographic Keys |
WO2009064122A1 (en) * | 2007-11-18 | 2009-05-22 | Lg Electronics Inc. | Methods of joint coding in mobile communication system |
US8336036B2 (en) | 2008-11-21 | 2012-12-18 | Korea University Industrial & Academic Collaboration Foundation | System and method for translating high programming level languages code into hardware description language code |
US9846628B2 (en) * | 2010-06-15 | 2017-12-19 | Microsoft Technology Licensing, Llc | Indicating parallel operations with user-visible events |
JP5697153B2 (ja) | 2011-08-04 | 2015-04-08 | キヤノンマーケティングジャパン株式会社 | 情報処理システム、携帯端末、制御方法、及びプログラム |
US20140321644A1 (en) | 2013-04-29 | 2014-10-30 | Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of National Defence | Method and system for calculations on encrypted data |
US9026978B1 (en) | 2013-10-24 | 2015-05-05 | Cadence Design Systems, Inc. | Reverse interface logic model for optimizing physical hierarchy under full chip constraint |
FR3018378A1 (fr) * | 2014-03-12 | 2015-09-11 | Enrico Maim | Systeme et procede transactionnels a architecture repartie fondees sur des transactions de transferts d'unites de compte entre adresses |
EP4148642A1 (en) * | 2014-05-09 | 2023-03-15 | Veritaseum, Inc. | Devices, systems, and methods for facilitating low trust and zero trust value transfers |
US10320781B2 (en) | 2016-12-08 | 2019-06-11 | Sensoriant, Inc. | System and methods for sharing and trading user data and preferences between computer programs and other entities while preserving user privacy |
US10025926B2 (en) * | 2014-11-19 | 2018-07-17 | The Mitre Corporation | Side-channel leakage evaluator and analysis kit |
US20160162897A1 (en) | 2014-12-03 | 2016-06-09 | The Filing Cabinet, LLC | System and method for user authentication using crypto-currency transactions as access tokens |
EP3767878A1 (en) | 2015-03-27 | 2021-01-20 | Black Gold Coin, Inc. | A system and a method for personal identification and verification |
WO2016155804A1 (en) | 2015-03-31 | 2016-10-06 | Nec Europe Ltd. | Method for verifying information |
US10812274B2 (en) * | 2015-05-07 | 2020-10-20 | Blockstream Corporation | Transferring ledger assets between blockchains via pegged sidechains |
JP2017004044A (ja) * | 2015-06-04 | 2017-01-05 | 富士通株式会社 | ライセンス管理プログラム、ライセンス管理方法、およびライセンス管理システム |
CN106293892B (zh) | 2015-06-26 | 2019-03-19 | 阿里巴巴集团控股有限公司 | 分布式流计算系统、方法和装置 |
US10936720B2 (en) * | 2015-07-10 | 2021-03-02 | Nec Corporation | Method and system for reliable computation of a program |
AU2015403302A1 (en) * | 2015-07-28 | 2018-02-22 | Razer (Asia-Pacific) Pte. Ltd. | Servers for a reward-generating distributed digital resource farm and methods for controlling a server for a reward-generating distributed digital resource farm |
US10033702B2 (en) * | 2015-08-05 | 2018-07-24 | Intralinks, Inc. | Systems and methods of secure data exchange |
WO2017079652A1 (en) | 2015-11-05 | 2017-05-11 | Pulsifer Allen | Cryptographic transactions system |
US10269012B2 (en) | 2015-11-06 | 2019-04-23 | Swfl, Inc. | Systems and methods for secure and private communications |
US10048952B2 (en) | 2015-11-11 | 2018-08-14 | Oracle International Corporation | Compiler optimized data model evaluation |
FR3043811B1 (fr) | 2015-11-16 | 2017-11-10 | Morpho | Procede d'identification d'une entite |
US11423498B2 (en) | 2015-12-16 | 2022-08-23 | International Business Machines Corporation | Multimedia content player with digital rights management while maintaining privacy of users |
US9715373B2 (en) | 2015-12-18 | 2017-07-25 | International Business Machines Corporation | Dynamic recompilation techniques for machine learning programs |
US10044696B2 (en) * | 2015-12-22 | 2018-08-07 | Mcafee, Llc | Simplified sensor integrity |
US9483596B1 (en) | 2016-01-08 | 2016-11-01 | International Business Machines Corporation | Multi power synthesis in digital circuit design |
US10108812B2 (en) * | 2016-01-28 | 2018-10-23 | Nasdaq, Inc. | Systems and methods for securing and disseminating time sensitive information using a blockchain |
US9849364B2 (en) * | 2016-02-02 | 2017-12-26 | Bao Tran | Smart device |
MX2018010056A (es) * | 2016-02-23 | 2019-01-21 | Nchain Holdings Ltd | Un metodo y sistema para asegurar software de computadora usando un cuadro hash distribuido y una cadena de bloques. |
US10387988B2 (en) | 2016-02-26 | 2019-08-20 | Google Llc | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
WO2017148527A1 (en) | 2016-03-03 | 2017-09-08 | Nec Europe Ltd. | Method for managing data in a network of nodes |
US11017387B2 (en) * | 2016-03-24 | 2021-05-25 | International Business Machines Corporation | Cryptographically assured zero-knowledge cloud services for elemental transactions |
US11017388B2 (en) | 2016-03-25 | 2021-05-25 | International Business Machines Corporation | Cryptographically assured zero-knowledge cloud service for composable atomic transactions |
US10839096B2 (en) | 2016-03-28 | 2020-11-17 | International Business Machines Corporation | Cryptographically provable zero-knowledge content distribution network |
AU2017240796A1 (en) | 2016-03-31 | 2018-10-25 | Clause, Inc. | System and method for creating and executing data-driven legal contracts |
EP3440823B1 (en) | 2016-04-05 | 2020-09-02 | Zamna Technologies Limited | Method and system for managing personal information within independent computer systems and digital networks |
US10545739B2 (en) | 2016-04-05 | 2020-01-28 | International Business Machines Corporation | LLVM-based system C compiler for architecture synthesis |
KR102415260B1 (ko) * | 2016-04-11 | 2022-06-30 | 엔체인 홀딩스 리미티드 | 블록체인에서 안전한 피어-투-피어 통신을 위한 방법 |
US10333705B2 (en) | 2016-04-30 | 2019-06-25 | Civic Technologies, Inc. | Methods and apparatus for providing attestation of information using a centralized or distributed ledger |
US10046228B2 (en) | 2016-05-02 | 2018-08-14 | Bao Tran | Smart device |
US20170337319A1 (en) | 2016-05-20 | 2017-11-23 | Ecole polytechnique fédérale de Lausanne (EPFL) | System and Method for Optimization of Digital Circuits with Timing and Behavior Co-Designed by Introduction and Exploitation of False Paths |
CN107438002B (zh) | 2016-05-27 | 2022-02-11 | 索尼公司 | 基于区块链的系统以及系统中的电子设备和方法 |
FR3052286B1 (fr) | 2016-06-06 | 2018-06-15 | Morpho | Procede de verification d'un droit d'acces d'un individu |
US10447478B2 (en) | 2016-06-06 | 2019-10-15 | Microsoft Technology Licensing, Llc | Cryptographic applications for a blockchain system |
US20180018738A1 (en) * | 2016-07-14 | 2018-01-18 | Digital Asset Holdings | Digital asset platform |
US10417217B2 (en) * | 2016-08-05 | 2019-09-17 | Chicago Mercantile Exchange Inc. | Systems and methods for blockchain rule synchronization |
CN110383751B (zh) | 2017-01-06 | 2023-05-09 | 皇家飞利浦有限公司 | 关于证实的数据的pinocchio/trinocchio |
EP3566389B1 (en) | 2017-01-06 | 2021-08-18 | Koninklijke Philips N.V. | Distributed privacy-preserving verifiable computation |
CN107274184A (zh) | 2017-05-11 | 2017-10-20 | 上海点融信息科技有限责任公司 | 基于零知识证明的区块链数据处理 |
CN107179932A (zh) | 2017-05-26 | 2017-09-19 | 福建师范大学 | 基于fpga高层次综合指令的优化方法及其系统 |
US10333710B2 (en) | 2017-09-12 | 2019-06-25 | Qed-It Systems Ltd. | Method and system for determining desired size of private randomness using Tsallis entropy |
GB201715423D0 (en) * | 2017-09-22 | 2017-11-08 | Nchain Holdings Ltd | Computer-implemented system and method |
US10521616B2 (en) * | 2017-11-08 | 2019-12-31 | Analog Devices, Inc. | Remote re-enrollment of physical unclonable functions |
-
2018
- 2018-10-30 KR KR1020207014130A patent/KR20200080263A/ko not_active Application Discontinuation
- 2018-10-30 CN CN202410094181.2A patent/CN118041602A/zh active Pending
- 2018-10-30 CN CN201880072773.7A patent/CN111316615B/zh active Active
- 2018-10-30 US US16/762,487 patent/US11546162B2/en active Active
- 2018-10-30 EP EP18800331.3A patent/EP3707872B1/en active Active
- 2018-10-30 SG SG11202004150XA patent/SG11202004150XA/en unknown
- 2018-10-30 JP JP2020524628A patent/JP7208990B2/ja active Active
- 2018-10-30 EP EP24175020.7A patent/EP4395229A1/en active Pending
- 2018-10-30 WO PCT/IB2018/058491 patent/WO2019092552A1/en unknown
- 2018-11-08 TW TW107139703A patent/TWI770307B/zh active
-
2022
- 2022-12-29 US US18/091,193 patent/US20230216833A1/en active Pending
-
2023
- 2023-01-06 JP JP2023001009A patent/JP2023036963A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230216833A1 (en) | 2023-07-06 |
TW201924278A (zh) | 2019-06-16 |
SG11202004150XA (en) | 2020-06-29 |
WO2019092552A1 (en) | 2019-05-16 |
US20210226795A1 (en) | 2021-07-22 |
US11546162B2 (en) | 2023-01-03 |
JP2021502750A (ja) | 2021-01-28 |
KR20200080263A (ko) | 2020-07-06 |
EP3707872A1 (en) | 2020-09-16 |
JP2023036963A (ja) | 2023-03-14 |
JP7208990B2 (ja) | 2023-01-19 |
TWI770307B (zh) | 2022-07-11 |
CN111316615B (zh) | 2024-02-13 |
CN111316615A (zh) | 2020-06-19 |
EP3707872B1 (en) | 2024-06-19 |
EP4395229A1 (en) | 2024-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111316615B (zh) | 使用调解器计算机系统确保计算机程序正确执行的系统和方法 | |
KR102687781B1 (ko) | 증명 검증에 기초하여 오프-체인 데이터를 인증하기 위한 시스템 및 방법 | |
JP7569602B2 (ja) | 分散協調を用いるスマートコントラクトの実行 | |
JP2023052834A (ja) | 変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム | |
EP3966998B1 (en) | Hash function attacks | |
US20230412358A1 (en) | Blockchain-implemented security systems and methods for blinded outcome selection | |
KR20200141502A (ko) | 즉각적인 오프라인 블록체인 트랜잭션의 보안을 증가시키는 데 적합한 컴퓨터 구현된 시스템 및 방법 | |
CN113875186A (zh) | 知识证明 | |
TWI854899B (zh) | 用以基於證明驗證來認證資料饋入之電腦實施方法、運算系統及非暫時性電腦可讀儲存媒體 | |
US12126741B2 (en) | Systems and methods for non-parallelised mining on a proof-of-work blockchain network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |