CN111295655B - 用于一个或多个进程的分布式隐私保护共享执行的计算机系统和方法 - Google Patents

用于一个或多个进程的分布式隐私保护共享执行的计算机系统和方法 Download PDF

Info

Publication number
CN111295655B
CN111295655B CN201880070221.2A CN201880070221A CN111295655B CN 111295655 B CN111295655 B CN 111295655B CN 201880070221 A CN201880070221 A CN 201880070221A CN 111295655 B CN111295655 B CN 111295655B
Authority
CN
China
Prior art keywords
shared
execution
node
authorization
code segment
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
Application number
CN201880070221.2A
Other languages
English (en)
Other versions
CN111295655A (zh
Inventor
詹姆斯·本顿·利齐奥斯
西蒙·迈耶
奥尼延·马里奇
索伦·格哈德·卜利克尔茨
弗朗切斯科·马佐利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Asset Switzerland GmbH
Original Assignee
Digital Asset Switzerland GmbH
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from AU2017904367A external-priority patent/AU2017904367A0/en
Application filed by Digital Asset Switzerland GmbH filed Critical Digital Asset Switzerland GmbH
Priority to CN202110919469.5A priority Critical patent/CN113609477A/zh
Publication of CN111295655A publication Critical patent/CN111295655A/zh
Application granted granted Critical
Publication of CN111295655B publication Critical patent/CN111295655B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • G06Q20/0658Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed locally
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Abstract

一种用于分布式共享执行一个或多个共享进程的计算机系统(100),包括:用于所述一个或多个共享进程的第一程序代码,其包括在第一授权节点(102)和第二授权节点(104)之间共享的一个或多个共享代码段(142、144、146),其中,所述一个或多个共享代码段(142、144、146)可由一个或多个执行节点(102、104、106)执行;分布式分类账(152、154、156),其提供所述程序代码的有效代码段的记录;以及第二程序代码,其包括指令,所述指令在由所述第一和/或第二授权节点执行时,验证所述一个或多个共享代码段(142、144、146)的预期执行结果满足共享授权条件,并且如果满足,则授权所述一个或多个执行节点执行所述一个或多个共享代码段。

Description

用于一个或多个进程的分布式隐私保护共享执行的计算机系 统和方法
技术领域
本公开涉及一种计算机系统,其包括多个节点,用于一个或多个共享进程的分布式隐私保护共享执行。本公开还涉及用于执行分布式隐私保护共享执行的计算机实现的方法。
背景技术
分布式系统具有位于联网计算机上的组件,这些组件通过传递消息来交流和协调其动作。这些组件可以与其他组件交互以实现共同目标。
然而,由于每个计算机或节点仅具有有限的或不完整的系统视图,因此在分布式和隐私保护系统上的分布式隐私保护共享执行可能会出现问题。每个计算机或节点可能只知道程序代码或输入数据的一部分。每个计算机可能能够使用它们所知道的输入数据的一部分来可认证地验证和执行程序,但是随后每个计算机仍将无法肯定地知道任何其他计算机执行的认证的验证和执行是否有效(在某种意义上,验证和执行的代码是要验证和执行的预期程序代码的有效部分)和准确(在某种意义上,代码的验证和执行是正确的)。此外,很难协调分布式计算机以便能够提供验证和执行的有效性和准确性。
已经包括在本说明书中的文件、法案、材料、设备、文章等的任何讨论不被视为承认任何或所有这些事物形成现有技术基础的一部分或者是每个所附权利要求的优先权日之前存在的本公开相关的领域中的公知常识。
在整个说明书中,词语“包括”或诸如“包含”或“含有”的变化将被理解为暗示包括所陈述的元素、整数或步骤,或者元素、整数或步骤的组,但不排除任何其他元素、整数或步骤或者元素、整数或步骤的组。
发明内容
一种用于分布式共享执行一个或多个共享进程的计算机系统,包括:用于该一个或多个共享进程的第一程序代码,其包括在第一授权节点和第二授权节点之间共享的一个或多个共享代码段,其中,一个或多个共享代码段可由一个或多个执行节点执行;分布式分类账,其提供程序代码的有效代码段的记录;以及第二程序代码,其包括指令,该指令在由第一和/或第二授权节点执行时,验证一个或多个共享代码段的预期执行结果满足共享授权条件,并且如果满足,则授权该一个或多个执行节点执行该一个或多个共享代码段。
在该系统中,节点能够以可验证的方式预先同意它们承担的现有或新义务。共享代码段包含义务,并且其可涉及提供代码执行,或者提供输入/输出以确保代码执行。节点能够以不可否认的方式向分布式分类账提交(commit)数据或代码(例如,使用Merkle证明),同时允许以后在需要时选择性地显示该秘密数据或代码。这使共享进程的执行能够在系统范围内进行协调,从而使节点可以采取行动并授权共享代码段的执行以及验证代码的执行。
还公开了一种用于分布式共享执行一个或多个共享进程的计算机系统,包括:用于该一个或多个共享进程的第一程序代码,其包括在第一授权节点和第二授权节点之间共享的一个或多个共享代码段,其中,一个或多个共享代码段可由一个或多个执行节点执行;分布式分类账,其提供所述程序代码的共享代码段的执行记录;以及第二程序代码,其包括指令,该指令在由第一和/或第二授权节点执行时,验证一个或多个共享代码段的预期执行结果满足共享授权条件,并且如果满足,则授权该一个或多个执行节点执行该一个或多个共享代码段。在一些示例中,分布式分类账提供程序代码的有效共享代码段的记录。
在该系统中,节点能够同意现有或新的共享程序代码是验证分布式分类账状态的提议授权更改的唯一参考。这允许在系统范围内协调代码版本,其中,节点可以验证要执行的正确共享代码段。
在该计算机系统的一些示例中,一个或多个执行节点是第一授权节点或第二授权节点之一。
在该计算机系统的一些示例中,一个或多个共享代码段可由一个或多个执行节点联合执行。
在一些示例中,程序代码还包括一个或多个指定的执行条件,并且该一个或多个指定的执行条件中的第一个指定:一个或多个共享代码段的执行取决于第一个指定的执行条件是否有效。
在一些示例中,计算机系统还包括第三程序代码,该第三程序代码在被执行时使多个授权节点中的任何一个请求一个或多个其他节点执行动作。
在一些示例中,该请求包括用于执行对所请求的动作的授权。在另一示例中,该请求包括委托另一节点以执行所请求的动作。在又一示例中,该请求包括另一节点对执行所请求的动作的承诺(commitment)。在又一示例中,该请求包括用于执行一个或多个共享代码段之一的请求。在另一示例中,该请求包括对另一节点做出后续请求的授权。在另一示例中,该请求包括委托另一节点以做出后续请求。在另一示例中,该请求包括另一节点做出后续请求的承诺。
在该计算机系统的一些示例中,由特定授权节点而不是执行节点的授权包括对执行节点代表该特定授权节点执行共享代码段的许可。
在一些示例中,由特定授权节点而不是执行节点进行的授权包括对委托的执行节点代表该特定授权节点执行共享代码段的许可,该特定授权节点已经为共享代码段委托了执行动作。
在一些示例中,由第一授权节点和第二授权节点进行的授权是执行共享代码段的授权或用于执行多个代码段的预先存在的授权。
在该计算机系统的一些示例中,一个或多个执行节点之一是承诺节点,该承诺节点承诺执行与一个或多个授权节点共享的共享代码段。在另一示例中,指定的共享代码段的授权节点或执行节点中的任何一个都可以查询该系统,以识别要求作为承诺节点进行承诺的执行节点,以执行该指定的共享代码段。
在该计算机系统的一些示例中,指定的共享代码段的授权节点或执行节点中的任何一个都可以查询该系统,以识别授权执行或委托执行该指定的共享代码段所需的授权节点。
在该计算机系统的一些示例中,指定的共享代码段的授权节点或执行节点中的任何一个都可以从所识别的执行节点或授权节点查询该系统以识别尚未提供执行该指定的共享代码段所需的授权、委托、承诺或输入/输出的节点。
在该计算机系统的一些示例中,系统限制共享代码段的执行,除非尚未提供执行指定的代码段所需的授权、委托、承诺或输入/输出的所述节点(如果有)被识别,并且所述执行节点确定将从所识别的节点接收所需的授权、委托、承诺或输入/输出。
该计算机系统还可以包括审计器节点,其中,该审计器节点基于分布式分类账上的记录来确定共享代码段的记录和代码的执行记录的有效性并标记无效记录。
在一些示例中,分布式分类账是区块链。
在一些示例中,该计算机系统允许重写共享代码段,其中,重写包括:在分布式分类账中写入新的共享代码段,该新的共享代码段在程序代码中取代分布式分类账中的旧的共享代码段。重写可以包括向共享代码内使用的现有数据对象提供一个或多个修改后的参数。
在该计算机系统的一些示例中,共享代码段中的至少一个包括:在由执行节点执行期间,从一个或多个外部节点接收输入,其中,至少一个共享代码段或后续共享代码段的执行取决于该输入。
在该计算机系统的一些示例中,至少一个共享代码段包括在执行期间向一个或多个外部节点的输出,其中,来自该一个或多个外部节点的输入取决于基于该输出的操作。
在一些示例中,共享授权条件要求一个或多个共享代码段的预期执行结果由第一和/或第二授权节点加密授权。
在该计算机系统的一个示例中,预期执行结果的加密授权包括对一个或多个共享代码段的预期执行结果的显式或隐式加密授权。
在该计算机系统的另一示例中,对一个或多个共享代码段的预期执行结果的显式加密授权包括:如果满足共享授权条件,则作为第二程序代码的一部分,第一和/或第二授权节点对该预期执行结果的至少一部分进行加密签名。
在该计算机系统的又一示例中,如果满足共享授权条件,则作为所述第二程序代码的一部分,第一和/或第二授权节点对交易有效载荷进行加密签名,该交易有效载荷被配置为使状态转换在分布式分类账上发生。
在该计算机系统的一些示例中,一个或多个共享代码段的预期执行结果的隐式加密授权包括:如果满足共享授权条件,则作为第二程序代码的一部分,第一和/或第二授权节点使用来自一个或多个委托或承诺节点的委托或承诺授权来授权执行该一个或多个共享代码段。
在另一示例中,委托或承诺授权包括一个或多个委托或承诺节点对先前执行的共享代码段的执行进行加密授权。
在另一示例中,对先前执行的共享代码段的执行的加密授权包括该一个或多个委托或承诺节点对该先前执行的共享代码段的预期执行结果的至少一部分进行加密签名。
在该计算机系统的一些示例中,先前执行的共享代码段的执行结果创建或激活一个或多个共享代码段。
在一些示例中,共享授权条件要求源于一个或多个共享代码段的执行的任何可能的执行结果满足共享执行条件。
在一些示例中,共享执行条件要求任何委托授权都可以追溯到委托节点,该委托节点通过先前的交易提议请求来请求委托的授权。
在一些示例中,共享执行条件要求任何承诺授权都可以追溯到通过先前的交易提议请求而请求了承诺授权的承诺节点。
在一些示例中,共享授权条件要求所有委托授权包括相应委托节点的加密签名,该相应委托节点授权对针对相关委托授权的请求。
在其他示例中,共享授权条件要求所有承诺授权包括相应承诺节点的加密签名,该相应承诺节点授权对针对相关承诺授权的请求。
在另一示例中,共享执行条件要求任何可能的执行结果满足共享执行路径条件,该任何可能的执行结果源于通过一个或多个共享代码段的执行而创建、激活或执行的任何代码段的执行。
在一些示例中,共享执行路径条件要求任何可能的执行结果都可以追溯到来自授权节点的加密授权,该任何可能的执行结果源于被创建、被激活或被执行的代码段的执行。
在一些示例中,共享执行路径条件要求存在至少一个执行路径。
在该计算机系统的一个示例中,第二程序代码还包括程序指令,该程序指令在被执行时确定一个或多个共享代码段的授权执行所需的所有显式和隐式加密授权,并且如果不是所有显式和隐式加密授权都存在,则不授权该一个或多个共享代码段的执行。
在该计算机系统的一个示例中,程序代码的有效共享代码段的执行包括动态组装有效代码段,其中,通过查询匹配模板或参数的代码段来识别该有效共享代码段。
在该计算机系统的另一示例中,基于对代码包括以下一项或多项的分析而确定一个或多个共享代码段是有效的:授权执行;承诺执行;委托执行;或承诺执行来自系统的输入或输出,其中,被确定为有效的共享代码段为:可在分布式分类账中记录;和/或可由一个或多个执行节点执行。在该计算机系统的另一示例中,在确定分布式分类账上的共享代码段无效时,该代码段不可由执行节点执行。
还提供了一种用于分布式共享执行一个或多个共享进程的计算机实现的方法,包括:授权一个或多个共享代码段,其形成用于一个或多个共享进程的程序代码的至少一部分,该共享代码段在第一授权节点和第二授权节点之间共享,其中,该一个或多个共享代码段可由一个或多个执行节点执行;在分布式分类账上记录程序代码的有效共享代码段;以及验证一个或多个共享代码段的预期执行结果满足共享授权条件,并且如果满足,则授权一个或多个执行节点执行该一个或多个共享代码段。
一种用于一个或多个共享进程的共享执行的计算机实现的方法,包括:授权一个或多个共享代码段,其形成用于一个或多个共享进程的程序代码的至少一部分,该共享代码段在第一授权节点和第二授权节点之间共享,其中,该一个或多个共享代码段可由一个或多个执行节点执行;验证一个或多个共享代码段的预期执行结果满足共享授权条件,并且如果满足,则授权一个或多个执行节点执行该一个或多个共享代码段;执行验证的共享代码段;以及在分布式分类账上记录程序代码的共享代码段的执行。
在一些示例中,该方法还包括:在分布式分类账上记录程序代码的验证的共享代码段。
在该方法的一些示例中,一个或多个执行节点是第一授权节点或第二授权节点之一。
在一些示例中,一个或多个共享代码段可由执行节点联合执行。在一些示例中,一个或多个代码段的联合执行包括多个执行节点的共享执行。
在该方法的一些示例中,程序代码还包括一个或多个指定的执行条件,并且该一个或多个指定的执行条件中的第一个指定:一个或多个共享代码段的执行取决于第一个指定的执行条件是否有效。
在一些示例中,该方法还包括:从一个授权节点向另一授权节点发送执行动作的请求。在一些示例中,该请求包括对用于执行所请求的动作的授权。在一些示例中,该请求包括委托另一节点执行所请求的动作。在一些示例中,该请求包括另一节点对执行所请求的动作的承诺。在一些示例中,该请求包括对用于执行一个或多个代码段之一的请求。在一些示例中,该请求包括对另一节点做出后续请求的授权。在一些示例中,该请求包括委托另一节点做出后续请求。在一些示例中,该请求包括另一节点对做出后续请求的承诺。
在该方法的一些示例中,由特定授权节点而不是执行节点的授权包括对执行节点代表该特定授权节点执行共享代码段的许可。
在该方法的一些示例中,由特定授权节点而不是执行节点进行的授权包括对委托执行节点代表该特定授权节点执行共享代码段的许可,该特定授权节点已经委托了针对共享代码段的执行动作。
在一些示例中,由第一授权节点和第二授权节点的授权是执行共享代码段的授权或用于执行多个共享代码段的预先存在的授权。
在一些示例中,一个或多个执行节点之一是承诺节点,其中,该方法还包括:在分布式分类账上记录该承诺节点对执行与一个或多个授权节点共享的共享代码段的承诺。
在一些示例中,该方法还包括:查询分布式分类账和/或节点,以识别需要作为承诺节点承诺执行指定的共享代码段的执行节点。
在一些示例中,该方法还包括:查询分布式分类账和/或节点,以识别需要授权执行或委托执行指定的共享代码段的授权节点。
在其他示例中,该方法还包括:从识别的执行或授权节点查询尚未提供执行指定的共享代码段所需的授权、委托、承诺或输入/输出的节点。
在该方法的一些示例中,共享代码段的执行取决于以下条件:识别尚未提供执行指定的共享代码段所需的授权、委托、承诺或输入/输出的节点;以及确定将从识别的节点接收所需的授权、委托、承诺或输入/输出。
在一些示例中,该方法还包括:由审计器节点确定共享代码段的记录以及分布式分类账上的代码执行记录的有效性;标记无效记录。
在该方法的一些示例中,分布式分类账是区块链。
在一些示例中,该方法还包括:通过在所述分布式分类账中写入新的共享代码段来重写共享代码段,所述新的共享代码段替代所述分布式分类账中的旧的共享代码段。在一些示例中,重写包括向现有数据对象提供一个或多个修改后的参数。
在一些示例中,该方法还包括:在执行节点执行共享代码段中的至少一个期间,从一个或多个外部节点接收输入,其中,至少一个代码段或后续代码的执行取决于该输入。
该方法还可以包括:向一个或多个外部节点发送来自执行节点的输出,其中,来自该一个或多个外部节点的输入取决于基于该输出的操作。
在一些示例中,该方法还包括:作为验证共享授权条件的一部分,验证一个或多个共享代码段的预期执行结果由第一和/或第二授权节点加密授权。
在一些示例中,预期执行结果的加密授权包括对一个或多个共享代码段的预期执行结果的显式或隐式加密授权。
在一些示例中,其中,对一个或多个共享代码段的预期执行结果的显式加密授权包括第一和/或第二授权节点对该预期执行结果的至少一部分进行加密签名。
在一个示例中,如果满足共享授权条件,则第一和/或第二授权节点对交易有效载荷进行加密签名,该交易有效载荷被配置为使状态转换在分布式分类账上发生。
在该方法的一些示例中,一个或多个共享代码段的预期执行结果的隐式加密授权包括:如果满足共享授权条件,则该第一和/或第二授权节点使用来自一个或多个委托或承诺节点的委托或承诺授权来授权执行该一个或多个共享代码段。
在该方法的一些示例中,委托或承诺授权包括该一个或多个委托或承诺节点对执行先前执行的共享代码段的加密授权。
在一些示例中,对执行先前执行的共享代码段的加密授权包括:该一个或多个委托或承诺节点对该先前执行的共享代码段的预期执行结果的至少一部分进行加密签名。
在另一示例中,先前执行的共享代码段的执行结果创建或激活该一个或多个共享代码段。
在一些示例中,该方法还包括:作为验证共享授权条件的一部分,验证源于执行一个或多个共享代码段的任何可能的执行结果满足共享执行条件。
该方法还可以包括:作为验证共享授权条件的一部分,验证任何委托授权都可以追溯到通过先前的交易提议请求而请求了委托授权的委托节点。
在一个示例中,该方法还可以包括:作为验证共享授权条件的一部分,验证任何承诺授权都可以追溯到通过先前的交易提议请求而请求了承诺授权的承诺节点。
在一些示例中,该方法还包括:作为验证共享授权条件的一部分,验证所有委托授权包括相应委托节点的加密签名,该相应委托节点对针对相关委托授权的请求进行授权。
该方法还可以包括:作为验证共享授权条件的一部分,验证所有承诺授权包括相应承诺节点的加密签名,该相应承诺节点对针对相关承诺授权的请求进行授权。
在又一示例中,该方法还可以包括:作为验证共享执行条件的一部分,验证任何可能的执行结果满足共享执行路径条件,该任何可能的执行结果源于执行通过执行一个或多个共享代码段而创建、激活或执行的任何代码段。
该方法还可以包括:作为验证共享执行路径条件的一部分,验证任何可能的执行结果都可以追溯到来自授权节点的加密授权,该任何可能的执行结果源于执行被创建、被激活或被执行的代码段。
在一些示例中,共享执行路径条件要求存在至少一个执行路径。
在一些示例中,该方法还包括:确定一个或多个共享代码段的授权执行所需的所有显式和隐式加密授权,并且如果不是所有显式和隐式加密授权都存在,则对执行该一个或多个共享代码段的授权失败。
在该方法的一个示例中,程序代码的有效代码段的执行包括:动态组合有效代码段,其中,该有效代码段通过查询与模板或参数匹配的代码段来识别。在其他示例中,程序代码包括:向程序提供授权数据,其中,授权数据通过查询为查询授权数据的目的而创建的代码段来识别。
在另一示例中,该方法还包括:基于对代码包括以下一项或多项的分析,确定一个或多个代码段为有效:授权执行;承诺执行;委托执行;或承诺执行来自系统的输入或输出。在该方法的另一示例中,将有效代码段记录在分布式分类账上的步骤以确定该代码段有效为条件。在又一示例中,由一个或多个执行节点执行有效代码段以确定该代码段有效为条件。
作为机器可读指令的软件,其在由计算机系统执行时使计算机系统执行上述方法中的任何一个。
附图说明
将参考以下附图描述本公开的示例:
图1是包括多个授权节点的用于一个或多个共享进程的分布式隐私保护共享执行的计算机系统的示意图;
图2是用于一个或多个共享进程的分布式隐私保护共享执行的计算机实现的方法的流程图;
图3是分布式分类账中的数据结构的示意图。
图4是示出了用于授权和请求执行在两个授权节点之间共享并且由执行节点执行的代码段的操作序列的图;
图5是示出了包括用于由授权节点执行代码的预授权的操作序列的图;
图6是示出了包括接收多个执行代码段的请求的操作序列的图;
图7是示出了执行多个代码段的操作序列的图;
图8是示出了用于验证共享代码段的执行的操作序列的图;
图9A和图9B示出了代表程序代码执行的代码;
图10A至图10C示出了在程序代码中使用的代码模板;
图11是授权计算机系统与外部计算机进行交互的示意图;
图12是授权计算机系统中的节点与外部计算机的交互的示意图;
图13是重写共享代码段的示例;以及
图14是处理设备的示例的示意图。
图15-18是提议的交易T2的提交和共享代码段的相关联执行的示例。
图19是由授权节点提交的提议交易的示例,以及
图20示出了作为图19的提议交易的一部分的代码段的成功和不成功执行的示例。
具体实施方式
图1是用于一个或多个共享进程的分布式隐私保护共享执行的计算机系统100的图示示例,其包括用于一个或多个共享进程的程序代码130,该程序代码130包括一个或多个共享代码段142、144、146,该一个或多个共享代码段142、144、146在第一授权节点102、第二授权节点104和第三授权节点106之间共享,并且其中,该一个或多个代码段可由一个或多个执行节点执行。在该示例中,执行节点与授权节点102、104、106相同。存在分布式分类账152、154、156,该分布式分类账152、154、156提供程序代码的有效代码段的记录,其中,执行该有效代码段中的至少一个由第一授权节点和第二授权节点102、104授权以便由一个或多个执行节点之一执行。
共享程序代码和共享代码段
图1示出了共享系统100的示例图示。程序代码130可以是计算机指令集,例如,用于执行授权交易的程序代码。程序代码的执行可以是可分发的和隐私保护的,原因在于,不是在单个计算机或节点上执行该代码,而是可以由多个节点控制该执行,并且可以从该执行中排除节点。为了以这种分布式方式执行,可以存在程序代码130提供的节点的某种程度的协调。可以由节点执行的程序代码的子部分被称为共享代码段。在该示例中,程序代码130由三(3)个共享代码段142、144和146组成。在该示例中,程序代码130指定:应按142,然后144,再然后146的顺序执行三(3)个代码段。共享代码段可以由不同的节点执行。
授权节点
授权节点可以是参与执行共享代码段的节点。授权节点可以控制程序代码130的执行,并且授权控制共享系统100外部的并由共享系统100授权的任何授权计算。
在该示例中,共享系统100由三个节点102、104和106组成。围绕节点102、104、106的圆圈112、114、116分别表示共享代码段142、144、146可以是节点私有或节点共享的方式。区域122表示在节点102和106而不是节点104之间私有地共享的所有代码,区域124表示在节点104和106而不是节点102之间私有地共享的所有代码,区域126表示在节点102和104而不是节点106之间私有地共享的所有代码,并且区域128表示在所有三个节点102、104、106之间共享的所有代码。
可以看出,每个共享代码段可能已经指定了授权节点,因此授权节点组可以取决于共享代码段本身。即,可以引用每个共享代码段并且专门针对其定义授权节点组。在该示例中,代码段142可以在节点102和106之间(即,在区域122中)共享,代码段144可以在节点102、104和106之间(即,在区域128中)共享,代码段146可以在节点104和106之间(即,在区域124中)共享。因此,对于共享代码段142,授权节点可以是102和106。类似地,对于共享代码段142,节点104可能不是授权节点。
在执行期间,由于执行节点遍历程序代码,授权节点组可以切换到其他授权节点组。这可以是通过引用共享代码段来定义的指定授权节点的结果。由于代码段的更改,授权节点因此可以相应地更改。
应当理解,授权并不一定意味着每个节点都具有共享代码段的副本,尽管每个节点实际上可以具有共享代码段的副本。相反,共享代码段可以被授权,原因在于,代码段的执行在某种程度上取决于被授权的节点。例如,需要来自第一授权节点102的输入和来自第二授权节点104的输入的共享代码段可以在节点102和104之间共享。
执行节点
除了授权节点之外,还有执行节点。执行节点可以是根据约定的规则集执行共享代码段的节点。执行节点可以执行代码段中指定的指令,并保持执行的活动状态。一旦执行节点已经开始执行,该执行节点就可以控制共享代码段的执行以及由任何授权节点为该代码段提供的I/O。
在该示例中,节点102、104和106可以确定执行享代码段的节点。该执行节点可以是任何节点,而不一定是授权节点,但是类似地,一个或多个执行节点可以是与授权节点相同的一个或多个节点。在一些示例中,执行节点可以是专用执行节点,该专用执行节点不是任何交易的参与者。在其他示例中,共享代码段的执行节点可以是代码段的授权节点之一。在这种情况下,也是授权节点的执行节点可以根据需要切换模式,以使共享代码段的执行生效。在图1的示例中,共享代码段142的执行节点可以是节点104。如上所述,节点104可能不是代码段142的授权节点。
因此,节点通常可能必须就如何执行共享代码段达成协议。这可以包括指定特定节点和执行节点的同步。为了协调执行,程序代码可以为每个共享代码段指定执行节点。如上所述,共享代码段对节点的依赖性意味着执行节点可以检查以查看该节点是否已经给予授权以执行该代码段。
分布式分类账
分布式分类账可以提供认证的和授权的数据存储、数据分发、隐私性、安全性,并且启用授权的交易。在本公开中,分布式分类账可以具有全局同步日志,该全局同步日志存储与私有数据相关联的公共数据。私有数据可以存储在与全局同步日志分开的一个或多个私有数据存储器中。一个或多个私有数据存储器中的私有数据可能不能被未授权的节点(或与该节点相关联的参与者)访问。节点可以基于一个或多个私有数据存储器中的节点可用的对应私有数据来验证全局同步日志上可用的公共数据。备选地,可以由一个节点执行验证的证明或证据,并向另一节点发送该证明或证据。在示例中,分布式分类账可以是如(与国际申请No.PCT/US2017/042155相关的)国际公开No.WO2018/013934或美国专利申请No.62/748,315中所公开的分布式分类账,每一个均通过引用整体并入本文。
进一步在该示例中,节点102、104和106中的每一个可以分别具有分布式分类账152、154和156的副本,尽管不必每个节点都具有分类账的副本,并且分布式分类账可以位于外部节点处。在该示例中,分布式分类账的每个副本包含相同的公共数据(即,对每个人都公开地可用的数据),但是包含不同的私有数据(即,对各个节点私有或机密的数据)。
在一个实施例中,分布式分类账提供程序代码的共享代码段的执行记录。在另一实施例中,分布式分类账提供程序代码的有效共享代码段的记录。在又一实施例中,分布式分类账提供执行程序代码的共享代码段的有效性的记录。在这些情况下,存储在分布式分类账中的数据可以包括哈希值或产生哈希值的加密哈希函数,并且其中,在计算上无法伪造共享代码段的执行或基于哈希值记录无效的共享代码段。在图1的示例中,分布式分类账提供如图3所示的针对程序的共享代码段162的执行记录和程序代码的有效共享代码段161的记录。
如上所述的哈希可以是单向加密函数,其可以被证明以验证共享代码段的执行或有效性。例如,加密哈希函数可以是安全哈希算法2(SHA-2)。SHA-2仅用于说明目的,并且可以使用许多其他加密哈希函数。加密哈希函数的选择通常是计算资源和安全性之间的折衷。例如,类似的加密哈希函数安全哈希算法3(SHA-3)比SHA-2更安全,但是SHA-2需要较少的计算资源。选择特定类型的加密哈希函数(例如,具有特定属性的加密哈希函数)可能有其他原因,或者可能存在影响可用加密哈希函数的监管要求。例如,监管要求可以允许使用SHA-2,并禁止BLAKE-2(基于ChaCha流密码的加密哈希函数)。
应当注意,哈希本身不需要出现在分布式分类账中。在一个实施例中,可以使用默克尔(Merkle)根。由于默克尔根本质上是哈希的哈希,因此通过向分布式分类账提交哈希的默克尔根,可以向分布式分类账提交执行或代码段的哈希。在该实施例中,节点可以接收对应的默克尔树的元素(例如,叶子的子集),以确定执行或共享代码段是否有效。
在一些实施例中,分布式分类账是区块链,其中,交易以区块的形式被添加到分类账,该区块与先前的区块链接直到原始的创始区块。
共享代码段
共享代码段可以是包含用于计算机的程序指令的代码段。共享代码段可以由一个或多个执行节点执行,并且可以由一个或多个授权节点授权。共享代码段可以一起构成程序代码,如上所述,通过执行,该程序代码可以从一个授权节点组切换到另一授权节点组。
在一些示例中,程序代码的共享代码段以指定的顺序执行。例如,程序代码130的执行可以从在节点102、106之间共享的共享代码段142开始。当代码段142的执行完成时,程序代码可以转换到代码段144,并且在下一个授权节点102、104、106组中可能存在类似的转换。共享代码段的顺序可以在程序代码中指定,但是除此之外或备选地,共享代码段可能已经指定了执行条件,该执行条件可以是其他共享代码段的完成。
共享代码段可以从共享代码段模板派生,该共享代码段模板可以是程序代码模板的一部分。即,代码模板可以包括一个或多个共享代码段模板。共享代码模板可以是具有未定义参数的参数化代码的预定义段,因此它们无法自己执行。共享代码段可以是相应的共享代码段模板的实例化版本,但是其中已经定义并指定了参数,使得该共享代码段可以被执行。
外部代码段和事件
可以执行共享代码段,并将执行输出添加到分布式分类账152、154、156。然而,并非所有授权或被授权的计算都需要在共享系统100内发生,因此一些计算可能会在系统100外部发生。如果需要这样的授权或被授权的计算作为一个或多个共享代码段的一部分,则在分类账上的条目可以是来自外部计算的结果,通常以反映是否已经进行了外部被授权或授权计算的输入/输出(I/O)的形式。
通常,授权节点可以具有对外部计算的被授权的控制。即,外部计算可以产生由授权节点发起并具有给定的授权输入的输出,然后该授权节点可以向执行节点传递授权输出。然后,执行节点可以在代码段的执行中利用该输出。外部计算和I/O的情况可以由共享代码段或程序代码指定,并且可能需要来自一个或多个授权节点的授权。在一些示例中,授权节点保持对来自外部计算的I/O的控制,因此执行节点可以将要提供的I/O推迟到授权节点以便继续执行。备选地,授权节点可以在请求和授权执行共享代码段时提供来自外部计算前端的I/O。
授权
通常,共享代码段对节点的依赖性可能意味着该节点必须给予授权才能执行该代码段。例如,在B和C之间共享的代码段可能需要来自B的授权和来自C的授权才能执行该代码段。授权可以是针对代码段的特定执行的授权,或者可以是对执行节点的共享代码段的一般授权。
在一些实施例中,来自节点的授权可以被添加到分布式分类账。以这种方式,分布式分类账充当授权的权威参考,然后执行节点可以参考该分布式分类账,以确保对给定的代码段进行所有适当的授权,以便节点执行该代码段。
示例性授权可以是通过授权对分类账提议变更的节点和/或分类账更改前或更改后的一个或多个状态的加密签名。当由授权节点授权这样做时,执行节点可以提供授权。在下面的示例实现中将更详细地描述此概念。
查询系统以便授权、委托和承诺
节点可以查询系统以确定与共享代码段和/或程序代码相关联的相关授权、委托和承诺。这对于授权节点或执行节点可能很有用,以便它们可以告知自己代码段的状态,例如,代码段执行是否被授权。备选地,节点可以向其他节点广播与共享代码段和/或程序代码相关联的相关授权、委托和承诺,或者节点可以向其他节点订阅以确定与共享代码段和/或程序代码相关联的相关授权、委托和承诺(例如,通过与其他节点的持续连接来获取某些数据)。尽管下面公开了查询的具体示例,但是应当理解,可以备选地在广播或订阅的上下文中采用以下示例。
在一些示例中,授权节点、执行节点或其他节点可以查询系统,以识别授权执行特定代码段或委托执行特定代码段所需的节点。这对于授权节点确认授权代码段所需的其他授权节点的身份很有用。在一些示例中,这还包括识别另一授权节点实际上是否已经获得对执行该代码段的授权(或委托了该授权)。
在一些示例中,系统可以限制向指定的共享代码段的涉众节点提供查询的识别结果。例如,系统可以将该结果限制为对指定的共享代码段进行授权的授权节点和/或执行指定的共享代码段的执行节点。这对于维护所涉及节点的隐私可能很有用。在其他示例中,较大的节点组可以具有接收查询结果的权限,例如,具有来自指定的共享代码段中的授权节点和执行节点的许可的节点。在一些示例中,可以通过对指定的共享代码段中的至少一部分数据进行加密来维护隐私,以便只有指定的节点才能访问有关与指定的共享代码段相关联的一个或多个其他节点的信息。
然而,应当理解,在一些备选方案中,任何节点都可以执行查询并接收结果以提高透明度。
在一些示例中,执行节点或授权节点可以执行该查询,以识别尚未提供授权或委托的授权节点,或在代码段的执行期间进行输入/输出的那些节点。识别是有用的,因为这可以协助指导对这类节点采取这些动作的请求。在一些示例中,除非授权节点被识别或可以被识别,系统可以限制执行节点执行指定的代码段(或者甚至程序代码中的其他代码段)。
在其他示例中,节点还可以查询需要作为承诺节点承诺执行指定的共享代码段的执行节点。在一些其他示例中,这包括识别尚未提供承诺的执行节点。这将协助节点识别这类执行节点,以便可以向这类执行节点发送承诺的请求。
向系统查询信息以识别上述授权和执行节点可以包括不同的形式。在一些示例中,这可以包括分析共享代码段(和/或更广泛的程序代码)的节点以识别这些节点。这可以包括分析分布式分类账上的记录。例如,分析记录在分布式分类账上的有效共享代码段161,其中,该有效共享代码段指定授权节点。在其他示例中,这可以包括分析在分布式分类账上的共享代码段162的执行记录,因为先前共享代码段的执行可以(在一些示例中)为程序代码中的后续共享代码段定义相关节点。
在其他示例中,授权节点和/或执行节点可以查询和分析来自它们自己各自数据库的共享代码段和/或程序代码的副本。在其他示例中,节点可以从系统中具有与指定的共享代码段相关联的数据的其他节点的数据库中进行查询。在另一种备选方案中,节点可以访问来自系统外部的数据源的与指定的共享代码段相关联的数据。
在某些示例中,如以下更详细所述,如果在向系统查询信息以识别授权和执行节点之后,任何执行节点确定尚未提供对执行共享代码段的所有适当授权(例如,作为提议交易的一部分),则共享代码段的执行可能会失败。
联合可执行
在许多分布式共享系统中,代码通常由多个节点执行,这导致代码的冗余执行。相反,在本公开中,共享代码段可以联合执行。通过这种方式,这意味着共享代码段可以由执行节点之一执行,也可以由多于一个执行节点执行。在大多数情况下,将执行共享代码段,并且实际执行共享代码段的节点可以满足执行共享代码段的义务。在典型示例中,其他执行节点因此可以不具有执行共享代码段的义务。在一些示例中,节点无法正确执行共享代码段可以由另一执行共享代码段的执行节点(已被正确授权)校正。在替代示例中,单个节点对共享代码段的执行不满足执行该共享代码段的义务。例如,共享代码段可能需要共享代码段中的所有授权节点执行该共享代码段。
非执行节点可以验证共享代码段的执行。因此,如果非执行节点在任何时候都希望验证共享代码段的执行,则该非执行节点可以执行该共享代码段并通过将输出与分布式分类账上的相应执行条目进行匹配来验证该执行。这可以包括审计器节点,以确定共享代码段或共享代码段执行的有效性。
指定的执行条件
共享代码段可以具有指定的执行条件,其指定可以执行共享代码段的条件。通常,提议共享系统中的代码段可以具有一些执行条件,其在默认情况下通常可以是来自一个或多个授权节点对执行的授权。因此,指定的执行条件可以是将该执行条件扩展为指定的执行条件。指定的执行条件可能与第二共享代码段上的条件一样简单,从而在第二共享代码段可以被执行之前,必须先执行第一共享代码段。
然而,指定的执行条件可能更复杂。例如,可能有两个共享代码段(Y,Z),其具有指定的执行条件以首先执行共享代码段X。该两个共享代码段Y和Z不依赖于彼此,因此它们可以独立执行,但是它们都必须仅在共享代码段X被执行之后执行。另一个共享代码段W可以具有必须首先执行Y和Z的指定执行条件。在这种情况下,W必须等待直到两个共享代码段都已经被执行。该指定的执行条件可以具有原子性,原因在于,如果要执行X和Y,则应同时执行X和Y,或者既不执行X也不执行Y。
指定的执行条件可以不仅仅只与其他代码段的执行相关。本质上,指定的执行条件可以是代码段的执行必须满足的任何条件。条件可以是在执行之前满足的前提条件;在执行期间同时满足的条件;以及甚至后置条件,其中,共享代码段可以由执行节点执行,但是如果不满足执行后置条件,则认为尚未执行。
在一些示例中,如果共享代码段允许共享进程创建未经授权、委托或承诺节点授权的授权、委托或承诺,则执行条件可以要求拒绝共享代码段。即,一些示例执行条件可以拒绝共享代码段的授权和执行,这导致一个或多个第一节点在没有来自第二节点的授权或预授权的情况下将第二节点置于授权、委托或承诺状态。
在一些示例中,如果共享代码段可能导致无法确定执行条件为真或假的共享进程的共享代码段,则执行条件可以要求拒绝共享代码段。在其他示例中,如果共享代码段可能导致如下共享进程的共享代码段:该共享进程的共享代码段无法在不使用超过系统执行资源的指定要求的情况下(例如,对存储器使用或执行的程序指令数量的限制)确定执行条件为真或为假,则执行条件可以要求拒绝共享代码段。
在一些示例中,如果共享段允许授权进程向未授权、委托或承诺所显示的共享段的授权节点或未授权或委托授权所显示的共享段的授权节点显示共享段,则执行条件可以要求拒绝共享段。在一些示例中,如果共享段允许授权进程向未授权或委托执行所显示的共享段的执行节点显示共享段,则执行条件可以要求拒绝共享段。
在一些示例中,如果共享段允许授权进程向未授权所显示的输入或输出数据的授权节点或未被授权对所显示的输入或输出数据进行授权的授权节点显示输入或输出数据,则执行条件可以要求拒绝共享段。在一些示例中,如果共享段允许授权进程向未授权或委托对所显示的数据进行输入或输出的执行节点显示输入或输出数据,则执行条件可以要求拒绝共享段。
示例性(例如,DAML)执行条件是无法执行第一代码段,因为执行后续代码段将导致后续委托或承诺的代码段被拒绝,因为一个或多个第一节点在未经第二节点授权或预授权的情况下(例如,在第二节点的请求中)将第二节点置于授权、委托或承诺的状态。在下面的示例实现中将更详细地描述此概念。
请求和动作
授权节点可以请求其他节点执行动作,也可以请求其他节点接受授权节点提议的动作。该请求可以采用各种形式,但是该请求可以包括另一节点或授权节点的授权、委托或承诺,或者可以包括执行代码段之一。
授权
授权可以与上述授权类似,除了在这种情况下,节点可以许可执行动作的授权。
委托
委托可以是:其中,节点将对执行的控制交给另一节点以执行动作。例如,执行节点可以将共享代码段的实际执行委托给另一节点。委托的示例可以是:将委托共享段授权给其本身的第一节点授权第二节点执行一个或多个后续共享段。在另一示例中,可以组合委托,并且第一节点可以授权第一委托共享段以授权第二节点执行一个或多个后续共享段。然后,第二节点可以授权(在第一委托共享段之后的)委托第二共享段,然后以授权第三节点执行一个或多个后续共享段(第一个或多个后续共享段的子集)。
承诺
承诺可以由节点请求,并由另一节点给出,以执行动作,或者节点可以简单地给出承诺而不经请求。通常,承诺可以与执行共享代码段之一有关。然而,承诺可以与另一个节点执行的任何动作有关。这包括外部计算所需的I/O,从而例如,授权节点可以承诺为系统外部的节点提供授权的输入数据,通过该授权的输入数据,节点执行计算以获得结果。授权节点可以类似地承诺将该结果提供回执行节点,以便继续执行。
示例承诺可以是:授权承诺共享段的第一节点向该第一节点承诺随后授权第二节点执行一个或多个后续共享段。在另一示例中,第一节点授权第一承诺共享段向该第一节点承诺随后授权第二节点执行一个或多个后续共享段。然后,第二节点可以授权(在一个或多个后续共享段中的)第二承诺共享段向第一节点承诺随后授权第三节点执行一个或多个后续共享段。
承诺与委托
共享段可以是承诺的也可以是委托的。DAML中的示例性委托和承诺共享段构造是“等待”,其中第一授权节点(或具有来自授权节点授权的执行节点)将特定的后续执行(其可能经受特定的执行条件)委托给第二授权节点,并且其中,第一节点还向第二节点承诺授权第二节点的后续执行(其中,授权以特定的执行条件为条件)。
后续请求
在一些更复杂的示例中,动作可以是对其他节点的请求。例如,一个节点可以请求另一节点随后请求第三节点执行共享代码段。作为请求的动作在本公开中被称为后续请求。后续请求可以是上述任何请求,例如,授权、委托或承诺。这可以包括例如对授权的委托,其中,节点N授权N2执行共享代码段。N2可以将执行委托给另一节点N3,因此代码段的执行由N2授权,但是共享代码段的执行也由N授权,这是由于N最初授权N2执行共享代码段而发生的。
重写共享代码段
共享系统100可以适于允许重写共享代码段。如果使用不变的分布式分类账,在这种情况下重写并不意味着替换共享代码段。在这种情况下,可以通过将新的共享代码段添加到不可变的分布式分类账来重写共享代码段,其中,新的共享代码段覆盖旧的共享代码段。
重写共享代码段可以包括重写整个共享代码段,并且实际上是替换整个共享代码段。重写还可以包括:向共享代码中使用的现有数据对象提供一个或多个修改后的参数。
针对授权示例的操作序列
以下是可用于执行共享代码段的示例操作序列。它们旨在描述分布式隐私保护共享执行系统的操作。不应将它们视为严格的操作顺序,如本领域技术人员将理解的,存在许多可能的操作、布置和实施的序列。
图4示出了示例操作序列,以执行在节点102和106之间共享的共享代码段142。在该示例中,授权节点是102和106,并且执行节点是104。
第一步可以是授权节点102请求402执行共享代码段142。然后,执行节点104可以确定:由于授权节点106是另一授权节点,需要来自授权节点106的授权。然后,执行节点104可以通知404授权节点106已经请求执行共享代码段142。授权节点106可以通过授权406执行共享代码段142来批准该请求,该共享代码段142被传送回执行节点104。如果授权节点106不批准该执行,则执行节点104可能无法执行代码。
现在具有来自共享代码段142的授权节点102之一的执行请求以及来自另一授权节点106的执行授权的执行节点104能够执行共享代码段142。然后,执行节点可以根据请求执行408共享代码段142。
在该示例中,来自节点的代码段的执行请求包括执行代码段的隐式授权。但这不一定总是如此。在一些场景中,执行请求不是隐式的授权,并且共享代码段可能需要来自授权节点的单独的授权以执行代码段。
尽管未示出,代码段可以返回消息以确认成功执行或从该执行到执行节点104的输出。执行节点104可以可选地将相似的消息返回给授权节点102和106,以指示成功执行或来自该执行的输出。授权节点102和106可以可选地返回对接收消息的确认。
对执行共享代码段的预先授权
图5示出了替代操作序列,以执行在102和106之间共享的共享代码段142。在该示例中,授权节点106可以在授权节点102请求504执行代码段142之前授权502执行代码段142。
当执行节点104接收到执行共享代码段142的请求时,执行节点104可以检查以查看是否可以执行该共享代码段。在这种情况下,来自授权节点106的预先存在的授权502和来自授权节点102的执行请求504表示可以执行共享代码段142。在一些示例中,检查预先存在的授权可以包括检查分布式分类账是否有记录在该分布式分类账中的预先存在的授权。
多个执行共享代码段的请求
图6示出了替代操作序列,以执行共享代码段142。在该示例中,授权节点102请求602执行共享代码段142,然后授权节点106也请求604执行共享代码段142。同样,如前所述,在该示例中,来自节点的执行共享代码段的请求可以包括执行共享代码段的隐式授权。当执行节点104从授权节点102接收到执行共享代码段142的请求时,执行节点104可以检查以查看是否可以执行该共享代码段。在这种情况下,此时无法行执共享代码段142,因为执行节点尚未接收到来自授权节点106的授权。
然后,授权节点106可以请求执行共享代码段104。此时,执行节点同时具有来自授权节点102和106的执行请求,这两个授权节点实际上提供了执行共享代码段142的授权。因此,执行节点104可以执行606共享代码段142。
执行多个共享代码段
图7示出了操作序列的扩展示例,以执行多个共享代码段142和143。与图4中的示例一样,授权节点102可以请求702执行共享代码段142。由于授权节点106是另一授权节点,执行节点104可以确定需要来自授权节点106的授权。然后,执行节点104可以通知704授权节点106已经请求执行代码段142。授权节点106可以通过授权706执行共享代码段142的执行来批准该请求,该共享代码段142可以被传送回执行节点104。
现在具有来自共享代码段142的授权节点102之一的执行请求以及来自另一授权节点106的执行授权的执行节点104能够执行共享代码段142。然后,执行节点可以根据请求执行708共享代码段142。
在该示例中,执行共享代码段142可以返回710授权以执行代码段143。在示例中,该授权可以具有用于执行共享代码段143的隐式请求,但是如上所述,备选地,可能需要由授权节点102和/或授权节点106执行共享代码段143的显式请求。与共享代码段142相同的节点(节点102和节点106)之间共享共享代码段143,但是在这种情况下,代码段143可以具有指定的执行条件:已经执行了共享代码段142,并授权执行共享代码段143。执行节点104可以检查以查看是否可以执行共享代码段143,并且执行节点可以确定是否已经满足指定的执行条件。在这种情况下,已经执行了共享代码段142并授权执行共享代码段143,因此执行节点104可以执行712共享代码段。
在该示例中,备选地,对共享代码段142的授权706是授权功能而不是授权数据。当授权节点102请求执行共享代码段143时,授权节点102可以向执行节点104传送授权功能。然后,执行节点104可以执行授权功能以授权执行共享代码段143。类似地,执行节点104可以在执行共享代码段143之前简单地执行共享代码段142。
执行的验证
图8示出了执行的验证可以如何操作的示例。在该示例中,授权节点102可以请求802执行共享代码段142,并且可以与执行节点104共享授权的输入数据和预期的授权执行输出。与图4中的示例相似,然后执行节点104可以通知804授权节点106执行共享代码段142的请求。在该示例中,执行节点104可以传递执行节点已经从授权节点102接收到的执行的授权输入数据和预期授权输出。
一旦授权节点106被告知执行共享代码段142的请求,则授权节点106可以授权该执行。在该示例中,授权节点106可以授权806该执行,然后执行节点104可以验证共享代码段142的执行。这可能是通过利用代码段的授权输入数据和预期输出以将预期的输出与执行共享代码段142的实际输出进行比较而发生的。如果预期的输出相同,则共享代码段142可以被确认810为有效。
如果对共享代码段142的验证失败,则执行节点104可以使用失败的验证协议来标记该验证已经失败,这可以包括通知共享系统中的其他节点。这可以包括通知授权节点102和106本身、共享系统的一个或多个操作员、审核员、任何监管机构或任何其他有关方。
应当注意,如果节点知道预期的输出,则任何节点都可以验证共享代码段的执行。例如,授权节点可以通过将预期的输出与执行节点提供的段的实际输出进行比较来验证该执行。在一些情况下,可以通过执行共享代码段来确定预期的输出,以便可以比较共享代码段的执行。在许多情况下,共享代码段的多次执行的相同输出可以足以验证共享代码段的执行。
在一些场景中,授权节点可以在没有任何授权节点的授权的情况下执行共享代码段。这通常只是出于验证的目的,而不是(公认的)执行共享代码段。即,执行节点可以通过在分布式分类账上添加条目来注册共享代码段的执行。这导致共享系统中的节点将共享代码段识别为已执行。授权节点可以执行共享代码段以用于验证,但是可能不会在分布式分类账上添加条目,而是将结果与用于验证的分布式分类账上的条目进行比较。
使用分布式分类账的授权代码段的共享执行的示例性实施方式
下面结合图15-20,使用图4-8中的至少一些作为参考点来阐述用于授权代码段的共享执行的详细示例性实施方式。应当理解,该实施方式仅是示例性的。
如图8所示,授权节点102可以请求802执行在授权节点102、106之间共享的代码段142。在示例中,授权节点102可以向执行节点104发送请求802。请求802可以包括或可以不包括输入数据和预期的输出。应当理解,下面的示例性实施方式是参考代码段142、授权节点102、106和执行节点104进行讨论的,但是在其他进程中,如本领域技术人员可以理解的,可以涉及其他节点和代码段。例如,图7示出了多个代码段142、143的执行。
在实施例中,请求802可以包括由授权节点102加密签名的消息。加密签名可以是利用对称、非对称或其他密码技术(例如,RSA)来可证明地对请求802的至少一部分进行签名的数字签名,以便接收方节点可以验证请求(或其一部分)802的真实性。在特定示例中,授权节点102可以对请求802所包括的一个或多个树形数据结构(例如,一个或多个默克尔树)的一个或多个部分进行加密签名,该部分可以是连接的或重叠的。授权节点102还可以对请求802所包括的子交易数据(例如,加密的子交易数据)进行加密签名。子交易数据可以代表提议的交易:通过请求802,授权节点102正在提交以进入由节点网络维护的分布式分类账,授权节点102、106和执行节点104是该节点网络的一部分。
可以在视图中构造树形数据结构(例如,一个或多个默克尔树)的一个或多个部分以维护分布式分类账网络中节点之间的隐私,提供适当的授权范围,并保持该网络的可扩展性,其中,该树形数据结构的一个或多个部分由授权节点102加密签名并通过请求802向执行节点104发送。每个视图可以是树形数据结构(例如,默克尔树)或树形数据结构的一部分,其可以与其他树重叠。在一些示例中,重叠的树形结构可以类似于图(例如,有向无环图)。图15将前述视图示出为相对于参与者节点P1、P2的隐私保护视图、比例缩放保护视图和授权保护视图,参与者节点P1、P2在示例中可以是授权节点102、106。
在示例中,形成请求802的树形数据结构可以包括:
1、在通过请求802提交所提议交易之前,分布式分类账的状态或部分状态的加密表示(例如,哈希)。通过图8(或图4-7中的任何一个)的过程,该状态或其一部分可以代表在执行共享代码段142之前的分布式分类账。该状态或其一部分可以包括在向其他节点(例如,执行节点104)发送的请求802中,以便其他节点可以在其提议的交易之前验证授权节点102的分布式分类账的状态视图,如下面更全面地描述的。
2、提议交易有效载荷和/或一个或多个共享进程的提议步骤,其可以包括到共享进程步骤的输入数据。提议交易有效载荷可以包括多个提议子交易有效载荷,该多个提议子交易有效载荷被构造为保护隐私、提供适当的授权范围以及保持可扩展性,如下面参考图15-18更详细地描述的。在示例中,可以随请求802提供提议交易有效载荷和/或提议步骤(例如,其加密版本)的加密表示。
3、在提议交易被输入到分布式分类账中之后,代表分布式分类账的状态或部分状态的加密表示(例如,哈希)。通过图8(或图4-7中的任何一个)的过程,该状态或其一部分可以表示在执行共享代码段142之后的分布式分类账。该状态或其一部分可以包括在向其他节点(例如,执行节点104)发送的请求802中,以便其他节点可以在其提议交易之后验证授权节点102的分布式分类账的状态视图,如下面更全面地描述的。
应当理解,值或数据的加密表示(如上所述)可以是以加密形式表示的值或数据,例如,通过使用各种加密技术(例如,哈希、加密、盐析等)加密地处理值或数据以产生其加密表示。如本公开中更全面地描述的,值或数据的加密表示允许分布式分类账网络中的节点在进入该分类账之前验证提议交易。
上面的视图(1)可以代表分类账预交易的状态或部分状态。构成该视图的树形结构或其一部分可能本身包括:(i)特定于提议交易的不同方的分类账的状态或部分状态的加密表示,(ii)特定于提议交易的不同方的共享代码段的加密表示,和/或(iii)特定于提议交易的不同方的数据和共享进程分片视图的加密表示。
在(i)的情况下,在提议交易之前,请求802可以包含特定于授权节点102、106的分类账的状态或部分状态的加密表示。由于授权节点102、106可以是至少部分受到共享代码段142影响的提议交易的各方,(i)可以是特定于授权节点102、106预交易的分类账的状态或部分状态的加密表示。当然,如果在提议交易中涉及其他节点,则(i)可以特别地在授权节点102和这样的其他节点之间包括分类账的状态或部分状态的附加加密表示。换句话说,取决于允许每个节点作为提议交易的一部分的视图,可以以保护隐私的方式在授权节点102和作为提议交易的各方的其他节点之间计算分类账预交易的状态或部分状态的加密表示。
对于(ii),同样如此。换句话说,特定于提议交易的不同方的共享代码段的加密表示可以是隐私保护。即,仅使用图8作为示例,共享代码段142的加密表示可以特定于授权节点102、106,因为这样的节点是执行共享代码段142的节点。如果其他共享代码段作为提议交易的一部分被执行(例如,如图7所示),则在授权节点102和参与执行这些共享代码段的其他节点之间的这种共享代码段的加密表示可以被计算并且随请求802一起发送。共享代码段的加密表示允许节点验证将作为请求802的一部分执行的共享代码段的内容(例如,通过将由接收节点(例如,本地的)计算的共享代码段的加密表示和作为请求802的一部分提供的共享代码段的加密表示进行比较)。
在(iii)的情况下,请求802可以包含特定于提议交易的不同方的共享进程分片视图和数据的加密表示。在示例中,请求802可以包含:共享代码段142的加密表示,该共享代码段142特定于共享代码段142驻留在分布式分类账网络内的一个或多个分片,以及执行特定于数据所在分片的共享代码段142所必需的任何数据的加密表示。
请求802的视图(2)可以包括提议交易有效载荷,其本身可以包括多个提议子交易有效载荷(有时被称为DAML动作),该子交易有效载荷被构造为保护隐私、提供适当的授权范围以及保持可扩展性。子交易有效载荷或动作可以是至少部分地导致分类账的状态转换和/或其他节点可以用于验证对分类账的提议或实际状态转换的计算。即,一个或多个子交易有效载荷或动作可以一起在总体上至少部分地导致分类账的状态转换从第一状态的预交易发生到第二不同状态的后交易。备选地,一个或多个子交易有效载荷或动作可以一起在总体上由其他节点用于验证对分类账的提议或实际状态转换。仅作为非限制性示例,子交易有效载荷或动作可以包括:
1、在一个或多个节点之间创建、添加或激活共享代码段。这样的动作可以使共享代码段在一个或多个节点之间变为活动状态,以供提议交易的另一部分引用和执行、以在随后的交易中执行、以供其他共享代码段引用从而有效执行该其他共享代码段、或其他原因。
2、执行共享代码段。
3、提供输入数据作为上述(1)和/或(2)的一部分。输入数据可以是执行共享代码段所需的参数,或其他输入数据。
4、提供输出数据(例如,作为上述(2)的一部分)。在示例中,可以使用输出数据来认证共享代码段或提议交易的执行或部分执行的输出或中间输出。
5、创建或添加共享代码段类或模板。共享代码段类或模板可以用于创建、添加或激活共享代码段实例、被其他共享代码段类或模板引用或用于其他用途。
6、存档共享代码段或共享代码段模板。
7、在提议交易的指定中间执行时刻捕获分类账的状态或部分状态。作为共享代码段和/或提议交易的执行的一部分,这对于其他节点认证或验证中间执行时刻可能很有用。
请求802的视图(2)可以包括作为与请求802一起发送的提议交易的一部分的隐私保护子交易有效载荷或操作。在示例中,发送请求802的授权节点102可以为作为提议交易的各方的其他节点构造隐私保护子交易有效载荷。在图8的示例中,授权节点106是作为提议交易一方的唯一的另一节点,该提议交易是请求802的一部分,因此作为请求802的视图(2)的一部分提供的任何子交易有效载荷或动作可以对授权节点102、106保护隐私。然而,在其他示例中,附加节点也可以是作为请求802的一部分发送的提议交易的各方。在这种情况下,授权节点102可以在特定于参与方的基础上将不同的子交易有效载荷或动作分组在一起。例如,授权节点102可以将影响提议交易的节点的第一子集的不同子交易有效载荷或动作分组在一起作为第一组,并且可以将影响提议交易的节点的第二子集的不同子交易有效载荷或动作分组在一起作为第二组。在示例中,授权节点102可以随请求802一起发送第一和第二组子交易有效载荷或动作的单独的加密表示,使得节点的第一子集不能查看或作用于第二组子交易有效载荷或动作,并且节点的第二子集无法查看或作用于第一组子交易有效载荷或动作。例如,授权节点102可以对第一和第二组子交易有效载荷或动作进行加密,其中,节点的第一子集具有用于第一组子交易有效载荷或动作的解密密钥,但是不具有用于第二组子交易有效载荷或动作的解密密钥,而节点的第二子集具有用于第二组子交易有效载荷或动作的解密密钥,但不具有用于第一组子交易有效载荷或动作的解密密钥。以这种方式,如果这样的节点不应该访问特定的子交易有效载荷或动作,则提议交易内的某些子交易有效载荷或动作可以对提议交易中可能涉及的节点的不同子集保持私有。
作为请求802的一部分发送的视图(3)的树形数据结构可以包括在将提议交易输入到分布式分类账中之后该分布式分类账的状态或部分状态的加密表示。在示例中,树形数据结构可以包括以上关于视图(1)详述的子部分(i)至(iii),但是针对分类账的交易后状态或部分状态。因此,应当理解,可以针对视图(3)包括以上针对视图(1)描述的子部分(i)至(iii)中的任何一个,但是针对分类账的交易后状态或部分状态。如下面更全面地详细描述,类似于视图(1),作为请求802的一部分被包括的视图(3)的树形数据结构可以被其他节点用来验证授权节点102的分类账交易后的状态或部分状态的视图。在示例中,这样的验证可以有效地允许其他节点(例如,授权节点106)仅在执行必要的验证检查之后才承担执行任何一个或多个共享代码段(例如,共享代码段142)。
前面示出了可以在请求执行共享代码段时由授权节点102发送的部分请求802。现在讨论图15-18以及图7-8,以示出根据本公开的示例的共享代码段的执行过程。
图15-18示出了以上针对参与者节点P1、P2和共享代码段SS5-SS13所描述的请求802的视图(1)至(3)的示例。在图7-8中,参与者节点P1、P2被称为授权节点102、106,因为这样的节点正在授权执行共享代码段142、143。以下公开的其余部分可互换地使用节点P1、P2和授权节点102、106,因为出于执行共享代码段142、143的目的,这些节点在概念上可以被视为相同的节点。另外,共享代码段142、143和SS5-SS13在某种程度上也可互换地指代,因为执行这种共享代码段可以遵循相似的过程(例如,如图7-8所示)。
如图7-8所示,授权节点102可以通过请求702、802来请求执行代码段142。在图8中,可以将输入数据和预期的输出随请求802一起提供。图16类似地示出了提议交易T2,其可以作为请求702、802的一部分被发送。提议交易T2可以包含以隐私保护、缩放保持和授权保持的方式构造的上述公开的视图(1)至(3)(图15)。实际上,提议交易T2可以包括特定于授权节点P1、P2/102、106、特定于授权节点P1/102、并且特定于授权节点P2/106的分类账交易前和交易后T2的状态或部分状态的单独的加密表示(即,上面的视图(1)和(2))。提议交易T2还可以包括提议交易有效载荷和到提议交易T2的节点之间的任何共享进程的任何提议步骤(即,上面的视图(3))。在图16的情况下,视图(3)被示为用于授权节点P1、P2/102、106的子交易有效载荷或动作“执行SS5”、“调用执行SS6”、“调用执行SS7”、“存档SS5”和“添加SS9”。在图16的所有方框中,这样的子交易有效载荷或动作可以是总体上形成提议交易T2的负载的动作。在图16的示例中,特定于授权节点P1、P2/102、106的子交易有效载荷或动作可以作用于执行共享代码段SS5,其本身作用于调用和执行共享代码段SS6、调用和执行共享代码段SS7、存档共享代码段SS5、以及在授权节点P1、P2/102、106之间添加或创建新的共享代码段SS9。相对于不同的节点P1、P2/102、106,其他子交易有效载荷或动作是不言自明的,如图16的方框所示。
参考图7-8,在示例中,可以通知授权节点P2/106请求702、802以执行共享代码段704、804,然后授权执行共享代码段706、806。图7-8示出了授权节点P1/102正在请求执行共享代码段142,但是在其他示例中,授权节点P1/102可以请求执行多个代码段。在示例中,授权节点P2/106对执行共享代码段的授权706、806可以采取授权节点P2/106对请求702、802的一部分进行加密签名的形式以授权执行共享代码段。例如,授权节点P2/106可以对请求702、802中提供的分类账预交易(即,视图(1))的状态或部分状态进行加密签名,它可以对提议交易有效载荷(即,视图(2))的一个或多个部分进行加密签名,和/或它可以对分类账交易后(即,视图(3)))的状态或部分状态进行加密签名。
此外,在示例中,作为其授权706、806的一部分,授权节点P2/106可以根据隐私约束来对与授权节点P2/106相关的提议子交易有效载荷或动作的子集进行加密签名。以某种方式,这可以被看作为授权节点P2/106通过其加密签名显式地授权执行作为提议交易T2一部分的提议子交易有效载荷或动作。在另一示例中,授权节点P2/106可以对任何提议子交易有效载荷或动作进行加密签名,分布式分类账网络中的另一节点已将其授权委托给授权节点P2/106以进行签名。即,通过执行先前的共享代码段,分布式分类账网络中的第一节点可以委托授权以执行后续的共享代码段,该后续的共享代码段影响第一节点对授权节点P2/106的权利或义务。例如并且仅作为示例,在先前交易或同一交易T2中,第一节点可能已经对共享代码段(未示出)进行加密签名,该共享代码段在被执行时创建或激活共享代码段SS5。通过对先前的共享代码段进行加密签名,可以说第一节点具有共享代码段SS5的隐式授权执行,因为第一节点显式地授权了共享代码段SS5的创建或激活。因此,可以说第一节点已经将其执行共享代码段SS5的授权委托给了授权节点P2/106,授权节点P2/106在对提议交易有效载荷和/或任何子交易有效载荷或动作进行加密签名之后,可以被认为已经授权了执行节点104执行共享代码段SS5。
值得注意的是,尽管未在图7-8中示出,授权节点P2/106可以在将其授权706、806提供给执行节点104以执行共享代码段之前执行某些检查。例如,授权节点P2/106可以在提供其授权706、806之前检查某些指定的执行条件。在示例中,指定的执行条件可以是适用的共享代码段已经被所有所需节点授权执行。这将被作为非强制性计算在下面进行更详细的描述。
在提供适当的授权706、806以用于执行任何一个或多个共享代码段之后,适用的共享代码段可以由执行节点104执行。在图7-8中,这将是由执行节点104对共享代码段142的执行。在图15-18中,这将是共享代码段SS5-SS7和SS8.P1-P2的执行。如图16所示,共享代码段SS5-SS7和SS8.P1-P2的括号中的部分可以表示由于执行共享代码段SS5-SS7和SS8.P1-P2而导致的子交易有效载荷或动作。例如,执行共享代码段SS5可以导致子交易有效载荷或动作,这些子交易有效载荷或动作调用和执行共享代码段SS6、调用并执行共享代码段SS7、存档共享代码段SS5以及添加或激活共享代码段SS9。同样,相对于授权节点P1/102执行共享代码段SS6可以导致子交易有效载荷或动作,这些子交易有效载荷或动作存档共享代码段SS6,并添加或激活共享代码段SS10,这对于授权节点P1/102是私有的。类似地,在作为提议交易T2的一部分的分片Z2上,执行共享代码段SS8.P1可以导致子交易有效载荷或动作,这些子交易有效载荷或动作存档共享代码段SS8.P1,并添加或激活共享代码段SS12.P1。如图16所示,共享代码段SS8.P1对于授权节点P1/102是私有的(如由白色与灰色背景所示),并且由执行共享代码段SS8.P1导致的共享代码段SS12.P1对于授权节点P1/102也是私有的。
在图8中,执行节点104可以验证808并确认共享代码段142的有效执行810,并且节点102、104、106之间的共享进程可以终止。在图7中,执行共享代码段142可以自己返回710对执行代码段143的授权,然后可以在步骤712中执行代码段143,如前所述。关于图15-18,上面描述了不同共享代码段SS5-SS7和SS8.P1-P2的执行,并且作为执行和提议交易T2的结果,分类账可以从第一状态L.V2转换到第二状态L.V3。然后,授权节点P1、P2/102、106和执行节点104(在图15-18中未示出)之间的共享进程可以结束。
非强制性计算
如上所述,授权节点P2/106可以在将其授权706、806提供给执行节点104以执行共享代码段之前执行某些检查。实际上,可以在提供该节点的授权以执行提议交易中涉及的共享代码段之前,由作为提议交易的一方的任何授权节点执行此类检查。
在示例中,授权节点在提供其授权以执行共享代码段之前,可以(例如,本地的)计算其对分类账预交易的状态或部分状态的视图,并将其与任何提议交易中指定的分类账预交易的状态或部分状态进行比较。这可以采取以下形式:授权节点计算分类账的状态或部分状态的加密表示,预交易并将其与提议交易(例如,图16-18的提议交易T2)中存在的类似加密表示进行比较。授权节点还可以在提供其授权以执行共享代码段之前,对其交易后状态的视图执行类似的验证。这样的验证可以向授权节点保证其对分类账的交易前和交易后状态或部分状态的视图与提交提议交易的授权节点一致。
任何授权节点在提供其授权以执行共享代码段之前,还可以确保此类共享代码段的执行满足强制执行条件。强制执行条件可以确保没有节点在未经其授权的情况下通过执行共享代码段而被置于强制位置。即,在没有这种授权节点的显式或隐式授权的情况下,没有授权节点被视为已授权执行共享代码段。下面通过具体的但仅是示例性并且非限制性的示例来更详细地探讨这种非强制性计算的概念。
图19-20示出了执行共享代码段cashIou的示例。共享代码段cashIou可以代表债务人(当事方)对所有者(当事方)针对特定现金金额(整数)的现金义务。从这个意义上讲,共享代码段cashIou代表债务人(当事方)的义务,债务人(当事人)应按照所有者(当事方)要求的方式处理特定现金金额(整数),如共享代码段cashIou的“选择”或等待框中所述。可以理解,分布式分类账网络中的特定节点将不希望创建共享代码段cashIou,其中,在没有该节点的显式或隐式授权的情况下,该节点被定义为债务人(当事方)。如在图19-20的示例中以及在上面更一般地描述的,非强制性计算确保这种结果是不可能的。因此,分布式分类账网络中的节点可以确保在没有这种节点的适当隐式或显式授权情况下,没有共享代码段将被创建、激活、执行等。
图19示出了以实例化或激活来自cashIou类或模板的共享代码段cashIou的形式成功执行共享代码段cashIou的示例(如图20所示)。在图19中,授权节点Bank通过其加密签名授权提议交易,该提议交易实例化或创建授权节点Bank和所有者节点Charlie之间的共享代码段cashIou,其中,授权节点Bank具有金额为10000的cashIou义务。如图19所示,提议交易可以包括以上先前讨论的视图(1)至(3),例如,分类账和提议交易有效载荷的交易前和交易后状态或部分状态的加密表示。因为Bank节点提交了提议交易并对该提议交易进行了加密签名,这实例化了共享代码段cashIou,可以说,Bank节点已经为共享代码段cashIou的实例化显式地提供了授权,并且隐式地将其授权委托给Charlie节点,以行使在共享代码段cashIou的等待框中的任何“选择”,如图20所示。即,由于Bank节点显式地授权了共享代码段cashIou的实例化,它还知道并隐式授权了在新的实例化共享代码段cashIou内执行其他共享代码段。例如,如图20的“调用”等待框所示,Charlie节点通过所有者选择代码段,可以从mustPayToAccount模板实例化共享代码段mustPayToAccount,从而Bank节点将Charlie节点的初始共享代码段cashIou中的现金金额(整数)记入Charlie节点选择的帐户(文本)(例如,一些金额等于或小于10000,或者共享代码段cashlou的金额字段中剩余的金额,以较低的金额为准)。
因此,如果作为图19中同一提议交易或不同的后续提议交易的一部分,Charlie节点通过调用块请求创建或激活共享代码段mustPayToAccount,因为:(i)Bank节点通过将其授权委托给Charlie节点来隐式地授权了该动作,并且(ii)共享代码段mustPayToAccount的创建或激活在没有其显式或隐式授权的情况下不会将另一个节点置于已授权共享代码段mustToPayAccount的位置,在该实例中创建或激活共享代码段mustPayToAccount将被其他节点视为有效,并且将通过此类其他节点的授权验证。关于(ii),换句话说,由于实例化共享代码段mustToPayAccount不会导致另一代码段,该另一代码段在未经节点授权的情况下将节点置于授权执行该代码段的位置,可以认为满足条件(ii)。例如,在替代场景中,mustToPayAccount模板或类可以具有另一代码段,该另一代码段在执行时将在第二Bank节点和Charlie节点之间创建第二共享代码段cashIou。然而,在该实例中,虚构的其他代码段将不会被第二Bank节点授权,因为在图19的过程中,第二Bank节点都未显式或隐式地授权创建或激活该代码段,该代码段在第二Bank和任何其他节点之间创建共享cashIou。提供该虚构示例以更清楚地阐述上述条件(ii),即,执行共享代码段(在这种情况下,由Charlie节点执行图20的共享代码段cashIou的调用框),在某些示例中,如果代码段的执行将在没有所有必要的授权节点的授权的情况下导致创建、激活或执行另一代码段,则不会通过其他节点的授权检查。
对于Bank节点在创建初始共享代码段cashIou之后实例化的转移和拆分选择或代码段,也得出相同的结果,例如,Charlie节点执行此类转移和拆分代码段的请求将被认为是由网络中的其他节点授权的,因为如上所述,Bank节点将其执行此类代码段的授权委托给了Charlie节点,并且在没有所有必要的授权节点的授权的情况下(在此情况下,仅是Bank节点),没有代码段将被创建、激活或执行。
如图19所示,包括交易有效载荷以实例化共享代码段cashIou的提议交易可以在收集到任何必要的授权后由执行节点执行,在该示例中,该授权可以是简单的请求,具有其加密签名,通过授权Bank节点来激活共享代码段cashIou。然后,执行节点(例如,Charlie节点)可以使共享代码段cashIou输入到分类账中,以便Charlie节点随后可以以图20的cashIou模板中的“选择”所示的方式处理由共享代码段cashIou表示的现金。
图20示出了示例场景,其中,上述共享代码段cashIou的激活将被认为是被授权的和未被授权的,以便进一步详细说明非强制性计算的示例。如上面结合图19更全面地描述的,图20中的顶部示例表示当授权节点是Bank节点时成功创建共享代码段cashIou。图20中的底部示例表示当授权节点不是Bank节点而是Charlie节点时,共享代码段cashIou的创建不成功。
在底部示例(第二个场景)中,Charlie节点可以作为声称的授权节点发出请求,以创建共享代码段cashIou,其中,Bank节点向Charlie节点承担金额为10000的cashIou义务。但是,如在该示例中显而易见的,Bank节点尚未向共享代码段cashIou的创建提供其显式或隐式授权。相反,Charlie节点是请求节点并且是唯一授权节点。如果包含Charlie节点作为唯一授权节点的共享代码段cashIou的实例化的提议交易,则执行节点或接收提议交易的任何其他节点的授权检查将失败,并且提议交易将不会输入到分类账中。
仅出于说明目的,如果Bank节点提供了其显式授权(例如,通过对提议交易或其一部分进行加密签名)或其隐式授权,则上述第二个场景将导致在Bank节点与Charlie节点之间创建有效的共享代码段cashIou。在后一种情况下,Bank节点的隐式授权可以采用Bank节点显式授权执行先前的共享代码段的形式,该共享代码段在执行时创建或实例化Bank节点与Charlie节点之间的共享代码段cashIou。
在某种意义上,非强制性计算可以涉及在授权执行共享代码段之前验证共享授权条件的所有授权节点,如图19所示。在示例中,作为验证共享授权条件的一部分,所有授权节点都可以验证以下共享执行条件的任何组合或排列被满足:
1、任何委托或承诺的授权都可以追溯到通过先前的交易提议请求来请求委托或承诺授权的委托或承诺节点。在以上成功创建共享代码段cashIou的示例中,该共享执行条件被满足,因为Bank节点的承诺授权可以追溯到作为图19-20中的授权节点的Bank节点的交易请求,该承诺授权将共享代码段cashIou中的Bank节点承担的cashIou义务提交到Charlie节点,并且它对Charlie节点执行任何代码段(即,图20的等待框中的“选择”)的委托授权都可以追溯到作为授权节点的Bank节点的交易请求。
2、所有委托或承诺授权都包括相应的委托或承诺节点的加密授权(例如,加密签名),该委托或承诺节点授权对相关委托或承诺授权的请求。在以上示例中,该共享执行条件被满足,因为Bank节点的委托和承诺授权可以追溯到Bank节点对图19中提议交易的请求的加密授权(例如,加密签名)。
3、源于执行由在提议交易中执行的任何共享代码段创建、激活或执行的任何代码段的任何可能的执行结果都满足共享执行路径条件。在示例中,所有授权节点都可以验证以下共享执行路径条件的任何组合或排列被满足:
a、源于执行由在提议交易中执行的任何共享代码段创建、激活或执行的任何代码段的任何可能的执行结果都可以追溯到来自所有所需授权节点的加密授权(例如,密码签名)。在以上示例中,该共享执行路径条件被满足,因为源于执行通过在图19的提议交易中实例化共享代码段cashIou来创建或激活的“调用”、“转移”和“拆分”共享代码段的任何可能的执行结果都可以追溯到来自所有所需授权节点的加密授权,在这种情况下,仅是请求提议交易的Bank节点的加密授权(例如,密码签名)。在某种意义上,该共享执行路径条件可以确保任何共享代码段的所有将来的执行状态都由适当的授权节点授权。因此,可以确保分布式分类账网络中的节点不可能将任何节点置于将来的未授权执行状态。
认证的验证
在示例中,执行如上所述的授权检查以遵从非强制性计算的节点可以通过在提供授权以执行共享代码段之前进行执行检查来实现。受制于授权规则(例如,访问控制、执行、业务授权、智能合约规则)的分布式系统中的困难可以是参与的系统可能违反授权规则并授权不一致的动作,并且该困难可能会因以下原因而变得更加复杂:每个参与的系统都需要进行困难而昂贵的检查以预先检查授权执行完成特定共享过程步骤的程序代码步骤的适当性和有效性。
在此,认证的验证可以被用作为确保在分布式分类账网络中有效且受信任的授权执行的方式。认证的验证可以将运行时验证、静态验证以及附加加密、认证和授权信息结合在一起,以确保满足非强制性计算约束。运行时验证是一种计算系统分析和执行方法,其中,信息是从正在运行的系统中提取的,并用于检测满足或违反某些属性(在这种情况下为上述非强制性计算约束)的观察到的行为并可能对其做出反应。在分布式系统中,每个系统可以被设置以从一个明确定义的状态进展到下一个明确定义的状态。在分布式运行时验证系统中,如本公开中的情况,每个系统都可以从本地运行系统以及从其他系统的输入中提取信息,并使用该信息来检测观察到的行为(例如,违反先前详述的非强制性计算约束)并可能对其做出反应。静态验证可以被用作为确保分布式系统中有效且受信任的软件执行的方式。静态验证是一种计算系统分析和执行方法,其中,信息是在其执行之前从系统中提取的,并用于检测满足或违反某些属性(此处为违反非强制性计算约束)的观察到的行为并可能会其做出反应。
在特定示例中,运行系统中的分布式分类账网络的授权节点可以使用运行时验证以验证如上所述的非强制性计算约束被满足。在另一示例中,静态验证或分析可以被用作开发工具,以允许或不允许特定的编码构造,例如,仅允许验证某些属性的代码(例如,以上详述的非强制性计算约束)。例如,通过静态验证或分析,可以在正在运行的系统中向编写共享代码段的开发人员警告特定的共享代码段将违反如上所述的非强制性计算约束的事实。
其他示例共享代码段
共享代码段及其共享执行的其他示例如下所示,在一些情况下,使用如先前所述的类似场景以保持连续性。
图9A和图9B用示例程序代码示出了一个场景。程序代码900包括共享代码段段902、904、906、908、910、912、914、916、918。使用程序代码900的跟踪代码来说明该示例,该程序代码提供了执行记录。然而,这只是执行程序代码的一种方式。
在此示例中,存在节点Bank、Alice、Bob、Charlie和Robert。每个节点可以与参与者(其可以是人、公司或其他实体)相关联。为了便于引用,此处使用的术语是指节点而不是参与者,即使可能需要参与者来履行作为程序代码的一部分而创建的任何义务。该场景与一个人Alice有关,其希望粉刷他们的房子,并愿意借钱支付在7天内完成的工作。最初同意执行该工作的人将其义务委托给另一节点。
图10A、图10B和图10C示出了示例、共享代码段模板1002、1004、1006、1008、1010、1012、1014、1016、1018、1020、1022、1024、1026、1028、1030、1032。在该示例中,共享代码段模板是具有未定义参数的参数化代码模板的预定义段。模板cashIOU 1001是示例代码模板。可以看出,参数的类型和数量是已知的,但实际参数未在模板中指定。
因此,共享代码段是共享代码段模板,但是具有已定义和指定的代码模板中的参数。例如,程序代码902的一部分通过实例化具有参数“Bank”、“Charlie”和10000的“cashIOU”模板1001来创建“cashIOU”对象。这些参数对应于Bank节点、Charlie节点和10000个货币单位,例如,$USD 10,000。存在与该“cashIOU”对象相关联的三个共享代码段模板:“调用”1002、“转移”1004和“拆分”1006。即,“Bank”节点为被称为“Charlie”的另一节点创建cashIOU,并且该cash IOU的价值为$10,000。该代码段902在授权节点Bank和Charlie之间共享。为了执行共享代码段902,执行节点将需要来自Bank节点的授权,因为由共享代码段902激活的共享代码段(以及共享代码段模板1002、1004、1006中的相应功能)仍然显式地需要来自Charlie节点的授权,因此,即使Bank节点授权了902,也不强迫Charlie节点执行共享代码段。
在共享代码段904中,Charlie节点收取$10,000中的$1,000,然后将1000转移到被称为“Alice”的另一节点。该共享代码段904在授权节点Bank、Charlie和Alice之间共享。为了执行共享代码段904,执行节点将需要来自Bank、Charlie和Alice的授权。
请注意,在其他示例中,共享代码段904可以由多个共享代码段组成,例如,在这种情况下为两个共享代码段:其中一个涉及从$10,000中拆分$1,000;其中另一个涉及从Charlie到Alice的资金转移。拆分后的共享代码段将由Charlie和Bank授权,因此需要来自Charlie和Bank的授权。转移后的代码段将由Charlie和Alice授权,因此需要来自Charlie和Alice的授权。
在这种情况下,由于Bank创建了具有拆分功能(参见1006)的CashIOU(在代码902中),Charlie对先前获得的cashIOU进行拆分由Bank授权。因此,Bank隐式授权Charlie执行拆分CashIOU(尽管在其他示例中,拆分CashIOU可能需要显式授权)。如果Bank未授权Charlie执行拆分,则Bank将不会向Charlie提供该功能,并且Bank可以使用与具有拆分功能1006的代码模板1001中提供的代码模板不同的代码模板。
在共享代码段906中,Bob节点愿意以$1,000的价格粉刷属于Alice节点的房屋,该节点位于美国新泽西州普林斯顿。该共享代码段实例化代码模板1009。请注意,在该示例中,Bob节点是计算机,并且实际上无法自己粉刷房屋,但是Bob可以由能够粉刷房屋的名为Bob的参与者操作。结果是,共享代码段906是代表节点的承诺的数据和代码,而不是实际动作本身。该代码段906在授权节点Bob和Alice之间共享。为了执行共享代码段906,执行节点将仅需要来自Bob的显式授权,因为由共享代码段906激活的代码段(以及代码段模板1010、1010b、1010c中的相应功能)仍然显式地需要Alice的授权或不影响Alice(1010c),因此,即使Bob单独授权906,也不强迫Alice执行共享代码段。
在共享代码段908中,Alice节点接受Bob的提议以粉刷房屋。如果房屋已经被粉刷,共享代码段附加地向爱丽丝建立付款。该共享代码段908对应于代码模板1009中的接受功能1010,该代码模板在该示例中被实例化以在Alice和Bob之间共享。然后,类似于共享代码段906,为了执行共享代码段908,执行节点将需要来自Bob和Alice的授权。
在共享代码段910中,Bob节点提议将工作委托给被称为Robert的另一节点。当Alice和Bob之间达成让Bob粉刷Alice的房子的协议时,共享代码段模板1010引用代码模板1011,其是用于房屋粉刷的代码模板。相关地,该代码模板1011包含供粉刷者委托给另一粉刷者的功能(参见共享代码段模板1014)。在共享代码段910中,Bob提议委托给Robert。委托代码模板1014引用代码模板1017,该代码模板1017是用于提议委托粉刷房子的模板。类似地,用相关参数实例化该代码模板,在这种情况下,该共享代码段910在Alice和Bob之间共享。仅引用Robert,而不共享该共享代码段。为了执行共享代码段910,执行节点将需要来自Bob的显式授权。Alice不需要显式授权910,因为由共享代码段910激活的共享代码段(以及共享代码段模板1018、1020、1022中的相应功能)仍然显式地需要Alice的授权或(通过1022)引回到已经由Alice授权的共享代码段(1022引向1012和1014),因此即使Bob单独授权910,也不强迫Alice执行与先前已经授权的共享代码段不同的共享代码段。
Alice接受在共享代码段912中的委托粉刷工作的提议,这是代码模板1018上的实例化的接受功能。接受功能引用代码模板1023,该代码模板1023创建供委托方接受的报价(offer)(参见共享代码段模板1024)。Robert还接受共享代码段914中的提议,这是代码模板1023上的接受功能的实例化版本。接受代码段模板引用代码模板1029,代码模板1029为房屋粉刷创建报价,房屋粉刷可以由老油漆匠完成。
Bob通过行使最终化委托(其是共享代码段模板1030的实例化版本)接受共享代码段916中的提议,并将房子粉刷的义务提供给Robert,同时还将先前从Alice接收到的付款转移给Robert。为了执行共享代码段916,执行节点需要来自Bob的显式授权,因为Alice和Robert已经向Bob提供了他们的授权,以便在他们先前的授权中采用该选项(Alice在共享代码段912中,而Robert在共享代码段914中)。
在共享代码段918中,Alice接受委托并最终达成协议,以使义务无法进一步委托,这是共享代码段模板1012的实例化版本。Alice是该共享代码段的唯一授权节点。为了执行共享代码段918,执行节点将只需要来自Alice的授权,因为Robert在授权代码段914时已经接受了Alice具有该选项。
当执行节点开始执行程序代码900时,执行节点将为每个代码段考虑授权节点,并确保接收到适当的授权以执行代码段。
上面隐式地,所有共享代码段的执行都满足共享授权条件以及共享执行和执行路径条件,如以上更全面地详细描述。换句话说,以上示例中所有共享代码段的执行均满足强制执行条件,并且不将任何节点置于未授权执行状态。
外部计算的示例
图11示出了与图1相似的示例,但是涉及外部计算。在该示例中,存在附加的共享代码段148(在图10中被称为V),其需要来自共享系统100外部的计算机160的输出。在该示例中,计算机160可以提供外部计算,但是可以由不是共享系统100一部分的任何实体(例如,单一计算机、多个计算机或网络)执行外部计算。
在该示例中,授权节点106具有对提供给计算机160的授权输入和输出的控制,并提供与共享系统100的接口。如果执行节点104正在执行代码段148,则为了向计算机160提供授权输入并将授权输出返回到执行节点104,执行节点104将推迟到授权节点106。
图12紧接图11中的示例,并且示出了授权节点和执行节点如何交互。授权节点102和106初始地将控制交给执行节点104,以执行从代码段142开始的程序代码130。授权节点102是共享代码段144的授权节点,因此授权节点102可以在授权执行共享代码段142的同时抢先授权执行共享代码段144。授权节点106是所有四个共享代码段142、144、146和148的授权节点,并且类似地,授权节点106可以同时授权执行共享代码段。
在该示例中,执行节点104也是共享代码段144和146的授权节点。在每种情况下,执行节点检查以确保已经从该节点接收到适当的授权,这可以将模式切换到授权节点104以提供授权。备选地,执行节点104可以隐式授权共享代码段,而不必切换模式。
在该示例中,在执行节点104正在执行共享代码段148期间或之前,授权节点106处理与来自计算机160的外部计算有关的I/O。如图12所示,存在同步I/O的进程,以确保它已经按照共享代码段148中指定的方式发生。对于与来自计算机160的外部计算有关的I/O的同步,存在至少两种可能的备选方案。首先是,在执行共享代码段148之前,I/O已同步,如实箭头所示。备选地,如虚线箭头所示,I/O在授权节点106将控制交给执行节点104以执行共享代码段的同时被同步。在任何一种情况下,在执行共享代码段148之前,I/O被同步,以防止阻塞在没有I/O的执行节点上继续执行代码,因为I/O由授权节点提供。
在该示例中,当共享代码段148产生输出数据作为I/O的一部分时,该I/O数据仍然可以在之前被提供,因为它可以由授权节点106基于节点106打算提供的授权输入数据来预先计算。然后,执行节点104将针对代码段148的执行来验证所提供的授权输出和输出数据。
共享代码段1002中示出了I/O的示例性实施方式,其中,共享代码段1002的执行实例化代码模板1000,这导致“协议”功能,在这种情况下,该功能创建I/O输出文本,该文本涉及在该代码模板中被指定为债务人和所有者的授权节点。
重写共享代码段的示例
图13是示出重写的示例。在该示例中,当Charlie节点请求执行共享代码段1304时,用共享代码段1306重写共享代码段1302、1302b、1302c。如上所述,在这种情况下重写并不意味着替换共享代码段,而是新的共享代码段1306覆盖或取代旧的共享代码段1302、1302b、1302c。可以通过将新的共享代码段添加到分布式分类账来重写共享代码段,其中,新的共享代码段覆盖旧的共享代码段。
新的共享代码段1306包括用于向给定帐户支付的最终协议,该协议可以被解释为在执行节点和旧的共享代码段1302、1302b、1302c的示例性实施方式内的I/O状态仅包含对具有未定义参数的参数化代码模板的引用。这是共享代码段1304的功能的本质,其使共享代码段1302变得多余。
如果“等待中”已经被用于1302、1302b、1302c的定义,则不会发生重写,因为共享的代码段1302、1302b、1302c仍然是有效可用的。“等待中”功能可以允许创建新的共享代码段,例如,1306,但保持旧的共享代码段1302、1302b、1302c的有效性。因此,新的共享代码段1306是有效的,并且现有的共享代码段1302、1302b、1302c也保持有效。这将重写,除非一个或多个新的共享代码段不覆盖或替代一个或多个旧的共享代码段。
作为执行1304并将共享代码段1302、1302b、1302c重写为共享代码段1306的结果,共享代码段1302、1302b、1302c不再是有效的共享代码段。如果Charlie节点希望转移或拆分现金,则该操作将失败并且无法执行。
在该示例中,重写共享代码段1302、1302b、1302c包括重写整个共享代码段,并且实际上用共享代码段1306替换整个共享代码段1302、1302b、1302c。在其他示例中,重写还可以包括向现有数据对象提供一个或多个修改后的参数,其中,在Charlie向Alice赠予现金结算协议的情况下,参数可以被重写为Bank和Alice而不是Bank和Charlie。
图14示出了示例节点。图14所示的节点102包括处理器1402、存储器1403、网络接口设备1408、与分布式分类账152对接的分布式分类账接口设备1409和用户接口1410。存储器存储指令1404和数据1406,并且处理器执行来自存储器的指令以实现如图1至图13所述的过程。
处理器1402执行存储在存储器1403上的指令。处理器1402接收用户(例如,参与者1416)的输入。处理器1402基于记录在分布式分类账152中的当前执行状态确定指令。该指令可以是要执行的功能。处理器3102可以执行存储在程序代码1404中的指令以向用户1416指示任何输出或结果。
本领域技术人员将理解,在不脱离本公开的广泛总体范围的前提下,可以对上述实施例进行各种变化和/或修改。所提出的实施例因此在所有方面应被视为说明性的而不是限制性的。

Claims (15)

1.一种用于分布式共享执行一个或多个共享进程的计算机系统,包括:
用于所述一个或多个共享进程的第一程序代码,所述第一程序代码包括在第一授权节点和第二授权节点之间共享的一个或多个共享代码段,其中,所述一个或多个共享代码段能够由一个或多个执行节点执行;
分布式分类账,提供所述第一程序代码的有效代码段的记录、以及授权执行或委托执行所述一个或多个共享代码段所需的一个或多个授权节点的记录;以及
第二程序代码,包括指令,所述指令在由所述第一授权节点和/或第二授权节点执行时,验证所述一个或多个共享代码段的预期执行结果是否满足共享授权条件,并且如果满足,则授权所述一个或多个执行节点执行所述一个或多个共享代码段。
2.根据权利要求1所述的计算机系统,其中,指定的共享代码段的授权节点或执行节点中的任何一个都被配置为查询所述系统,以识别授权执行或委托执行所述指定的共享代码段所需的授权节点。
3.根据权利要求1或2所述的计算机系统,其中,所述共享授权条件要求所述一个或多个共享代码段的所有预期执行结果由所述第一授权节点和/或第二授权节点进行加密授权,其中,所述预期执行结果的加密授权包括对所述一个或多个共享代码段的预期执行结果的显式或隐式加密授权。
4.根据权利要求3所述的计算机系统,其中,对所述一个或多个共享代码段的预期执行结果的显式加密授权包括:如果满足所述共享授权条件,则作为所述第二程序代码的一部分,所述第一授权节点和/或第二授权节点对所述预期执行结果的至少一部分进行加密签名。
5.根据权利要求4所述的计算机系统,其中,如果满足所述共享授权条件,则作为所述第二程序代码的一部分,所述第一授权节点和/或第二授权节点对交易有效载荷进行加密签名,所述交易有效载荷被配置为使状态转换在所述分布式分类账上发生。
6.根据权利要求3所述的计算机系统,其中,对所述一个或多个共享代码段的预期执行结果的隐式加密授权包括:如果满足所述共享授权条件,则作为所述第二程序代码的一部分,所述第一授权节点和/或第二授权节点使用来自一个或多个委托或承诺节点的委托或承诺授权来授权所述一个或多个共享代码段的执行。
7.根据权利要求6所述的计算机系统,其中,所述委托或承诺授权包括:所述一个或多个委托或承诺节点对先前执行的共享代码段的执行进行加密授权。
8.根据权利要求7所述的计算机系统,其中,对所述先前执行的共享代码段的执行进行加密授权包括:所述一个或多个委托或承诺节点对所述先前执行的共享代码段的预期执行结果的至少一部分进行加密签名。
9.一种用于共享执行一个或多个共享进程的计算机实现的方法,包括:
授权一个或多个共享代码段,所述一个或多个共享代码段形成用于所述一个或多个共享进程的程序代码的至少一部分,所述共享代码段在第一授权节点和第二授权节点之间共享,其中,所述一个或多个共享代码段能够由一个或多个执行节点执行;
查询分布式分类账以识别授权执行或委托执行所述一个或多个共享代码段所需的授权节点;
验证所述一个或多个共享代码段的预期执行结果是否满足共享授权条件,并且如果满足,则授权所述一个或多个执行节点执行所述一个或多个共享代码段;
执行所验证的共享代码段;以及
在分布式分类账上记录所述程序代码的共享代码段的执行。
10.根据权利要求9所述的方法,还包括:
在所述分布式分类账上记录所述程序代码的经验证的共享代码段。
11.根据权利要求9或10所述的方法,还包括:作为验证所述共享授权条件的一部分,验证源于所述一个或多个共享代码段的执行的任何可能的执行结果满足共享执行条件。
12.根据权利要求11所述的方法,还包括:作为验证所述共享授权条件的一部分,验证任何委托授权都能够追溯到通过先前的交易提议请求而请求了所述委托授权的委托节点。
13.根据权利要求11所述的方法,还包括:作为验证所述共享授权条件的一部分,验证任何承诺授权都能够追溯到通过先前的交易提议请求而请求了所述承诺授权的承诺节点。
14.根据权利要求11所述的方法,还包括:作为验证所述共享执行条件的一部分,验证任何可能的执行结果满足共享执行路径条件,所述任何可能的执行结果源于通过所述一个或多个共享代码段的执行而被创建、被激活或被执行的任何代码段的执行。
15.根据权利要求14所述的方法,还包括:作为验证所述共享执行路径条件的一部分,验证任何可能的执行结果都能够追溯到来自授权节点的加密授权,所述任何可能的执行结果源于所述被创建、被激活或被执行的代码段的执行,其中,所述共享执行路径条件要求存在至少一个执行路径。
CN201880070221.2A 2017-10-27 2018-10-26 用于一个或多个进程的分布式隐私保护共享执行的计算机系统和方法 Active CN111295655B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110919469.5A CN113609477A (zh) 2017-10-27 2018-10-26 用于一个或多个进程的分布式隐私保护共享执行的计算机系统和方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2017904367A AU2017904367A0 (en) 2017-10-27 Computer system and method for shared execution of one or more processes
AU2017904367 2017-10-27
PCT/IB2018/058375 WO2019082142A1 (en) 2017-10-27 2018-10-26 COMPUTER SYSTEM AND METHOD FOR SHARED EXECUTION PRESERVING CONFIDENTIALITY DISTRIBUTED FROM AT LEAST ONE PROCESS

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202110919469.5A Division CN113609477A (zh) 2017-10-27 2018-10-26 用于一个或多个进程的分布式隐私保护共享执行的计算机系统和方法

Publications (2)

Publication Number Publication Date
CN111295655A CN111295655A (zh) 2020-06-16
CN111295655B true CN111295655B (zh) 2021-08-31

Family

ID=64277743

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110919469.5A Pending CN113609477A (zh) 2017-10-27 2018-10-26 用于一个或多个进程的分布式隐私保护共享执行的计算机系统和方法
CN201880070221.2A Active CN111295655B (zh) 2017-10-27 2018-10-26 用于一个或多个进程的分布式隐私保护共享执行的计算机系统和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202110919469.5A Pending CN113609477A (zh) 2017-10-27 2018-10-26 用于一个或多个进程的分布式隐私保护共享执行的计算机系统和方法

Country Status (4)

Country Link
US (3) US10979229B2 (zh)
EP (4) EP4280531A3 (zh)
CN (2) CN113609477A (zh)
WO (1) WO2019082142A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2018278351A1 (en) 2017-06-01 2020-01-23 Schvey, Inc. d/b/a/ Axoni Distributed privately subspaced blockchain data structures with secure access restriction management
CN113196270A (zh) 2018-10-19 2021-07-30 数字资产(瑞士)股份有限公司 隐私保护验证和提交架构
US20200387627A1 (en) * 2019-06-04 2020-12-10 Digital Asset Holdings, LLC Multi-user database system and method
EP3682340A4 (en) 2019-09-12 2020-12-02 Advanced New Technologies Co., Ltd. LOG-STRUCTURED STORAGE SYSTEMS
EP3673376B1 (en) * 2019-09-12 2022-11-30 Advanced New Technologies Co., Ltd. Log-structured storage systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017167547A1 (en) * 2016-03-30 2017-10-05 British Telecommunications Public Limited Company Cryptocurrencies malware based detection
EP3226165B1 (en) * 2016-03-28 2019-04-24 Accenture Global Solutions Limited Secure 3d model sharing using distributed ledger

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7519826B2 (en) * 2003-10-01 2009-04-14 Engedi Technologies, Inc. Near real-time multi-party task authorization access control
FR2864655B1 (fr) * 2003-12-31 2006-03-24 Trusted Logic Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution
US7793333B2 (en) * 2005-06-13 2010-09-07 International Business Machines Corporation Mobile authorization using policy based access control
KR20110081966A (ko) * 2008-09-17 2011-07-15 인터내셔널 비지네스 머신즈 코포레이션 서버 동작의 인가 장치, 시스템 및 컴퓨터 프로그램
US8645923B1 (en) * 2008-10-31 2014-02-04 Symantec Corporation Enforcing expected control flow in program execution
US20120066551A1 (en) * 2010-09-15 2012-03-15 Alexandre Palus Run-time Verification of CPU Operation
BR112013021059A2 (pt) 2011-02-16 2020-10-27 Visa International Service Association sistemas, métodos e aparelhos de pagamento móvel por snap
US9027124B2 (en) * 2011-09-06 2015-05-05 Broadcom Corporation System for monitoring an operation of a device
US8955114B2 (en) * 2011-12-14 2015-02-10 Microsoft Corporation Application monitoring through collective record and replay
US20140149286A1 (en) * 2012-11-29 2014-05-29 Ncr Corporation Transaction Execution
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
US9436923B1 (en) * 2015-02-26 2016-09-06 Skuchain, Inc. Tracking unitization occurring in a supply chain
US9967333B2 (en) * 2015-03-02 2018-05-08 Dell Products Lp Deferred configuration or instruction execution using a secure distributed transaction ledger
US9967334B2 (en) * 2015-03-02 2018-05-08 Dell Products Lp Computing device configuration and management using a secure decentralized transaction ledger
US11023968B2 (en) * 2015-03-05 2021-06-01 Goldman Sachs & Co. LLC Systems and methods for updating a distributed ledger based on partial validations of transactions
WO2016166612A2 (en) * 2015-04-16 2016-10-20 LACEY, Stuart, H. Systems and methods for electronically sharing private documents using pointers
US10402792B2 (en) * 2015-08-13 2019-09-03 The Toronto-Dominion Bank Systems and method for tracking enterprise events using hybrid public-private blockchain ledgers
US9992028B2 (en) * 2015-11-26 2018-06-05 International Business Machines Corporation System, method, and computer program product for privacy-preserving transaction validation mechanisms for smart contracts that are included in a ledger
US10013573B2 (en) * 2015-12-16 2018-07-03 International Business Machines Corporation Personal ledger blockchain
US20170243209A1 (en) * 2016-02-22 2017-08-24 Bank Of America Corporation System for grant of user access and data usage in a process data network
WO2017145006A1 (en) * 2016-02-23 2017-08-31 nChain Holdings Limited Agent-based turing complete transactions integrating feedback within a blockchain system
US10346406B2 (en) * 2016-03-28 2019-07-09 International Business Machines Corporation Decentralized autonomous edge compute coordinated by smart contract on a blockchain
US10534913B2 (en) * 2016-03-30 2020-01-14 British Telecommunications Public Limited Company Blockchain state reliability determination
SG11201808657TA (en) * 2016-04-01 2018-10-30 Jpmorgan Chase Bank Na Systems and methods for providing data privacy in a private distributed ledger
US10720232B2 (en) * 2016-04-13 2020-07-21 Accenture Global Solutions Limited Distributed healthcare records management
US10803537B2 (en) * 2016-04-18 2020-10-13 R3 Ltd. System and method for managing transactions in dynamic digital documents
AU2017296038B2 (en) 2016-07-14 2022-11-24 Digital Asset (Switzerland) GmbH Digital asset architecture
CN106682530A (zh) 2017-01-10 2017-05-17 杭州电子科技大学 一种基于区块链技术的医疗信息共享隐私保护方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3226165B1 (en) * 2016-03-28 2019-04-24 Accenture Global Solutions Limited Secure 3d model sharing using distributed ledger
WO2017167547A1 (en) * 2016-03-30 2017-10-05 British Telecommunications Public Limited Company Cryptocurrencies malware based detection

Also Published As

Publication number Publication date
EP3979110A1 (en) 2022-04-06
EP3702950A1 (en) 2020-09-02
US20210176069A1 (en) 2021-06-10
US20200127841A1 (en) 2020-04-23
US20230421380A1 (en) 2023-12-28
EP3529732B1 (en) 2020-02-19
EP4280531A3 (en) 2024-02-07
WO2019082142A1 (en) 2019-05-02
EP3979110B1 (en) 2023-11-01
US10979229B2 (en) 2021-04-13
US11743050B2 (en) 2023-08-29
CN111295655A (zh) 2020-06-16
EP3529732A1 (en) 2019-08-28
CN113609477A (zh) 2021-11-05
EP3702950B1 (en) 2021-12-01
EP4280531A2 (en) 2023-11-22

Similar Documents

Publication Publication Date Title
CN111295655B (zh) 用于一个或多个进程的分布式隐私保护共享执行的计算机系统和方法
KR102636102B1 (ko) 블록체인 기반의 암호화폐를 위한 토큰을 검증하는 컴퓨터로 구현된 방법 및 시스템
US20210243193A1 (en) Systems, methods, and apparatuses for implementing consensus on read via a consensus on write smart contract trigger for a distributed ledger technology (dlt) platform
US20190236562A1 (en) Systems, methods, and apparatuses for implementing document interface and collaboration using quipchain in a cloud based computing environment
US20190238525A1 (en) Systems, methods, and apparatuses for implementing super community and community sidechains with consent management for distributed ledger technologies in a cloud based computing environment
US20190238316A1 (en) Systems, methods, and apparatuses for implementing intelligent consensus, smart consensus, and weighted consensus models for distributed ledger technologies in a cloud based computing environment
US20190236606A1 (en) Systems, methods, and apparatuses for implementing a virtual chain model for distributed ledger technologies in a cloud based computing environment
US6715077B1 (en) System and method to support varying maximum cryptographic strength for common data security architecture (CDSA) applications
AU776027B2 (en) Method and system for enforcing access to a computing resource using a licensing attribute certificate
US20190236559A1 (en) Systems, methods, and apparatuses for implementing smart flow contracts using distributed ledger technologies in a cloud based computing environment
AU2021201672B2 (en) Computer system and method for distributed privacy-preserving shared execution of one or more processes
CN114008971A (zh) 将分散标识符绑定到已验证声明
Bergquist Blockchain technology and smart contracts: privacy-preserving tools
US20220141014A1 (en) Storing secret data on a blockchain
CN113261253A (zh) 用于控制资源的释放的方法和系统
EP3472720B1 (en) Digital asset architecture
US11283623B1 (en) Systems and methods of using group functions certificate extension
US20240046258A1 (en) Group payment accounts
Geethanjali et al. Smart Contract for Digital Garment Design using Blockchain and Digital Right Management

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
GR01 Patent grant
GR01 Patent grant