CN111417946B - 基于区块链的共识处理 - Google Patents
基于区块链的共识处理 Download PDFInfo
- Publication number
- CN111417946B CN111417946B CN202080000599.2A CN202080000599A CN111417946B CN 111417946 B CN111417946 B CN 111417946B CN 202080000599 A CN202080000599 A CN 202080000599A CN 111417946 B CN111417946 B CN 111417946B
- Authority
- CN
- China
- Prior art keywords
- consensus
- smart contract
- nodes
- blockchain
- contract
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- 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/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/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
- H04L9/3239—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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
- H04L2209/463—Electronic voting
-
- 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/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using 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/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)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本文公开了用于具有增强的安全性的基于区块链的共识处理的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。所述方法之一包括:在第一区块链上执行第一智能合约,第一智能合约包括用于实现具有多个阶段的第一处理的代码,阶段之一包括在第二区块链上执行共识智能合约。执行共识智能合约包括执行用于实现共识处理的代码,共识处理用于根据一组一个或多个共识规则来确定两个或更多个共识节点之间的共识,共识智能合约包括关于每个共识节点的联系方法的信息,共识智能合约包括公钥。与公钥对应的共识智能合约的私钥被存储在与第二区块链关联的密钥管理系统中。共识智能合约使用私钥对请求投票的消息进行数字签名,然后向两个或更多个共识节点发送经数字签名的消息。共识智能合约的公钥使得共识节点验证从共识智能合约发送的消息。将共识智能合约的执行结果记录在第一或第二区块链中。
Description
技术领域
本文涉及具有增强的安全性的基于区块链的共识处理。
背景技术
分布式账本系统(DLS),也可以被称为共识网络和/或区块链网络,使得参与的实体能够安全地并且不可篡改地存储数据。在不引用任何特定用例的情况下,DLS通常被称为区块链网络。区块链网络的类型的示例可以包括公有区块链网络、私有区块链网络和联盟区块链网络。联盟区块链网络针对选择的实体组群提供,该实体组群控制共识处理,并且联盟区块链网络包括访问控制层。为了达成共识(例如,同意将区块添加到区块链),在联盟区块链网络内实现共识协议。例如,联盟区块链网络可以实现实用拜占庭容错(PBFT)共识。
当多方参与一个项目时,各方可能需要就某些问题达成协议,然后才能完成该项目。例如,参与方可以起草合同,指定某些文档需要在项目的特定阶段由特定方批准。在一些示例中,将文档手动发送给需要提供批准的各方。每次有一个新项目时,都会起草一份新合同,该新合同可能会再次指定某些文档需要在项目的特定阶段由特定方批准。
希望有一种机制,在各方达成共识的方式上提供灵活性,并在共识处理中提供增强的安全性。
发明内容
所描述的主题的实施例可以单独或组合地包括一个或多个特征。
例如,在一个实施例中,提供了一种计算机实现的、用于实现包括确定多个共识节点之间的共识的处理的方法。该方法包括:提供多个处理智能合约,其中,每个处理智能合约被配置为执行于第一区块链上,每个处理智能合约包括用于实现包括两个或更多步骤的处理的代码,所述步骤中的至少一个涉及确定就是否批准或拒绝项目是否达成共识,以及所述步骤中的至少一个涉及基于确定是否达成共识来执行动作;提供多个共识智能合约,其中,每个共识智能合约被配置为执行于第二区块链上,每个共识智能合约包括用于实现处理的代码,该处理根据一个或多个共识规则确定多个共识节点之间的共识,每个共识智能合约包括公钥,其中,对应于所述公钥的共识智能合约的私钥被存储在与所述第二区块链相关联的密钥管理系统中,所述第一区块链和所述第二区块链可以是相同的区块链或是不同的区块链;执行两个或更多个处理智能合约,包括对于每个处理智能合约,调用一个或多个共识智能合约,其中,每个共识智能合约被配置为确定在多个共识节点之间是否达成共识,同一共识智能合约被多个处理智能合约调用;其中,所述共识智能合约使用所述共识智能合约的私钥对用于请求是否批准或拒绝项目的投票的消息进行数字签名,并向所述多个共识节点发送经数字签名的消息,其中,所述共识智能合约的公钥使得所述共识节点能够验证从所述共识智能合约发送的消息,以及基于确定是否达成共识的结果来执行动作。
在一些实施例中,可以使用系统、方法或计算机程序或者系统、方法和计算机程序的任何组合来实现这些一般和特定方面。前述和其他描述的实施例可以各自可选地包括以下一个或多个方面:
在一些实施例中,所述共识智能合约中的至少一个共识智能合约包括共识规则,所述共识规则指定基于与所述共识节点相关联的投票的统计函数,在一组共识节点之间达成共识,所述统计函数被配置为使得在获得来自少于该组共识节点中所有共识节点的投票之后,达成所述共识。
在一些实施例中,所述共识规则指定如果给予批准投票的所述共识节点的百分比大于预定百分比值,则在该组共识节点之间达成共识。
在一些实施例中,所述共识智能合约中的至少一个共识智能合约包括共识规则,所述共识规则指定在共识节点接收到批准请求之后,如果所述共识节点在预定时间段内未做出响应,则所述共识节点被视为已给予批准投票。
在一些实施例中,所述共识智能合约中的至少一个共识智能合约包括共识规则,所述共识规则指定在共识节点接收到批准请求之后,如果所述共识节点在预定时间段内未做出响应,则所述共识节点被视为弃权投票。
在一些实施例中,所述共识智能合约中的至少一个共识智能合约指定以下中至少一项:(i)所述共识智能合约有效并且可以被处理智能合约调用的情况,或者(ii)所述共识智能合约无效并且不能被处理智能合约调用的情况。
在一些实施例中,每个共识智能合约指定以下中至少一项:(i)所述共识智能合约有效并且可以被处理智能合约调用的第一时间段,其中,在所述第一时间段之外,所述共识智能合约无效并且不能被处理智能合约调用,或者(ii)所述共识智能合约有效并且可以被处理智能合约调用的区块链的第一区块高度范围,其中,在所述区块链的第一区块高度范围之外,所述共识智能合约无效并且不能被处理智能合约调用。
在一些实施例中,所述共识智能合约中的至少一个共识智能合约包括共识规则,所述共识规则指定从第一组共识节点寻求关于是否批准或拒绝项目的共识,并且如果从所述第一组共识节点不能获得共识,则从第二组共识节点寻求关于是否批准或拒绝该项目的共识。
在一些实施例中,每个共识智能合约为每个所述共识节点指定联系方法,并且在执行时,所述共识智能合约使用与所述共识节点相关联的联系方法向每个共识节点发送用于批准该项目的请求。
在一些实施例中,至少一个共识智能合约被配置为接受参数列表,所述参数列表指定哪些共识节点需要参与共识处理,并且执行所述处理智能合约包括从所述处理智能合约向所述共识智能合传递作为参数的共识节点列表。
在另一实施例中,一种计算机实现的方法包括:在第一区块链上执行第一智能合约,其中,所述第一智能合约包括用于实现具有多个阶段的第一处理的代码,所述阶段之一包括在第二区块链上执行共识智能合约,其中,所述第一区块链和所述第二区块链相同或不同,执行所述共识智能合约包括执行用于实现共识处理的代码,该共识处理用于根据一组一个或多个共识规则来确定两个或更多个共识节点之间的共识,所述共识智能合约包括关于所述共识节点中每个的联系方法的信息,所述共识智能合约包括公钥,与所述公钥对应的所述共识智能合约的私钥被存储在与所述第二区块链相关联的密钥管理系统中;其中,所述共识智能合约使用所述共识智能合约的私钥来对请求投票的消息进行数字签名,并向所述两个或更多个共识节点发送经数字签名的消息,其中,所述共识智能合约的公钥使得所述共识节点能够验证从所述共识智能合约发送的消息;以及将所述共识智能合约的执行结果记录在第一区块链或第二区块链中。
在一些实施例中,可以使用系统、方法或计算机程序或者系统、方法和计算机程序的任何组合来实现这些一般和特定方面。前述和其他描述的实施例可以各自可选地包括以下一个或多个方面:
在一些实施例中,该组一个或多个共识规则指定基于与所述共识节点相关联的投票的统计函数来达成共识,所述统计函数被配置为使得在获得来自少于所有的所述共识节点的投票之后达成共识。
在一些实施例中,该组一个或多个共识规则指定如果给予批准投票的共识节点的百分比大于预定百分比值,则达成共识。
在一些实施例中,该组一个或多个共识规则指定在共识节点接收到批准请求之后,如果所述共识节点在预定时间内未做出响应,则所述共识节点被视为已给予批准投票。
在一些实施例中,该组一个或多个共识规则指定在共识节点接收到批准请求之后,如果所述共识节点在预定时间内未做出响应,则所述共识节点被视为弃权投票。
在一些实施例中,所述共识智能合约指定以下中至少一项:(i)所述共识智能合约有效并且可以被所述第一智能合约调用的情况,或者(ii)所述共识智能合约无效并且不能被所述第一智能合约调用的情况。
在一些实施例中,所述共识智能合约指定以下中至少一项:(i)所述共识智能合约有效并且可以被所述第一智能合约调用的时间段,或者(ii)所述共识智能合约有效并且可以被所述第一智能合约调用的区块链的区块高度范围。
在一些实施例中,该组一个或多个共识规则指定从第一组共识节点寻求关于是否批准或拒绝项目的共识,并且如果不能从所述第一组共识节点获得共识,则从第二组共识节点寻求关于是否批准或拒绝该项目的共识。
在一些实施例中,所述共识智能合约被配置为接受参数列表,该参数列表指定哪些共识节点需要参与所述共识处理,并且执行所述第一智能合约包括从所述第一智能合约向所述共识智能合约传递作为参数的共识节点列表。
应当理解的是,根据本文的方法可包括本文描述的方面和特征的任何组合。也就是说,根据本文的方法不限于本文具体描述的方面和特征的组合,还包括所提供的方面和特征的任何组合。
在附图和以下描述中阐述了本文的一个或多个实施例的细节。根据说明书和附图以及权利要求书,本文的其他特征和优点将显现。
附图说明
图1是示出可用于执行本文实施例的环境的示例的图。
图2是示出根据本文实施例的架构的示例的图。
图3是基于区块链的处理平台的示例的图,该基于区块链的处理平台使用户能够管理有助于实现与用户的项目相关联的处理的智能合约。
图4是共识智能合约的数据结构以及共识智能合约和处理智能合约之间的关系的示例的图。
图5是共识智能合约的数据结构的示例的图。
图6是智能合约的示例的图。
图7是处理智能合约和共识智能合约的操作的示例的图。
图8和9是用于实现包括确定多个共识节点之间的共识的处理的处理示例的流程图。
图10和图11描绘了根据本文实施例的装置的模块的示例。
各附图中相似的附图标记和名称表示相似的元件。
具体实施方式
本文描述了用于实现有效管理智能合约的技术,这些技术结合了指定多方应如何达成共识的共识规则。可以实现各自具有不同共识逻辑的多种类型的共识规则,并且一些共识规则可能涉及新颖和/或复杂的函数。这些技术通常涉及第一类智能合约(称为处理智能合约),其包括用于实施处理的代码,例如多方之间的一系列商业交易。第二类智能合约(称为共识智能合约)包括用于根据表示为一个或多个共识规则的共识逻辑来实现共识处理的代码。可以将相同的共识智能合约(consensus smart contract)合并到多个处理智能合约(process smart contract)或处理智能合约的多个部分中。通过更新共识智能合约中的共识规则,包含共识智能合约的所有处理智能合约也可被更新。在一些实施方式中,每个共识智能合约包括公钥,所述公钥被共识节点用于向共识智能合约安全地发送投票,其中,与公钥对应的私钥被存储在与区块链相关联的密钥管理系统中。
本文中描述的技术产生若干技术效果。共识智能合约可实现基于区块链的在线交易,这些交易需要多方达成共识才能以增强的安全性、灵活性和效率来实现。使用与处理智能合约分离的共识智能合约,可以更准确地维护关于需要批准(approve)交易的各参与方的信息,从而降低了由于达成共识所需的关于各参与方的信息过时,而导致错误的各参与方被要求批准交易的安全风险。因为投票是使用加密消息从共识节点传输到共识智能合约的,所以可以降低投票被篡改的风险。通过使得共识规则结合(incorporate)函数,可以基于在编写处理智能合约和共识智能合约之后获得的信息来实现共识处理。通过更新少量可重复使用的共识智能合约中的信息,可以高效且准确地执行管理大量(例如,数千或数百万)的共识规则或处理智能合约。在一些示例中,共识智能合约模板可以组合到工具包或库中,共识智能合约模板在其中形成“构建块”,可以将该“构建块”单独组合以为应用提供量身定制的解决方案。共识方的投票或批准结果记录在区块链中,并可由所有的参与方验证。
为本文实施例提供进一步的背景,并且如上所述,分布式账本系统(DLS),又可称为共识网络(例如,由点对点节点组成)和区块链网络,使参与的实体能够安全地、不可篡改地进行交易和存储数据。尽管术语“区块链”通常与特定网络和/或用例相关联,但是在不参考任何特定用例的情况下,本文使用的“区块链”一般指代DLS。
区块链是以交易不可篡改的方式存储交易的数据结构。因此,记录在区块链上的交易是可靠且可信的。区块链包括一个或多个区块。链中的每个区块通过包括在链中紧邻其之前的前一区块的加密哈希值(cryptographic hash)链接到该前一区块。每个区块还包括时间戳、自身的加密哈希值以及一个或多个交易。已经被区块链网络中的节点验证的交易经哈希处理并编入默克尔(Merkle)树中。Merkle树是一种数据结构,在该树的叶节点处的数据经哈希处理,并且在该树的每个分支中的所有哈希值在该分支的根处级联(concatenated)。此处理沿着树持续一直到整个树的根,在整个树的根处存储了代表树中所有数据的哈希值。通过确定哈希值是否与树的结构一致而可快速验证该哈希值是否为存储在该树中的交易的哈希值。
区块链是用于存储交易的去中心化或至少部分去中心化的数据结构,而区块链网络是通过广播、验证和确认交易等来管理、更新和维护一个或多个区块链的计算节点的网络。如上所述,区块链网络可作为公有区块链网络、私有区块链网络或联盟区块链网络被提供。本文参考联盟区块链网络更详细地描述了本文的实施例。然而,可以预期,本文的实施例可以在任何适当类型的区块链网络中实现。
通常,联盟区块链网络在参与实体间是私有的。在联盟区块链网络中,共识处理由可被称为共识节点的授权的节点集控制,一个或多个共识节点由相应的实体(例如,金融机构、保险公司)操作。例如,由10个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体操作联盟区块链网络中的至少一个节点。
在一些示例中,在联盟区块链网络内,全局区块链被提供为跨所有节点复制的区块链。也就是说,所有共识节点相对于全局区块链处于完全状态共识。为了达成共识(例如,同意将区块添加到区块链),在联盟区块链网络内实现共识协议。例如,联盟区块链网络可以实现实用拜占庭容错(PBFT)共识,下面将进一步详细描述。
图1是示出了可用于执行本文实施例的环境100的示例的图。在一些示例中,环境100使得实体能够参与至联盟区块链网络102中。环境100包括计算系统106、108和网络110。在一些示例中,网络110包括局域网(LAN)、广域网(WAN)、因特网或其组合,并且连接网站、用户设备(例如,计算设备)和后台系统。在一些示例中,可以通过有线和/或无线通信链路访问网络110。在一些示例中,网络110使得能够与联盟区块链网络102通信以及能够在联盟区块链网络102内通信。通常,网络110表示一个或多个通信网络。在一些情况下,计算系统106、108可以是云计算系统(未示出)的节点,或者每个计算系统106、108可以是单独的云计算系统,该云计算系统包括通过网络互连的、并用作分布式处理系统的多个计算机。
在所描绘的示例中,计算系统106、108可以各自包括能够作为节点参与至联盟区块链网络102中的任何适当的计算设备。计算设备的示例包括但不限于服务器、台式计算机、膝上型计算机、平板计算设备以及智能电话。在一些示例中,计算系统106、108承载用于与联盟区块链网络102进行交互的一个或多个由计算机实现的服务。例如,计算系统106可承载第一实体(例如,用户A)的由计算机实施的、例如交易管理系统的服务,例如,第一实体使用该交易管理系统管理其与一个或多个其他实体(例如,其他用户)的交易。计算系统108可承载第二实体(例如,用户B)的由计算机实施的、例如交易管理系统的服务,例如,第二实体使用该交易管理系统管理其与一个或多个其他实体(例如,其他用户)的交易。在图1的示例中,联盟区块链网络102被示出为节点的点对点网络(Peer-to-Peer network),计算系统106、108分别提供参与联盟区块链网络102的第一实体和第二实体的节点。
图2是示出了根据本文实施例的架构200的示例。示例性概念架构200包括分别对应于参与者A、参与者B和参与者C的参与者系统202、204、206。每个参与者(例如,用户、企业)参与到作为点对点网络提供的区块链网络212中,该点对点网络包括多个节点214,至少一些节点将信息不可篡改地记录在区块链216中。如本文进一步详述,尽管在区块链网络212中示意性地描述了单个区块链216,但是在区块链网络212上提供并维护了区块链216的多个副本。
在所描绘的示例中,每个参与者系统202、204、206分别由参与者A、参与者B和参与者C提供或代表参与者A、参与者B和参与者C,并且在区块链网络中作为各自的节点214发挥作用。如本文所使用的,节点通常是指连接到区块链网络212并且使相应的参与者能够参与到区块链网络中的单个系统(例如,计算机、服务器)。在图2的示例中,参与者与每个节点214对应。然而,可以预期,一个参与者可以操作区块链网络212内的多个节点214,和/或多个参与者可以共享一个节点214。在一些示例中,参与者系统202、204、206使用协议(例如,超文本传输协议安全(HTTPS))和/或使用远程过程调用(RPC)与区块链网络212通信或通过区块链网络212进行通信。
节点214可以在区块链网络212内具有不同的参与程度。例如,一些节点214可以参与共识处理(例如,作为将区块添加到区块链216的矿工节点),而其他节点214不参与此共识处理。作为另一示例,一些节点214存储区块链216的完整的副本,而其他节点214仅存储区块链216的一部分的副本。例如,数据访问特权可以限制相应的参与者在其相应的系统内存储的区块链数据。在图2的示例中,参与者系统202、204和206分别存储区块链216的完整副本216'、216”和216”'。
区块链(例如,图2的区块链216)包括区块的链,每个区块存储数据。数据的示例包括表示两个或更多个参与者之间的交易的交易数据。尽管本文通过非限制性示例使用了“交易”,但是可以预期,任何适当的数据(例如,文档、图像、视频、音频)可以存储在区块链中。交易的示例可以包括但不限于交换有价物(例如,资产、产品、服务、货币)。交易数据不可篡改地存储在区块链中。也就是说,交易数据不能改变。
在将交易数据存储在区块中之前,对交易数据进行哈希处理。哈希处理是将交易数据(作为字符串数据提供)转换为固定长度的哈希值(也作为字符串数据提供)的处理。无法对哈希值进行去哈希处理(un-hash)以获得交易数据。哈希处理确保即使交易数据的轻微更改也会导致完全不同的哈希值。此外,如上所述,哈希值具有固定长度。也就是说,无论交易数据的大小如何,哈希值的长度都是固定的。哈希处理包括通过哈希函数处理交易数据以生成哈希值。哈希函数的示例包括但不限于输出256位哈希值的安全哈希算法(SHA)-256。
多个交易的交易数据被哈希处理并存储在区块中。例如,提供两个交易的哈希值,并对它们自身进行哈希处理以提供另一个哈希值。重复此处理,直到对于所有要存储在区块中的交易提供单个哈希值为止。该哈希值被称为默克尔(Merkle)根哈希值,并存储在区块的头中。任何交易的更改都会导致其哈希值发生变化,并最终导致Merkle根哈希值发生变化。
通过共识协议将区块添加到区块链。区块链网络中的多个节点参与共识协议,并执行将区块添加到区块链中的工作。这样的节点被称为共识节点。上文介绍的PBFT用作共识协议的非限制性示例。共识节点执行共识协议以将交易添加到区块链,并更新区块链网络的整体状态。
更详细地,共识节点生成区块头,对区块中的所有交易进行哈希处理,并将所得的哈希值成对地组合以生成进一步的哈希值,直到为区块中的所有交易提供单个哈希值(Merkle根哈希值)。将此哈希值添加到区块头中。共识节点还确定区块链中最新的区块(即添加到区块链中的最后一个区块)的哈希值。共识节点还向区块头添加随机数(nonce)值和时间戳。
通常,PBFT提供容忍拜占庭故障(例如,故障节点、恶意节点)的实用拜占庭状态机复制。这通过假设将发生故障(例如,假设存在独立节点故障和/或由共识节点发送的经操纵的消息)在PBFT中实现的。在PBFT中,以包括主共识节点和备共识节点的序列提供共识节点。主共识节点会定期更改。通过区块链网络内的所有共识节点对区块链网络的全局状态达成一致,将交易添加到区块链中。在该处理中,消息在共识节点之间传输,并且每个共识节点证明消息是从指定的对等节点接收的,并验证在传输期间消息未被篡改。
在PBFT中,共识协议是在所有共识节点始于相同的状态的情况下分多个阶段提供的。首先,客户端向主共识节点发送请求以调用服务操作(例如,在区块链网络内执行交易)。响应于接收到该请求,主共识节点将该请求组播到备共识节点。备共识节点执行该请求,并且各自向客户端发送回复。客户端等待直到收到阈值数量的回复。在一些示例中,客户端等待直到接收f+1个回复,其中,f是区块链网络内可以容忍的故障共识节点的最大数量。最终结果是,足够数量的共识节点就将记录添加到区块链的顺序达成一致,该记录被接受或者被拒绝。
在一些区块链网络中,实施密码学来维护交易的隐私。例如,如果两个节点想要保持交易隐私,以使得区块链网络中的其他节点不能看出交易的细节,则这两个节点可以对交易数据进行加密处理。加密处理的示例包括但不限于对称加密和非对称加密。对称加密是指使用单个密钥既加密(从明文生成密文)又解密(从密文生成明文)的加密处理。在对称加密中,同一密钥可用于多个节点,这样每个节点都可以对交易数据进行加密/解密。
非对称加密使用密钥对,每个密钥对包括私钥和公钥,私钥仅对于相应节点是已知的,而公钥对于区块链网络中的任何或所有其他节点是已知的。节点可以使用另一个节点的公钥来加密数据,并且该加密的数据可以使用其他节点的私钥被解密。例如,并且再次参考图2,参与者A使用参与者B的公钥来加密数据,并将该加密的数据发送给参与者B。参与者B可以使用它的私钥来对该加密的数据(密文)进行解密并提取出原始数据(明文)。使用节点的公钥加密的消息只能使用该节点的私钥解密。
非对称加密用于提供数字签名,这使得交易中的参与者能够确认交易中的其他参与者以及交易的有效性。例如,节点可以对消息进行数字签名,而另一个节点可以基于参与者A的该数字签名来确认该消息是由该节点发送的。数字签名还可以用于确保消息在传输过程中不被篡改。例如,再次参考图2,参与者A向参与者B发送消息。参与者A生成该消息的哈希值,然后使用其私钥对该哈希值进行加密,以提供作为加密哈希值的数字签名。参与者A将该数字签名附加到该消息上,并将该具有数字签名的消息发送给参与者B。参与者B使用参与者A的公钥解密该数字签名,并提取哈希值。参与者B对该消息进行哈希处理并比较哈希值。如果哈希值相同,则参与者B可以确认该消息确实来自参与者A,且未被篡改。
本文中描述的发明涉及与区块链相关联的智能合约中使用的共识处理的管理。当多个参与方在一个项目上进行协作时,可以使用执行于一个或多个区块链上的智能合约来促进涉及该项目的两方或多方之间获得共识。处理智能合约用于实现完成项目或交易的处理。项目所涉及的各方可以包括,例如,消费者、企业、营利组织、非营利组织、研究机构、金融机构或政府机构。
在一些实施方式中,智能合约是在区块链之上运行的一组计算机代码,并包括由两方或更多方同意的一组预定义规则。在执行智能合约时,如果满足一组预定义规则,则智能合约将执行一组特定的代码以产生输出。智能合约计算机代码通过促进、验证和施行基础协议的条件来允许去中心化式自动化。智能合约在业务合作中很有用,其中,智能合约可被视为与区块链相关联的、包括某些预定规则的自动可执行代码行。
许多区块链处理系统实现包括需要多方间达成共识的阶段或步骤的处理。例如,商户可以从事涉及大量进出仓库的商品或货物的交易。在此示例中,仓单是用于向银行申请贷款的有用工具。在常规系统中,仓单由仓库背书和签发,仓单可担保商品或货物的收货(receipt)和安全存储。拥有存储在仓库中的货物的商户可以使用仓单向银行申请贷款,使用存储在仓库中的货物作为抵押。在常规系统中,商户必须等待仓库发出仓单,然后将仓单带到银行和保险公司。顺序处理仓单可能会导致一些延迟。
在一些实施方式中,在基于区块链的系统中,代替商户等待仓库发出仓单,商户可以发起生成仓单,请求仓库、银行和保险公司背书或批准该仓单,并请求银行批准贷款。在此示例中,银行和保险公司处理贷款的请求可以与仓库处理背书仓单的请求并行进行,这减少了商户从银行获得贷款所需的总时间。
智能合约可用于实现多种类型的业务处理,以促进多种类型的项目和交易。复杂的智能合约可用于实现遵循复杂业务逻辑的复杂业务处理。复杂的智能合约可能在各个阶段需要多方做出决策。根据多方决策的结果,智能合约可能在不同的处理流中分支。例如,一个处理可能包括多个决策点,并且在每个决策点,取决于各方是否达成共识来批准项目,处理可能会沿不同的路径分支。对于不同的决策点,为了达成共识需要参与的各方可能有所不同。为了确定是否达成共识,用于处理来自各方的投票的规则可能复杂。共识规则可能会随着时间而改变。参与共识处理的各方可以随着时间而变化。将智能合约中处理共识逻辑的部分与智能合约中处理业务逻辑的部分分离是很有用的。
例如,开发智能合约以促进各种处理(包括业务处理)的公司可以拥有熟悉业务处理的第一团队,以编写和维护智能合约中处理业务逻辑的部分;以及拥有熟悉共识处理的第二团队,以编写和维护智能合约中处理共识逻辑的部分。第一团队可以熟悉公司内部的业务处理,而无需了解有关需要参与共识的外部各方的大量信息。第二团队可以熟悉外部各方,并知道从外部各方获得投票以确定共识的最有效方法。
本文描述了一种通过使用两种类型的智能合约将智能合约中处理共识逻辑的部分与智能合约中处理业务逻辑的部分分离的方法。第一类智能合约称为处理智能合约,它包括用于实现处理的代码,例如多方之间的一系列商业交易。例如,处理智能合约可以为项目实现业务逻辑。第二类智能合约称为共识智能合约,它包括用于根据表示为一个或多个共识规则的共识逻辑来实现共识处理的代码。在一些实施方式中,在需要从多方获得决策的情况下,处理智能合约可以调用(call or invoke)共识智能合约。例如,公司可以让第一团队编写并维护处理业务逻辑的处理智能合约,而第二团队编写并维护处理共识逻辑的共识智能合约。
以下是可由智能合约实现的处理的示例。
·例1:进口商打算将存储在仓库中的进口货物用作从银行获得贷款的抵押。智能合约可以实现以下处理:获得来自仓库的表示货物已在仓库妥善接收的确认;获得来自保险公司的表示保险公司愿意为该货物投保的确认;以及获得来自银行的表示银行愿意使用该货物作为抵押发放贷款的批准投票。
·例2:房地产开发商从银行获得了建设贷款,在建设里程碑完成后,该建设贷款的款项将分发给承包商。智能合约可以实现以下处理:确认建设项目的每个里程碑都已完成;以及获得来自银行的、向承包商分发款项的批准投票。
·例3:一组银行向使用个人财产(例如,车辆或珠宝)作为抵押的个人提供小额贷款。智能合约可以实现以下处理:审查员确认个人财产的价值;以及获得来自银行的、基于个人财产的价值批准一定金额的贷款的投票。
·例4:制造商使用多个制造步骤来制造产品,其中一些步骤需要由独立机构进行认证。智能合约可以实现以下处理:向相关机构发送相关信息;以及获得来自该机构的批准认证投票。
在上面的示例中,让处理智能合约根据业务逻辑来实现业务处理,并且让一个或多个共识智能合约根据共识逻辑来实现共识处理是有用的。
在一些实施方式中,几种类型的共识规则可以用于共识处理。例如,各方可能同意基于各方的投票确定共识,各方可以投票批准或拒绝某项目,或者弃权投票。参与共识处理的各方可以由共识节点表示,该共识节点可以是计算机服务器、移动电话或任何其他可以响应来自智能合约的请求的计算设备。
上述共识处理是指参与项目的各方达成共识的处理。例如,共识处理可能涉及两家或两家以上的银行和一家或一家以上的保险公司,他们同意批准接受货物仓单,该货物仓单作为货物已被仓库妥善接收的证明。在联盟区块链中的共识节点根据联盟区块链网络内实现的共识协议达成共识后,可以在联盟区块链中记录指示各方达成共识的记录。为了区分两种类型的共识,各方之间的共识称为“处理共识”,而用于确定是否将记录写入区块链的区块链共识节点之间的共识称为“区块链共识”。参与处理共识的共识节点称为处理共识节点,参与区块链共识的共识节点称为区块链共识节点。在一些示例中,节点可以既是处理共识节点,又是区块链共识节点。
智能合约在执行时可以实现包括几个阶段或步骤的处理。智能合约可以指定阶段之一包括根据批准项目(例如,批准接受仓单)的共识规则来获得处理共识节点之间的共识。智能合约可以指定在处理共识节点之间达成共识之后,将处理共识节点投票结果的记录存储在联盟区块链中。联盟区块链可以被配置为使得在区块链共识节点之间达成共识之后,将记录存储在联盟区块链中。
参考图3,基于区块链的处理平台300能够使用户管理智能合约,该智能合约促进实现与用户的项目相关联的处理。处理平台300包括智能合约管理系统302、处理智能合约330的数据库304、以及共识智能合约332的数据库306。智能合约管理系统302被配置为执行一个或多个处理智能合约330,每个处理智能合约可以调用一个或多个共识智能合约332以执行处理共识。智能合约管理系统302可以与区块链网络310的几个节点308之一相关联,其中,区块链312跨区块链网络310复制,并且智能合约管理系统302维护的区块链312'是区块链312的副本。
基于区块链的处理平台300为用户提供智能合约管理服务,例如参与方A 314、参与方B 316、参与方C 318、参与方D 320、参与方E 334和参与方F 336。用户可以通过诸如互联网的网络342访问处理平台300。在此示例中,参与方A 314具有节点A 322,该节点A 322可以是由参与方A 312控制的计算机设备。节点A 322被配置为与智能合约管理系统302通信,并且可以在基于区块链的处理平台300处发起执行智能合约或响应来自智能合约的请求。类似地,参与方B 316、参与方C 318、参与方D 320、参与方E 334和参与方F 336分别具有节点B 324、节点C 326、节点D 328、节点E 338和节点F 340。节点B 324、节点C 326、节点D 328、节点E 338和节点F 340中的每个节点可以是分别由参与方B 316、参与方C 318、参与方D 320、参与方E 334和参与方F 336控制的计算机设备,分别被配置为与智能合约管理系统302通信,并且可以在处理平台300上发起执行智能合约或响应来自智能合约的请求。在该示例中,节点B 314、节点C 326、节点D 328、节点E 338和节点F 340参与共识处理,并且被称为共识节点。
例如,参与方A是希望使用存储在仓库中的货物作为抵押的商户,以从作为银行的参与方B、参与方C和参与方D获得贷款。参与方E和参与方F是为货物提供保险的保险公司。商户向银行和保险公司发送仓单,该仓单作为仓库已收到货物的证明。商户向银行和保险公司发送仓单,该仓单作为仓库已收到货物的证明,并请求确认接受仓单并批准将贷款中的资金分发给商户。处理智能合约330和共识智能合约332可以促进与银行和保险公司进行协调的处理。例如,处理智能合约330在执行时获得来自仓库的仓单,并调用共识智能合约332,将该仓单从处理智能合约330传递(pass)到共识智能合约332。共识智能合约332向代表银行和保险公司的共识节点发送批准请求,其中,该请求包括仓单,以便银行和保险公司可以查看仓单。在每个共识节点上,人工操作员或业务系统查看从共识智能合约332发送的请求,并生成投票以批准或拒绝该请求。在一些示例中,共识节点可能不会在预设时限内回应(例如,由于人工操作员太忙而无法回应),共识智能合约332可以基于下面更详细描述的默认规则来确定共识节点的投票。共识智能合约332收集来自共识节点的投票,并根据一个或多个共识规则确定是否已经达成批准仓单的共识。
在一些示例中,参与方A至F也是区块链网络310的参与者节点308,并且参与方A至F中的每个参与方维护区块链312的副本。当参与方A至F参与项目时,与该项目有关的数据被存储在区块链312中,所有参与方A至F均可查看。
图4示出了共识智能合约332的数据结构以及共识智能合约332与处理智能合约330之间的关系的示例。共识智能合约332可以包括一个或多个共识规则集,例如350a、350b、350c、350d(统称为350)。在一些实施方式中,每个共识节点在接收对一个项目进行投票的请求时,可以投批准票、拒绝票或空白票(相当于弃权票)。每个共识规则集350可以包括以下一些或全部信息:
·共识规则集标识352。
·共识规则集版本354。在一些实施方式中,共识规则集的最新版本有效,而旧版本则无效。例如,可以将共识智能合约332存储在区块链中,并且可以通过添加共识规则集的新版本来修改共识智能合约332。共识规则集的较旧版本保留在共识智能合约332中,并且变为无效。
·共识网络的共识节点356。这是为了确定共识而需要联系的共识节点的列表。
·共识节点的联系方法358。这指示应该如何联系每个共识节点,例如通过短消息服务(SMS)、电子邮件或系统调用。
·信息360,该信息关于如果共识节点在预定时间段后未响应请求,则如何处理来自共识节点的投票。例如,共识规则集350可以指定:如果第一共识节点在预定时间段(例如1小时)之后未响应请求,则第一共识节点被视为默认投票批准。共识规则集350可以指定:如果第二共识节点在预定时间段之后未响应请求,则第二共识节点被视为默认投票弃权。共识规则集350可以指定需要来自第三共识节点的主动响应,即,除非第三共识节点发送批准投票,否则无法达成共识。
·一个或多个共识规则362。共识规则362指定如何确定共识。例如,共识规则可以指定:如果超过三分之二(2/3)的共识节点投批准票,则达成共识。
·共识规则集350或共识智能合约332有效的条件364。例如,共识规则集350可以指定:规则集350仅在某些日期范围或区块高度范围内有效。
处理智能合约330可以实现包括多个阶段或步骤的处理372,例如366a、366b、366c、366d和366e,统称为366。在该示例中,一个阶段366c包括对共识的请求。在阶段366c,处理智能合约330调用368共识智能合约332,并将处理结构数据传递给共识智能合约332。处理结构数据包括需要由共识智能合约332或共识节点处理以便确定共识的数据。共识智能合约332使用共识规则版本信息354标识共识规则集的最新版本,验证时间段和/或区块高度在条件364中指定的范围内,使用共识节点358的联系方法与共识网络356的共识节点进行通信,收集来自共识节点的投票,如果在预定时间段360内未接收到响应则被视为默认投票,以及根据共识规则362确定是否达成共识。共识规则362表示用于处理共识节点的投票结果的处理逻辑。将确定是否达成共识的结果返回370至处理智能合约330。
例如,第一共识规则可以指定只有在预定义参与者集合中的所有参与者都给予批准时才能达成共识。例如,预定义参与者集合可以包括预定义银行集合,并且第一共识规则可以指定仅当预定义银行集合中的所有银行都给予批准时才达成共识。例如,第一业务处理可以指定,如果达成共识,则应向公司A提供一定数额的资金。如果第一共识规则被用于获得共识,则如果预定义银行集合中的所有银行都给予批准,则应将资金提供给公司A。
在上面的示例中,第一业务智能合约可以指定,如果根据第一共识智能合约中指定的共识规则达成共识,则应将资金提供给公司A。第一共识智能合约可以指定如果从表示预定义银行集合中的所有银行的所有共识节点获得批准,则达成共识,以上通过从共识节点中的每个接收批准投票或获得默认批准。默认批准将在下面进行更详细的描述。
第一共识规则的变体(variation)可以指定不同预定义参与方集合。例如,第一共识规则的第一变体可以指定只有在第一预定义银行集合(例如,银行A、银行B和银行C)中的所有银行都给予批准时,才能达成共识;而第一共识规则的第二变体可以指定只有在第二预定义银行集合(例如,银行A、银行B和银行D)中的所有银行都给予批准时,才能达成共识,依此类推。第一共识智能合约的第一变体可以指定只有在代表第一预定义银行集合(例如,银行A、银行B和银行C)中的所有银行的所有共识节点都给予批准时,才能达成共识;而第一共识智能合约的第二变体可以指定只有在代表第二预定义银行集合(例如,银行A,银行B和银行D)中的所有银行的所有共识节点都给予批准时,才能达成共识,依此类推。
例如,第二共识规则可以指定如果在预定义参与方集合中多于预定百分比的参与方给予批准,则达成共识。例如,第二共识规则可以指定只有在预定义银行集合中有超过50%的银行给予批准时,才能达成共识。在上面的第一业务处理示例中,如果使用第二共识规则来获得共识,则如果预定义银行集合中有50%以上的银行给予批准,那么应将资金提供给公司A。
在上面的示例中,第二共识智能合约可以指定如果从代表预定义银行集合中的银行的超过50%的共识节点获得批准,则达成共识,以上通过从共识节点中的每个接收批准投票或获得默认批准。
第二共识规则的变体可以指定不同的百分比阈值。例如,第二共识规则的第一变体可以指定只有在预定义银行集合中至少三分之二(2/3)的所有银行给予批准时,才能达成共识;而第二共识规则的第二变体可以指定只有在预定义银行集合中至少三分之一(1/3)的银行给予批准时,才能达成共识,依此类推。第二共识智能合约的第一变体可以指定只有在从代表第一预定义银行集合中银行的至少三分之二(2/3)的共识节点接收批准后,才能达成共识;而第二共识智能合约的第二变体可以指定只有在从代表第二预定义银行集合(例如,银行A、银行B和银行D)的银行的至少三分之一(1/3)的所有共识节点接收批准后时,才能达成共识;以上通过从共识节点中的每个接收批准投票或获得默认批准。
例如,第三共识规则可以指定,在参与方接收到批准请求后,如果该参与方在预定时间内未回应不批准或弃权消息,则该参与方将被视为默认给予批准。例如,第三共识规则可以指定,如果参与方在48小时内未回应不批准或弃权消息,则默认给予批准。在第一业务处理示例中,如果使用第三共识规则从预定义银行集合中获得共识,则如果每个银行在48小时内给予批准或未回应,则应将资金提供给公司A。第三共识智能合约可以指定,如果对于预定义银行集合中的每个银行,从代表银行的共识节点接收批准,或者在收到批准请求的48小时内从代表银行的共识节点未收到回应,则达成共识。
例如,第四共识规则可以指定,在参与方接收到批准请求后,如果该参与方在预定时间内未回应批准或不批准消息,则该参与方将被视为默认弃权投票。例如,第四共识规则可以指定如果参与方在48小时内未回应,则默认给予空白投票(弃权)。在第一业务处理示例中,如果使用第四共识规则从预定义银行集合中获得共识,则如果该特定银行在48小时内未做出回应,则该特定银行应被视为弃权投票。
第三和第四共识规则的变体可以指定不同的时间限制。例如,如果第三共识规则的变体可以指定如果一方在五个工作日内未提供回应,则该方默认给予批准,而第四共识规则的变体可以指定如果一方在五个工作日内未提供回应,则该方被视为默认弃权投票。
共识规则可以涉及算法和/或数学计算。根据业务处理,算法和/或数学计算可能很复杂。此外,可以组合多种类型的共识规则。
例如,第五共识规则可以指定,如果第一预定义参与方集合中的所有参与方都给予批准,而第二预定义参与方集合中至少有预定百分比的参与方给予批准,则达成共识;其中,如果在第一预定时间内第三预定义参与方集合中的参与方未提供回应,则该参与方被视为给予批准;如果在第二预定时间内第四预定义参与方集合中的参与方未提供回应,则该参与方被视为弃权投票。
共识规则可能涉及条件逻辑。例如,第六共识规则可以指定,如果第一预定义参与方集合中至少三分之二(2/3)参与方投票批准,则达成共识;如果第一预定义参与方集合中少于三分之二(2/3)参与方投票批准,则如果第二预定义参与方集合中的所有参与方投票批准,则达成共识。第六共识规则可以指定,参与方A在收到请求1个小时后默认批准请求,而参与方B在收到请求2小时后默认弃权投票。
共识规则可能涉及布尔逻辑。例如,第七共识规则可以指定,如果第一预定义参与方集合中至少三分之一(1/3)参与方投票批准,并且第二预定义参与方集合中至少一个参与方也投票批准,则达成共识。例如,进口商可能希望使用进口货物作为贷款的抵押。进口商可以将货物存放在仓库中,并使用仓单从一组银行申请贷款。进口商、该组银行和一组保险机构之间的协议可以指定,如果仓单由该组银行中至少三分之二(2/3)的银行和至少一家保险机构批准,那么该笔贷款中的资金应被释放并分发给进口商。业务智能合约可以指定,如果基于共识智能合约中指定的共识规则批准了仓单,那么该笔贷款中的资金应被释放并分发给进口商。共识智能合约可以指定如果该组银行中至少三分之二(2/3)的银行和至少一家保险代理机构给予批准,则达成共识。
在一些实施方式中,共识节点356可以是一个或多个参数的函数。例如,共识规则集可以指定用于达成共识的共识节点取决于当天的时间。例如,一家全球性银行可能在许多国家/地区设有跨多个时区的分支机构。为了提高决策速度,设计了共识规则集,以便将批准请求发送到选定的共识节点,这些共识节点代表营业并可以处理该请求的分支机构。例如,如果在UTC下午2点发送了贷款批准请求,则该批准请求可被发送到代表在例如伦敦和纽约的分支机构的共识节点,而不是发送到代表在例如北京和东京的分支机构的共识节点。
在一些实施方式中,一些共识逻辑可以存在于处理智能合约330中。例如,第一共识智能合约332可以指定代表与北京同时区的银行的共识节点,第二共识智能合约332可以指定代表与旧金山同时区的银行的共识节点,第三共识智能合约332可以指定代表与纽约同时区的银行的共识节点,第四共识智能合约332可以指定代表与伦敦同时区的银行的共识节点。取决于何时发出贷款批准请求,处理智能合约330可以调用第一、第二、第三或第四共识智能合约。例如,如果在UTC下午2点发送贷款批准请求,则处理智能合约330可以调用第三或第四共识智能合约,而不调用第一或第二共识智能合约。
参与共识处理的不同参与方可能具有不同的运营时间表。例如,不同国家的不同银行有不同的假期时间表。共识规则集可以指定,根据发送贷款批准请求的日期选择共识节点,使得所选择的共识节点代表当天营业的银行。
共识规则集可以包含许多子规则。例如,假设一个进口商希望使用存储在仓库中的货物作为贷款的抵押。可以使用以下共识逻辑来设计共识规则集:
·假设货物价值为X,贷款金额为Y;
如果Y小于X的10%,则使用共识规则1;
如果10%*X≤Y<30%,则使用共识规则2;
如果30%*X≤Y<50%,则使用共识规则3;以及
如果50%*X≤Y<80%,则使用共识规则4。
·共识规则1:如果至少一(1)个保险公司投票批准、至少10%的银行投票批准,则达成共识,并且如果银行在一(1)个工作日内未做出回应,则该银行被视为投票批准。
·共识规则2:如果至少一(1)个保险公司投票批准、至少30%的银行投票批准,则达成共识,并且如果银行在一(1)个工作日内未做出回应,则该银行被视为弃权投票;
·共识规则3:如果至少一(1)个保险公司投票批准、并且至少有50%的银行投票批准,则达成共识;以及
·共识规则4:如果至少一(1)个保险公司投票批准、并且所有银行投票批准,则达成共识。
例如,共识规则可以包括作为其他参数的函数的条件。作为示例,假设进口商希望使用存储在仓库中的货物作为贷款的抵押。可以使用以下共识逻辑来设计共识规则集:
·假设货物价值为X,贷款金额为Y,
如果Y小于X的Z%,则使用共识规则1,以及
如果Z%*X≤Y<2*Z%,则使用共识规则2。
·Z是进口商的信用评分(以及可选的其他参数,例如其他资产)的函数。
·共识规则1:如果至少一(1)个保险公司投票批准,并且至少P1%的银行投票批准,则达成共识。
·共识规则2:如果至少一(1)个保险公司投票批准,并且至少P2%的银行投票批准,则达成共识。
·P1和P2是Z的函数。
在一些实施方式中,系统使用反馈回路或机器学习来确定在共识规则中使用的参数的值,例如以上示例中的参数Z、P1和P2。例如,函数F可以表示银行在提供贷款方面的盈利能力、风险和服务质量方面的表现,并且系统可以随时间调整参数Z、P1和P2以使F最大化。例如,一家全球性银行可以在世界各地的国家设有成百上千的分支机构,每个分支机构都可以参与世界各地的项目并参与该项目的共识。全球性银行可以使用本文中公开的技术来实现有效的贷款批准处理。由于为每个贷款项目选择共识节点有很多选择,因此全球性银行可以使用反馈回路或机器学习来优化共识规则,包括为共识处理选择分支机构和其他参数。
共识智能合约332可以用于促进许多类型的项目的共识处理。例如,一家跨国公司在许多国家的分支机构均有员工,他们从事的项目要求所有费用都要由财务团队预先批准,该团队包括位于不同国家的不同分支机构的各个团队成员。处理智能合约330可以实现用于处理费用请求的业务逻辑,而共识智能合约332可以促进关于是否批准费用的共识处理。例如,当员工向处理智能合约330发送费用批准请求时,处理智能合约330调用共识智能合约332,并且向共识智能合约332发送关于费用请求的信息。共识智能合约332向代表负责批准费用的财务团队的团队成员的共识节点发送批准请求。共识智能合约332根据共识规则362确定是否达成共识以批准费用,并向处理智能合约330返回结果,处理智能合约330进而通知员工费用是否已被批准。
通过使用处理智能合约330和共识智能合约332,跨国公司可以清晰地记录费用如何被批准。例如,共识智能合约332将投票结果记录在区块链中,以便以后易于确定谁批准或拒绝了每个费用请求。
例如,一家建筑公司可能从事建造摩天大楼的建筑项目,该项目包括许多阶段,其中,需要先批准较早阶段才能开始后续阶段。在建筑地基完工后,地基需要检查结构完整性才能让建筑工人安装建筑物的梁和框架。在安装完第一层楼的梁和框架之后,第一层楼需要检查结构完整性才能安装第二层楼的梁和框架,依此类推。建筑公司可能会雇用一些人工检查员和大量机器人检查员。例如,机器人检查员可以包括在施工场地周围飞行并使用各种传感器对几个参数进行测量的无人机。
处理智能合约330可以实现检查处理,而第一共识智能合约332可以实现用于从检查地基的人工检查员和机器人检查员获得共识的处理。例如,在完成建筑地基时,处理智能合约330调用第一共识智能合约332,第一共识智能合约332向代表人工检查员和机器人检查员的共识节点发送批准建筑地基请求。例如,一些共识节点可以是人工检查员在施工场地随身携带的平板电脑。一些共识节点可以是与机器人检查员集成的计算机,也可以是与机器人检查员无线链接并处理从机器人检查员发送的测量值的计算机。
检查员使用平板电脑上的界面,向第一共识智能合约332发送其对建筑地基的批准或不批准投票。类似地,机器人检查员通过有线或无线通信链路,向第一共识智能合约332发送它们的投票。第一共识智能合约332基于共识规则362确定是否已经达成共识。例如,共识规则362可以指定必须接收来自所有人工检查员的批准投票,并且必须接收来自至少90%机器人检查员的批准投票,以便达成共识。共识智能合约332将共识处理结果返回到处理智能合约330,处理智能合约330通知施工团队他们是否可以继续安装第一层楼的梁和框架,或者是否需要在地基上进行返工。
第二共识智能合约332可以实现用于从检查第一层楼的人工检查员和机器人检查员获得共识的处理。例如,检查第一层楼的机器人检查员可以不同于检查地基的机器人检查员。因此,第一共识智能合约332中的共识节点356可以不同于第二共识合约中的共识节点356。在完成第一层楼的框架和梁之后,处理智能合约330调用第二共识智能合约332,该第二共识智能合约332使用类似于对地基的处理来确定对批准第一层楼是否达成共识。通过使用处理智能合约330和共识智能合约332,建筑公司可以清晰地记录建筑项目的批准处理,包括在项目的每个阶段哪些检查员给予了批准。
例如,制造工厂可以实现用于生产产品的装配线,其中,该装配线具有两个或更多个检查点,这些检查点可以评估产品的组件是否已正确安装。在每个检查点,两个或更多个检查员会对产品进行评估。检查员可以包括人工检查员和几种类型的机器人检查员(例如,具有可以进行各种测量的各种传感器的机器人)。例如,第一类机器人检查员可以检查产品的安全问题,而第二类机器人检查员可以检查产品的外观问题。每个检查员可以投票“通过”、“失败”或“未检查”。例如,第一检查点可能要求至少一个人工检查员投票“通过”,不能有人工检查员投票“失败”,至少有90%的第一类机器人检查员投票“通过”,不能有第一类机器人检查员投票“失败”,至少有75%的第二类机器人检查员投票“通过”,且有不超过10%的第二类机器人检查员投票“失败”。在此示例中,产品的安全性很重要,因此对安全问题不能有“失败”投票,而小部分的外观问题是可接受的。
处理智能合约330可以实现检查处理,而第一共识智能合约332可以实现用于从在第一检查点进行检查的人工检查员和机器人检查员获得共识的处理。例如,当部分组装产品到达第一检查点时,处理智能合约330调用第一共识智能合约332,该第一共识智能合约332向代表人工检查员和机器人检查员的共识节点发送对部分组装产品的批准请求。例如,一些共识节点可以是人工检查员在工厂随身携带的平板电脑。一些共识节点可以是与机器人检查员集成的计算机,也可以是与机器人检查员无线链接并处理从机器人检查员发送的测量值的计算机。
检查员使用平板电脑上的界面,向第一共识智能合约332发送它们“通过”、“失败”或“未检查”的投票。类似地,机器人检查员通过有线或无线通信链路,向第一共识智能合约332发送它们的投票。第一共识智能合约332基于共识规则362确定是否已经达成共识。在上面的示例中,必须接收到来自代表人工检查员的共识节点的至少一个“通过”投票,不能接收到来自代表人工检查员的共识节点的“失败”投票,必须接收到来自代表第一类机器人检查员的共识节点的至少90%的“通过”投票,不能接收到来自代表第一类机器人检查员的共识节点的“失败”投票,必须接收到来自代表第二类机器人检查员的共识节点的至少75%的“通过”投票,并且不能接收到来自第二类机器人检查员的超过10%的“失败”投票。共识智能合约332将共识处理结果返回到处理智能合约330,处理智能合约330通知装配线产品是否可以继续沿装配线运行,还是需要被移除或重新加工。
第二共识智能合约332可以实现用于从在第二检查点进行检查的人工检查员和机器人检查员获得共识的处理,以此类推。通过使用处理智能合约330和共识智能合约332,制造公司可以清晰地记录每个产品的批准处理,包括在装配线的每个检查点哪些检查员给予了批准。
在一些实施例中,数据库306(图3)可以包括作为工具包或库提供的共识智能合约,用户可以在其中将各个共识智能合约合并到处理合约中,而无需了解如何编写共识智能合约的细节。工具包或库中的共识智能合约可以形成“构建块”,可以将其组合起来以为应用提供更复杂的定制解决方案。例如,第一共识智能合约可以被配置为实现第一共识规则集,并可以通过调用getConsensus1()函数来调用,第二共识智能合约可以被配置为实现第二共识规则集,并可以通过调用getConsensus2()函数来调用,以及第三共识智能合约可以被配置为实现第三共识规则集,并可以通过调用getConsensus3()函数来调用,依此类推。例如,通过使用getConsensus1()、getConsensus2()和getConsensus3()函数的组合可以实现包含第一、第二和第三共识规则集的复杂共识逻辑的应用。
在一些实施例中,处理智能合约330执行于第一区块链上,并且共识智能合约332执行于第二区块链上。在一些示例中,第一区块链和第二区块链是相同的区块链。在一些示例中,第一区块链不同于第二区块链。
图5示出了共识智能合约的数据结构的示例。共识智能合约380包括以下信息:
·共识节点的标识382。
□例:“node1,node2,…,nodeN。”
·共识节点的联系方法384。
□例:“node1[SMS,email,sysCall],node2[SMS],node3[sysCall],...,nodeN[SMS,sysCall]。”
□在此示例中,可以使用SMS、电子邮件和系统调用联系到node1,可以使用SMS联系到node2,可以使用系统调用联系到node3,可以使用SMS和系统调用联系到nodeN。
□如果可以通过短消息服务联系到共识节点,则“联系方法”信息384包括共识节点的指定SMS电话号码。如果可以通过电子邮件联系到共识节点,则“联系方法”信息384包括该共识节点的用于从共识智能合约380接收消息的指定电子邮件地址。
□例如,共识节点node1和共识智能合约可以属于同一平台、系统或网络(例如,区块链平台、系统或网络),其提供使得共识智能合约通过系统调用联系共识节点node1的应用编程接口(API)。“联系方法”信息384包括共识节点的URL和相关的系统调用参数。
·共识策略386,包括共识规则和默认投票规则。共识规则指定如何达成共识。默认投票规则指定如何处理来自共识节点的、在预定时间段内未响应的投票,例如,共识节点是否被视为默认投票批准、不批准或空白(弃权投票)。
□示例性共识规则1:“来自100%共识节点的批准”。在此示例中,达成共识需要所有共识节点投票批准。
□示例性共识规则2:“来自2/3共识节点的批准”。在此示例中,达成共识需要至少三分之二(2/3)的共识节点投票批准。
□示例性共识规则3:“来自指定节点的批准”。在该示例中,达成共识需要指定的共识节点(例如,node1、node4、node10)投票批准。在此示例中,如果指定的共识节点之一投票不批准,则即使所有其他共识节点都投票批准,共识也会失败。
□示例性默认投票规则1:“node1[2小时后默认为批准],node2[1小时后默认为弃权投票]。”在此示例中,如果node1在收到投票请求后2小时内未响应,则共识智能合约将默认认为node1已投票批准。如果node2在收到投票请求后1小时内未响应,则共识智能合约将认为节点2弃权投票。
·有效条件388,例如,“在区块高度10000处有效,在区块高度99999处无效”。在该示例中,共识智能合约380可以在区块高度10000处开始调用和执行,并且在区块高度99999处共识智能合约380变为无效并且不能被调用。共识智能合约的生效条件388也可以基于日期和/或时间,例如“在X日期有效,在Y日期无效”。
·共识公钥390。
□每个共识智能合约都有一个对应的公钥基础结构。公钥存储在共识智能合约380中,并且可以由共识节点下载。与共识智能合约相关联的一个或多个私钥被存储在例如在其上执行共识智能合约的区块链的密钥管理系统中。
□每个共识节点都有一个对应的公钥基础结构,共识节点将公钥存储在区块链中,并且可以通过共识智能合约下载公钥。共识节点具有对应的私钥。
□只有共识智能合约可以使用共识智能合约的私钥对文档或消息进行数字签名。这确保了发送到共识节点的批准请求实际上来自共识智能合约。
□下面描述一个示例,说明每个共识节点如何安全地向共识智能合约发送包括其投票的消息。共识节点生成包括其投票的消息,使用共识智能合约的公钥对消息进行加密,使用其(共识节点的)私钥对包括投票的加密消息进行数字签名,然后向共识智能合约发送该经数字签名的加密消息。共识智能合约从存储公钥的区块链中下载共识节点的公钥,使用共识节点的公钥来验证消息确实来自该共识节点,并使用共识智能合约的私钥解密该加密的消息以获得投票的明文。这样,来自共识节点的投票不会被篡改。
在一些示例中,参与项目的各方形成联盟区块链网络,其中,每一方对应于联盟区块链网络的节点,并且与该项目有关的数据被存储在联盟区块链网络维护的区块链中。在使用共识智能合约380执行共识之前,参与共识的各方或系统使用共识公钥390来验证共识智能合约380与联盟区块链网络相关联。这样,如果来自无关第三方的共识智能合约向共识节点发送消息,则共识节点将能够检测到消息是从无关第三方发送的,并应被忽略。
例如,处理智能合约330可以通过调用诸如“getConsensus(p1)”之类的函数来调用共识智能合约332,其中,p1表示诸如“主数据(MasterData)”数据结构之类的参数,该参数是从处理智能合约330向共识智能合约332传递的数据。例如,MasterData数据结构可以包括以下信息:
·处理数据或业务数据(需要共识的主题的数据),例如仓单。
·填有共识节点的投票和数字签名的表。在从共识节点获得投票(批准、拒绝、弃权)和数字签名后,共识智能合约将投票和数字签名写入此表。
·有效时间。这表明共识有效的时间段。在指定时间段之后,共识智能合约332将不再接受来自共识节点的更多投票。
在共识智能合约332从共识节点获得投票并确定是否达成共识之后,共识智能合约332将MasterData数据结构返回给处理智能合约330。以上仅是可以被包括在传递给共识智能合约332和从共识智能合约332返回的数据结构中的信息的示例。共识智能合约332还可以包括上面未示出的其他信息。在一些示例中,p1可以是指向作为“MasterData”数据结构或类的实例的数据对象的链接。因此,处理智能合约330可以向共识智能合约332传递数据对象(包括需要共识的主题的数据)或传递指向该数据对象的链接。
图6示出了根据本文描述的技术的智能合约的几个示例,并示出了本发明的益处。图的上部示出了用于实现例如业务处理之类的处理的处理智能合约400、402和404的三个示例,所述业务处理诸如使用仓单获得贷款的处理、用于监控建设项目的处理、以及用于监控制造生产线的处理。可以将业务处理的业务逻辑编码到处理智能合约中。每个处理智能合约都包括几个用于实现对应处理的各个阶段或步骤的模块。例如,处理智能合约400包括处理模块406a、406b、406c、共识模块408和处理模块406d。处理模块406a、406b、406c和406d可以实现例如处理中的各个阶段或步骤。
当处理需要其他方做出决定时,共识模块用于征求来自代表其他方的共识节点的投票。例如,共识模块408应用第一共识规则集,诸如图4的共识规则集350a,向相关共识节点发送批准请求,收集来自共识节点的投票,并确定需要作为处理的一部分的决策的共识结果。在该示例中,处理模块406c的输出被提供给共识模块408,共识模块408根据第一规则集确定是否达成共识,并向处理模块406d提供该确定的结果。
处理智能合约402包括处理模块406e、共识模块410、处理模块406f、共识模块412和处理模块406g。在该示例中,处理模块406e的输出被提供给共识模块410,共识模块410应用第二共识规则集,收集来自相关共识节点的投票,确定是否达成共识,并向处理模块406f提供该确定的结果。处理模块406f的输出被提供给共识模块412,共识模块412应用第三共识规则集,收集来自相关共识节点的投票,确定是否达成共识,并向处理模块406g提供该确定的结果。
处理智能合约404包括处理模块406h和406i、共识模块408和410、以及处理模块406j。在该示例中,处理模块406i的输出被提供给共识模块408,共识模块408应用第一共识规则集,收集来自相关共识节点的投票,确定是否达成共识,并向共识模块412提供该确定的结果。共识模块412应用第三共识规则集,收集来自相关共识节点的投票,确定是否达成共识,并向处理模块406j提供该确定的结果。处理模块406a至406j统称为406。
在每个处理智能合约400、402、404中,处理模块406遵循完成处理步骤的业务逻辑,并且共识模块(408、410、412)遵循确定共识结果的共识逻辑。在该示例中,如果第一共识规则集或选择的与第一共识规则集相关联的共识节点需要被修改,则共识模块408需要被更新,处理智能合约400和处理智能合约404都需要被更新。如果第三共识规则集或选择的与第三共识规则集相关联的共识节点需要被修改,则共识模块412需要被更新,处理智能合约402和处理智能合约404都需要被更新。如果存在大量处理智能合约,则对特定共识规则集的任何修改都必须修改所有使用该特定共识规则集的处理智能合约。因为不同的智能合约可能是由不同的人编写的,所以随着处理智能合约数量的增加,跟踪哪个处理智能合约使用哪个共识规则集可能会变得困难。存在某些处理智能合约未被更新且共识结果不合适的风险,因为共识规则集已过时。
图6下部显示了处理智能合约414、416和418,以及共识智能合约420、422和424。共识模块408、410和412已与处理智能合约分离,并被重新格式化为共识智能合约420、422和424。处理智能合约414包括处理模块426a、426b、426c和426d。处理模块426a、426b和426d类似于处理模块406a、406b和406d。处理模块426c实现处理逻辑或业务逻辑类似于处理模块406c实现处理逻辑或业务逻辑。不同于向共识模块408提供输出的处理模块406c,处理模块426c被配置为调用共识智能合约420,共识智能合约420包括与共识模块408类似的共识规则集。处理模块426c可以使用函数调用来调用共识智能合约420,并向共识智能合约420传递诸如“MasterData1”的参数。共识智能合约420应用第一共识规则集,收集来自相关共识节点的投票,确定是否达成共识,并将共识结果返回处理模块426c。
处理智能合约416包括处理模块426e、426f和426g。处理模块426g类似于处理模块406g。处理模块426e和426f实现类似于处理模块406e和406f的处理逻辑或业务逻辑。处理模块426e被配置为调用共识智能合约422,共识智能合约422包括第二共识规则集,类似于共识模块410中的第二共识规则集。处理模块426e可以使用函数调用来调用共识智能合约422,并向共识智能合约422传递诸如“MasterData 2”的参数。共识智能合约422应用第二共识规则集,收集来自相关共识节点的投票,确定是否达成共识,并将共识结果返回处理模块426e。
处理模块426f被配置为调用共识智能合约424,共识智能合约424包括第三共识规则集,类似于共识模块412中的第三共识规则集。处理模块426f可以使用函数调用来调用共识智能合约424,并向共识智能合约424传递诸如“MasterData 3”的参数。共识智能合约424应用第三共识规则集,收集来自相关共识节点的投票,确定是否达成共识,并将共识结果返回处理模块426f。
处理智能合约418包括处理模块426h、426i和426j。处理模块426h和426j类似于处理模块406h和406j。处理模块426i实现类似于处理模块406i的处理逻辑或业务逻辑。处理模块426i被配置为调用共识智能合约420,并向共识智能合约420传递诸如“MasterData 4”的参数,共识智能合约420应用第一共识规则集,收集来自相关共识节点的投票,并将共识结果返回处理模块426i。然后,处理模块426i调用共识智能合约424,并向共识智能合约424传递诸如“MasterData 5”的参数,共识智能合约424应用第三共识规则集,收集来自相关共识节点的投票,并将共识结果返回处理模块426i。
通过将共识智能合约420、422和424与处理智能合约414、416和418分离,维护处理智能合约变得更加容易(与维护处理智能合约400、402、404相比)。当第一共识规则集中有变化或与第一共识规则集相关联的共识节点发生变化时,仅需要修改共识智能合约420,而无需修改处理智能合约414和418。当第三共识规则集或与第三共识规则集相关联的共识节点发生变化时,仅需要修改共识智能合约424,而无需修改处理智能合约416和418。此外,与对应的处理智能合约400、402、404相比,处理智能合约414、416、418更短且更容易写入,并且处理智能合约414、416、418可以具有更少的错误。
图7是示出了处理智能合约430和共识智能合约432的操作的示例的图。作为共识的主题的数据被存储在数据对象“MasterData:p1”434中,数据对象“MasterData:p1”434存储在区块链435中,哈希值存储在Merkle树结构中。记号“MasterData:p1”表示p1是MasterData数据结构或类的实例或对象。为了修改数据对象p1中的数据,向数据对象添加新数据,向Merkle树添加新哈希值,并且不删除现有数据对象p1。这样可以保留投票记录,防止篡改记录,并允许所有各方以后验证共识结果的正确性。
例如,可以使用诸如数据加密标准(DES)、TripleDES、RSA、高级加密标准(AES)、双鱼算法(Twofish)等的各种加密技术对在共识智能合约432和共识节点之间交换的消息进行加密。
在操作中,处理智能合约430使用例如getConsensus(MasterData:p1)函数调用436来调用共识智能合约432,并向共识智能合约432传递数据对象p1。在步骤438,共识智能合约432向共识节点node1发送SMS消息440,向共识节点node5发送SMS消息442,使用系统调用444共识节点node2的HTTP URL地址联系共识节点node2,并向共识节点node4发送电子邮件消息446。例如,共识智能合约432向共识节点node1、node5、node2和node4发送数据对象p2的内容,并请求共识节点对是否批准进行投票。在每个共识节点上,操作员(人工或业务系统)会查看由共识智能合约提供的数据,并生成投票以批准或拒绝需要共识的主题。例如,人工操作员或业务系统检查仓单,以确定是否批准该仓单,该仓单作为货物已适当存储在仓库的有效证据。在步骤448,共识智能合约430收集来自共识节点的投票,根据共识规则集确定是否达成共识,并将共识结果记录在存储在区块链中的数据对象p1中。
虚线450指示处理智能合约430的处理模块456生成MasterData类的数据对象p1434,虚线452指示共识智能合约432将共识结果存储到数据对象p1,并且虚线454指示处理智能合约430的处理模块458读取数据对象p1 434。
在一些示例中,处理智能合约430向共识智能合约432传递作为数据对象的p1,其中,p1是包括需要共识的主题数据的数据对象。共识智能合约432将投票写入数据对象p1,并将数据对象p1返回处理智能合约430。在一些示例中,p1是指向存储在区块链中的数据记录的链接。例如,假设处理智能合约430需要获得来自共识节点关于仓单的批准。处理智能合约430使用getConsensus(MasterData:p1)调用共识智能合约432。在一些示例中,p1是包括仓单的数据对象。处理智能合约430向共识智能合约432发送包括仓单的p1数据对象。人工或业务系统的操作员将先检查仓单才能做出投票。在一些示例中,处理智能合约430将仓单存储在区块链中的数据记录中,向共识智能合约432发送数据记录的链接(或地址),并且共识智能合约432将共识投票的结果写入到区块链中的数据记录中。
图8是用于实现包括确定多个共识节点之间的共识的处理的处理460的示例的流程图。为方便起见,处理460将被描述为由位于一个或多个位置,并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当编程的、例如图1的计算系统106或108的计算系统,可以执行处理460。处理460包括以下步骤。
在462,提供多个处理智能合约,其中,每个处理智能合约被配置为执行于第一区块链上。每个处理智能合约包括用于实现包括两个或更多步骤的处理的代码。至少一个步骤涉及确定就是否批准或拒绝项目是否达成共识,并且至少一个步骤涉及基于确定是否达成共识来执行动作。
在一些实施例中,计算机系统可以是基于区块链的处理平台300(图3)。3)。处理智能合约可以是处理智能合约330(图3和4)、414、416、418(图6)和430(图7)。所述两个或更多步骤可以是步骤366a、366b、366c、366d、366e(图4),步骤426a、426b、426c、426d,步骤426e、426f、426g、426h、426i、426j(图6),以及对应于处理模块456和458(图7)的步骤。
在一些实施例中,处理智能合约之一可以被配置为实现与使用仓单申请贷款有关的处理,该贷款使用存储在仓库中的货物作为抵押。例如,处理智能合约之一可以被配置为实现与确认已满足建设项目的每个里程碑、并获得来自银行的批准以将款项分发给承包商有关的处理。例如,处理智能合约之一可以被配置为实现与检查员确认用户的特定个人财产的价值、并基于个人财产的价值获得来自银行的关于特定金额的小额贷款的批准有关的处理。例如,处理智能合约之一可以被配置为实现与向相关机构发送相关信息、并获得来自该机构的批准以发布制造商生产的产品的认证有关的处理。
在464,提供多个共识智能合约,其中,每个共识智能合约被配置为执行于第二区块链上。每个共识智能合约包括用于实现根据一个或多个共识规则确定多个共识节点之间共识的处理的代码。每个共识智能合约包括公钥,与该公钥对应的共识智能合约的私钥被存储在与第二区块链相关联的密钥管理系统中。第一区块链和第二区块链可以是相同的区块链或是不同的区块链。
在一些实施例中,共识智能合约可以是共识智能合约332(图3和4),420、422、424(图6)和432(图7)。共识节点可以是共识节点B 324、共识节点C 326、共识节点D 328、共识节点E 338、共识节点F 340(图3),以及共识节点node1、node2、node4和node5(图7)。一个或多个共识规则可以是共识规则362(图4)。
在一些实施例中,共识智能合约中的至少一个共识智能合约包括共识规则,该共识规则指定基于与共识节点相关联的投票统计函数,在一组共识节点之间达成共识,所述统计函数被配置为使得在获得来自少于该组共识节点中所有共识节点的投票之后,达成共识。
在一些实施例中,共识规则指定如果给予批准投票的共识节点的百分比大于预定百分比值,则在该组共识节点之间达成共识。
在一些实施例中,共识智能合约中的至少一个共识智能合约包括共识规则,该共识规则指定在共识节点接收到批准请求之后,如果共识节点在预定时间段内未做出响应,则共识节点被视为给予批准投票。
在一些实施例中,共识智能合约中的至少一个共识智能合约包括共识规则,该共识规则指定在共识节点接收到批准请求之后,如果共识节点在预定时间段内未做出响应,则共识节点被视为弃权投票。
在一些实施例中,共识智能合约中的至少一个共识智能合约指定以下中至少一项:(i)共识智能合约有效并且可以被处理智能合约调用的情况,或者(ii)共识智能合约无效并且不能被处理智能合约调用的情况。
在一些实施例中,每个共识智能合约指定以下中至少一项:(i)共识智能合约有效并且可以被处理智能合约调用的第一时间段,其中,在该第一时间段之外,共识智能合约无效并且不能被处理智能合约调用,或者(ii)共识智能合约有效并且可以被处理智能合约调用的区块链的第一区块高度范围,其中,在该区块链的第一区块高度范围之外,共识智能合约无效并且不能被处理智能合约调用。
在一些实施例中,共识智能合约中的至少一个共识智能合约包括共识规则,该共识规则指定从第一组共识节点寻求关于是否批准或拒绝项目的共识,并且如果从第一组共识节点不能获得共识,则从第二组共识节点寻求关于是否批准或拒绝该项目的共识。
在一些实施例中,每个共识智能合约为每个共识节点指定联系方法,并且在执行时,共识智能合约使用与共识节点相关联的联系方法向每个共识节点发送该项目的批准请求。
在一些实施例中,至少一个共识智能合约被配置为接受参数列表,该参数列表指定哪些共识节点需要参与共识处理,并且执行处理智能合约包括从处理智能合约向共识智能合传递作为参数的共识节点列表。
在466,一个或多个处理智能合约被执行,包括针对每个处理智能合约,调用一个或多个共识智能合约,并且每个共识智能合约被配置为确定在多个共识节点之间是否达成共识。同一共识智能合约被多个处理智能合约调用。共识智能合约使用共识智能合约的私钥对用于请求是否批准或拒绝项目的投票的消息进行数字签名,并向多个共识节点发送该经数字签名的消息。共识智能合约的公钥使得共识节点能够验证从共识智能合约发送的消息。每个处理智能合约还基于确定是否达成共识的结果来执行动作。
例如,共识智能合约420被处理智能合约414和418调用,并且共识智能合约424被处理智能合约416和418调用(图6)。
图9是用于实现包括确定多个共识节点之间的共识的处理的处理470的示例的流程图。为方便起见,处理470将被描述为由位于一个或多个位置、并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当地编程的例如图1的计算系统106或108的计算系统,可以执行处理470。处理470包括以下步骤。
在472,在区块链上执行第一智能合约。第一智能合约包括用于实现具有多个阶段的第一处理的代码,并且阶段之一包括在区块链上执行共识智能合约。执行共识智能合约包括执行用于实现根据一组一个或多个共识规则来确定两个或更多个共识节点之间共识的共识处理的代码。共识智能合约包括关于每个共识节点的联系方法的信息,并且共识智能合约包括由共识节点用于向第二智能合约安全地发送投票的公钥。与该公钥对应的私钥存储在与区块链相关联的密钥管理系统中。
例如,第一智能合约可以是处理智能合约330(图3和4)、414、416、418(图6)或430(图7)。多个阶段可以是阶段366a、366b、366c、366d、366e(图4),阶段426a、426b、426c、426d,阶段426e、426f、426g、426h、426i、426j(图6),以及阶段456和458(图7)。共识智能合约可以是共识智能合约332(图3和4)、420、422、424(图6)、或432(图7)。例如,共识节点可以是共识节点B 324、共识节点C 326、共识节点D 328、共识节点E 338、共识节点F 340(图3),以及共识节点node1、node2、node4和node5(图7)。该组一个或多个共识规则可以是共识规则集350(图4)。公钥可以是公钥390(图5)。
在一些实施例中,该组一个或多个共识规则指定基于与共识节点相关联的投票的统计函数达成共识,所述统计函数被配置为使得在获得来自少于所有的共识节点的投票之后,达成共识。
在一些实施例中,该组一个或多个共识规则指定如果给予批准投票的共识节点的百分比大于预定百分比值,则达成共识。
在一些实施例中,该组一个或多个共识规则指定在共识节点接收到批准请求之后,如果共识节点在预定时间段内未做出响应,则共识节点被视为给予批准投票。
在一些实施例中,该组一个或多个共识规则指定在共识节点接收到批准请求之后,如果共识节点在预定时间段内未做出响应,则共识节点被视为弃权投票。
在一些实施例中,共识智能合约指定以下中至少一项:(i)共识智能合约有效并且可以被第一智能合约调用的情况,或者(ii)共识智能合约无效并且不能被第一智能合约调用的情况。
在一些实施例中,共识智能合约指定以下中至少一项:(i)共识智能合约有效并且可以被第一智能合约调用的时间段,或(ii)共识智能合约有效并且可以被第一智能合约调用的区块链的区块高度范围。
在一些实施例中,该组一个或多个共识规则指定从第一组共识节点寻求关于是否批准或拒绝项目的共识,并且如果不能从第一组共识节点获得共识,则从第二组共识节点中寻求关于是否批准或拒绝该项目的共识。
在一些实施例中,共识智能合约被配置为接受参数列表,该参数列表指定哪些共识节点需要参与共识处理,并且执行第一智能合约包括从第一智能合约向共识智能合约传递作为的参数的共识节点列表。
在474处,第一智能合约的执行结果被记录在区块链中。例如,区块链可以是区块链435(图7)。
图10是根据本文实施例的装置480的模块的示例的图。装置480可以是区块链节点的实施例的示例,被配置为实现包括确定多个共识节点之间的共识的处理。装置480可以对应于上述实施例,并且装置480包括以下:
·第一提供模块482,提供多个处理智能合约,其中,每个处理智能合约被配置为执行于区块链上,每个处理智能合约包括用于实现包括两个或更多步骤的处理的代码,至少一个步骤涉及确定就是否批准或拒绝项目是否达成共识,并且至少一个步骤涉及基于确定是否达成共识来执行动作。
·第二提供模块484,提供多个共识智能合约,其中,每个共识智能合约被配置为执行于区块链上,每个共识智能合约包括用于实现处理的代码,该处理根据一个或多个共识规则确定多个共识节点之间的共识,每个共识智能合约包括公钥,共识节点使用该公钥向共识智能合约安全地发送投票,其中,与该公钥对应的私钥被存储在与区块链关联的密钥管理系统中;和
·执行模块486,执行一个或多个处理智能合约,包括调用一个或多个共识智能合约以确定在多个共识节点之间是否达成共识,其中,同一共识智能合约被多个处理智能合约调用。
在可选实施例中,共识智能合约中的至少一个共识智能合约包括共识规则,该共识规则指定基于与共识节点相关联的投票的统计函数,在一组共识节点之间达成共识,并且所述统计函数被配置为使得在获得少于该组共识节点中所有共识节点的投票之后,达成共识。
在可选实施例中,共识规则指定,如果给予批准投票的共识节点的百分比大于预定百分比值,则在该组共识节点之间达成共识。
在一个可选实施例中,共识智能合约中的至少一个共识智能合约包括共识规则,该共识规则指定在共识节点接收到批准请求后,如果共识节点在预定时间段内未做出响应,则共识节点被视为已给予批准投票。
在可选实施例中,共识智能合约中的至少一个共识智能合约包括共识规则,该共识规则指定在共识节点接收到批准请求之后,如果共识节点在预定时间段内未做出响应,则共识节点被视为弃权投票。
在可选实施例中,共识智能合约中的至少一个共识智能合约指定以下中至少一项:(i)共识智能合约有效并且可以被处理智能合约调用的情况,或者(ii)共识智能合约无效并且不能被处理智能合约调用的情况。
在可选实施例中,每个共识智能合约指定以下至少一项:(i)共识智能合约有效并且可以被处理智能合约调用的第一时间段,其中,在该第一时间段之外,共识智能合约无效并且不能被处理智能合约调用,或者(ii)共识智能合约有效并且可以被处理智能合约调用的区块链的第一区块高度范围,其中,在该区块链的第一区块高度范围之外,共识智能合约无效并且不能被处理智能合约调用。
在可选实施例中,共识智能合约中的至少一个共识智能合约包括共识规则,该共识规则指定从第一组共识节点寻求关于是否批准或拒绝项目的共识,并且如果从第一组共识节点不能获得共识,则从第二组共识节点寻求关于是否批准或拒绝该项目的共识。
在可选实施例中,每个共识智能合约为每个共识节点指定联系方法,并且在执行时,共识智能合约使用与共识节点相关联的联系方法向每个共识节点发送该项目的批准请求。
在可选实施例中,至少一个共识智能合约被配置为接受参数列表,该参数列表指定哪些共识节点需要参与共识处理,并且执行处理智能合约包括从处理智能合约向共识智能合约传递作为参数的共识节点列表。
图11是根据本文实施例的装置490的模块的示例的图。装置490可以是区块链节点的实施例的示例,被配置为实现包括确定多个共识节点之间的共识的处理。装置490可以对应于上述实施例,并且装置490包括以下:
·执行模块492,在区块链上执行第一智能合约,其中,第一智能合约包括用于实现具有多个阶段的第一处理的代码,阶段之一包括在区块链上执行共识智能合约,其中,执行共识智能合约包括执行用于实现共识处理的代码,该共识处理用于根据一组一个或多个共识规则来确定两个或更多个共识节点之间的共识,共识智能合约包括关于每个共识节点的联系方法的信息,并且共识智能合约包括由共识节点用于向第二智能合约安全地发送投票的公钥,其中,与所述公钥对应的私钥存储在与区块链相关联的密钥管理系统中;和
·记录模块494,将第一智能合约的执行结果记录在区块链上。
在可选实施例中,该组一个或多个共识规则指定基于与共识节点相关联的投票的统计函数达成共识,所述统计函数被配置为使得在获得来自少于所有的共识节点的投票之后,达成共识。
在可选实施例中,该组一个或多个共识规则指定如果给予批准投票的共识节点的百分比大于预定百分比值,则达成共识。
在可选实施例中,该组一个或多个共识规则指定在共识节点接收到批准请求之后,如果共识节点在预定时间段内未做出响应,则共识节点被视为已给予批准投票。
在可选实施例中,该组一个或多个共识规则指定在共识节点接收到批准请求之后,如果共识节点在预定时间段内未做出响应,则共识节点被视为弃权投票。
在可选实施例中,共识智能合约指定以下中至少一项:(i)共识智能合约有效并且可以被第一智能合约调用的情况,或者(ii)共识智能合约无效并且不能被第一智能合约调用的情况。
在可选实施例中,共识智能合约指定以下中至少一项:(i)共识智能合约有效并且可以被第一智能合约调用的时间段,或(ii)共识智能合约有效并且可以被第一智能合约调用的区块链的区块高度范围。
在可选的实施例中,该组一个或多个共识规则指定从第一组共识节点寻求关于是否批准或拒绝项目的共识,并且如果不能从第一组共识节点获得共识,则从第二组共识节点中寻求关于是否批准或拒绝该项目的共识。
在一个可选实施例中,共识智能合约被配置为接受参数列表,该参数列表指定哪些共识节点需要参与共识处理,并且执行第一智能合约包括从第一智能合约向共识智能合约传递作为参数的共识节点列表。
前述实施例中示出的系统、装置、模块或单元可以通过使用计算机芯片或实体来实施,或者可以通过使用具有特定功能的产品来实施。典型的实施例设备是计算机,计算机可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能手机、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或这些设备的任意组合。
对于装置中每个模块的功能和作用的实施例处理,可以参考前一方法中相应步骤的实施例处理。为了简明,这里省略了细节。
由于装置实施例基本上对应于方法实施例,对于相关部件,可以参考方法实施例中的相关描述。先前描述的装置实施例仅是示例。被描述为单独部分的模块可以是或不是物理上分离的,并且显示为模块的部分可以是或不是物理模块,可以位于一个位置,或者可以分布在多个网络模块上。可以基于实际需求来选择一些或所有模块,以实现本文解决的目标。本领域的普通技术人员无需付出创造性劳动就可以理解和实现本申请的实施例。
再次参考图10和图11,它可以被解释为示出内部功能模块和区块链节点的结构。执行主体本质上可以是电子设备,并且该电子设备包括以下:一个或多个处理器;以及被配置为存储一个或多个处理器的可执行指令的一个或多个计算机可读存储器。在一些实施例中,所述一个或多个计算机可读存储器耦接至所述一个或多个处理器且其上存储有编程指令,所述编程指令可以由所述一个或多个处理器执行以执行本文所描述的算法、方法、函数、处理、流程和程序。本文还提供了耦接到一个或多个处理器并且其上存储有指令的一个或多个非暂态计算机可读存储介质,当所述指令由一个或多个处理器执行时,所述指令促使一个或多个处理器执行根据本文提供的方法的实施例的操作。
本文还提供了用于实现本文提供的方法的系统。该系统包括一个或多个处理器,以及耦接到所述一个或多个处理器并且其上存储有指令的计算机可读存储介质,当该指令由一个或多个处理器执行时,该指令促使一个或多个处理器执行根据本文提供的方法的实施例的操作。
本文中描述的主题、动作和操作的实施可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件中实施,包括本文中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本文中描述的主题的实施可以实现为一个或多个计算机程序,例如,编码在计算机程序载体上的一个或多个计算机程序指令模块,用于由数据处理装置执行或控制数据处理装置的操作。例如,计算机程序载体可以包括其上编码有或存储有指令的一个或多个计算机可读存储介质。载体可以是有形的非暂态计算机可读介质,诸如磁盘、磁光盘或光盘、固态驱动器、随机存取存储器(RAM)、只读存储器(ROM)或其他类型的介质。可选地或附加地,载体可以是人工生成的传播信号,例如,机器生成的电信号、光信号或电磁信号,其被生成来编码信息用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是或可以部分是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个的组合。计算机存储介质不是传播信号。
计算机程序,也可以被称为或描述为程序、软件、软件应用程序、app、模块、软件模块、引擎、脚本或代码,可以以任何形式的编程语言编写,包括编译或解释性语言、或声明或程序性语言;并且它可以配置为任何形式,包括作为独立程序,或作为模块、组件、引擎、子程序或适合在计算环境中执行的其他单元,该环境可以包括由数据通信网络互连的一个或多个位置上的一台或多台计算机。
计算机程序可以但非必须对应于文件系统中的文件。计算机程序可以存储在:保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本;专用于所讨论的程序的单个文件中;或者多个协调文件中,例如,存储一个或多个模块、子程序或代码部分的多个文件。
用于执行计算机程序的处理器包括:例如,通用微处理器和专用微处理器两者,和任意种类的数字计算机的任意一个或多个处理器。通常,处理器将从耦接至处理器的非暂态计算机可读介质接收用于执行的计算机程序的指令以及数据。
术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。数据处理装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)或GPU(图形处理单元)。除了硬件,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中一个或多个的组合的代码。
本文中描述的处理和逻辑流程可以由执行一个或多个计算机程序的一台或多台计算机或处理器执行,以通过对输入数据进行操作并生成输出来执行操作。处理和逻辑流程也可以由例如FPGA、ASIC或GPU等的专用逻辑电路或专用逻辑电路与一个或多个编程计算机的组合来执行。
适合于执行计算机程序的计算机可以基于通用处理器和/或专用微处理器,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的元件可以包括用于执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以补充有专用逻辑电路或结合在专用逻辑电路中。
通常,计算机还将包括或可操作地耦接至一个或多个存储设备,以从一个或多个存储设备接收数据或向一个或多个存储设备传送数据。存储设备可以是例如,磁盘、磁光盘或光盘、固态驱动器或任何其他类型的非暂态计算机可读介质。但是,计算机非必需这样的设备。因此,计算机可以耦接到例如一个或多个存储器的本地和/或远程的一个或多个存储设备。例如,计算机可以包括作为计算机的组成部件的一个或多个本地存储器,或者计算机可以耦接到云网络中的一个或多个远程存储器。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或例如通用串行总线(USB)闪存驱动器的便携式存储设备,这里仅举几例。
组件可以通过直接或经由一个或多个中间件例如电连接或光连接地彼此连接通信而彼此“耦接”。如果部件中的一个部件被集成到另一个中,则部件也可以被彼此“耦接”。例如,集成到处理器中的存储组件(例如,L2高速缓存组件)被“耦接到”处理器。
为了提供与用户的交互,本文中描述的主题的实施例可以在计算机上实现或配置为与该计算机通信,该计算机具有:显示设备,例如,LCD(液晶显示器)监视器,用于向用户显示信息;以及输入设备,用户可以通过该输入设备向计算机提供输入,例如键盘和例如鼠标、轨迹球或触摸板等的指针设备。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从用户设备上的web浏览器接收到的请求来将网页发送到该web浏览器,或者通过与在例如智能手机或电子平板电脑等的用户设备上运行的应用程序(app)交互。此外,计算机可以通过向个人设备(例如,运行消息收发应用程序的智能手机)发送文本消息或其他形式的消息并且作为回应从用户接收响应消息来与用户交互。
本文使用与系统、装置和计算机程序组件有关的术语“被配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已经在其上安装了在操作中使得系统执行该操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括被数据处理装置执行时促使该装置执行该操作或动作的指令。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行该操作或动作的电子逻辑。
虽然本文包含许多具体实施例细节,但是这些细节不应被解释为由权利要求本身限定的对要求保护的范围的限制,而是作为对特定实施例的具体特征的描述。在本文中单个实施例的上下文中描述的多个特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以被描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从要求保护的组合中删除该组合的一个或多个特征,并且权利要求书可以指向子组合或子组合的变体。
类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求中叙述了操作,但是这不应该被理解为:为了达到理想的效果,要求以所示的特定顺序或依次执行这些操作,或者要求执行所有示出的操作。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的划分不应被理解为在所有实施例中都要求如此划分,而应当理解,所描述的程序组件和系统通常可以被一起集成在单个软件产品中或打包成多个软件产品。
已经描述了主题的特定实施方式。其他实施方式在以下权利要求书的范围内。例如,权利要求书中记载的动作可以以不同的顺序执行并且仍然实现所期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或次序以实现所期望的结果。在一些情况下,多任务和并行处理可能是有利的。
Claims (21)
1.一种计算机实现的、用于实现包括确定多个共识节点之间的共识的处理的方法,所述方法包括:
提供多个处理智能合约,其中,每个处理智能合约被配置为执行于第一区块链上,每个处理智能合约包括用于实现包括两个或更多步骤的处理的代码,所述步骤中的至少一个涉及确定就是否批准或拒绝项目是否达成共识,以及所述步骤中的至少一个涉及基于是否达成共识来执行动作;
提供多个共识智能合约,其中,每个共识智能合约被配置为执行于第二区块链上,每个共识智能合约包括用于实现根据一个或多个共识规则确定多个共识节点之间共识的处理的代码,每个共识智能合约包括公钥,其中,与所述公钥对应的共识智能合约的私钥被存储在与所述第二区块链相关联的密钥管理系统中,所述第一区块链和所述第二区块链可以是相同的区块链或是不同的区块链;以及
执行两个或更多个处理智能合约,包括:
针对每个处理智能合约,调用一个或多个共识智能合约,其中,每个共识智能合约被配置为确定在多个共识节点之间是否达成共识,同一共识智能合约被多个处理智能合约调用;
其中,所述共识智能合约使用所述共识智能合约的私钥对用于请求是否批准或拒绝项目的投票的消息进行数字签名,并向所述多个共识节点发送经数字签名的消息,
其中,所述共识智能合约的公钥使得所述共识节点能够验证从所述共识智能合约发送的消息,以及
基于确定是否达成共识的结果来执行动作;其中,所述共识智能合约中的至少一个共识智能合约包括共识规则,所述共识规则指定从第一组共识节点寻求关于是否批准或拒绝项目的共识,并且如果从所述第一组共识节点不能获得共识,则从第二组共识节点寻求关于是否批准或拒绝所述项目的共识。
2.根据权利要求1所述的方法,其中,所述共识智能合约中的至少一个共识智能合约包括共识规则,所述共识规则指定基于与所述共识节点相关联的投票的统计函数,在一组共识节点之间达成共识,所述统计函数被配置为使得在获得来自少于该组共识节点中所有共识节点的投票之后,达成所述共识。
3.根据权利要求2所述的方法,其中,所述共识规则指定如果给予批准投票的所述共识节点的百分比大于预定百分比值,则在该组共识节点之间达成共识。
4.根据权利要求1所述的方法,其中,所述共识智能合约中的至少一个共识智能合约包括共识规则,所述共识规则指定在共识节点接收到批准请求之后,如果所述共识节点在预定时间段内未做出响应,则所述共识节点被视为给予批准投票。
5.根据权利要求1所述的方法,其中,所述共识智能合约中的至少一个共识智能合约包括共识规则,所述共识规则指定在共识节点接收到批准请求之后,如果所述共识节点在预定时间段内未做出响应,则所述共识节点被视为弃权投票。
6.根据权利要求1所述的方法,其中,所述共识智能合约中的至少一个共识智能合约指定以下中至少一项:
(i)所述共识智能合约有效并且能够被处理智能合约调用的情况,或者
(ii)所述共识智能合约无效并且不能被处理智能合约调用的情况。
7.根据权利要求1所述的方法,其中,每个共识智能合约指定以下中至少一项:
(i)所述共识智能合约有效并且能够被处理智能合约调用的第一时间段,其中,在所述第一时间段之外,所述共识智能合约无效并且不能被处理智能合约调用,或者
(ii)所述共识智能合约有效并且能够被处理智能合约调用的区块链的第一区块高度范围,其中,在所述区块链的第一区块高度范围之外,所述共识智能合约无效并且不能被处理智能合约调用。
8.根据权利要求1所述的方法,其中,每个共识智能合约为所述共识节点中的每个指定联系方法,并且在执行时,所述共识智能合约使用与所述共识节点相关联的联系方法向每个共识节点发送用于批准所述项目的请求,所述联系方法用于指示联系对应共识节点所需的方式。
9.根据权利要求1所述的方法,其中,至少一个共识智能合约被配置为接受参数列表,所述参数列表指定哪些共识节点需要参与共识处理,并且执行所述处理智能合约包括从所述处理智能合约向所述共识智能合约传递作为参数的共识节点列表。
10.一种用于实现包括确定多个共识节点之间的共识的处理的系统,所述系统包括:
一个或多个处理器;以及
耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行权利要求1至9中任一项所述的方法。
11.一种用于实现包括确定多个共识节点之间的共识的处理的装置,所述装置包括用于执行权利要求1至9中的任一项所述的方法的多个模块。
12.一种计算机实现的方法,包括:
在第一区块链上执行第一智能合约,其中,所述第一智能合约包括用于实现具有多个阶段的第一处理的代码,所述阶段之一包括在第二区块链上执行共识智能合约,其中,所述第一区块链和所述第二区块链相同或不同,
其中,执行所述共识智能合约包括执行用于实现共识处理的代码,该共识处理用于根据一组一个或多个共识规则来确定两个或更多个共识节点之间的共识,所述共识智能合约包括关于所述共识节点中的每个的联系方法的信息,所述共识智能合约包括公钥,与所述公钥对应的所述共识智能合约的私钥被存储在与所述第二区块链相关联的密钥管理系统中,所述联系方法用于指示联系对应共识节点所需的方式;
其中,所述共识智能合约使用所述共识智能合约的私钥对请求投票的消息进行数字签名,并向所述两个或更多个共识节点发送经数字签名的消息,
其中,所述共识智能合约的公钥使得所述共识节点能够验证从所述共识智能合约发送的消息;以及
将所述共识智能合约的执行结果记录在所述第一区块链或所述第二区块链中;其中,该组一个或多个共识规则指定,从第一组共识节点寻求关于是否批准或拒绝项目的共识,并且如果不能从所述第一组共识节点获得共识,则从第二组共识节点寻求关于是否批准或拒绝所述项目的共识。
13.根据权利要求12所述的方法,其中,该组一个或多个共识规则指定,基于与所述共识节点相关联的投票的统计函数来达成共识,所述统计函数被配置为使得在获得来自少于所述共识节点中所有共识节点的投票之后,达成共识。
14.根据权利要求13所述的方法,其中,该组一个或多个共识规则指定,如果给予批准投票的共识节点的百分比大于预定百分比值,则达成共识。
15.根据权利要求12所述的方法,其中,该组一个或多个共识规则指定,在共识节点接收到批准请求之后,如果所述共识节点在预定时间段内未做出响应,则所述共识节点被视为给予批准投票。
16.根据权利要求12所述的方法,其中,该组一个或多个共识规则指定,在共识节点接收到批准请求之后,如果所述共识节点在预定时间段内未做出响应,则所述共识节点被视为弃权投票。
17.根据权利要求12所述的方法,其中,所述共识智能合约指定以下中至少一项:
(i)所述共识智能合约有效并且能够被所述第一智能合约调用的情况,或者
(ii)所述共识智能合约无效并且不能被所述第一智能合约调用的情况。
18.根据权利要求12所述的方法,其中,所述共识智能合约指定以下中至少一项:
(i)所述共识智能合约有效并且能够被所述第一智能合约调用的时间段,或者
(ii)所述共识智能合约有效并且能够被所述第一智能合约调用的区块链的区块高度范围。
19.根据权利要求12所述的方法,其中,所述共识智能合约被配置为接受参数列表,所述参数列表指定哪些共识节点需要参与所述共识处理,并且执行所述第一智能合约包括从所述第一智能合约向所述共识智能合约传递作为参数的共识节点列表。
20.一种用于实现包括确定多个共识节点之间的共识的处理的系统,所述系统包括:
一个或多个处理器;以及
耦接到所述一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行权利要求12至19中任一项所述的方法。
21.一种用于实现包括确定多个共识节点之间的共识的处理的装置,该装置包括用于执行权利要求12至19中任一项所述的方法的多个模块。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/076474 WO2020098840A2 (en) | 2020-02-24 | 2020-02-24 | Blockchain-based consensus process |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111417946A CN111417946A (zh) | 2020-07-14 |
CN111417946B true CN111417946B (zh) | 2023-08-04 |
Family
ID=70733035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080000599.2A Active CN111417946B (zh) | 2020-02-24 | 2020-02-24 | 基于区块链的共识处理 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11057221B2 (zh) |
EP (1) | EP3797375B1 (zh) |
CN (1) | CN111417946B (zh) |
SG (1) | SG11202012848PA (zh) |
WO (1) | WO2020098840A2 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11227282B2 (en) * | 2018-08-20 | 2022-01-18 | Probloch LLC | Time-bounded activity chains with multiple authenticated agent participation bound by distributed single-source-of-truth networks that can enforce automated value transfer |
US11398916B1 (en) * | 2019-12-18 | 2022-07-26 | Wells Fargo Bank, N.A. | Systems and methods of group signature management with consensus |
US11081219B1 (en) | 2020-01-15 | 2021-08-03 | Ledgerdomain Inc. | Secure messaging in a machine learning blockchain network |
US11769577B1 (en) | 2020-01-15 | 2023-09-26 | Ledgerdomain Inc. | Decentralized identity authentication framework for distributed data |
US20210374731A1 (en) * | 2020-05-26 | 2021-12-02 | Coinbase, Inc. | Systems and methods for consensus-based access control for smart contract functions |
CN112513914A (zh) * | 2020-07-03 | 2021-03-16 | 支付宝(杭州)信息技术有限公司 | 基于区块链的隐私交易中提供隐私和安全保护的系统和方法 |
CN111526219B (zh) | 2020-07-03 | 2021-02-09 | 支付宝(杭州)信息技术有限公司 | 一种联盟链的共识方法及联盟链系统 |
CN111930847B (zh) * | 2020-09-16 | 2021-01-08 | 深圳壹账通智能科技有限公司 | 基于区块链的数据处理方法、装置及存储介质 |
CN112187913B (zh) * | 2020-09-24 | 2023-09-08 | 北京国建信联科技发展有限公司 | 一种基于智能合约实现共识的方法与系统 |
CN112182113A (zh) * | 2020-10-23 | 2021-01-05 | 网易(杭州)网络有限公司 | 区块链共识方法、系统、电子设备及存储介质 |
CN112865962B (zh) * | 2021-01-07 | 2022-12-02 | 杭州链城数字科技有限公司 | 一种基于区块链的分布式标识认证方法和装置、电子设备 |
CN113190618A (zh) * | 2021-04-28 | 2021-07-30 | 宁夏中小在线资信服务有限公司 | 一种基于区块链技术的企业政务服务数据的存储方法 |
US20230004970A1 (en) * | 2021-06-30 | 2023-01-05 | Artema Labs, Inc | Distributed Ledgers with Ledger Entries Containing Redactable Payloads |
CN114048517B (zh) * | 2022-01-14 | 2022-05-20 | 北京大学深圳研究生院 | 区块链的双通道共识系统和方法、计算机可读存储介质 |
CN114638697B (zh) * | 2022-05-18 | 2022-11-15 | 浙江数秦科技有限公司 | 基于区块链的小额贷款管理系统 |
US11741215B1 (en) | 2022-11-07 | 2023-08-29 | Ledgerdomain Inc. | Recipient credentialing leveraging private keys on keystores read by provisioned devices |
US11741216B1 (en) | 2022-11-07 | 2023-08-29 | Ledgerdomain Inc. | Credential revocation leveraging private keys on keystores read by provisioned devices |
US11736290B1 (en) | 2022-11-07 | 2023-08-22 | Ledgerdomain Inc. | Management of recipient credentials leveraging private keys on keystores read by provisioned devices |
US11848754B1 (en) * | 2022-11-07 | 2023-12-19 | Ledgerdomain Inc. | Access delegation leveraging private keys on keystores read by provisioned devices |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108256859A (zh) * | 2018-01-02 | 2018-07-06 | 中国工商银行股份有限公司 | 基于区块链的金融产品交易共识方法、节点及系统 |
WO2018152519A1 (en) * | 2017-02-20 | 2018-08-23 | AlphaPoint | Performance of distributed system functions using a trusted execution environment |
CN109218079A (zh) * | 2018-08-16 | 2019-01-15 | 北京京东尚科信息技术有限公司 | 一种区块链网络、部署方法及存储介质 |
CN109617702A (zh) * | 2019-01-29 | 2019-04-12 | 深圳市先河系统技术有限公司 | 消息签名的方法、区块链节点及具有存储功能的装置 |
CN109685551A (zh) * | 2018-12-05 | 2019-04-26 | 深圳正品创想科技有限公司 | 信息处理方法及其装置、服务器及信息处理系统 |
CN110115001A (zh) * | 2018-11-07 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 促进实用拜占庭容错区块链共识和节点同步 |
CN110245183A (zh) * | 2019-05-05 | 2019-09-17 | 上海链度科技有限公司 | 一种基于联盟区块链技术的加密电子投票选举系统及方法 |
CN110569309A (zh) * | 2019-09-17 | 2019-12-13 | 上海保险交易所股份有限公司 | 用于实现区块链的设备、方法、系统以及介质 |
CN110569675A (zh) * | 2019-09-18 | 2019-12-13 | 上海海事大学 | 一种基于区块链技术的多Agent交易信息保护方法 |
CN110781526A (zh) * | 2019-12-23 | 2020-02-11 | 杭州鸽子蛋网络科技有限责任公司 | 数字奖章创建方法、装置、电子设备及介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018158936A1 (ja) * | 2017-03-03 | 2018-09-07 | 日本電気株式会社 | ブロックチェーン管理装置、ブロックチェーン管理方法及びプログラム |
TWI765019B (zh) * | 2017-04-11 | 2022-05-21 | 安地卡及巴布達商區塊鏈控股有限公司 | 區塊鏈上之快速分散式共識 |
US10361859B2 (en) * | 2017-10-06 | 2019-07-23 | Stealthpath, Inc. | Methods for internet communication security |
US20190114706A1 (en) * | 2017-10-17 | 2019-04-18 | SALT Lending Holdings, Inc. | Blockchain oracle for managing loans collateralized by digital assets |
US11257073B2 (en) * | 2018-01-31 | 2022-02-22 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing machine learning models for smart contracts using distributed ledger technologies in a cloud based computing environment |
US11176101B2 (en) * | 2018-02-05 | 2021-11-16 | Bank Of America Corporation | System and method for decentralized regulation and hierarchical control of blockchain architecture |
US11159307B2 (en) * | 2018-08-08 | 2021-10-26 | International Business Machines Corporation | Ad-hoc trusted groups on a blockchain |
US20200143372A1 (en) * | 2018-11-02 | 2020-05-07 | Vite Labs Limited | Methods for decentralized digital asset transfer and smart contract state transition |
US20200334677A1 (en) * | 2019-04-16 | 2020-10-22 | Nokia Solutions And Networks Oy | Transparent blockchain sidechains to support blockchain processing heterogeneity |
US20200394651A1 (en) * | 2019-06-13 | 2020-12-17 | Gridplus, Inc. | Dynamic off-chain digital currency transaction processing |
-
2020
- 2020-02-24 SG SG11202012848PA patent/SG11202012848PA/en unknown
- 2020-02-24 WO PCT/CN2020/076474 patent/WO2020098840A2/en unknown
- 2020-02-24 CN CN202080000599.2A patent/CN111417946B/zh active Active
- 2020-02-24 EP EP20725743.7A patent/EP3797375B1/en active Active
- 2020-12-30 US US17/138,739 patent/US11057221B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018152519A1 (en) * | 2017-02-20 | 2018-08-23 | AlphaPoint | Performance of distributed system functions using a trusted execution environment |
CN108256859A (zh) * | 2018-01-02 | 2018-07-06 | 中国工商银行股份有限公司 | 基于区块链的金融产品交易共识方法、节点及系统 |
CN109218079A (zh) * | 2018-08-16 | 2019-01-15 | 北京京东尚科信息技术有限公司 | 一种区块链网络、部署方法及存储介质 |
CN110115001A (zh) * | 2018-11-07 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 促进实用拜占庭容错区块链共识和节点同步 |
CN109685551A (zh) * | 2018-12-05 | 2019-04-26 | 深圳正品创想科技有限公司 | 信息处理方法及其装置、服务器及信息处理系统 |
CN109617702A (zh) * | 2019-01-29 | 2019-04-12 | 深圳市先河系统技术有限公司 | 消息签名的方法、区块链节点及具有存储功能的装置 |
CN110245183A (zh) * | 2019-05-05 | 2019-09-17 | 上海链度科技有限公司 | 一种基于联盟区块链技术的加密电子投票选举系统及方法 |
CN110569309A (zh) * | 2019-09-17 | 2019-12-13 | 上海保险交易所股份有限公司 | 用于实现区块链的设备、方法、系统以及介质 |
CN110569675A (zh) * | 2019-09-18 | 2019-12-13 | 上海海事大学 | 一种基于区块链技术的多Agent交易信息保护方法 |
CN110781526A (zh) * | 2019-12-23 | 2020-02-11 | 杭州鸽子蛋网络科技有限责任公司 | 数字奖章创建方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020098840A3 (en) | 2020-12-24 |
US20210126797A1 (en) | 2021-04-29 |
CN111417946A (zh) | 2020-07-14 |
US11057221B2 (en) | 2021-07-06 |
SG11202012848PA (en) | 2021-01-28 |
EP3797375A2 (en) | 2021-03-31 |
EP3797375B1 (en) | 2022-10-05 |
EP3797375A4 (en) | 2021-06-09 |
WO2020098840A2 (en) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111417946B (zh) | 基于区块链的共识处理 | |
Swan | Blockchain for business: Next-generation enterprise artificial intelligence systems | |
Staples et al. | Risks and opportunities for systems using blockchain and smart contracts. Data61 | |
CN110383791B (zh) | 基于区块链的地图应用众包 | |
US11057217B2 (en) | Performing parallel execution of transactions in a distributed ledger system | |
CN111095326B (zh) | 用于在区块链网络中执行多个交易的方法、系统和装置 | |
WO2020182232A2 (en) | Managing transactions on blockchain networks | |
CN111095325B (zh) | 在分布式账本系统中进行交易的并行执行 | |
CN110300985A (zh) | 基于智能合约白名单在区块链网络中并行执行交易 | |
US20210390558A1 (en) | Smart logistics management using blockchain | |
EP3933642B1 (en) | Managing transactions in multiple blockchain networks | |
KR102251161B1 (ko) | 블록체인 네트워크에서 스마트 계약을 이용하여 주택 점수를 관리하는 방법 | |
US10783590B1 (en) | Mutual aid network based on smart contract and blockchain | |
JP2022553674A (ja) | 存在するチェーン・コードに基づくチェーン・コード推奨 | |
EP3933641B1 (en) | Managing transactions in multiple blockchain networks | |
WO2022073210A1 (en) | Managing blockchain-based trustable transaction services | |
WO2022073212A1 (en) | Managing blockchain-based trustable transaction services | |
US20210233104A1 (en) | Product exploration-based promotion | |
US20230419285A1 (en) | NFT Enforcement Control System | |
US20210233122A1 (en) | Product exploration-based promotion | |
US20230368293A1 (en) | Fiat payment based on a cryptocurrency blockchain transaction |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40033458 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |