CN112513900B - 用于共识管理的系统和方法 - Google Patents

用于共识管理的系统和方法 Download PDF

Info

Publication number
CN112513900B
CN112513900B CN201980005296.7A CN201980005296A CN112513900B CN 112513900 B CN112513900 B CN 112513900B CN 201980005296 A CN201980005296 A CN 201980005296A CN 112513900 B CN112513900 B CN 112513900B
Authority
CN
China
Prior art keywords
consensus
blockchain
participating entities
nodes
participating
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
CN201980005296.7A
Other languages
English (en)
Other versions
CN112513900A (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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
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
Application filed by Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Publication of CN112513900A publication Critical patent/CN112513900A/zh
Application granted granted Critical
Publication of CN112513900B publication Critical patent/CN112513900B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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
    • H04L9/3239Cryptographic 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

提供了用于基于区块链的共识管理的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。方法之一包括:获得用于创建共识模板的请求,其中,该请求包括和与该共识模板相关联的多个参与实体有关的信息;基于所述请求来生成表示与共识模板相关联的参与实体的层级结构的数据集;创建用于将共识模板注册到区块链的区块链交易,其中,所述区块链交易包括表示参与实体的层级结构的数据集;以及向与区块链关联的一个或多个区块链节点发送用于将共识模板注册到所述区块链的区块链交易,以添加到区块链。

Description

用于共识管理的系统和方法
技术领域
本文一般涉及用于基于区块链技术管理共识的方法和设备。
背景技术
具有不同角色、位置或程序的多个实体之间经常需要进行协调,以执行现实世界中的项目和任务。实体彼此之间可能有也可能没有信任关系。实体之间的信任关系可能会根据情况而有所不同。此外,实体之间可能具有层级关系或依赖性。为了彼此协调并参与共同决策,多个实体可能需要就项目的各种事实达成共识。此类事实可能包括,例如项目的状态、项目中每个参与实体所取得的进展、有关该项目的决策的支持者和反对者,或其他适当的事实。例如,为了合法地签发仓单,各个参与实体可能需要批准其有效性。参与实体可以包括存储公司、供应链公司和保险公司。可以授权一个或多个个人以代表每个参与实体共同地批准仓单。
因此,期望一种可靠、透明和有效的系统来促进多个参与实体之间达成共识,并记录共识处理的结果和细节。进一步期望该系统可由实体定制,并且能够在管理共识时适应参与实体之间的复杂关系。例如,可能期望系统认识到与存储公司相关联的任何授权人员对仓单的批准足以构成存储公司的批准。此外,由于项目可能经常具有共同的或重复的合作方案(例如,同一公司处理的不同批次产品的仓单),因此期望系统利用方案的重复性质来提高效率并减少冗余。
区块链可以包括被包含在链接的区块中并被加密技术保障的增长纪录列表。区块链的每个区块可以包括交易信息、账户信息、关于一个或多个先前区块的信息以及其他相关信息。区块链可以在点对点(peer-to-peer)网络中实现,该点对点网络包括遵守用于节点间通信、交易或区块有效性确认以及共识形成的协议的多个区块链节点。区块链提供了一种创建和维护永久记录并使记录可供多方访问的方式。区块链技术已实现各种应用在可信或不可信的各方之间进行共识管理。例如,各种区块链网络上的多签名交易可能需要来自多方的签名才能被确认有效。但是,这样的应用可能无法被定制以适应不同各方之间的复杂关系,也不能识别共识的不同实例之间的共同特征或模式。
发明内容
本文的各种实施例包括但不限于用于基于区块链技术管理共识的系统、方法和非暂时性计算机可读介质。
根据一些实施例,一种计算机实现的用于基于区块链的共识管理的方法包括获得用于创建共识模板的请求,其中,所述请求包括和与共识模板相关联的多个参与实体有关的信息;基于请求来生成表示与共识模板相关联的参与实体的层级结构的数据集;创建用于将共识模板注册到区块链的区块链交易,其中,区块链交易包括表示参与实体的层级结构的数据集;以及向与区块链相关联的一个或多个区块链节点发送用于将共识模板注册到区块链的区块链交易以添加到区块链。
在一些实施例中,关于多个参与实体的信息包括:与一个或多个参与实体中的每个相关联的标识、与一个或多个参与实体中的每个相关联的区块链账户的公钥、与一个或多个参与实体中的每个相关联的联系信息、与参与实体的层级结构相关联的信息、或分配给一个或多个参与实体中的每个的权重。
在一些实施例中,所述方法进一步包括:从用于创建共识模板的请求中获得用于确定达成共识的一个或多个标准;并且存储用于确定达成共识的一个或多个标准。
在一些实施例中,用于创建共识模板的请求包括JavaScript对象简谱(JSON)文件。
在一些实施例中,生成表示与共识模板相关联的参与实体的层级结构的数据集包括:解析用于创建共识模板的请求,以获得表示参与实体的层级结构的树结构;以及生成与树结构相对应的一个或多个阵列。
在一些实施例中,树结构包括多个节点,多个节点包括根节点、一个或多个分支节点以及多个叶节点。该树结构包括分别与该树结构的一个或多个节点相关联的一个或多个权重。每个叶节点对应于与共识模板相关联的参与实体之一。
在一些实施例中,一个或多个叶节点中的各自对应于与实体相关联的个体。一个或多个叶节点的父节点对应于该实体。
在一些实施例中,一个或多个阵列包括:包括与树结构的一个或多个节点相关联的一个或多个序列号的阵列;包括与树结构的一个或多个节点中的一个或多个父节点相关联的一个或多个序列号的阵列;或包括分别与树结构的一个或多个节点相关联的一个或多个权重的阵列。
在一些实施例中,用于将共识模板注册到区块链的区块链交易可以被执行以调用被配置为将一个或多个共识模板注册到区块链的区块链合约。
在一些实施例中,获得用于创建共识模板的请求包括:从与参与实体之一相关联的计算设备获得用于创建共识模板的请求,参与实体与共识模板相关联。所述方法还包括将对共识模板被创建的确认返回给与参与实体之一相关联的计算设备。
根据其他实施例,一种用于基于区块链的共识管理的系统包括一个或多个处理器以及耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令可由一个或多个处理器执行以执行包括以下的操作:获得用于创建共识模板的请求,其中,所述请求包括和与共识模板相关联的多个参与实体有关的信息;基于请求来生成表示与共识模板相关联的参与实体的层级结构的数据集;创建用于将共识模板注册到区块链的区块链交易,其中,区块链交易包括表示参与实体的层级结构的数据集;以及向与区块链相关联的一个或多个区块链节点发送用于将共识模板注册到区块链的区块链交易以添加到区块链。
根据其他实施例,一种非暂时性计算机可读存储介质,配置有可由一个或多个处理器执行以促使所述一个或多个处理器执行包括以下的操作的指令:获得用于创建共识模板的请求,其中,所述请求包括和与共识模板相关联的多个参与实体有关的信息;基于请求来生成表示与共识模板相关联的参与实体的层级结构的数据集;创建用于将共识模板注册到区块链的区块链交易,其中,区块链交易包括表示参与实体的层级结构的数据集;以及向与区块链相关联的一个或多个区块链节点发送用于将共识模板注册到区块链的区块链交易以添加到区块链。
根据其他实施例,一种用于基于区块链的共识管理的装置包括:获得模块,用于获得用于创建共识模板的请求,其中,所述请求包括和与共识模板相关联的多个参与实体有关的信息;生成模块,用于基于请求来生成表示与共识模板相关联的参与实体的层级结构的数据集;创建模块,用于创建用于将共识模板注册到区块链的区块链交易,其中,区块链交易包括表示参与实体的层级结构的数据集;以及发送模块,用于向与区块链相关联的一个或多个区块链节点发送用于将共识模板注册到区块链的区块链交易以添加到区块链。
根据一些实施例,一种计算机实现的用于区块链的共识管理的方法包括:获得用于创建需要多个参与实体的共识的共识对象的请求,其中,用于创建共识对象的请求包括与参与实体的层级结构相关联的共识模板的标识;基于与共识模板相关联的参与实体的层级结构来初始化与共识对象相关联的多个参数,其中,参数包括与每个参与实体相对应的参数,并且所述初始化包括将每个参数设置为初始值;创建用于将共识对象注册到区块链的区块链交易,其中,用于将共识对象注册到区块链的区块链交易包括与每个参数相关联的初始值;以及向与区块链相关联的一个或多个区块链节点发送用于将共识对象注册到区块链的区块链交易,以添加到区块链。
在一些实施例中,区块链交易还包括共识对象的多个属性。所述属性包括:共识模板的标识;共识对象的标识;与一个或多个参与实体中的每个相关联的标识;与一个或多个参与实体中的每个相关联的区块链账户的公钥;或分配给一个或多个参与实体中的每个的权重。
在一些实施例中,初始化与共识对象相关联的多个参数包括:获得表示参与实体的层级结构的树结构,该树结构包括多个节点;生成包括多个位置的阵列,每个位置对应于与树结构的节点之一,其中所述位置分别对应于与共识对象相关联的参数;将阵列的每个位置设置为与该位置对应的参数的初始值。
在一些实施例中,获得用于创建共识对象的请求包括从与参与实体之一相关联的计算设备获得用于创建共识对象的请求,参与实体与共识对象相关联。所述方法还包括将对共识对象被创建的确认返回给与参与实体之一相关联的计算设备。
在一些实施例中,所述方法还包括向与一个或多个参与实体相关联的一个或多个计算设备发送创建共识对象的通知,所述参与实体与所述共识对象相关联,其中,所述通知包括共识对象的标识以及用于批准共识对象的请求。
根据一些实施例,一种用于基于区块链的共识管理的系统包括一个或多个处理器以及耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令可由一个或多个处理器执行以执行包括以下的操作:获得用于创建需要多个参与实体的共识的共识对象的请求,其中,用于创建共识对象的请求包括与参与实体的层级结构相关联的共识模板的标识;基于与共识模板相关联的参与实体的层级结构来初始化与共识对象相关联的多个参数,其中,参数包括与每个参与实体相对应的参数,并且所述初始化包括将每个参数设置为初始值;创建用于将共识对象注册到区块链的区块链交易,其中,用于将共识对象注册到区块链的区块链交易包括与每个参数相关联的初始值;以及向与区块链相关联的一个或多个区块链节点发送用于将共识对象注册到区块链的区块链交易,以添加到区块链。
根据其他实施例,一种非暂时性计算机可读存储介质,配置有可由一个或多个处理器执行以促使所述一个或多个处理器执行包括以下的操作的指令:获得用于创建需要多个参与实体的共识的共识对象的请求,其中,用于创建共识对象的请求包括与参与实体的层级结构相关联的共识模板的标识;基于与共识模板相关联的参与实体的层级结构来初始化与共识对象相关联的多个参数,其中,参数包括与每个参与实体相对应的参数,并且所述初始化包括将每个参数设置为初始值;创建用于将共识对象注册到区块链的区块链交易,其中,用于将共识对象注册到区块链的区块链交易包括与每个参数相关联的初始值;以及向与区块链相关联的一个或多个区块链节点发送用于将共识对象注册到区块链的区块链交易,以添加到区块链。
根据其他实施例,一种用于基于区块链的共识管理的装置包括:获得模块,用于获得用于创建需要多个参与实体的共识的共识对象的请求,其中,用于创建共识对象的请求包括与参与实体的层级结构相关联的共识模板的标识;初始化模块,用于基于与共识模板相关联的参与实体的层级结构来初始化与共识对象相关联的多个参数,其中,参数包括与每个参与实体相对应的参数,并且所述初始化包括将每个参数设置为初始值;创建模块,用于创建用于将共识对象注册到区块链的区块链交易,其中,用于将共识对象注册到区块链的区块链交易包括与每个参数相关联的初始值;以及发送模块,用于向与区块链相关联的一个或多个区块链节点发送用于将共识对象注册到区块链的区块链交易,以添加到区块链。
根据一些实施例,一种计算机实现的用于基于区块链的共识管理的方法包括:获得针对与区块链相关联的共识对象的批准消息,所述共识对象包括与多个参与实体的层级结构相关联的多个参数,其中,批准消息包括与参与实体之一相关联的信息并且参与实体之一与参数之一相对应;基于批准消息来获得与参与实体之一相关联的数字签名;基于与共识对象相关联的信息来认证数字签名;基于批准消息来创建被被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易;向与区块链相关联的一个或多个区块链节点发送可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易,以添加到区块链。
在一些实施例中,获得与参与实体之一相关联的数字签名包括:从针对共识对象的批准消息中所述数字签名。
在一些实施例中,获得与参与实体之一相关联的数字签名包括:从针对共识对象的批准消息中获得与参与实体之一相关联的身份信息;认证与参与实体之一相关联的身份信息;基于获得的身份信息来检索与参与实体之一相关联的私钥;以及基于与参与实体之一相关联的私钥来生成数字签名。
在一些实施例中,认证数字签名包括:从与共识对象相关联的信息中获得与参与实体之一相关联的公钥;以及基于公钥来验证数字签名是基于与公钥相对应的私钥创建的。
在一些实施例中,可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易可以被执行,以调用被配置为维护与共识对象相关联的参数的值的区块链合约。
在一些实施例中,可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易可进一步被执行,以将与共识对象相关联的一个或多个其他参数分别设置为一个或多个更新值,每个其他参数与对应于参与实体之一的参数具有依赖关系。
在一些实施例中,创建可被执行以将与参与实体之一相对应的参数设置为更新值的可执行区块链交易包括:获得表示参与实体的层级结构的树结构,所述树结构包括多个节点,其中,树结构的节点分别对应于与共识对象相关联的参数;从树结构中识别分支中的一个或多个其他节点,所述分支将与参与实体之一的参数相对应的节点连接到树结构的根节点;以及确定每个其他节点和根节点的更新值。
在一些实施例中,确定每个其他节点和根节点的更新值包括,针对每个其他节点:将该其他节点的更新值确定为与该其他节点的一个或多个子节点相关联的一个或多个值的加权和。
在一些实施例中,获得针对共识对象的批准消息包括:从与参与实体之一相关联的计算设备获得针对共识对象的批准消息,所述参与实体与共识模板相关联。所述方法还包括:将对共识对象被成功签名的确认返回给与参与实体之一相关联的计算设备。
在一些实施例中,所述方法还包括:从区块链获得与共识对象相关联的一个或多个参数的一个或多个更新值;基于一个或多个更新值来确定用于确定批准共识对象的一个或多个标准被满足;以及生成包括共识对象被批准的证明的区块链交易。
在一些实施例中,所述方法还包括:向与区块链相关联的一个或多个区块链节点发送包括共识对象被批准的证明的区块链交易,以添加到区块链。
在一些实施例中,所述方法还包括:向与不同区块链相关联的一个或多个区块链节点发送包括共识对象被批准的证明的区块链交易,以添加到不同区块链。
在一些实施例中,包括共识对象被批准的证明的区块链交易可以被执行,以调用可以被执行以基于共识对象被批准来触发一个或多个区块链交易的区块链合约。
在一些实施例中,用于确定批准共识对象的一个或多个标准包括:批准共识对象的参与实体的所需数量;或批准共识对象所需的一个或多个参与实体。
根据另一实施例,一种用于基于区块链的共识管理的系统包括一个或多个处理器以及耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令可由一个或多个处理器执行以执行包括以下的操作:获得针对与区块链相关联的共识对象的批准消息,所述共识对象包括与多个参与实体的层级结构相关联的多个参数,其中所述批准消息包括与参与实体之一相关联的信息并且参与实体之一与参数之一相对应;基于批准消息来获得与参与实体之一相关联的数字签名;基于与共识对象相关联的消息来认证数字签名;基于批准消息来创建可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易;以及向与区块链相关联的一个或多个区块链节点发送可被执行以将与参与实体之一相对应的参数设置为更新值的可区块链交易。
根据其他实施例,一种非暂时性计算机可读存储介质,配置有可由一个或多个处理器执行以促使所述一个或多个处理器执行包括以下的操作的指令:获得针对与区块链相关联的共识对象的批准消息,所述共识对象包括与多个参与实体的层级结构相关联的多个参数,其中所述批准消息包括与参与实体之一相关联的信息并且参与实体之一与参数之一相对应;基于批准消息来获得与参与实体之一相关联的数字签名;基于与共识对象相关联的消息来认证数字签名;基于批准消息来创建可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易;以及向与区块链相关联的一个或多个区块链节点发送可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易。
根据其他实施例,一种用于基于区块链的共识管理的装置包括:第一获得模块,用于获得针对与区块链相关联的共识对象的批准消息,所述共识对象包括与多个参与实体的层级结构相关联的多个参数,其中所述批准消息包括与参与实体之一相关联的信息并且参与实体之一与参数之一相对应;第二获得模块,用于基于批准消息来获得与参与实体之一相关联的数字签名;认证模块,用于基于与共识对象相关联的消息来认证数字签名;创建模块,用于基于批准消息创建可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易;以及发送模块,用于向与区块链相关联的一个或多个区块链节点发送可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易。
根据一些实施例,一种计算机实现的用于基于区块链的共识管理的方法包括:获得针对与区块链相关联的共识对象的状态的请求,其中,所述共识对象包括与多个参与实体的层级结构相关联的多个参数;从区块链获得分别与共识对象的参数相关联的多个值;基于多个值来生成共识对象的状态概要;以及返回共识对象的状态概要。
在一些实施例中,共识对象的状态概要包括:共识对象被批准的证明。
在一些实施例中,共识对象的状态概要包括:与已批准共识对象的一个或多个参与实体中的每个相关联的身份信息;与已批准共识对象的一个或多个参与实体中的每个相关联的数字签名;或分配给已批准共识对象的一个或多个参与实体中的每个的权重。
在一些实施例中,共识对象的状态概要包括JavaScript对象简谱JSON文件。
在一些实施例中,所述生成所述共识对象的状态概要包括:基于与共识对象相关联的信息来构建与参与实体的层级结构相对应的树结构;以及基于树结构来生成共识对象的状态概要。
在一些实施例中,树结构包括多个节点,多个节点包括根节点、一个或多个分支节点以及多个叶节点。树结构的每个节点对应于与共识对象相关联的多个参数之一。状态概要包括与树结构的根节点相对应的参数的值。
在一些实施例中,与共识对象相关联的信息包括分别与共识对象的参数相对应的多个条目的阵列。所述构建树结构包括:根据参与实体的层级结构来组织条目的阵列。
在一些实施例中,构建树结构包括:创建用于包括阵列中的一个或多个条目的堆栈;以及对于阵列中的每个条目;从阵列获得该条目;基于获得的条目来更新堆栈;以及将获得的条目添加至树结构,其中,获得的条目在树结构中的位置基于更新的堆栈。
在一些实施例中,基于获得的条目来更新堆栈包括:将获得的条目添加至堆栈;或从堆栈中移除一个或多个条目。
在一些实施例中,构建树结构还包括:创建与树结构相关联的一个或多个索引;基于每个获得的条目更新一个或多个索引;以及进一步基于一个或多个更新的索引来更新堆栈。
根据其他实施例,根据另一实施例,一种用于基于区块链的共识管理的系统包括一个或多个处理器以及耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令可由一个或多个处理器执行以执行包括以下的操作:获得针对与区块链相关联的共识对象的状态的请求,其中,所述共识对象包括与多个参与实体的层级结构相关联的多个参数;从区块链获得分别与共识对象的参数相关联的多个值;基于多个值来生成共识对象的状态概要;以及返回共识对象的状态概要。
一种非暂时性计算机可读存储介质,配置有可由一个或多个处理器执行以促使所述一个或多个处理器执行包括以下的操作的指令:获得针对与区块链相关联的共识对象的状态的请求,其中,所述共识对象包括与多个参与实体的层级结构相关联的多个参数;从区块链获得分别与共识对象的参数相关联的多个值;基于多个值来生成共识对象的状态概要;以及返回共识对象的状态概要。
一种用于基于区块链的共识管理的装置包括:第一获得模块,用于获得针对与区块链相关联的共识对象的状态的请求,其中,所述共识对象包括与多个参与实体的层级结构相关联的多个参数;第二获得模块,用于从区块链获得分别与共识对象的参数相关联的多个值;生成模块,用于基于多个值来生成共识对象的状态概要;以及返回模块,用于返回共识对象的状态概要。
根据一些实施例,一种用于基于区块链的共识管理的系统,包括:一个或多个处理器以及耦接到所述一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述指令能够由所述一个或多个处理器执行前述实施例中任一个所述的方法。
根据其他实施例,一种非暂时性计算机可读存储介质,配置有能够由一个或多个处理器执行的指令,以促使所述一个或多个处理器执行前述实施例中任一个所述的方法。
根据其他实施例,一种用于基于区块链的共识管理的装置包括用于执行前述实施例中任一个所述的方法的多个模块
本文公开的实施例具有一个或多个技术效果。在一些实施例中,在线平台创建与需要各种参与实体的共识的项目相对应的基于区块链的对象。这允许对参与实体之间的共识处理进行可靠、透明、有效的管理和跟踪。在其他实施例中,在线平台使得能够注册可定制的基于区块链的模板,以创建基于区块链的对象。这允许灵活地表示各种现实世界的共识场景,并减少对基于区块链的对象进行编程时的重复工作。在其他实施例中,使用在线平台创建的基于区块链的模板对参与实体之间的复杂层级关系和达成共识的复杂标准进行编码。这允许记录和确定针对复杂业务交易和合作努力的共识。在其他实施例中,在线平台提供各种接口,使得与定义和跟踪不同实体之间的共识有关的各种基于区块链的功能可用。这减少了利用基于区块链的共识管理所提供的各种优势(例如,可信度、透明度)所需的技术精度和资源。
在参考附图考虑以下描述和所附权利要求书之后,本文所公开的系统、方法和非暂时性计算机可读介质的这些特征和其他特征,以及结构的相关元件的操作方法和功能、部件的组合和制造的经济性将变得更清楚,所有这些形成本文的一部分,其中,在各个附图中,相同的附图标记表示对应的部件。然而,应明确理解,附图仅用于说明和描述的目的,且不旨在作为限制。
附图说明
图1示出了根据一些实施例的与区块链相关联的网络环境。
图2示出了根据一些实施例的用于实现区块链交易的框架。
图3示出了根据一些实施例的用于管理多个参与实体之间的共识的网络环境。
图4示出了根据一些实施例的用于注册共识模板的处理。
图5示出了根据一些实施例的与共识模板相关联的树结构。
图6示出了根据一些实施例的与共识模板相关联的数据。
图7示出了根据一些实施例的用于注册共识对象的处理。
图8示出了根据一些实施例的表示与共识对象相关联的多个参数的数据。
图9示出了根据一些实施例的用于针对共识对象的注册批准的处理。
图10示出了根据一些实施例的表示与共识对象相关联的多个参数的数据。
图11示出了根据一些实施例的用于提供共识对象的状态信息的处理。
图12示出了根据一些实施例的表示与共识对象相关联的多个参数的数据。
图13示出了根据一些实施例的用于基于与共识模板和共识对象相关联的数据来构建树结构的方法。
图14示出了根据一些实施例的用于注册共识模板的方法。
图15示出了根据一些实施例的用于注册共识对象的方法。
图16示出了根据一些实施例的用于针对共识对象的注册批准的方法。
图17示出了根据一些实施例的用于提供共识对象的状态信息的方法。
图18示出了根据一些实施例的用于注册共识模板的计算机系统的框图。
图19示出了根据一些实施例的用于注册共识对象的计算机系统的框图。
图20示出了根据一些实施例的用于针对共识对象的注册批准的计算机系统的框图。
图21示出了根据一些实施例的用于提供共识对象的状态信息的计算机系统的框图。
图22示出了可以实现本文描述的任何实施例的计算机系统的框图。
具体实施方式
本文公开的实施例提供与用于管理多个参与实体之间的共识的基于区块链的平台相关联的方法、系统和装置。该平台可以允许一个或多个参与实体创建一个或多个共识对象,每个共识对象与参与实体需要就其达成共识的项目或任务相对应。来自一个或多个参与实体的输入可以与共识对象相关联地记录下来,并用于确定针对相应项目或任务是否达成共识。对于共享共同特征或特性(例如,参与共识的实体、决策中每个实体的权重、实体的层级结构、实体的义务的顺序)的项目或任务,平台可以允许一个或多个参与实体创建对共同特征或特性进行编码的一个或多个共识模板。可以基于一个共识模板创建多个共识对象,并且可以共享与共识模板相关联地存储的信息。
平台可以收集和注册来自各个参与实体的关于共识对象的输入。平台还可以保持共识对象的更新状态,并将此类状态信息提供给参与实体。此外,平台可以确定共识对象是否已被批准,并且如果被批准,则基于共识来自动触发一个或多个后续动作。
该平台可以通过与一个或多个区块链网络进行交互并调用在其上操作的一个或多个区块链合约来执行各种共识管理功能。作为示例,平台可以在区块链上存储与一个或多个共识模板以及一个或多个共识对象相关联的数据。作为另一示例,平台可以从区块链获得与一个或多个共识对象相关联的数据,以确定一个或多个共识对象的状态。作为又一示例,平台可以记录用于确定已达成共识(例如,来自预设数量的参与实体的批准)的一个或多个标准,并且检查一个或多个共识对象以确定共识对象是否被批准。作为又一示例,平台可以生成并发送一个或多个区块链交易,以在针对特定共识对象达成共识之后触发一个或多个进一步的步骤。在执行共识管理功能时使用区块链可以可靠、透明地记录达成共识的过程。
图1示出了根据一些实施例的与区块链相关联的网络环境。如图所示,在环境100中,客户端计算设备111可以耦接到服务器端118,并且服务器端118和节点B可以通过各种通信网络耦接到区块链系统112。类似地,服务器端118可以可选地耦接到更多类似于区块链系统112的区块链系统,例如区块链系统113、区块链系统114等。每个区块链系统可以维护一个或多个区块链。
在一些实施例中,客户端计算设备111可以包括一个或多个服务器(例如,节点C)和一个或多个其他计算设备(例如,节点A1、节点A2、节点A3)。节点A1、节点A2和节点A3可以耦接到节点C。在一些实施例中,节点C可以由具有各种本地账户(从节点A1、节点A2、节点A3评估的本地账户)的实体(例如,网站、移动电话应用、组织、公司、企业)来实现。例如,移动电话应用可能有数百万的端用户从相应的用户账户访问应用的服务器。应用的服务器可以相应地存储数百万个用户账户。客户端计算设备111的组件及其布置可以具有许多其他配置。
在一些实施例中,区块链系统112可包括维护一个或多个区块链(例如,公有区块链、私有区块链、联盟区块链等)的多个区块链节点(例如,区块链节点1、区块链节点2、区块链节点3、区块链节点4、区块链节点i等)。其他区块链系统(例如,区块链系统113等)可以包括维护其他区块链的区块链节点的类似布置。每个区块链节点都可以在一个或多个区块链系统中找到。区块链节点可以包括全量节点。全量节点可以下载每个区块和区块链交易,并对照区块链的共识规则进行检查。区块链节点可以形成网络,在所述网络中一个区块链节点与另一个区块链节点通信。所示的区块链节点的次序和数量仅仅是为了说明的示例。区块链节点可以在服务器、计算机等中实现。例如,每个区块链节点可以在服务器或服务器集群中实现。服务器集群可以使用负载平衡。每个区块链节点可以对应于经由诸如TCP/IP的各种类型的通信方法耦接在一起的一个或多个物理硬件设备或者虚拟设备。根据分类,区块链节点还可以被称为全量节点、Geth节点、共识节点等。
在一些实施例中,节点B可以包括轻节点。轻节点可能无法下载完整的区块链,而是可以只下载区块头以验证区块链交易的真实性。轻节点可以由全量节点(例如,区块链系统112中的区块链节点)服务并且有效地依赖于全量节点来访问区块链的更多功能。通过安装适当的软件,可以在诸如膝上型电脑、移动电话等的电子设备中实现轻节点。在一实施例中,节点B可将区块链交易发送至区块链系统112以添加至区块链。
在一些实施例中,可以有更多类似于客户端计算设备111的客户端计算设备耦接到服务器端118。服务器端118可以提供区块链即服务(BaaS),并且被称为BaaS云。在一个实施例中,BaaS是一种云服务模型,其中客户端或开发人员将Web或移动应用的幕后方面外包。BaaS可以为区块链上发生的活动提供预先编写的软件,例如用户身份验证、数据库管理和远程更新。BaaS云可以在服务器、服务器群集或其他设备中实现。在一个实施例中,BaaS云提供基于区块链技术的企业级平台服务。该服务可以帮助客户构建安全稳定的区块链环境,并轻松管理区块链的部署、操作、维护和开发。该服务具有高安全性、高稳定性、易用性以及开放性和共享性。基于云的丰富的安全策略和的多租户隔离,BaaS云可以使用芯片加密技术提供高级安全保护。基于高度可靠的数据存储,这项服务提供了可以快速扩展而不会中断的端到端且较高可用性的服务。BaaS云可以提供增强的管理功能,以帮助客户构建企业级区块链网络环境。BaaS端可以为标准区块链应用和数据提供本地支持,支持例如Hyperledger Fabric和Enterprise Ethereum-Quorum的主流开源区块链技术,以构建开放且包容的技术生态系统。
在环境100中,系统、节点和设备中的每个可以安装有适当的软件(例如,应用程序接口)和/或硬件(例如,有线、无线连接)以访问环境100的其他设备。通常,系统、节点和设备可以能够通过一个或多个有线或无线网络(例如,因特网)彼此通信,通过所述网络可以通信数据。系统、节点和设备中的每一个可以包括一个或多个处理器以及耦接到一个或多个处理器的一个或多个存储器。存储器可以是非暂时性的且计算机可读的,并且配置有可一个或多个处理器执行以促进所述一个或多个处理器执行本文描述的操作的指令。所述指令可以存储在存储器中或通过通信网络下载而不必存储在存储器中。尽管在该图中系统、节点和设备被示为单独的组件,但是应当理解,这些系统和设备可以实现为单个设备或耦接在一起的多个设备。例如,节点B可以可选地集成到区块链节点2中。
诸如节点A1、节点A2、节点A3、节点B和节点C之类的设备可以安装有适当的区块链软件以发起、转发或访问区块链交易。术语“区块链交易”可以指在经过验证后区块链系统中执行并记录在区块链中的任务单元。在一些实施例中,服务器端118可以基于从节点A1、A2或A3获得的信息来构建区块链合约。服务器端118可以在区块链交易中添加区块链合约。在服务器端118将区块链交易提交给区块链系统之后,区块链节点可以验证区块链交易以添加到区块链。如果将区块链交易添加到区块链,则区块链合约将被部署在区块链上并在特定状态下启用。通过一个或多个附加的区块链交易,可以调用部署的区块链合约以更新特定状态。
可以根据共识规则来验证区块链交易。例如,下面提供了POW(工作量证明)共识处理。尽管如此,其他类型的共识过程,例如POS(权益证明)、DPOS(代表权益证明)和PBFT(实用拜占庭容错)可以类似地应用于所公开的系统和方法。
在一些关于区块链交易验证的实施例中,在接收到未确认的区块链交易的区块链交易请求后,接收方区块链节点可以对区块链交易执行初步验证。例如,区块链节点1可以在从节点C接收到区块链交易之后执行初步验证。一旦被验证,区块链交易可以被存储在接收方区块链节点(例如,区块链节点1)的数据库中,该节点也可以将该区块链交易转发到一个或多个其他区块链节点(例如,区块链节点3、区块链节点4)。类似地,每个区块链节点可以包括或耦接到存储数据库的存储器。该数据库可以存储多个未确认的区块链交易。在接收到区块链交易之后,一个或多个其他区块链节点可以重复由接收方区块链节点完成的初步验证和广播处理。
对于验证,每个区块链节点可以根据其偏好从数据库中选择一些区块链交易,并将其形成为向区块链提出的新区块。区块链节点可以通过投入算力来解决复杂的数学问题,从而对提出的新区块进行“挖矿”。如果区块链交易涉及区块链合约,则区块链节点可以在对应的虚拟机(VM)中本地执行区块链合约。为了处理区块链合约,区块链网络的每个区块链节点都运行一个对应的虚拟机,并在区块链合约中执行相同的指令。虚拟机是基于计算机体系架构并提供物理计算机的功能的计算机系统的软件仿真。区块链环境中的虚拟机可以被理解为被设计用作区块链合约的运时环境的系统。
根据共识规则成功挖出所提出的区块链交易的新区块的特定区块链节点可以将新区块打包至其区块链的本地副本中,并将结果广播到其他区块链节点。特定区块链节点可以是首先成功完成验证、已获得验证特权、或者已基于另一个共识规则被选择等的区块链节点。然后,其他区块链节点可以遵循与特定节点的执行相同的执行顺序在本地执行新区块中的区块链交易,彼此验证执行结果(例如,通过执行哈希计算),并将区块链的副本与特定区块链节点的副本同步。通过更新它们的本地区块链副本,其他区块链节点可以类似地将区块链交易中的这种信息写入到对应的本地存储器中。因此,区块链合约可以部署在区块链上。如果验证在某一点失败,则所述区块链交易被拒绝。
部署的区块链合约可以具有地址,根据该地址可以访问部署的合约。区块链节点可以通过向区块链合约输入某些参数来调用已部署的区块链合约。在一个实施例中,可以调用部署的区块链合约以添加或更新区块链合约中的特定信息,从而更新区块链合约中的一个或多个状态。在一个实施例中,可以通过查询添加到区块链中的相应区块链交易来从区块链中检索区块链合约的一个或多个状态。最新更新的状态可以反映在最近的相关区块链交易中。虽然如上所述,但是其他类型的区块链系统和相关联的共识规则可应用于所公开的设备和方法。
图2示出了根据一些实施例的用于实现区块链交易的框架。在一些实施例中,客户端计算设备111可以将信息发送到服务器端118。该信息可以用于创建区块链账户、基于区块链合约执行动作等。区块链可以由区块链系统112维护。服务器端118可以基于从客户端计算设备111获得的信息来构建区块链合约。服务器端118可以在区块链交易A中添加区块链合约。服务器端118可以代表与客户端计算设备111相关联的用户对区块链交易进行签名。例如,区块链交易A可以包括例如随机数(例如,交易序列号)、自(例如,用户的区块链地址)、至(例如,如果部署了区块链合约则为空)、交易费、签名(例如,服务器端118的签名、服务器端118管理的用户的签名)、值(例如,交易金额)、数据(例如,区块链合约)等的信息。然后,服务器端118可以将区块链交易A提交到区块链系统112的一个或多个区块链节点以添加到区块链。
在将区块链交易添加到区块链之后,可以将区块链合约部署在区块链上并在特定状态下启用。通过一个或多个附加的区块链交易,可以调用部署的区块链合约以更新特定状态。在一些实施例中,节点B可以构建签名的区块链交易B并将其发送到区块链系统112以供执行。在一个实施例中,可以执行区块链交易B以调用部署的区块链合约从而更新状态。在一些实施例中,可以在用户端应用221处使用源代码对区块链交易B进行编程。例如,用户或机器可以对区块链交易B进行编程。节点B可以使用相应的编译器来编译源代码,该编译器将源代码转换为字节码。区块链交易B可以包括诸如随机数、自、至、交易费、值、签名、数据等的信息。节点B可以通过远程过程调用(RPC)接口将区块链交易B发送到区块链系统112的一个或多个区块链节点以供执行。RPC是第一程序(例如,用户端应用)可以用来从位于网络上的另一计算机(例如,区块链节点)中的第二程序请求服务而不必理解网络细节的协议。当第一程序促使进程在不同地址空间中执行时,则其好像被编码为正常(本地)进程调用,而无需程序员明确地编码远程交互的细节。
在一些实施例中,在接收到区块链交易(例如,区块链交易A或B)时,接收方区块链节点可以验证区块链交易是否有效。例如,可以验证签名和其他格式。如果验证成功,接收方区块链节点就可将接受到的区块链交易广播到区块链网络,该区块链网络包括各种其他区块链节点。一些区块链节点可以参与区块链交易的挖矿过程。区块链交易可以由特定节点选择以进行共识验证从而打包到新区块中。如果区块链交易涉及部署区块链合约,特定区块链节点可以创建与区块链账户地址相关联的区块链合约的合约账户。如果区块链交易涉及调用部署的区块链合约,则特定节点可以触发其本地虚拟机执行接收到的区块链交易,因此从其区块链的本地副本调用部署的区块链合约并更新部署的区块链中的状态。如果特定节点成功挖出新区块,则特定节点可以将新区块广播到其他区块链节点。
在接收到新区块时,其他区块链节点可以执行验证。如果达成了新区块有效的共识,则将新区块分别打包到由区块链节点维护的区块链本地副本中。区块链节点可以类似地触发它们的本地虚拟机(例如,本地虚拟机1、本地虚拟机i、本地虚拟机2)以执行新区块中的区块链合约,从而调用区块链的本地副本(例如,本地区块链副本1、本地区块链副本i、本地区块链副本2)并进行相应的更新。每个区块链节点的硬件机器可以访问一个或多个虚拟机,所述虚拟机可以是相应的区块链节点的一部分或耦接到相应的区块链节点。每次都可以触发相应的本地虚拟机来执行区块链交易。同样,将执行新区块中的所有其他区块链交易。轻节点也可以与更新的区块链同步。
图3示出了根据一些实施例的用于管理多个参与实体之间的共识的网络环境。在一些实施例中,网络环境可以包括共识服务310。共识服务310可以在包括一个或多个合适的计算设备(例如,服务器、数据库)的一个或多个计算系统上实现,这些计算设备在本文中被共同和单独地称为共识服务310。在一些实施例中,共识服务310可以包括一个或多个软件或者硬件模块,例如共识分发模块312、共识收集模块314、时间触发模块316、其他合适的模块或其任意组合。共识分发模块312可以提供与共识模板或共识对象相关联的各种信息。例如,共识分发模块312可以将与共识对象相关联的信息提供给参与实体320,并提示参与实体320批准共识对象。共识收集模块314可从参与实体320收集用于一个或多个共识对象的各种输入。例如,共识收集模块314可以从参与实体接收与共识对象相关联的批准消息,并注册与共识对象相关的批准。在一些实施例中,如果参与实体320在预设时间段内未提供输入,则共识服务310可以确定参与实体320批准了共识对象。时间触发模块316可以被配置为跟踪自创建共识对象以来的时间量,并在经过预设时间段之后触发与该共识对象有关的一个或多个操作。在一些实施例中,共识服务310可以至少部分地在服务器端118上实现,如图1和2所示。
在一些实施例中,共识服务310可以经由一个或多个网络连接到与多个参与实体中的每个相关联的一个或多个计算系统。连接到共识服务310的参与实体可以包括如图3所示的参与实体320a、320b、320c和320d以及一个或多个其他合适的参与实体。每个参与实体320可以包括个人、公司、组织、另一合适的实体或其任何组合。在此,实体及其对应的计算系统可以被单独地或共同地称为参与实体320。在一些实施例中,与参与实体320相关联的计算系统可以包括一个或多个客户端应用,其被配置为向共识服务310提供一个或多个接口并执行与共识服务310相关联的一个或多个功能。
在一些实施例中,共识服务310可以连接到区块链系统330。区块链系统330可包括一个或多个区块链网络,每个区块链网络被配置为存储和管理区块链。区块链系统330可以包括在合适的计算系统上实现的多个区块链节点。一个或多个区块链节点可以被实现为共识服务310的一部分。在一些实施例中,区块链系统330可以至少部分地被实现为如图1和图2所示的区块链系统111、112、113和114中的一个或多个。在一些实施例中,共识服务310可以包括区块链系统330的一个或多个接口。可以在与共识服务310相关联的一个或多个区块链节点上实现一个或多个接口。在一些实施例中,与区块链系统330相关联的区块链可以包括用于共识管理的一个或多个区块链合约。可以通过调用一个或多个区块链合约在区块链上注册一个或多个共识模板(例如332a、332b、332c)。可以与区块链上的一个或多个共识模板相关联地注册一个或多个共识对象(例如334a、334b、334c)。在一些实施例中,区块链还可包括与一个或多个项目相关联的一个或多个区块链合约336。一个或多个区块链合约336的执行可以由一个或多个共识对象的状态信息触发。
在一些实施例中,共识服务310可以与一个或多个参与实体320交换输入、输出、消息、通知、数据或其他合适的信息。作为示例,共识服务310可以从一个或多个参与实体320接收用于注册一个或多个共识模板332或一个或多个共识对象334的一个或多个请求。作为另一示例,共识服务310可以从一个或多个参与实体320接收批准一个或多个共识对象334的一个或多个消息。作为又一示例,共识服务310可以发送一个或多个通知,以通知一个或多个参与实体320已关于共识对象334达成共识。
在一些实施例中,共识服务310可以以一种或多种方式和与区块链系统330相关联的区块链对接。作为示例,共识服务310可以生成一个或多个区块链交易,并将一个或多个区块链交易添加到区块链。作为另一示例,共识服务310可以从区块链系统330获得与一个或多个共识对象334相关联的信息,并基于所获得的信息来确定与每个共识对象334相关联的状态。共识服务310可以向一个或多个区块链合约336提供共识对象334被批准的证明。
图3所示的网络环境的一个或多个组件(例如,共识服务310)可以执行、操作或进行如图4、图7、图9、图11和图13至图17所示的处理或方法中的一个或多个。
图4示出了根据一些实施例的用于注册共识模板的处理。该处理的各个步骤可以由示例性参与实体320a、共识服务310和区块链系统330执行。根据实施方式,图4中所示的处理可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。该处理可以开始于步骤410,其中参与实体320a可以配置共识模板。共识模板可以对应于多个参与实体320之间需要共识的特定场景。对于该场景,可能已识别了参与实体的层级结构和达成共识的要求。可以创建共识模板以对有关场景的这种信息进行编码。为了创建共识模板,参与实体320a可以向共识服务310发送与共识模板相关联的信息。
在步骤420,共识服务310可以获得用于创建共识模板的请求。该请求可以包括关于与共识模板相关联的多个参与实体的信息。在一些实施例中,该请求可以包括描述与共识模板相关联的信息的JavaScript对象简谱(JSON)文件。在其他实施例中,该请求可以是其他合适的文档或数据格式。在一些实施例中,可以从与参与实体320之一相关联的计算设备获得该请求,所述参与实体320与共识模板相关联。例如,发送请求的参与实体320a可以是用于共识模板的参与实体320之一。在其他实施例中,可以从不参与和共识模板相关联的共识处理的实体接收用于创建共识模板的请求。在一些实施例中,该请求可以调用由共识服务310提供的共识模板注册服务。共识模板注册服务可以由与共识服务310相关联的一个或多个软件或硬件组件来实现。
在一些实施例中,用于创建共识模板的请求中包括的关于多个参与实体的信息可以包括与一个或多个参与实体中的每个相关联的标识、与一个或多个参与实体中的每个相关联的区块链账户的公钥、与一个或多个参与实体中的每个相关联的联系信息、与参与实体的层级结构相关联的信息、分配给一个或多个参与实体中的每个的权重、其他合适的信息或其任何组合。在一些实施例中,用于创建共识模板的请求可以进一步包括用于确定达成共识的一个或多个标准。该标准可以包括例如达成共识所需的参与实体的数量、达成共识所需的参与实体的总权重、基于批准共识对象的参与实体和参与实体在与共识模板关联的层级结构中的对应权重计算的所需得分。共识服务310可以从用于创建共识模板并存储一个或多个标准的请求中获得用于确定达成共识的一个或多个标准。
在一些实施例中,共识服务310可以基于请求生成表示与共识模板相关联的参与实体的层级结构的数据集。为了生成数据集,共识服务310可以解析用于创建共识模板的请求,以获得表示参与实体的层级结构的树结构,并生成与该树结构相对应的一个或多个阵列。
在一些实施例中,在步骤430,共识服务310可以基于用于创建共识模板的请求来构建树结构。图5示出了根据一些实施例的与共识模板相关联的树结构500。尽管在图5中以树形图示出,但是树结构500可以以任何合适的数据格式来构建和存储。图5所示的示例性树结构500可以包括多个节点。多个节点可以包括根节点、一个或多个分支节点以及多个叶节点。例如,节点g4可以是根节点;节点g1、g2和g3可以是分支节点。节点x1、x2、x3、x4、x5、x6、x7可以是叶节点。在一些实施例中,每个叶节点可以对应于与共识模板相关联的参与实体之一。例如,节点x1-x7可以对应于七个不同的个人或实体,所述个人或实体参与对应于共识模板的共识处理。根节点和分支节点可以对参与实体之间的结构进行编码。该结构可以表示例如实体之间的雇佣关系、与项目关联的工作流、共识的逻辑要求、其他合适的关系或其任意组合。
作为示例,分支节点g2可以对应于公司,分别对应于叶节点x3和x4的两个人为该公司工作。节点g2可以是节点x3和x4的父节点,并且节点x3和x4可以是节点g2的子节点。如果对应于叶节点x3的个人或对应于叶节点x4的个人批准与共识模板关联的共识对象,则可以指示对应于分支节点g2的公司批准了共识对象。作为另一示例,分支节点g3可以对应于与共识模板相关联的工作流(例如,用于制造和销售产品的过程)的步骤(例如,产品运输)。对应于分支节点g2的公司和对应于叶节点x5的公司可以各自能够完成对应于分支节点g3的步骤。节点g3可以是节点g2和x5的父节点,并且节点g2和x5可以是节点g3的子节点。如果对应于分支节点g2的公司或对应于叶节点x5的公司批准了与该共识模板相关联的共识对象,则可以指示对应于分支节点g3的步骤已完成。作为又一示例,根节点g4可以对应于与共识模板相关联的共识对象的整体状态。根节点g4可以具有四个子节点g1、g3、x6和x7。如果连接到根节点g4的节点g1、g3、6和x7的所需数量显示批准状态,则共识对象可具有批准状态。在一些实施例中,可以为树结构500中的每个节点分配权重。父节点的状态可以取决于其每个子节点的状态和权重。例如,可以为节点g1、g3、x6和x7中的每个注册得分。与节点g4相关联的得分可以被计算为其子节点的得分的加权和。可以基于与节点g4相关联的得分来确定共识对象是否被批准。
在一些实施例中,在图4的步骤440,共识服务310可以生成与树结构相对应的一个或多个阵列。一个或多个阵列可以包括以下:包括与树结构的一个或多个节点相关联的一个或多个序列号的阵列、包括与树结构的一个或多个节点的一个或多个父节点相关联的一个或多个序列号的阵列、或包括分别与树结构的一个或多个节点相关联的一个或多个权重的阵列。图6示出了根据一些实施例的与共识模板相关联的数据。作为示例,一个或多个阵列可以用于表示数据集610,其将树结构500中的每个节点的标识(例如,g4、g1、x1、x2、g3、g2、x3、x4、x5、x6、x7)与索引号(例如0、1、2、3、4、5、6、7、8、9、10)相对应。作为另一示例,一个或多个阵列可以用于表示数据集620,该数据集指示树结构500中的每个节点的父节点的索引号。例如,树结构中的节点g4在树结构500中不具有父节点。可以使用数字-1作为节点g4的父字段中的占位符。树结构500中的节点g1的父节点是节点g4。因此,节点g1的父字段可以包括0,它是节点g4的索引号。节点x4的父节点是节点g2。因此,节点x4的父字段可以包括5,它是节点g2的索引号。
在一些实施例中,共识服务310可以将共识模板注册到与区块链系统330相关联的区块链。例如,在图4的步骤450,共识服务310可以将与树结构相对应的阵列注册到区块链合约以用于区块链上的共识管理。在一些实施例中,共识服务310可以创建用于将共识模板注册到区块链的区块链交易。区块链交易可以包括表示参与实体的层级结构的数据集。在图4所示的示例中,数据集可包括如图6所示的阵列610和620。在一些实施例中,用于将共识模板注册到区块链的区块链交易可被执行以调用被配置为将一个或多个共识模板注册到区块链的区块链合约。然后,共识服务310可以将用于将共识模板注册到区块链的区块链交易发送给与区块链系统330相关联的一个或多个区块链节点以添加到区块链。
在注册共识模板之后,共识服务310可以使用通知服务460向与参与实体320a相关联的计算设备返回对共识模板被创建确认。在步骤470,参与实体320a可以接收对共识模板被创建的确认。
图7示出了根据一些实施例的用于注册共识对象的处理。该处理的各个步骤可以由示例性参与实体320a,一个或多个其他参与实体320b、320c、320d和320e,共识服务310和区块链系统330执行。根据实施方式,图7中所示的处理可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。该处理可以开始于步骤710,其中参与实体320a可以生成用于创建共识对象的请求。在请求中,参与实体320a可以包括要用于共识对象的共识模板的信息和要创建的共识对象的信息。例如,该请求可以包括共识模板的标识、要创建的共识对象的标识、与用于管理共识模板或共识对象的区块链合约相关联的标识、其他合适的信息或其任意组合。在一些实施例中,共识对象的标识可以对应于共识对象表示的项目(例如,产品订单)。
在步骤720,共识服务310可以从与实体(例如320a)相关联的计算系统获得用于创建共识对象的请求。该请求可以调用与共识服务310相关联的共识对象注册服务。在一些实施例中,可以从与参与实体320之一相关联的计算设备获得该请求,所述参与实体320与共识模板相关联。例如,发送请求的参与实体320a可以是用于共识模板的参与实体320之一。在其他实施例中,可以从不参与和共识模板相关联的共识处理的实体接收用于创建共识模板的请求。在一些实施例中,共识对象可能需要多个参与实体320的共识。可以基于参与实体320的在请求中识别的共识模板中编码的层级结构来实现共识。
在步骤730,共识服务310可以从用于创建共识对象的请求中识别将用于创建共识对象的共识模板。然后,在步骤740,共识服务310可以基于与共识模板相关联的参与实体的层级结构来初始化与共识对象相关联的多个参数。参数可以包括与每个参与实体相对应的参数。共识服务可以通过将每个参数设置为初始值来初始化参数。在一些实施例中,共识服务310可以通过首先获得表示参与实体的层级结构的树结构来初始化参数,该树结构包括多个节点。共识服务可以生成包括分别对应于与共识对象相关联的参数的多个位置的阵列。每个位置可以对应于树结构的节点之一。然后,共识服务310可以将阵列的每个位置设置为与该位置相对应的参数的初始值。在图8中示出了阵列的示例。
图8示出了根据一些实施例的表示与共识对象相关联的多个参数的数据。图8所示的数据集810可以包括一个或多个阵列,其示出了参数与树结构500的节点之间的对应关系。例如,数据集810可以包括树结构500中的节点的标识的阵列812。该阵列可以可选地包括节点的索引号。数据集810可以进一步包括阵列814,该阵列814包括与参数相关联的多个值。每个节点的参数值可以被放置在阵列814中与该节点相对应的位置。在该示例中,与共识对象相关联的参数可以被初始化为0。在其他示例中,共识服务可以将参数初始化为任何合适的预设值。
在图7的步骤750,共识服务310可以将包括初始化参数的共识对象注册到与区块链系统330相关联的区块链。在一些实施例中,共识服务310可以创建用于将共识对象注册到区块链的区块链交易。区块链交易可以包括与每个参数相关联的初始值。除初始值外,区块链交易还可包括共识对象的多个属性。所述属性可以包括共识模板的标识、共识对象的标识、与一个或多个参与实体中的每个相关联的标识、与一个或多个参与实体中的每个相关联的区块链账户的公钥、分配给一个或多个参与实体中的每个的权重、其他合适的属性或其任意组合。然后,共识服务310可以将用于将共识对象注册到区块链的区块链交易发送给与区块链系统330相关联的一个或多个区块链节点以添加到区块链。区块链交易可以由区块链系统330执行以调用用于注册共识对象的区块链合约。
在注册了共识对象之后,在步骤760,共识服务310可以向与参与实体320a之一相关联的计算设备返回对共识对象被创建的确认。该确认可以由与共识服务310相关联的通知服务生成和发送。在步骤770,参与实体320a可以接收对共识对象已被创建的确认。
在一些实施例中,在步骤780,共识服务310可以向与一个或多个参与实体(例如320b,320c,320d,320e)相关联的一个或多个计算设备发送对共识对象的创建的通知,所述一个或多个参与实体与共识对象相关联。该通知可以包括共识对象的标识和用于批准该共识对象的请求。可以基于包括在来自参与实体320a的请求中或与共识模板相关联的信息中的联系信息(例如,网络地址)来发送通知。
图9示出了根据一些实施例的用于针对共识对象的注册批准的处理。该处理的各个步骤可以由示例性参与实体320b、共识服务310和区块链系统330执行。根据实施方式,图9中示出的处理可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。该处理可以开始于步骤910,其中参与实体320b可以生成针对与共识模板相关联的共识对象的批准消息。共识对象可能已在与区块链系统330关联的区块链注册。在一些实施例中,例如,可以在参与实体320b已完成了与对应于共识对象的工作流相关联的步骤之后,或者当其已验证了关于共识对象的一个或多个事实时批准共识对象。参与实体320b可以在批准消息中包括与共识对象相关联的信息(例如,共识对象的标识)和证明参与实体320b的身份或权限的信息。在生成批准消息之后,参与实体320b可以向共识服务310发送批准消息。
在步骤920,共识服务310可以获得针对共识对象的批准消息。批准消息可以调用与共识服务相关联的签名服务。共识对象可以包括与多个参与实体320的在共识模板中编码的层级结构相关联的多个参数。批准消息可以包括与参与实体320b相关联的信息,该参与实体320b是与共识模板相关联的参与实体之一。可以存在与参与实体320b有关的共识对象的一个或多个参数。例如,树结构500中的节点x1及其在阵列814中的对应参数可以与参与实体320b相关联。共识服务310还可基于批准消息获得与参与实体之一相关联的数字签名。在一些实施例中,共识服务310可以从针对共识对象的批准消息中获得数字签名。在其他实施例中,签名服务可以被配置保管与一个或多个参与实体320相关联的加密密钥,并使用该加密密钥来生成数字签名。例如,共识服务310可以从针对共识对象的批准消息中获得与参与实体之一相关联的身份信息,认证与参与实体之一相关联的身份信息,基于获得的身份信息检索与参与实体之一相关联的私钥,并基于与参与实体之一相关联的私钥生成数字签名。
在步骤930,共识服务310可以识别与共识对象相关联的数据。在一些实施例中,共识服务310可以从与区块链系统330相关联的区块链获得与共识对象或其对应的共识模板相关联的信息。可基于包括在来自参与实体320b的批准消息中的共识对象的标识来获得与共识对象相关联的信息。与共识对象相关联的信息中可以是与共识对象的参与实体相关联的一个或多个公钥或其他凭证信息。
在步骤940,共识服务310可以基于与共识对象相关联的信息来认证数字签名。在一些实施例中,共识服务310可以从与共识对象相关联的信息中获得与参与实体之一(例如,参与实体320b)相关联的公钥,并基于该公钥验证数字签名是基于与公钥对应的私钥创建的。
如果来自参与实体320b的数字签名被认证,则在步骤950,共识服务可以更新与共识对象相关联的一个或多个参数。在一些实施例中,共识服务310可以基于批准消息来创建区块链交易,该区块链交易可以被执行以将与参与实体之一(例如,参与实体320b)相对应的参数设置为更新值。然后,共识服务310可将区块链交易发送给与区块链系统330相关联的一个或多个区块链节点以添加到区块链。区块链交易可以进一步被执行以将与共识对象相关联的一个或多个其他参数分别设置为一个或多个更新值。其他参数中的每个可以与对应于参与实体之一的参数具有依赖关系。在一些实施例中,区块链交易可以被执行以调用被配置为维护与共识对象相关联的参数的值的区块链合约。
在一些实施例中,共识服务310可以基于与共识模板相关联的树结构500来确定要更新的参数。共识服务310可以获得表示参与实体的层级结构的树结构500。树结构可以包括多个节点。树结构的节点可以分别对应于与共识对象相关联的参数。共识服务310可以从树结构中识别分支中的一个或多个其他节点,该分支将与参与实体之一的参数相对应的节点连接到树结构的根节点,并确定其他节点和根节点中的每个的更新值。在一些实施例中,共识服务可以将每个其他节点的更新值确定为与其他节点的一个或多个子节点相关联的一个或多个值的加权和。例如,参与实体320b可以对应于树结构500中的节点x1。共识服务310可以识别节点g1在将节点x1连接到根节点g4的分支中。它可以更新与节点x1,g1和g4相关联的参数。
基于来自参与实体320b的批准消息,共识服务310可以将x1的参数更新为100。可以将节点g1的参数计算为节点x1和x2的参数的加权和。假设x1和x2的权重均为0.5,并且x2的参数的当前值为0,则可以将与节点g1对应的参数更新为50。可以将节点g4的参数计算为节点g1、g3、x6和x7的参数的加权和。在该示例中,节点g4的参数可以被更新为25。这些对参数的示例性更新在图10的数据字段1010中示出。图10示出了根据一些实施例的表示与共识对象相关联的多个参数的数据。它可以包括:包括树结构500中的节点的标识的阵列1012;包括与节点相关联的更新参数值的阵列1014;以及指示与根节点g4相关联的索引号的字段1016。
在一些实施例中,在图9的步骤960,共识服务310可以生成对共识对象被成功签名的确认,并且将该确认返回给参与实体320b。在一些实施例中,在步骤960,共识服务310可以进一步确定关于共识对象是否已达成共识。例如,共识服务310可以从区块链获得与共识对象相关联的一个或多个参数的一个或多个更新值,基于一个或多个更新值来确定用于批准共识对象的一个或多个标准是否被满足。一个或多个标准可包括批准共识对象的参与实体的所需数量或批准共识对象所需的一个或多个参与实体。如果满足一个或多个标准,则共识服务310可以确定已达成共识,并且将共识对象被批准的证明包括在至参与实体320b的通知中。在步骤970,参与实体320b可以从共识服务310接收对共识对象被成功签名的确认。
在一些实施例中,如果共识服务310确定共识对象已被参与实体320批准,则它可以触发一个或多个事件,该事件取决于对共识对象的批准。在一些实施例中,共识服务310可以将对共识对象的批准通信给一个或多个其他系统(例如,与一个或多个其他参与实体320相关联的计算系统)。在其他实施例中,共识服务310可以基于对共识对象的批准来促使一个或多个区块链操作。例如,共识服务310可以生成包括共识对象被批准的证明的区块链交易。共识服务310可以将区块链交易发送给与区块链系统330相关联的一个或多个区块链节点,以添加到注册共识模板和共识对象的区块链。可选地,在步骤980,共识服务310可以将区块链交易发送到与不同区块链相关联的一个或多个区块链节点以添加到不同区块链。不同区块链可以包括用于执行与共识对象相关联的项目的一个或多个区块链合约。包括共识对象被批准的证明的区块链交易可以被执行以调用一个或多个区块链合约。在步骤990接收到区块链交易之后,与不同区块链相关联的一个或多个区块链节点可以基于针对共识对象的批准来执行一个或多个区块链合约以触发一个或多个区块链交易。与工作流相关联的一个或多个步骤可以基于共识对象被批准的证明自动执行。例如,对于与产品订单相关联的工作流,对相应共识对象的批准可以指示订单的履行。响应于订单的履行,区块链合约可被调用以发出付款。
图11示出了根据一些实施例的用于提供共识对象的状态信息的处理。该处理的各个步骤可以由示例性参与实体320a、共识服务310和区块链系统330执行。根据实施方式,图11中所述的处理可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。该处理可以开始于步骤1110,其中参与实体320a可以生成针对共识对象的状态的请求。该请求可以包括所查询的共识对象的信息,例如共识对象的标识。参与实体320a可以向共识服务310发送该请求。
在步骤1120,共识服务310可以获得针对与区块链相关联的共识对象的状态的请求。如上所述,共识对象可以包括与多个参与实体320的层级结构相关联的多个参数。与共识对象相关联的参与实体320可以包括或可以不包括请求共识对象的状态的参与实体320a。
在步骤1130,共识服务310可以识别与来自区块链的共识对象相关联的数据。共识服务310可以基于与共识对象相关联的识别信息来识别数据。共识服务310然后可以从区块链获得分别与共识对象的参数相关联的多个值。在步骤1140,共识服务310还可以获得与对应于共识对象的共识模板相关联的数据。该数据可以包括与参与实体320的层级结构相关联的信息。
在步骤1150,共识服务310可以基于与共识对象的参数相关联的多个值来生成共识对象的状态概要。在一些实施例中,共识对象的状态概要可以包括JavaScript对象简谱(JSON)文件。在一些实施例中,共识对象的状态概要可以包括共识对象被批准的证明。在一些实施例中,共识对象的状态概要可以包括与已批准共识对象的一个或多个参与实体中的每个相关联的身份信息、与已批准共识对象的一个或多个参与实体中的每个相关联的数字签名、分配给已批准共识对象的一个或多个参与实体中的每个的权重、其他合适的信息或其任意组合。
在一些实施例中,在步骤1150,共识服务310可以基于与共识对象相关联的信息来构建与参与实体的层级结构相对应的树结构,并基于该树结构来生成共识对象的状态概要。树结构可以包括多个节点。多个节点可以包括根节点、一个或多个分支节点以及多个叶节点。树结构的每个节点可以对应于与共识对象相关联的多个参数之一。状态概要可以包括与树结构的根节点相对应的参数的值。如果与树结构的根节点相对应的参数的值超过预设阈值,则可以确定已就共识对象达成共识。否则,可以确定尚未达成共识。状态概要还可以包括与树结构的每个节点相对应的参数的值。在一些实施例中,与共识对象相关联的信息可以包括分别与共识对象的参数对应的多个条目的阵列。这种阵列的示例在下面描述的图12中示出。在步骤1160,共识服务310可以生成包括共识对象的状态概要的通知,并且将通知发送给参与实体320a。在步骤1170,参与实体320a可以接收共识对象的状态信息。
图12示出了根据一些实施例的表示与共识对象相关联的多个参数的数据。图12所示的数据集1210可以是包括分别与共识对象的参数对应的多个条目的阵列1212。共识服务310可以通过根据参与实体的层级结构来组织条目的阵列以构建树结构。共识服务310可以从例如图6所示的数据集610和620中获得与参与实体的层级结构相关联的信息,该信息可以与对应于共识对象的共识模板相关联地被存储。在一些实施例中,为了构建树结构,共识服务310可以创建用于包含阵列中的一个或多个条目的堆栈。然后,对于阵列中的每个条目,共识服务310可以从阵列获得条目,基于获得的条目更新堆栈,并且将获得的条目添加到树结构。获得的条目在树结构中的位置可以基于更新的堆栈。在一些实施例中,共识服务310可以将获得的条目添加到堆栈中或从堆栈中移除一个或多个条目。在一些实施例中,为了构建树结构,共识服务310可以进一步创建与树结构相关联的一个或多个索引,基于每个获得的条目来更新一个或多个索引,并且进一步基于一个或多个更新的索引来更新堆栈。参照图13描述了用于基于条目的阵列构建树结构的示例性方法。
图13示出了根据一些实施例的用于基于与共识模板和共识对象相关联的数据来构建树结构的方法。根据实施方式,图13中所示的方法可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。在步骤1304,共识服务310可以初始化用于构建树结构的各种数据条目。例如,它可以初始化节点堆栈、父堆栈、变量“top”和变量“index”。节点堆栈可以保存与树结构相关联的一个或多个节点的一个或多个标识(例如,数据集620中的标识)。父堆栈可以保存与一个或多个节点相关联的父节点的一个或多个索引号(例如,数据集620中的父索引号)。“top”变量可以记录条目在节点堆栈或父堆栈栈顶的位置。“index”变量可以记录当前感兴趣节点的索引号。“index”变量的示例性值可以包括数据集610中的索引号。节点堆栈和父堆栈可以被初始化为空。“top”变量可以被初始化为-1。“index”变量可以被初始化为0。共识服务310可以进一步基于数据集620构建树结构,该数据集与具有其父节点的索引号的节点相对应。共识服务可以使用父节点的索引号的阵列。尽管图13示出了使用堆栈数据结构,但是本公开预期到使用其他合适的数据结构来构建树结构。
在步骤1306,共识服务310可以获得与等于“index”变量的索引号相对应的节点。例如,当“index”变量的值为0时,共识服务310可以基于在共识模板中编码的数据集610获得节点g4。
在步骤1308,共识服务310可以确定“top”变量的值是否为-1。如果是,则可以进行到步骤1310。否则,则可以进行到步骤1312。
在步骤1310,共识服务310可以将获得的节点定位为树结构的根节点。例如,共识服务310可以将节点g4用作树结构的根节点。然后,共识服务310可以将“top”变量增加1,将索引号等于“top”变量的节点放置在节点堆栈中,并将父节点的索引号的阵列中等于“index”变量的位置处的索引号(标注为“array[index]”)放置在父堆栈中。例如,在“top”变量的初始值为-1且“index”变量的初始值为0的情况下,共识服务可以将“top”变量增加为0,将节点g4放置在节点堆栈中,然后将索引号-1放置在父堆栈中。然后,共识服务310可以进行到步骤1328。
在步骤1328,共识服务310可以将“index”变量增加1(例如,当原始“索引”变量为0时,将其增加为1)。然后,共识服务310可以返回到步骤1306,其中它可以获得与等于更新的“index”变量的索引号相对应的节点。例如,当“index”变量增加到1时,共识服务可以获得节点g1。然后,共识服务310可以进行到步骤1308,其中可以确定“top”变量是否具有值-1。例如,如果“top”变量已被更新为0,则共识服务310可以进行到步骤1312。
在步骤1312,共识服务310可以确定父堆栈中等于“top”变量的位置处的值(标注为“stack[top]”)是否小于父节点的索引号的阵列中等于“index”变量的位置处的值(标注为“array[index]”)。例如,当“top”变量等于0且“index”变量等于1时,stack[top]等于-1而array[index]等于0。在这种情况下,条件stack[top]<array[index]评估为真,共识服务310可以进行到步骤1314。如果条件stack[top]<array[index]评估为假,共识服务310可以进行到1316。
在步骤1314,共识服务310可以在树结构中将所获得的节点追加到节点堆栈中等于“top”变量的位置处的节点(标注为“nodestack[top]”)。例如,如果“top”变量的值为0,则nodestack[top]可以为g4。共识服务可以在树结构中将节点g1追加到节点g4。在步骤1314,共识服务310可以将“top”变量进一步增加1,将获得的节点放置在节点堆栈中,并将array[index]放置在父堆栈中。例如,共识服务310可以将节点g1放置在节点堆栈中,将索引号0放置在父堆栈中。然后,共识服务310可以进行到步骤1328。
在步骤1316,共识服务310可以进行到步骤1318。在步骤1318,共识服务310可以确定父堆栈中等于“top”变量的位置处的值(标注为“stack[top]”)是否等于父节点的索引号的阵列中等于“index”变量的位置处的值(标注为“array[index]”)。如果是,共识服务310可以进行到步骤1320。如果不是,共识服务310可以进行到步骤1322。
在步骤1320,共识服务310可以在树结构中将所获得的节点追加到节点堆栈中“top”变量减1的位置处的节点(标注为“nodestack[top]”)。在步骤1320,共识服务310可以进一步用获得的节点替换节点堆栈栈顶的节点,并使stack[top]等于父堆栈中的array[index]。
在步骤1322,共识服务310可以确定父堆栈中等于“top”变量的位置处的值(标注为“stack[top]”)是否大于父节点的索引号的阵列中等于“index”变量的位置处的值(标注为“array[index]”)。如果是,共识服务310可以进行到步骤1324。如果不是,共识服务310可以进行到步骤1326。
在步骤1324,共识服务310可以将“top”变量减1并且移除节点堆栈和父堆栈中的栈顶条目。然后,共识服务310可以返回步骤1316。在步骤1326,共识服务310可以进行到步骤1328。
可以递归地执行图13所示的方法中的步骤,直到与共识模板或共识对象相关联的数据中的所有节点都用尽为止,即当共识服务310在步骤1306尝试获取节点时不存在与等于“index”变量的索引号相对应的节点时。
图14示出了根据一些实施例的用于注册共识模板的方法。方法1400可以由用于基于区块链的共识管理的设备、装置或系统执行。方法1400可以由图1至图3所示的环境或系统的一个或多个组件来执行,例如图3中的共识服务310的一个或多个组件。根据实施方式,方法1400可以包括以各种顺序或并行执行的附加的、更少的或替代的步骤。
框1410包括获得用于创建共识模板的请求,其中,该请求包括和与该共识模板相关联的多个参与实体有关的信息。在一些实施例中,和多个参与实体有关的信息包括:与一个或多个参与实体中的每个相关联的标识、与一个或多个参与实体中的每个相关联的区块链账户的公钥、与一个或多个参与实体中的每个相关联的联系信息、与参与实体的层级结构相关联的信息、分配给一个或多个参与实体中的每个的权重、其他合适的信息或其任何组合。在一些实施例中,用于创建共识模板的请求可以包括JavaScript对象简谱(JSON)文件。
框1420包括基于请求来生成表示与共识模板相关联的参与实体的层级结构的数据集。在一些实施例中,生成表示与共识模板相关联的参与实体的层级结构的数据集包括:解析用于创建共识模板的请求以获得表示参与实体的层级结构的树结构;以及生成与树结构相对应的一个或多个阵列。在一些实施例中,树结构包括多个节点,多个节点包括根节点、一个或多个分支节点以及多个叶节点。该树结构包括分别与该树结构的一个或多个节点相关联的一个或多个权重。每个叶节点对应于与共识模板相关联的参与实体之一。在一些实施例中,一个或多个叶节点各自对应于与实体相关联的个体。一个或多个叶节点的父节点对应于该实体。在一些实施例中,一个或多个阵列包括:包括与树结构的一个或多个节点相关联的一个或多个序列号的阵列;包括与树结构的一个或多个节点中的一个或多个父节点相关联的一个或多个序列号的阵列;或包括分别与树结构的一个或多个节点相关联的一个或多个权重的阵列。
框1430包括创建用于将共识模板注册到区块链的区块链交易,其中,区块链交易包括表示参与实体的层级结构的数据集。在一些实施例中,用于将共识模板注册到区块链的区块链交易可被执行,以调用被配置为将一个或多个共识模板注册到区块链的区块链合约。
框1440包括向与区块链相关联的一个或多个区块链节点发送用于将共识模板添加到区块链的区块链交易,以添加到区块链。
在一些实施例中,所述方法进一步包括:从用于创建共识模板的请求中获得用于确定达成共识的一个或多个标准;并且存储用于确定达成共识的一个或多个标准。
在一些实施例中,获得用于创建共识模板的请求包括从与参与实体之一相关联的计算设备获得用于创建共识模板的请求,参与实体与共识模板相关联。所述方法还包括将对共识模板被创建的确认返回给与参与实体之一相关联的计算设备。
图15示出了根据一些实施例的用于注册共识对象的方法。方法1500可以由用于基于区块链的共识管理的设备、装置或系统执行。方法1500可以由图1至图3所示的环境或系统的一个或多个组件来执行,例如图3中的共识服务310的一个或多个组件。取决于实施例,方法1500可以包括以各种顺序或并行执行的附加的、更少的或替代的步骤。
框1510包括获得用于创建需要多个参与实体的共识的共识对象的请求,其中,用于创建共识对象的请求包括与参与实体的层级结构相关联的共识模板的标识。
框1520包括基于与共识模板相关联的参与实体的层级结构来初始化与共识对象相关联的多个参数,其中,参数包括与每个参与实体相对应的参数,并且所述初始化包括将每个参数设置为初始值。在一些实施例中,初始化与共识对象相关联的多个参数包括:获得表示参与实体的层级结构的树结构,该树结构包括多个节点;生成包括多个位置的阵列,每个位置对应于与树结构的节点之一,其中,所述位置分别对应于与共识对象相关联的参数;将阵列的每个位置设置为与该位置对应的参数的初始值。
框1530包括创建用于将共识对象注册到区块链的区块链交易,其中,用于将共识对象注册到区块链的区块链交易包括与每个参数相关联的初始值。在一些实施例中,区块链交易还包括共识对象的多个属性。所述属性可以包括:共识模板的标识、共识对象的标识、与一个或多个参与实体中的每个相关联的标识、与一个或多个参与实体中的每个相关联的区块链账户的公钥、或分配给一个或多个参与实体中的每个的权重。
框1540向与区块链相关联的一个或多个区块链节点发送用于将共识对象注册到区块链的区块链交易,以添加到区块链。
在一些实施例中,获得用于创建共识对象的请求包括:从与参与实体之一相关联的计算设备获得用于创建共识对象的请求,所述参与实体与共识对象相关联。所述方法还包括:将对共识对象被创建的确认返回给与参与实体之一相关联的计算设备。在一些实施例中,所述方法还包括:向与一个或多个参与实体相关联的一个或多个计算设备发送创建共识对象的通知,所述参与实体与共识对象相关联,其中,该通知包括该共识对象的标识以及用于批准共识对象的请求。
图16示出了根据一些实施例的用于针对共识对象的注册批准的方法。方法1600可以由用于基于区块链的共识管理的设备、装置或系统执行。方法1600可以由图1至图3所示的环境或系统的一个或多个组件来执行,例如图3中的共识服务310的一个或多个组件。取决于实施例,方法1600可以包括以各种顺序或并行执行的附加的、更少的或替代的步骤。
框1610包括获得针对与区块链相关联的共识对象的批准消息,该共识对象包括与多个参与实体的层级结构相关联的多个参数,其中,该批准消息包括与参与实体之一相关联的信息,并且参与实体之一对应于参数之一。
框1620包括基于批准消息来获得与参与实体之一相关联的数字签名。在一些实施例中,获得与参与实体之一相关联的数字签名包括:从针对共识对象的批准消息中获得数字签名。在一些实施例中,获得与参与实体之一相关联的数字签名包括:从针对共识对象的批准消息中获得与参与实体之一相关联的身份信息,认证与参与实体之一相关联的身份信息,基于获得的身份信息来检索与参与实体之一相关联的私钥,并基于与参与实体之一相关联的私钥来生成数字签名。
框1630包括基于与共识对象相关联的信息来认证数字签名。在一些实施例中,认证数字签名包括:从与共识对象相关联的信息中获得与参与实体之一相关联的公钥,并基于该公钥验证数字签名是基于与公钥对应的私钥创建的。
框1640包括基于批准消息创建可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易。在一些实施例中,可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易可以被执行,以调用被配置为维护与共识对象相关联的参数的值的区块链合约。在一些实施例中,可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易可进一步被执行,以将与共识对象相关联的一个或多个其他参数分别设置为一个或多个更新值,其中,每个其他参数与对应于参与实体之一的参数具有依赖关系。
在一些实施例中,创建可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易包括:获得表示参与实体的层级结构的树结构,该树结构包括多个节点,其中,树结构的节点分别对应于与共识对象相关联的参数;从树结构中识别分支中的一个或多个其他节点,该分支将与参与实体之一的参数相对应的节点连接到树结构的根节点;以及确定每个其他节点和根节点的更新值。在一些实施例中,确定每个其他节点和根节点的更新值包括:对于每个其他节点:将该其他节点的更新值确定为与该其他节点的一个或多个子节点相关联的一个或多个值的加权和。
框1650包括向与区块链相关联的一个或多个区块链节点发送可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易,以添加到区块链。
在一些实施例中,获得针对共识对象的批准消息包括:从与参与实体之一相关联的计算设备获得针对共识对象的批准消息,所述参与实体与共识模板相关联。所述方法还包括:将对共识对象被成功签名的确认返回给与参与实体之一相关联的计算设备。
在一些实施例中,所述方法还包括:从区块链获得与共识对象相关联的一个或多个参数的一个或多个更新值;基于一个或多个更新值来确定用于确定批准共识对象的一个或多个标准被满足;生成包括共识对象被批准的证明的区块链交易。在一些实施例中,所述方法还包括:向与区块链相关联的一个或多个区块链节点发送包括共识对象被批准的证明的区块链交易,以添加到区块链。在一些实施例中,所述方法还包括:向与不同区块链相关联的一个或多个区块链节点发送包括共识对象被批准的证明的区块链交易,以添加到不同区块链。在一些实施例中,包括共识对象被批准的证明的区块链交易可以被执行,以调用可被执行以基于共识对象被批准来触发一个或多个区块链交易的区块链合约。在一些实施例中,用于确定批准共识对象的一个或多个标准包括:批准共识对象的参与实体的所需数量或批准共识对象所需的一个或多个参与实体。
图17示出了根据一些实施例的用于提供共识对象的状态信息的方法。方法1700可以由用于基于区块链的共识管理的设备、装置或系统执行。方法1700可以由图1至图3所示的环境或系统的一个或多个组件来执行,例如图3中的共识服务310的一个或多个组件。取决于实施例,方法1700可以包括以各种顺序或并行执行的附加的、更少的或替代的步骤。
框1710包括获得针对与区块链相关联的共识对象的状态的请求,其中,共识对象包括与多个参与实体的层级结构相关联的多个参数。
框1720包括从区块链获得分别与共识对象的参数相关联的多个值。
框1730包括基于多个值来生成共识对象的状态概要。在一些实施例中,共识对象的状态概要包括:共识对象被批准的证明。在一些实施例中,共识对象的状态概要包括:与已批准共识对象的一个或多个参与实体中的每个相关联的身份信息、与已批准共识对象的一个或多个参与实体中的每个相关联的数字签名、分配给已批准共识对象的一个或多个参与实体中的每个的权重。在一些实施例中,共识对象的状态概要包括JavaScript对象表示(JSON)文件。
在一些实施例中,生成共识对象的状态概要包括:基于与共识对象相关联的信息来构建与参与实体的层级结构相对应的树结构;以及基于树结构来生成共识对象的状态概要。在一些实施例中,树结构包括多个节点,多个节点包括根节点、一个或多个分支节点以及多个叶节点。树结构的每个节点对应于与共识对象相关联的多个参数之一。状态概要包括与树结构的根节点相对应的参数的值。在一些实施例中,与共识对象相关联的信息包括分别与共识对象的参数对应的多个条目的阵列。构建树结构包括:根据参与实体的层级结构来组织条目的阵列。
在一些实施例中,构建树结构包括:创建用于包括阵列中一个或多个条目的堆栈;以及对于阵列中的每个条目:从阵列中获得该条目;根据获得的条目更新堆栈;将获得的条目添加到树结构中,其中,所获得的条目在树结构中的位置基于更新的堆栈。在一些实施例中,基于获得的条目来更新堆栈包括:将获得的条目添加到堆栈;或从堆栈中移除一个或多个条目。在一些实施例中,所述构建树结构还包括:创建与树结构相关联的一个或多个索引;基于每个获得的条目来更新一个或多个索引;以及进一步基于一个或多个更新的索引来更新堆栈。
框1740包括返回共识对象的状态概要。
图18示出了根据一些实施例的用于注册共识模板的计算机系统的框图。系统1800可以是图3中的共识服务310的一个或多个组件或图1至图3中示出的一个或多个组件的实施方式的示例。方法1400可以由计算机系统1800实现。计算机系统1800可以包括一个或多个处理器和一个或多个非暂时性计算机可读存储介质(例如,一个或多个存储器),所述一个或多个非暂时性计算机可读存储介质耦接到一个或多个处理器并且被配置成具有可由所述一个或多个处理器执行的指令以促使系统或设备(例如,处理器)执行例如方法1400。计算机系统1800可以包括与指令(例如,软件指令)相对应的各种单元/模块。在一些实施例中计算机系统1800可以被称为用于基于区块链的共识管理的装置。所述装置可以包括:获得模块1810,用于获得用于创建共识模板的请求,其中,该请求包括和与该共识模板相关联的多个参与实体有关的信息;以及生成模块1820,用于基于所述请求来生成表示与共识模板相关联的参与实体的层级结构的数据集;创建模块1830,用于创建用于将共识模板注册到区块链的区块链交易,其中,所述区块链交易包括表示参与实体的层级结构的数据集;发送模块1840,用于向与区块链相关联的一个或多个区块链节点发送用于将共识模板注册到所述区块链的区块链交易,以添加到区块链。
图19示出了根据一些实施例的用于注册共识对象的计算机系统的框图。系统1900可以是图3中的共识服务310的一个或多个组件或图1至图3中示出的一个或多个组件的实施方式的示例。方法1500可以由计算机系统1900实现。计算机系统1900可以包括一个或多个处理器和一个或多个非暂时性计算机可读存储介质(例如,一个或多个存储器),所述一个或多个非暂时性计算机可读存储介质耦接到一个或多个处理器并且被配置成具有可由所述一个或多个处理器执行的指令以促使系统或设备(例如,处理器)执行例如方法1500。计算机系统1900可以包括与指令(例如,软件指令)相对应的各种单元/模块。在一些实施例中计算机系统1900可以被称为用于基于区块链的共识管理的装置。所述装置可以包括:获得模块1910,用于获得用于创建需要多个参与实体的共识的共识对象的请求,其中,用于创建共识对象的请求包括与参与实体的层级结构相关联的共识模板的标识;初始化模块1920,用于基于与共识模板相关联的参与实体的层级结构来初始化与共识对象相关联的多个参数,其中,所述参数包括与每个参与实体相对应的参数,其中,所述初始化包括将每个参数设置为初始值;创建模块1930,用于创建用于将共识对象注册到区块链的区块链交易,其中,用于将共识对象注册到区块链的区块链交易包括与每个参数相关联的初始值;发送模块1940,用于向与所述区块链相关联的一个或多个区块链节点发送用于将共识对象注册到区块链的区块链交易,以添加到所述区块链。
图20示出了根据一些实施例的用于针对共识对象注册批准的计算机系统的框图。系统2000可以是图1的共识服务310的一个或多个组件或图1至图3中所示的一个或多个组件的实施方式的示例。方法1600可以由计算机系统2000实现。计算机系统2000可以包括一个或多个处理器和一个或多个非暂时性计算机可读存储介质(例如,一个或多个存储器),所述一个或多个非暂时性计算机可读存储介质耦接到一个或多个处理器并且被配置成具有可由所述一个或多个处理器执行的指令以促使系统或设备(例如,处理器)执行例如方法1600。计算机系统2000可以包括与指令(例如,软件指令)相对应的各种单元/模块。在一些实施例中计算机系统2000可以被称为用于基于区块链的共识管理的装置。所述装置可以包括:第一获得模块2010,用于获得针对与区块链相关联的共识对象的批准消息,该共识对象包括与多个参与实体的层级结构相关联的多个参数,其中,该批准消息包括与参与实体之一相关联的信息并且参与实体之一与参数之一相对应;第二获得模块2020,用于基于批准消息来获得与所述参与实体之一相关联的数字签名;认证模块2030,用于基于与共识对象相关联的信息来认证所述数字签名;创建模块2040,用于基于所述批准消息来创建可被执行以将与所述参与实体之一相对应的参数设置为更新值的区块链交易;发送模块2050,用于向与区块链关联的一个或多个区块链节点发送可被执行以将与参与实体之一相对应的参数设置为更新值的区块链交易,以添加至区块链。
图21示出了根据一些实施例的用于提供共识对象的状态信息的计算机系统的框图。系统2100可以是图1的共识服务310的一个或多个组件或图1至图3中所示的一个或多个组件的实施方式的示例。方法1700可以由计算机系统2100实现。计算机系统2100可以包括一个或多个处理器和一个或多个非暂时性计算机可读存储介质(例如,一个或多个存储器),所述一个或多个非暂时性计算机可读存储介质耦接到一个或多个处理器并且被配置成具有可由所述一个或多个处理器执行的指令以促使系统或设备(例如,处理器)执行例如方法1700。计算机系统2100可以包括与指令(例如,软件指令)相对应的各种单元/模块。在一些实施例中计算机系统2100可以被称为用于基于区块链的共识管理的装置。所述装置可以包括:第一获得模块2110,用于获得针对与区块链相关联的共识对象的状态的请求,其中,共识对象包括与多个参与实体的层级结构相关的多个参数;第二获得模块2120,用于从区块链获得分别与共识对象的参数相关联的多个值;生成模块2130,用于基于所述多个值来生成共识对象的状态概要;返回模块2140,用于返回共识对象的状态概要。
本文描述的技术由一个或多个专用计算设备实现。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持设备、联网设备或任何其他设备或包括硬连线和/或程序逻辑以实现该技术的设备的组合。专用计算设备可以实现为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或其组合。计算设备通常可以由操作系统软件控制和协调。传统的操作系统控制和调度用于执行的计算机进程,执行存储器管理,提供文件系统、联网、I/O服务,并且提供用户界面功能,例如图形用户界面(“GUI”)等等。本文描述的各种系统、装置、存储介质、模块和单元可以在专用计算设备中实现,或者在一个或多个专用计算设备的一个或多个计算芯片中实现。在一些实施例中,本文描述的指令可以在专用计算设备上的虚拟机中实现。所述指令当被执行时可以促使专用计算设备执行本文描述的各种方法。虚拟机可以包括软件、硬件或其组合。
图22示出了可以实现本文描述的任何实施例的计算机系统的框图。系统2200可以在图1至图3所示的环境或系统的任何组件中实现。图1至图3中所示的软件应用或服务可以在系统2200上实现和操作。图4、图7、图9、图11、图13至图17所示的一个或多个示例性方法或处理可以由计算机系统2200的一个或多个实施方式执行。
计算机系统2200可以包括用于通信信息的总线2202或其他通信机制、与总线2202耦合以处理信息的一个或多个硬件处理器2204。硬件处理器2204可以是例如一个或多个通用微处理器。
计算机系统2200还可以包括耦合到总线2202、用于存储可由处理器2204执行的信息和指令的主存储器2206,例如随机存取存储器(RAM)、高速缓存和/或其他动态存储设备。主存储器2206还可以用于在执行可由(一个或多个)处理器2204执行的指令期间存储临时变量或其他中间信息。当这些指令被存储在处理器2204可访问的存储介质中时,这些指令将计算机系统2200呈现为用于执行指令中所指定的操作而定制的专用机器。计算机系统2200还可以包括耦合到总线2202、用于存储处理器2204的静态信息和指令的只读存储器(ROM)2208或其他静态存储设备。诸如磁盘、光盘或USB拇指驱动器(闪存驱动器)等的存储设备2210可以被提供并被耦合到总线2202以存储信息和指令。
计算机系统2200可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑实现本文描述的技术,其中所述固件和/或程序逻辑与计算机系统相结合使得计算机系统2200成为专用机器或将计算机系统700编程为专用机器。根据一个实施例,本文描述的操作、方法和处理由计算机系统2200响应于处理器2204执行包含在主存储器2206中的一个或多个指令的一个或多个序列而执行。这些指令可以从诸如存储设备2210的另一存储介质被读入主存储器2206。主存储器2206中包含的指令序列的执行可以促使处理器2204执行这里描述的处理步骤。在可选实施例中,可以使用硬连线电路代替软件指令或与软件指令组合。
主存储器2206、ROM 2208和/或存储设备2210可以包括非瞬态存储介质。如本文所使用的术语“非暂时性介质”和类似术语指的是存储使机器以特定方式操作的数据和/或指令的介质,所述介质不包括瞬态信号。这种非暂时性介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,例如存储设备2210。易失性介质包括动态存储器,例如主存储器2206。非暂时性介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM,NVRAM、任何其他存储器芯片或盒式磁带、以及它们的联网版本。
计算机系统2200还可以包括耦合到总线2202的网络接口2218。网络接口2218可以提供耦合到一个或多个网络链路的双向数据通信,所述一个或多个网络链路连接到一个或多个本地网络。例如,网络接口2218可以是综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或调制解调器,用于提供到相应类型的电话线路的数据通信连接。作为另一示例,网络接口2218可以是局域网(LAN)卡,用于提供到兼容LAN(或与WAN通信的WAN组件)的数据通信连接。也可以实现无线链路。在任何这样的实施方式中,网络接口2218可以发送和接收携带表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。
计算机系统2200可以通过网络、网络链路和网络接口2218发送消息和接收数据,其中包括程序代码。在因特网示例中,服务器可以通过因特网、ISP、本地网络和网络接口2218发送应用程序的请求代码。
所接收的代码可以在其被接收时由处理器2204执行,和/或存储在存储设备2210或其他非易失性存储设备中以供稍后执行。
在前述部分中描述的每个处理、方法和算法可以在由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码模块中实现,并且完全或部分地由所述代码模块自动实现。所述处理和算法可以部分地或全部地在专用电路中实现。
上述各种特征和处理可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合都将落入本文范围内。另外,在一些实施例中可以省略某些方法或处理框图。本文所述的方法和处理也不限于任何特定序列,且与其相关的框图或状态可以以其他适当序列执行。例如,所描述的框图或状态可以以不同于具体公开的顺序执行,或者多个框图或状态可以被组合在单个框图或状态中。框图或状态的示例可以串行、并行或以某种其他方式执行。可以向所公开的实施例添加框图或状态或从所公开的实施例中移除框图或状态。本文所述的系统和组件的示例可被配置成与所述的不同。举例来说,与所显露的实施例相比,元件可以被添加到所显露的实施例、被从所显露的实施例移除或被重新布置。
本文所述方法的各种操作可至少部分地由临时配置(例如,通过软件)或永久配置为执行相关操作的一个或多个处理器执行。无论是临时配置还是永久配置,这样的处理器可以构成处理器实现的引擎,运行该引擎以执行这里描述的一个或多个操作或功能。
类似地,本文描述的方法可以至少部分地由处理器实现,其中一个特定处理器或多个处理器是硬件的示例。例如,所述方法的至少一些操作可以由一个或多个处理器或处理器实现引擎执行。此外,一个或多个处理器还可操作以支持“云计算”环境中的相关操作的性能或作为“软件即服务”(SaaS)。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可以经由网络(例如,因特网)和经由一个或多个适当的接口(例如,应用程序接口(API))访问。
某些操作的性能可以分布在处理器之间,不仅是驻留在单个机器内,而是跨多个机器部署。在一些实施例中,处理器或处理器实现引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器群内)。在其他实施例中,处理器或处理器实现的引擎可以分布在多个地理位置上。
在本文中,多个实例可以实现作为单个实例描述的组件、操作或结构。尽管一个或多个方法的各个操作被示出并描述为独立的操作,这些独立的操作中的一个或多个可以同时执行,并且不要求这些操作以所示的顺序执行。在配置中作为独立组件呈现的结构和功能可以被实现为组合结构或组件。类似地,作为单个组件呈现的结构和功能可以被实现为独立的组件。这些和其他变化、修改、添加和改进都落入本文的主题的范围内。
尽管已参考具体实施例描述了主题的概述,但是在不脱离本文的实施例的较宽范围的情况下,可以对这些实施例进行各种修改和改变。具体实施方式不应被理解为限制性的,并且各实施例的范围仅由所附权利要求以及这些权利要求所享有的等效物的全部范围定义。此外,本文所用的相关术语(例如“第一”、“第二”、“第三”等)不表示任何顺序、高度或重要性,而是用来将一个元件与另一个元件区分开。此外,术语“一”、“一个”和“多个”不表示对本文中量的限制,而是表示存在至少一个所提及的物品。另外,在本文中,“或”是包括性的而不是排他性的,除非另外明确指出或通过上下文另外指出。因此,在本文中,“A或B”是指“A、B或两者”,除非另外明确指出或通过上下文另外指出。此外,“和”既是共同的又是个别的,除非另外明确指出或通过上下文另外指出。因此,在本文中,“A和B”是指“A和B,共同地或分别地”,除非另外明确指出或通过上下文另外指出。

Claims (42)

1.一种计算机实现的用于基于区块链的共识管理的方法,包括:
获得用于创建共识模板的请求,其中,所述请求包括和与所述共识模板相关联的多个参与实体有关的信息、用于确定达成共识的一个或多个标准、分配给一个或多个所述参与实体中的每个的权重;
基于所述请求来生成表示与所述共识模板相关联的所述参与实体的层级结构的数据集;其中,所述层级结构包括多个节点,每个节点对应于所述参与实体之一,父节点的状态取决于一个或更多个子节点中每个子节点的状态和权重,用于确定达成共识的一个或多个标准包括达成共识所需的参与实体的总权重;
创建用于将所述共识模板注册到区块链的区块链交易,其中,所述区块链交易包括表示所述参与实体的所述层级结构的所述数据集;以及
向与所述区块链相关联的一个或多个区块链节点发送用于将所述共识模板注册到所述区块链的所述区块链交易,以添加到所述区块链。
2.如权利要求1所述的方法,其中,和所述多个参与实体有关的所述信息包括:
与一个或多个所述参与实体中的每个相关联的标识;
与一个或多个所述参与实体中的每个相关联的区块链账户的公钥;
与一个或多个所述参与实体中的每个相关联的联系信息;或
与所述参与实体的所述层级结构相关联的信息。
3.如权利要求1或2所述的方法,还包括:
从用于创建所述共识模板的请求中获得用于确定达成共识的一个或多个标准;以及
存储用于确定达成共识的所述一个或多个标准。
4.如权利要求1至3中任一项所述的方法,其中,用于创建所述共识模板的所述请求包括JavaScript对象简谱JSON文件。
5.如权利要求1至4中任一项所述的方法,其中,生成表示与所述共识模板相关联的所述参与实体的层级结构的数据集包括:
解析用于创建所述共识模板的所述请求,以获得表示所述参与实体的所述层级结构的树结构;以及
生成与所述树结构相对应的一个或多个阵列。
6.如权利要求5所述的方法,其中:
所述树结构包括多个节点,所述多个节点包括根节点、一个或多个分支节点以及多个叶节点;
所述树结构包括分别与所述树结构的一个或多个节点相关联的一个或多个权重;
每个所述叶节点对应于与所述共识模板相关联的所述参与实体之一。
7.如权利要求6所述的方法,其中:
一个或多个所述叶节点各自对应于与实体相关联的个体;
一个或多个所述叶节点的父节点对应于所述实体。
8.如权利要求6或7所述的方法,其中,所述一个或多个阵列包括:
包括与所述树结构的所述一个或多个节点相关联的一个或多个序列号的阵列;
包括与所述树结构的所述一个或多个节点的一个或多个父节点相关联的一个或多个序列号的阵列;或
包括分别与所述树结构的所述一个或多个节点相关联的一个或多个权重的阵列。
9.如权利要求1至8中任一项所述的方法,其中,用于将所述共识模板注册到区块链的所述区块链交易能够被执行,以调用被配置为将一个或多个共识模板注册到所述区块链的区块链合约。
10.如权利要求1至9中任一项所述的方法,其中:
获得用于创建共识模板的请求包括:从与所述参与实体之一相关联的计算设备获得用于创建所述共识模板的所述请求,所述参与实体与所述共识模板相关联;
所述方法还包括:将用于对所述共识模板被创建的确认返回给与所述参与实体之一相关联的所述计算设备。
11.一种计算机实现的用于基于区块链的共识管理的方法,包括:
获得用于创建需要多个参与实体的共识的共识对象的请求,其中,用于创建所述共识对象的所述请求包括与所述参与实体的层级结构相关联的共识模板的标识;所述层级结构包括多个节点,每个节点对应于所述参与实体之一,父节点的状态取决于一个或更多个子节点中每个子节点的状态和权重,用于确定达成共识的一个或多个标准包括达成共识所需的参与实体的总权重;
基于与所述共识模板相关联的所述参与实体的所述层级结构来初始化与所述共识对象相关联的多个参数,其中,所述参数包括与每个所述参与实体相对应的参数,并且所述初始化包括将每个所述参数设置为初始值;
创建用于将所述共识对象注册到所述区块链的区块链交易,其中,用于将所述共识对象注册到所述区块链的所述区块链交易包括与每个所述参数相关联的初始值;以及
向与区块链相关联的一个或多个区块链节点发送用于将所述共识对象注册到所述区块链的所述区块链交易,以添加到所述区块链。
12.如权利要求11所述的方法,其中,所述区块链交易还包括所述共识对象的多个属性,所述属性包括:
所述共识模板的所述标识;
所述共识对象的标识;
与一个或多个所述参与实体中的每个相关联的标识;
与一个或多个所述参与实体中的每个相关联的区块链账户的公钥;或
分配给一个或多个所述参与实体中的每个的权重。
13.如权利要求11或12所述的方法,其中,初始化与所述共识对象相关联的多个参数包括:
获得表示所述参与实体的所述层级结构的树结构,所述树结构包括多个节点;
生成包括多个位置的阵列,每个所述位置对应于所述树结构的所述节点之一,其中,所述位置分别对应于与所述共识对象相关联的参数;以及
将所述阵列的每个所述位置设置为与该位置相对应的所述参数的所述初始值。
14.如权利要求11至13中任一项所述的方法,其中:
获得用于创建共识对象的请求包括:从与所述参与实体之一相关联的计算设备获得用于创建所述共识对象的所述请求,所述参与实体与所述共识对象相关联;
所述方法还包括:将对所述共识对象被创建的确认返回给与所述参与实体之一相关联的所述计算设备。
15.如权利要求11至14中任一项所述的方法,还包括:
向与一个或多个所述参与实体相关联的一个或多个计算设备发送用于创建共识对象的通知,所述参与实体与所述共识对象相关联,其中,所述通知包括所述共识对象的标识以及用于批准所述共识对象的请求。
16.一种计算机实现的用于基于区块链的共识管理的方法,包括:
获得针对与区块链相关联的共识对象的批准消息,所述共识对象包括与多个参与实体的层级结构相关联的多个参数,其中,所述批准消息包括与所述参与实体之一相关联的信息并且所述参与实体之一与所述参数之一相对应;所述层级结构包括多个节点,每个节点对应于所述参与实体之一,父节点的状态取决于一个或更多个子节点中每个子节点的状态和权重,用于确定达成共识的一个或多个标准包括达成共识所需的参与实体的总权重;
基于所述批准消息来获得与所述参与实体之一相关联的数字签名;
基于与所述共识对象相关联的信息来认证所述数字签名;
基于所述批准消息来创建能够被执行以将与所述参与实体之一相对应的参数设置为更新值的区块链交易;以及
向与所述区块链相关联的一个或多个区块链节点发送能够被执行以将与所述参与实体之一相对应的参数设置为所述更新值的区块链交易,以添加到所述区块链。
17.如权利要求16所述的方法,其中,获得与所述参与实体之一相关联的数字签名包括:
从针对所述共识对象的所述批准消息中获得所述数字签名。
18.如权利要求16所述的方法,其中,获得与所述参与实体之一相关联的数字签名包括:
从针对所述共识对象的所述批准消息中获得与所述参与实体之一相关联的身份信息;
认证与所述参与实体之一相关联的所述身份信息;
基于所述获得的身份信息来检索与所述参与实体之一相关联的私钥;以及
基于与所述参与实体之一相关联的所述私钥来生成所述数字签名。
19.如权利要求16至18中任一项所述的方法,其中,认证所述数字签名包括:
从与所述共识对象相关联的信息中获得与所述参与实体之一相关联的公钥;以及
基于所述公钥来验证所述数字签名是基于与所述公钥相对应的私钥创建的。
20.如权利要求16至19中任一项所述的方法,其中,能够被执行以将与所述参与实体之一相对应的参数设置为所述更新值的区块链交易能够被执行,以调用被配置为维护与所述共识对象相关联的参数的值的区块链合约。
21.如权利要求16至20中任一项所述的方法,其中,
能够被执行以将与所述参与实体之一相对应的参数设置为更新值的区块链交易能够进一步被执行,以将与所述共识对象相关联的一个或多个其他参数分别设置为一个或多个更新值,
每个所述其他参数与对应于所述参与实体之一的参数具有依赖关系。
22.如权利要求21所述的方法,其中,创建能够被执行以将与所述参与实体之一相对应的参数设置为更新值的区块链交易包括:
获得表示所述参与实体的所述层级结构的树结构,所述树结构包括多个节点,其中,所述树结构的所述节点分别对应于与所述共识对象相关联的参数;
从所述树结构中识别分支中的一个或多个其他节点,所述分支将与所述参与实体之一的参数相对应的节点连接到所述树结构的根节点;以及
确定每个所述其他节点和所述根节点的更新值。
23.如权利要求22所述的方法,其中,确定每个所述其他节点和所述根节点的更新值包括,针对每个所述其他节点:
将该其他节点的所述更新值确定为与该其他节点的一个或多个子节点相关联的一个或多个值的加权和。
24.如权利要求16至23中任一项所述的方法,其中:
获得针对所述共识对象的批准消息包括:从与所述参与实体之一相关联的计算设备获得针对所述共识对象的所述批准消息,所述参与实体与共识模板相关联;
所述方法还包括:将对所述共识对象被成功签名的确认返回给与所述参与实体之一相关联的所述计算设备。
25.如权利要求16至24中任一项所述的方法,还包括:
从所述区块链获得与所述共识对象相关联的一个或多个参数的一个或多个更新值;
基于所述一个或多个更新值来确定用于确定批准所述共识对象的一个或多个标准被满足;以及
生成包括所述共识对象被批准的证明的区块链交易。
26.如权利要求25所述的方法,还包括:
向与所述区块链相关联的一个或多个区块链节点发送包括所述共识对象被批准的所述证明的区块链交易,以添加到所述区块链。
27.如权利要求25所述的方法,还包括:
向与不同区块链相关联的一个或多个区块链节点发送包括所述共识对象被批准的所述证明的区块链交易,以添加到所述不同区块链。
28.如权利要求25至27中任一项所述的方法,其中:
包括所述共识对象被批准的所述证明的区块链交易能够被执行,以调用能够被执行以基于所述共识对象被批准来触发一个或多个区块链交易的区块链合约。
29.如权利要求25至28中任一项所述的方法,其中:用于确定批准所述共识对象的所述一个或多个标准包括:
批准所述共识对象的参与实体的所需数量;或
批准所述共识对象所需的一个或多个参与实体。
30.一种计算机实现的用于基于区块链的共识管理的方法,包括:
获得针对与区块链相关联的共识对象的状态的请求,其中,所述共识对象包括与多个参与实体的层级结构相关联的多个参数;所述层级结构包括多个节点,每个节点对应于所述参与实体之一,父节点的状态取决于一个或更多个子节点中每个子节点的状态和权重,用于确定达成共识的一个或多个标准包括达成共识所需的参与实体的总权重;
从所述区块链获得分别与所述共识对象的所述参数相关联的多个值;
基于所述多个值来生成所述共识对象的状态概要;以及
返回所述共识对象的所述状态概要。
31.如权利要求30所述的方法,其中,所述共识对象的所述状态概要包括:
所述共识对象被批准的证明。
32.如权利要求30或31所述的方法,其中,所述共识对象的所述状态概要包括:
与已批准所述共识对象的一个或多个所述参与实体中的每个相关联的身份信息;
与已批准所述共识对象的一个或多个所述参与实体中的每个相关联的数字签名;或
分配给已批准所述共识对象的一个或多个所述参与实体中的每个的权重。
33.如权利要求30至32中任一项所述的方法,其中,所述共识对象的所述状态概要包括JavaScript对象简谱JSON文件。
34.如权利要求30至33中任一项所述的方法,其中,生成所述共识对象的状态概要包括:
基于与所述共识对象相关联的信息来构建与所述参与实体的所述层级结构相对应的树结构;以及
基于所述树结构来生成所述共识对象的所述状态概要。
35.如权利要求34所述的方法,其中:
所述树结构包括多个节点,所述多个节点包括根节点、一个或多个分支节点以及多个叶节点;
所述树结构的每个所述节点对应于与所述共识对象相关联的所述多个参数之一;
所述状态概要包括与所述树结构的所述根节点相对应的参数的值。
36.如权利要求34或35所述的方法,其中,
与所述共识对象相关联的所述信息包括分别与所述共识对象的所述参数相对应的多个条目的阵列;
所述构建树结构包括:根据所述参与实体的所述层级结构来组织所述条目的阵列。
37.如权利要求36所述的方法,其中,所述构建树结构包括:
创建用于包括所述阵列中的一个或多个条目的堆栈;以及
对于所述阵列中的每个条目:
从所述阵列获得该条目;
基于所述获得的条目来更新所述堆栈;以及
将所述获得的条目添加至所述树结构,其中,所述获得的条目在所述树结构中的位置基于所述更新的堆栈。
38.如权利要求37所述的方法,其中,基于所述获得的条目来更新所述堆栈包括:
将所述获得的条目添加至所述堆栈;或
从所述堆栈中移除一个或多个条目。
39.如权利要求37或38所述的方法,其中,所述构建树结构还包括:
创建与所述树结构相关联的一个或多个索引;
基于每个所述获得的条目更新所述一个或多个索引;以及
进一步基于所述一个或多个更新的索引来更新所述堆栈。
40.一种系统,包括:
一个或多个处理器;以及
耦接到所述一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述指令能够由所述一个或多个处理器执行以执行权利要求1至39中任一项所述的方法。
41.一种非暂时性计算机可读存储介质,配置有能够由一个或多个处理器执行以促使所述一个或多个处理器执行如权利要求1至39中任一项所述的方法的指令。
42.一种装置,包括用于执行权利要求1至39中任一项所述的方法的多个模块。
CN201980005296.7A 2019-11-19 2019-11-19 用于共识管理的系统和方法 Active CN112513900B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/119375 WO2020035094A2 (en) 2019-11-19 2019-11-19 System and method for consensus management

Publications (2)

Publication Number Publication Date
CN112513900A CN112513900A (zh) 2021-03-16
CN112513900B true CN112513900B (zh) 2024-03-26

Family

ID=69525959

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980005296.7A Active CN112513900B (zh) 2019-11-19 2019-11-19 用于共识管理的系统和方法

Country Status (6)

Country Link
US (1) US11270030B2 (zh)
EP (1) EP3776412A4 (zh)
CN (1) CN112513900B (zh)
CA (1) CA3098935A1 (zh)
SG (1) SG11202010851WA (zh)
WO (1) WO2020035094A2 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111464395B (zh) * 2020-03-31 2023-06-09 腾讯科技(深圳)有限公司 一种创建区块链的方法、装置及可读存储介质
CN111563096B (zh) * 2020-04-16 2023-08-11 深圳价值在线信息科技股份有限公司 一种创建实体画像的方法、装置、节点及存储介质
US20230410102A1 (en) * 2020-10-12 2023-12-21 Cambridge Cryptographic Ltd Blockchain
JP2022151190A (ja) * 2021-03-26 2022-10-07 株式会社日立製作所 業務監査支援システム及び業務監査支援方法
CN113191772B (zh) * 2021-04-12 2023-06-20 西安交通大学 一种基于分层模型的联盟链的共识方法
EP4123532A1 (en) * 2021-07-20 2023-01-25 Hitachi, Ltd. Method and apparatus for aligning interactions of users in a green technology project
CN113486118B (zh) * 2021-07-21 2023-09-22 银清科技有限公司 共识节点选取方法及装置
US20230299983A1 (en) * 2022-03-21 2023-09-21 Coinbase, Inc. Systems and methods for facilitating blockchain operations based on network congestion
US20230419313A1 (en) * 2022-06-24 2023-12-28 Atlassian Pty Ltd. Apparatuses, methods, and computer program products for managing a digital asset repository associated with a distributed ledger system based on an event stream related to an application framework
US20230419264A1 (en) * 2022-06-24 2023-12-28 Atlassian Pty Ltd Apparatuses, methods, and computer program products for application component workflows based on a distributed ledger
US20240022442A1 (en) * 2022-07-26 2024-01-18 Trustedpedia, Inc. Using x.509 and blockchain to provide a technology platform through which users may securely post digital information, into a system and to comment on, supplement, digitally associate their information with previously posted information using t-tags and to support and organize posted information with a community of users to suggest or establish trustworthy and/or agreed upon realities for multiple information categories and topics

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108712423A (zh) * 2018-05-18 2018-10-26 北京三六五八网络科技有限公司 权限管理方法及装置
CN109508954A (zh) * 2018-10-18 2019-03-22 尚维斯 一种基于审批模板的区块链地址生成及交易方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9137222B2 (en) 2012-10-31 2015-09-15 Vmware, Inc. Crypto proxy for cloud storage services
US9595034B2 (en) 2013-10-25 2017-03-14 Stellenbosch University System and method for monitoring third party access to a restricted item
US11386404B2 (en) 2015-02-04 2022-07-12 Ripple Luxembourg S.A. Temporary consensus subnetwork in a distributed network for payment processing
US9647968B2 (en) * 2015-03-25 2017-05-09 Pypestream Inc Systems and methods for invoking chatbots in a channel based communication system
US9871775B2 (en) 2015-08-10 2018-01-16 Cisco Technology, Inc. Group membership block chain
US20170132626A1 (en) 2015-11-05 2017-05-11 Mastercard International Incorporated Method and system for processing of a blockchain transaction in a transaction processing network
US10841082B2 (en) 2015-11-24 2020-11-17 Adi BEN-ARI System and method for blockchain smart contract data privacy
US10142347B2 (en) 2016-02-10 2018-11-27 Bank Of America Corporation System for centralized control of secure access to process data network
US10140470B2 (en) 2016-02-22 2018-11-27 Bank Of America Corporation System for external validation of distributed resource status
AU2017240682B2 (en) 2016-04-01 2022-06-30 Consensys Software Inc. Systems and methods for providing data privacy in a private distributed ledger
US10445698B2 (en) 2016-06-30 2019-10-15 Clause, Inc. System and method for forming, storing, managing, and executing contracts
US11128528B2 (en) * 2016-12-30 2021-09-21 Intel Corporation Decentralized data storage and processing for IoT devices
US10158479B2 (en) 2017-02-06 2018-12-18 Northern Trust Corporation Systems and methods for generating, uploading and executing code blocks within distributed network nodes
US10176308B2 (en) * 2017-04-28 2019-01-08 Accenture Global Solutions Limited Entitlement management system
KR20200032086A (ko) 2017-06-01 2020-03-25 쉬비, 인크. 디/비/에이 액소니 안전한 액세스 제한 관리를 통해 분산된 블록 체인 데이터 구조 배포
US11055703B2 (en) 2017-06-19 2021-07-06 Hitachi, Ltd. Smart contract lifecycle management
US10944546B2 (en) * 2017-07-07 2021-03-09 Microsoft Technology Licensing, Llc Blockchain object interface
US11397962B2 (en) * 2017-10-09 2022-07-26 American Express Travel Related Services Company, Inc. Loyalty point distributions using a decentralized loyalty ID
US10567168B2 (en) * 2017-11-16 2020-02-18 International Business Machines Corporation Blockchain transaction privacy enhancement through broadcast encryption
US10715323B2 (en) 2017-12-29 2020-07-14 Ebay Inc. Traceable key block-chain ledger
US10574453B2 (en) * 2018-01-10 2020-02-25 Ranjit Notani System and computer program product for certified confidential data collaboration using blockchains
US11080691B2 (en) 2018-04-09 2021-08-03 Storecoin Inc. Fork-tolerant consensus protocol
US11010403B2 (en) * 2018-04-24 2021-05-18 Microsoft Technology Licensing, Llc Relational distributed ledger for smart contracts
US20200027089A1 (en) 2018-07-20 2020-01-23 Coral Protocol Blockchain transaction safety using smart contracts
US11048596B2 (en) * 2018-12-14 2021-06-29 Nokia Technologies Oy Hierarchical weighted consensus for permissioned blockchains

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108712423A (zh) * 2018-05-18 2018-10-26 北京三六五八网络科技有限公司 权限管理方法及装置
CN109508954A (zh) * 2018-10-18 2019-03-22 尚维斯 一种基于审批模板的区块链地址生成及交易方法

Also Published As

Publication number Publication date
EP3776412A2 (en) 2021-02-17
CN112513900A (zh) 2021-03-16
US20210049306A1 (en) 2021-02-18
CA3098935A1 (en) 2020-02-20
WO2020035094A2 (en) 2020-02-20
SG11202010851WA (en) 2020-11-27
EP3776412A4 (en) 2021-03-24
WO2020035094A3 (en) 2020-09-10
US11270030B2 (en) 2022-03-08

Similar Documents

Publication Publication Date Title
CN112513900B (zh) 用于共识管理的系统和方法
US11038771B2 (en) Systems, methods, and apparatuses for implementing a metadata driven rules engine on blockchain using distributed ledger technology (DLT)
CN110915166B (zh) 区块链
US11429617B2 (en) System and method for blockchain-based data synchronization
US11824864B2 (en) Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (DLT)
US11811769B2 (en) Systems, methods, and apparatuses for implementing a declarative, metadata driven, cryptographically verifiable multi-network (multi-tenant) shared ledger
US20200371995A1 (en) System or method to implement right to be forgotten on metadata driven blockchain using shared secrets and consensus on read
CN111164586B (zh) 用于更新区块链中的数据的系统和方法
JP2021534512A (ja) 分散型元帳におけるdagベースのトランザクション処理方法およびシステム
CN111213135B (zh) 用于基于区块链的通知的系统和方法
CN111133428B (zh) 在区块链中注册可订阅状态的系统和方法
CN111183444B (zh) 在区块链中注册可订阅子状态的系统和方法
US10877821B2 (en) System and method for blockchain-based notification
TW202139127A (zh) 用於與區塊鏈相關聯之服務平台之運算服務
KR20230132878A (ko) 실행-오더-검증 블록체인 모델들에서 트랜잭션 취소들 감소

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: 40048532

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant