CN109313654B - 使用布隆过滤器对被许可的区块链进行去同步恢复的方法和*** - Google Patents

使用布隆过滤器对被许可的区块链进行去同步恢复的方法和*** Download PDF

Info

Publication number
CN109313654B
CN109313654B CN201780032307.1A CN201780032307A CN109313654B CN 109313654 B CN109313654 B CN 109313654B CN 201780032307 A CN201780032307 A CN 201780032307A CN 109313654 B CN109313654 B CN 109313654B
Authority
CN
China
Prior art keywords
transaction
message
processing server
messages
module
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
CN201780032307.1A
Other languages
English (en)
Other versions
CN109313654A (zh
Inventor
S·C·戴维斯
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.)
Mastercard International Inc
Original Assignee
Mastercard International Inc
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 Mastercard International Inc filed Critical Mastercard International Inc
Priority to CN202210042531.1A priority Critical patent/CN114398519A/zh
Publication of CN109313654A publication Critical patent/CN109313654A/zh
Application granted granted Critical
Publication of CN109313654B publication Critical patent/CN109313654B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • 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
    • H04L9/3252Cryptographic 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 using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
    • 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/2255Hash tables
    • 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/24Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • 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/3242Cryptographic 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 keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Business, Economics & Management (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Peptides Or Proteins (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)

Abstract

一种使用布隆过滤器恢复丢失数据或额外数据的方法,包括:存储多个交易消息,其中,每个交易消息包括交易值;生成所述交易消息的布隆过滤器,其中,所述布隆过滤器使用多个散列循环生成并且所述布隆过滤器的尺寸是交易消息的数量的至少两倍;生成包括所述多个交易消息的数量、散列循环的数量、所述尺寸和生成的布隆过滤器的恢复消息;将恢复消息发送到共识节点;从所述共识节点接收响应消息,其中,所述响应消息包括至少一个附加交易消息;以及将所述至少一个附加交易消息***到所述多个交易消息中。

Description

使用布隆过滤器对被许可的区块链进行去同步恢复的方法和 ***
相关申请的交叉引用
本申请要求2016年5月24日提交的美国申请No.15/163,077的权益和优先权。通过引用的方式将上述申请的全部公开内容合并于此。
技术领域
本公开涉及被许可的区块链的共识,具体地,涉及使用审计来保证添加到被许可的区块链的新区块的有效共识以及使用布隆过滤器来恢复去同步的节点。
背景技术
区块链是可用于维护经过验证的且通常公众可访问的数据记录的分散的、分布式数据库。最近,区块链通过用于存储和验证加密货币交易的交易记录的机制而得到越来越多的使用。作为分散的、分布式数据库,区块链通常需要大量的计算工作才能将新区块添加到被验证的链中。在许多情况下,该验证是通过“工作量证明(proof of work)”来执行的,“工作量证明”由区块链网络中的节点执行并且涉及执行非常大量的计算。随着时间的推移,通过工作量证明而在区块链中提供共识所需的处理能力已经发展到可能过于昂贵和耗时的程度。
但是,对于分散的数据库,可能需要达成共识,以确保数据库的每个分布都是准确的并与其他分布匹配。遗憾的是,可能受益于使用区块链的许多计算设备因此而充当节点,但这些计算设备可能缺乏所需的处理能力来通过执行工作量证明或其他现有共识机制而能够参与。此外,现有的共识机制往往需要相当长的时间才能达成共识。例如,比特币(区块链最受欢迎的实现之一)的工作量证明通常需要十分钟以上。在许多情况下,这段时间对于区块链实现来说可能是不可接受的。
因此,需要一种用于区块链的共识机制的技术解决方案,与现有区块链实现和共识机制相比,其可以快速、有效地并且以最小量的处理功率执行。更快,更有效的共识机制可以使区块链更容易地实现并且在具有较低***规格的计算设备之间分布,同时还确保对添加到区块链中的新交易和其他记录的共识更快。
发明内容
本公开提供了对使用布隆过滤器来恢复丢失数据或额外数据的***和方法的描述。
一种使用布隆过滤器恢复丢失数据或额外数据的方法,包括:在处理服务器的交易数据库中存储多个交易消息,其中,每个交易消息包括与区块链交易相关的至少包括交易值的结构化数据集;由所述处理服务器的生成模块生成所述多个交易消息的布隆过滤器,其中,所述布隆过滤器使用预定数量的散列循环(hash round)生成并且所述布隆过滤器的尺寸是存储在所述交易数据库中的所述多个交易消息的计数的至少两倍;由所述处理服务器的生成模块生成恢复消息,其中,所述恢复消息至少包括所述多个交易消息的计数、散列循环的预定数量、所述尺寸和生成的布隆过滤器;由所述处理服务器的发送设备以电子方式将生成的恢复消息发送到至少一个共识节点;由所述处理服务器的接收设备从所述至少一个共识节点中的一个或多个接收响应消息,其中,所述响应消息包括至少一个附加交易消息;以及由所述处理服务器的查询模块在所述交易数据库上执行查询以***所述至少一个附加交易消息。
使用布隆过滤器恢复丢失数据或额外数据的另一种方法,包括:在处理服务器的交易数据库中存储多个交易消息,其中,每个交易消息包括与区块链交易相关的至少包括交易值的结构化数据集;由所述处理服务器的生成模块生成所述多个交易消息的布隆过滤器,其中,所述布隆过滤器使用预定数量的散列循环生成并且所述布隆过滤器的尺寸是存储在所述交易数据库中的所述多个交易消息的计数的至少两倍;由所述处理服务器的生成模块生成恢复消息,其中,所述恢复消息至少包括所述多个交易消息的计数、散列循环的预定数量、所述尺寸和生成的布隆过滤器;由所述处理服务器的发送设备以电子方式将生成的恢复消息发送到至少一个共识节点;由所述处理服务器的接收设备从所述至少一个共识节点中的一个或多个接收响应消息,其中,所述响应消息至少包括第二布隆过滤器、散列循环的指示的数量、指示的过滤器尺寸和预期的交易消息的数量;由所述处理服务器的数据识别模块基于所包括的交易值、散列循环的指示的数量、指示的过滤器尺寸、预期的交易消息的数量以及第二布隆过滤器,来识别未包括在所述第二布隆过滤器中的所述多个交易消息中的至少一个交易消息;以及由所述处理服务器的查询模块在所述交易数据库上执行查询以删除所述至少一个识别的交易消息。
一种使用布隆过滤器恢复丢失数据或额外数据的***,包括:处理服务器的交易数据库,其被配置为存储多个交易消息,其中,每个交易消息包括与区块链交易相关的至少包括交易值的结构化数据集;所述处理服务器的生成模块,其被配置为生成所述多个交易消息的布隆过滤器,其中,所述布隆过滤器使用预定数量的散列循环生成并且所述布隆过滤器的尺寸是存储在所述交易数据库中的所述多个交易消息的计数的至少两倍;以及生成恢复消息,其中,所述恢复消息至少包括所述多个交易消息的计数、散列循环的预定数量、所述尺寸和生成的布隆过滤器;所述处理服务器的发送设备,其被配置为以电子方式将生成的恢复消息发送到至少一个共识节点;所述处理服务器的接收设备,其被配置为从所述至少一个共识节点中的一个或多个接收响应消息,其中,所述响应消息包括至少一个附加交易消息;以及所述处理服务器的查询模块,其被配置为在所述交易数据库上执行查询以***所述至少一个附加交易消息。
一种使用布隆过滤器恢复丢失数据或额外数据的另一种***,包括:处理服务器的交易数据库,其被配置为存储多个交易消息,其中,每个交易消息包括与区块链交易相关的至少包括交易值的结构化数据集;所述处理服务器的生成模块,其被配置为生成所述多个交易消息的布隆过滤器,其中,所述布隆过滤器使用预定数量的散列循环生成并且所述布隆过滤器的尺寸是存储在所述交易数据库中的所述多个交易消息的计数的至少两倍;以及生成恢复消息,其中,所述恢复消息至少包括所述多个交易消息的计数、散列循环的预定数量、所述尺寸和生成的布隆过滤器;所述处理服务器的发送设备,其被配置为以电子方式将生成的恢复消息发送到至少一个共识节点;所述处理服务器的接收设备,其被配置为从所述至少一个共识节点中的一个或多个接收响应消息,其中,所述响应消息至少包括第二布隆过滤器、散列循环的指示的数量、指示的过滤器尺寸和预期的交易消息的数量;所述处理服务器的数据识别模块,其被配置为基于所包括的交易值、散列循环的指示的数量、指示的过滤器尺寸、预期的交易消息的数量以及第二布隆过滤器,来识别未包括在所述第二布隆过滤器中的所述多个交易消息中的至少一个交易消息;以及所述处理服务器的查询模块,其被配置为在所述交易数据库上执行查询以删除所述至少一个识别的交易消息。
附图说明
当结合附图阅读时,从以下示例性实施例的详细描述中可以最好地理解本公开的范围。附图中包括以下图:
图1是示出根据示例性实施例的用于被许可的区块链网络中的去同步节点的有效共识和恢复的高级***架构的框图;
图2是示出根据示例性实施例的用于被许可的区块链网络中的去同步节点的有效共识和恢复的图1中的审计节点的框图;
图3是示出根据示例性实施例的用于识别被许可的区块链网络的共识节点中的共识提议的过程的流程图;
图4A和4B是示出根据示例性实施例的通过使用图1的***中的布隆过滤器来恢复被许可的区块链网络中的去同步的共识节点的过程的流程图;
图5是示出根据示例性实施例的对被许可的区块链网络中的去同步的共识节点进行重新同步的过程的流程图;
图6是示出根据示例性实施例的为了新区块的有效共识而在被许可的区块链网络中的审计节点中执行共识审计的过程的流程图;
图7是示出根据示例性实施例的作为有效共识机制的结果而验证新区块并将新区块添加到被许可的区块链的过程的流程图;
图8是示出根据示例性实施例的使用有效共识机制将块添加到被许可的区块链的示例性方法的流程图;
图9和10是示出了根据示例性实施例的使用布隆过滤器恢复丢失数据或额外数据的示例性方法的流程图;
图11是示出根据示例性实施例的计算机***架构的框图。
根据下文提供的详细描述,本公开的其他应用领域将变得显而易见。应当理解,示例性实施例的详细描述仅用于说明目的,因此,并不旨在必然限制本公开的范围。
具体实施方式
术语词汇
区块链-基于区块链的货币的所有交易的公共分类账。一个或多个计算设备可以包括区块链网络,其被配置为将交易处理和记录为区块链中的区块的一部分。一旦完成了区块,就将该区块添加到区块链中并从而更新交易记录。在许多情况下,区块链可以是按照时间顺序的交易分类账,或者可以以适于区块链网络使用的任何其他顺序呈现。在一些配置中,区块链中记录的交易可以包括目的地地址和货币量,以使得区块链记录有多少货币可归属于特定地址。在某些情况下交易是金融的,而在有些情况下交易不是金融的,或者可以包括附加或不同的信息,例如,源地址、时间戳等。在一些实施例中,区块链还可以或者作为另一种替代方案包括作为交易的形式的几乎任何类型的数据,该数据被放置在或者需要放置在无需许可的分布式数据库中,该数据库维护防止被篡改和修改的不断增长的数据记录列表,即使是数据的操作员也防止其篡改和修改数据记录列表,并且可以由区块链网络通过工作量证明和/或与其相关联的任何其他合适的验证技术来对区块链进行确认和验证。在某些情况下,与给定交易有关的数据可以进一步包括附加到交易数据的不直接作为交易的一部分的附加数据。在某些情况下,在区块链中加入此类数据可以构成交易。在这种情况下,区块链可以不直接与特定的数字货币、虚拟货币、法定货币或其他类型的货币相关联。在某些情况下,可以在无需许可(例如,不受节制或不受限制)的情况下参与区块链(例如,作为提交和/或确认交易的节点)。在其他情况下,区块链可以是被许可的区块链,其中仅获得授权的计算设备可以作为节点操作,其中参与的级别可以基于与其相关联的许可。
在被许可的区块链网络中实现有效共识和恢复的***
图1示出了使用有效共识机制的***100,用于添加到被许可的区块链网络的新区块的共识和区块链网络中包括的去同步节点的恢复。
***100可以包括审计节点102。审计节点102可以是被许可的区块链网络的一部分。被许可的区块链网络可以是与被许可的区块链相关联的多个节点的网络。被许可的区块链可以是这样的区块链:其中,将被添加到区块链中的新区块的贡献和共识以及其中包括的交易和其他数据的参与可以被限制到授权(例如,“被许可的”)节点。在***100中,被许可的区块链网络可以包括多个审计节点104和共识节点106。如下面更详细地讨论的,共识节点106可以被配置为接收并提供交易以将其包括在被许可的区块链中,并且审计节点104可以被配置为执行共识节点的功能以及被配置为执行共识审计,以审计将被添加到被许可的区块链的新区块。在一些实施例中,被许可的区块链可以包括其他类型的节点,例如,提供交易但不参与共识的成员或应用节点,以及取决于被许可的区块链的功能和实现而可能适合的其他节点。
审计节点102可以是被配置为执行共识节点106和审计节点104的功能的处理服务器或其他专门配置的计算设备和/或***。可以通过合适的通信网络和方法将审计节点102连接到多个共识节点106(如图1所示的共识节点106a,106b,106c和106d)。被许可的区块链网络中的每个共识节点106可以以任何合适的网络拓扑连接到多个其他共识节点106。例如,可以使用网状拓扑来连接共识节点106。在一些情况下,一些共识节点106可以仅连接到其他共识节点,并且可以不连接到审计节点104。区块链网络中的每个其他审计节点104除了连接到每个其他审计节点104之外,还可以连接到多个共识节点106。在一些情况下,共识节点106可以仅连接到单个审计节点,例如,审计节点102或其他审计节点104之一。
审计节点102在执行审计节点104的功能时,可以使用合适的通信网络和方法连接到多个审计节点104。在示例性实施例中,可以将被许可的区块链网络中的审计节点104的数量限制为最大数量,例如以便使用本文所讨论的方法更快、更有效地达成共识。例如,即使在共识节点的数量可以是数千、数万、数十万甚至更大的情况下,被许可的区块链网络也可以将审计节点104的数量限制为7。在一些情况下,如下面更详细地讨论的,审计节点104的数量可以是奇数,例如,以便在共识审计期间确定其中的大多数。在示例性实施例中,每个审计节点104可以互连,如图1所示,每个审计节点104连接到每个其他审计节点。在一些情况下,审计节点104可以在地理上分布在被许可的区块链网络中,以便减少重要网络断开或隔开的可能性。
在***100中,审计节点102和被许可的区块链网络中被配置为执行共识节点106的功能的其他节点(例如,共识节点106和审计节点104中的每一个),可以从应用节点或被许可的区块链网络中的其他节点接收交易消息,所述其他节点被配置为提供数据以使交易被添加到许可的区块链。可以通过合适的通信网络以电子方式将交易消息发送到审计节点102,并且交易消息可以至少包括交易值。交易值可以是交易记录或将被添加到被许可区块链的其他值。例如,交易值可以是交易记录,包括目的地和源地址以及与其相关联的数字签名以及从目的地地址转移到源地址的加密货币量的交易金额。在另一个实例中,交易值可以是表示交易或其他数据的字母数字或其他合适类型的值,例如在不透明的被许可区块链中的数据。关于不透明区块链的附加数据可以在Steven C.Davis于2015年11月24日提交的名称为“Method and System for Gross Settlement by the Use of an OpaqueBlockchain”的美国专利申请No.14/950,117中找到,通过引用的方式将该申请整体并入到本文中。
在一些实施例中,交易消息还可以包括时隙标识符。时隙标识符可以是表示相应的交易值所属的时隙的标识值。时隙可以是分界符或其他分类组织,用于组织将被添加到被许可的区块链的交易。在示例性实施例中,时隙可以与相关交易所对应的时间或时间范围相关联。例如,时隙可以与时间中的秒相关联,其中与时隙的对应时隙标识符相关联的每个交易可以是在时间中的那一秒进行的交易。在这样的示例中,时隙标识符可以是时间中那一秒的表示,例如,自UNIX开始以来的以秒为单位的时间戳,或指示该秒的其他合适的日期和时间表示。例如,在2016年第一秒进行的所有交易的时隙标识符可以是1451606400。
当审计节点102接收到交易消息时,审计节点102可以确定该交易消息中包括的交易值是否已经存储在要被添加到被许可的区块链中的未被确认的交易值的本地数据库中。在交易消息包括时隙标识符的情况下,可以基于在为所包括的时隙标识符进行的交易值的存储中是否包括该交易值来进行上述确定。如果尚未接收到交易值,则审计节点102可以将该交易值与该时隙标识符相关联的其他交易值一起存储。然后,审计节点102可以将该交易消息重新传播到与其连接的每个共识节点106。连接的共识节点106可以接收交易消息并且还根据需要执行确定、存储和重新广播。如果审计节点102已经接收到交易值,则审计节点102可以忽略交易消息并且不重新广播交易消息。审计节点102可以对从应用节点接收到的每个交易消息以及从与其连接的共识节点106重新广播的交易消息重复该过程。
由此,审计节点102和每个共识节点106可以在整个被许可的区块链网络中快速传播所有交易消息。由于重新广播仅发生在先前未接收到交易消息的情况下(例如,由于存储的未经证实的交易列表中没有交易值),所以被许可的区块链网络中的流量可以保持为最小值,同时接收到的冗余交易消息的数量最少。
在一些实施例中,审计节点102可以被配置为:为接收的并添加到未确认交易的列表中的每个交易值生成参考值。参考值可以是作为单一值的交易值的散列值或其他表示。在交易值可能已经是参考值的情况下(例如在不透明区块链中),交易值本身可以用作参考值。在其他情况下,例如当交易值是包括多个数据值的交易记录时,审计节点102可以通过一个或多个预定的散列算法对交易记录进行散列以获得相应的交易参考值。在这样的实施例中,未确认交易的列表可以是交易参考值的列表。在这样的实例中,审计节点102可以在确定是否已经接收到交易值之前生成每个接收到的交易值的参考值。
审计节点102和执行共识节点106的功能的其他节点可以被配置为保持交易消息的到达的时间戳。在这种情况下,审计节点102可以在每次接收到新的交易消息时更新时间戳,其中时间戳从而指示最新交易消息的到达时间。在一些实例中,例如,当每个时隙标识符表示一秒时,审计节点102使用的用于标记交易消息的最新到达的时间戳可以使用毫秒、纳秒或小于时隙标识符的其他表示。
审计节点102和其他共识节点106可以继续接收交易消息并随后执行共识提议。在一些实施例中,审计节点102可以在自最后的交易消息(例如,由其时间戳指示)到达之后的预定时间段之后开始共识提议过程,本文将该预定时间段称为“共识延迟时间”。在一些情况下,审计节点102可以将共识延迟时间视为标记最新交易消息到达的时间戳与打开审计节点102以接收该时隙标识符所对应的交易消息的时间之间的时间,再加上额外的缓冲时间间隔。在一些情况下,例如,基于被许可的区块链网络中的共识节点106的位置和其他考虑因素,对于每个共识节点106来说,共识延迟时间可以是不同的。在一些实施例中,可以基于被许可的区块链网络的性能来重新计算共识延迟时间。例如,可以以周期性间隔(例如,每小时、每天等)重新计算共识延迟时间。
共识提议可以是审计节点102和其他共识节点106针对将被添加到被许可的区块链的未确认交易提出共识的过程。在使用时隙标识符的情况下,共识提议可以涉及特定时隙标识符。作为共识提议的一部分,审计节点102可以生成未确认交易的默克尔(Merkle)根。Merkle根可以是为已经存储在审计节点102中(例如,如果适用的话,与时隙标识符相关联)的未确认交易由交易消息生成的默克尔(Merkle)树中的根节点的值。在生成交易值的交易参考值的情况下,参考值可以用于Merkle树的生成以及随后的对Merkle根的标识。审计节点102可以使用一个或多个预定散列算法,通过将其应用于交易参考值和后续的散列值来生成Merkle根。
在一些实施例中,审计节点102和每个共识节点106可以被配置为在生成Merkle根之前对各交易参考值进行排序,以使得每个共识节点106生成Merkle根以使交易参考值的顺序相同。在这样的实施例中,可以基于参考值的类型以自然顺序对交易参考值进行排序。例如,如果参考值是整数或字母数字值,则它们可以以自然的升序或降序排序。如果相应节点已经接收到该时隙标识符对应的所有交易值,则交易参考值的排序以及预定散列算法的使用可以确保审计节点102和每个共识节点106生成相同的Merkle根。
为了确定是否已达到这样的共识(例如,审计节点102已生成与连接到其的共识节点106相同的Merkle根,并因此接收到相同的交易值),审计节点102可以生成提议消息。提议消息可以至少包括生成的Merkle根,并且如果适用的话还可以包括相关时隙的时隙标识符。审计节点102可以将提议消息电子地发送到每个连接的共识节点106。每个连接的共识节点106还可以生成提议消息,可以将该提议消息从共识节点106发送到与其连接的每个其他节点。由此,审计节点102可以从每个连接的共识节点106接收提议消息。审计节点102可以存储从相邻(例如,连接的)共识节点106接收的每个Merkle根的列表。
审计节点102可以被配置为通过比较各个Merkle根来确定审计节点102及其相邻共识节点106之间是否存在共识。如果从相邻共识节点106接收的Merkle根与审计节点102生成的Merkle根相匹配,则审计节点102可以认为自己与被许可的区块链网络的其余部分同步。如果审计节点102生成的Merkle根与从相邻共识节点106接收的Merkle根不同,则审计节点102可以是去同步(desychronized)的,这可以表示审计节点102未能接收到一个或多个交易值或可能在未确认交易的列表中包括了无关的交易参考值。在审计节点102是去同步的情况下,审计节点102可以执行下面将更详细地讨论的恢复过程。如果审计节点102生成的Merkle根与从相邻共识节点106接收到的大部分Merkle根相匹配,但是接收到的一个或多个Merkle根不同,则它可以指示共识节点106即提供不同Merkle根的节点是去同步的,这可以促使它们执行恢复过程。
一旦在共识节点106之间交换了共识提议,就可以执行共识审计。共识审计可以由审计节点102和被许可的区块链网络中的每个审计节点104执行。在示例性实施例中,可以使用适于在***100中使用的Paxos协议来执行共识审计,以便由审计节点104对未确认交易达成共识以将其添加到被许可的区块链。如下所述,可以使用由审计节点102和每个审计节点104生成的数字签名来执行共识审计,这可以用作Paxos协议中的提议编号。
为了执行共识审计,审计节点102可以为将被添加到包括未确认交易的被许可的区块链中的新区块生成临时块头。临时块头可以至少包括为未确认交易生成的Merkle根和最新添加到被许可的区块链的先前区块的块头的散列值。可以由审计节点102使用一个或多个预定散列算法来生成先前区块的块头的散列值,该预定散列算法可以与每个审计节点104在生成散列值时使用的算法相同。在一些实施例中,临时块头还可以包括附加数据(例如,时隙标识符或下面更详细讨论的其他数据),该附加数据可以包括在添加到被许可的区块链的块头中。
在生成临时块头之后,审计节点102可以使用与在生成先前区块的块头的散列值所使用的散列算法相同的一个或多个预定散列算法来对临时块头进行散列,以生成临时块头的散列值,本文将此称作“块散列”。然后,可以将块散列包括在由审计节点102生成的准备消息中。准备消息可以包括块散列、时隙标识符(如果适用的话),并且还可以包括审计节点102生成的提议编号。
提议编号可以是由审计节点102生成的数字签名。在一些情况下,审计节点102可以使用防冲突算法来生成数字签名,以使得由审计节点102和每个审计节点104生成的提议编号具有唯一性的可能性更高。例如,审计节点102可以使用椭圆曲线数字签名算法(ECDSA)来生成数字签名。在这样的示例中,审计节点102可以使用与其相关联的公钥来生成数字签名。在这样的实施例中,公钥也可以包括在准备消息中。在一些这样的实施例中,在生成块散列之前,公钥也可以包括在临时块头中。在一些实施例中,审计节点102还可以生成要包括在准备消息中的随机或伪随机数以用作加密盐(cryptographic salt),也可以在生成块散列之前将其包括在临时块头中。
一旦已经生成了准备消息,审计节点102就可以将准备消息电子地发送到与其连接的每个审计节点104。审计节点102可以类似地从每个审计节点104接收由此生成的准备消息。接收到的每个准备消息都包括不同的数字签名,该数字签名作为提议编号,并通过相应的相关公钥生成。在接收到准备消息时,审计节点102可以识别最高的(例如,关于数字签名的自然排序)提议编号。对于相关领域的技术人员来说显而易见的是,如本文所讨论的,使用最高提议编号进行共识仅仅是示例性的,而是可以使用任何其他合适的标准(例如,最低提议编号、最接近预定值的建议编号等)来确定提议编号的共识。
一旦审计节点102已经识别出最高提议编号,审计节点102就可以生成准备响应消息并将其发送到包括最高提议编号的准备消息的源发站。在审计节点102生成最高提议编号的情况下,审计节点102可以不生成准备响应消息。准备响应消息可以包括被识别为最高提议编号的数字签名,并且如果适用的话,还包括与正在执行共识的时隙相关联的时隙标识符。在审计节点102已经生成(例如,并且分发)比相邻审计节点104更高的提议编号的情况下,审计节点102可以从相邻审计节点104接收指示由审计节点102生成的数字签名更高的准备响应消息。
当审计节点102或其他审计节点104从大多数审计节点104接收到准备响应消息时,该节点可以进入共识接受阶段。在接受阶段,审计节点102(例如,或已经接收到大多数准备响应消息的其他节点)可以生成接受消息。接受消息可以包括与由该节点生成的准备消息中包括的数据相同的数据,因此其将包括被识别为最高提议编号的数字签名。然后可以将接受消息电子地发送到已经向该节点提供准备响应消息的每个审计节点104。
在审计节点102(例如,或其他审计节点104)进入接受阶段并随后从相邻审计节点104接收包括更高提议编号的准备消息的情况下,如上所述,审计节点102生成准备响应消息,但是准备响应消息还可以包括先前在由此生成的接受消息中识别出的块散列、公钥和签名(例如,如果适用的话,还包括随机数)。因此,具有较高提议编号的审计节点104将接收准备响应消息,该准备响应消息显示审计节点102和其自己的提议编号已经进入接受阶段。由于具有较高的提议编号,所以审计节点104将从大多数审计节点104接收准备响应消息,并且其本身进入接受阶段。审计节点104将生成将被发送到其相邻的审计节点104(包括审计节点102)的接受消息。从审计节点104接收接受消息的审计节点102将确认接受更高的提议编号并相应地将其记录为收到的最高提议编号。
可以继续该过程直到每个审计节点104已经接收到具有由任何审计节点104生成的最高提议编号的接受消息。在被许可的区块链网络中的审计节点104的数量是有限的情况下(例如,限制到7个或类似数量),由于审计节点104可以仅与其他审计节点104通信以确认更高的提议编号,所以能够以非常快的速度(大约数毫秒级或纳秒级)和有效的方式(具有最小数量的数据交换)解决共识审计,从而使得以最少的传输次数将最高提议编号传播到每个审计节点。
一旦审计节点102已经接收到最高提议编号(由其自身生成或者从另一个审计节点104的接受消息中接收到的),被许可的区块链网络就可以开始共识确认。对于共识确认,审计节点102(例如,以及每个其他审计节点104)可以生成确认消息。确认消息可以包括在共识审计中生成和使用的块散列,以及被接受为最高提议编号的数字签名。如果适用的话,确认消息还可以包括在生成数字签名时使用的公钥,如果适用的话,包括在接受消息中包括的随机数,以及如果适用的话,包括确认消息所适用的时隙标识符。然后可以将共识消息电子地发送到每个相邻共识节点104。
在接收到确认消息时,共识节点104为新区块的生成块头,该新区块将被添加到包括每个未确认交易的被许可的区块链。块头可以包括Merkle根、时隙标识符和任何其他必要数据。然后,共识节点104可以对块头进行散列以验证所得到的散列值(例如,“块散列”)与包括在确认消息中的块散列匹配,以验证确认消息是可信的。数字签名可以包括在块头中,该块头可以包括在由共识节点106生成的新区块中,该新区块包括完整的块头和每个未确认交易的交易值。然后,共识节点106可以将该新区块写入到被许可的区块链。共识节点106还可以从它的未经证实的交易列表中移除对应的交易参考值,从其存储区中移除映射到相关联的时隙的Merkle根。共识节点106可以将确认消息重新广播到其自己的相邻共识节点106中的每一个,以确保确认消息传遍整个被许可的区块链网络。
在可以使用时隙标识符的实施例中,审计节点102和被许可的区块链网络中的其他节点可以被配置为同时执行与共识过程中的多个阶段相关的动作。在这样的实施例中,时隙标识符的使用可以确保发送到节点和从节点发送的消息与正确的相应交易相关联。例如,由于处理时间和共识延迟时间,审计节点102在任何给定时间可以拥有4个不同时隙的交易值。因此,审计节点102可以具有针对每个时隙的不同的未确认交易的列表。在这样的示例中,可以针对第一时隙执行共识确认,而针对第二时隙执行共识审计,同时针对第三时隙交换共识提议,并且针对第四时隙接收交易消息。
在被许可的区块链网络中的审计节点102或其他节点(例如,审计节点104或共识节点106)可能与被许可的区块链网络的其余部分不同步(“去同步”)的情况下,审计节点102可以开始恢复过程。如果由审计节点102生成的Merkle根与在共识提议过程期间接收的大多数相邻共识节点106提供的Merkle根不匹配,则审计节点102识别出去同步。在这种情况下,审计节点102可能在其未确认交易的列表中缺少一个或多个未确认交易,或者可能包括额外的未确认交易。例如,如果审计节点102接收的交易消息包括不正确的时隙标识符,或者如果交易参考值存储在未确认的未确认交易的错误列表中,则可能发生这种情况。当去同步时,审计节点102可以识别出同步的相邻共识节点106(例如,由它的具有与大多数相匹配的Merkle根的相应提议消息所指示的),并且可以将恢复消息电子地发送到该共识节点106。
恢复消息可以包括和时隙相关联的时隙标识符,审计节点102对于该时隙不同步。恢复消息还可以包括布隆过滤器。布隆过滤器可以是某个时隙对应的未确认交易的列表中包括的交易参考值的布隆过滤器,其中,以特定数量的环(这里称为“散列循环(hashrounds)”)来散列每个交易参考值,并且其中布隆过滤器的位图大小至少是生成的过滤器所针对的未确认交易列表中的未确认交易数量的两倍。在一些实施例中,一个或多个散列循环可以使用不同的散列算法,其中,被许可的区块链网络中的每个节点都知道所述散列算法的使用和排序,或者其可以在恢复消息中传送。在其他实施例中,审计节点102可以对每个散列循环都使用相同的散列算法。审计节点102可以将布隆过滤器包括在恢复消息中,并且还可以包括散列循环的数量、布隆过滤器的尺寸、以及在正被恢复的时隙对应的未确认交易列表中的未确认交易的数量的计数。
然后可以将恢复消息电子地发送到相邻的共识节点106。共识节点106可以接收恢复消息并且可以确定审计节点102是否缺少交易参考值或者在审计节点的未确认交易列表中是否存在无关的交易参考值。可以基于恢复消息中包括的计数和共识节点自己的时隙列表中的未确认交易的计数进行上述确定。
在审计节点102缺少一个或多个交易(例如,共识节点的计数更高)的情况下,共识节点106就可以使列表中的它的每个未确认交易通过布隆过滤器以确定在审计节点的列表中缺少哪些交易参考值。使用大小为未确认交易数量的两倍的位图可以在估计在布隆过滤器中包括交易参考值时提供非常高的准确性。共识节点106可以为在审计节点列表中被识别为丢失的每个交易参考值识别出交易值,并且可以向审计节点102返回包括所述交易值的恢复响应消息。审计节点102接收恢复响应消息、生成交易值的交易参考值、更新它的未确认交易的列表、并重新生成时隙的Merkle根。审计节点102可以基于Merkle根的生成结果返回同步,或者可以继续去同步,并且可以重复恢复过程。例如,共识节点106使用布隆过滤器时的误报可能导致审计节点102仍然缺少交易参考值,这可以使用第二布隆过滤器识别。
在审计节点102可以具有一个或多个无关交易参考值(例如,节点的计数高于共识节点106的计数)的情况下,共识节点106可以为包括在其自己的未确认交易的列表中的每个交易参考值生成其自己的布隆过滤器。共识节点106可以用恢复响应消息来回复恢复消息,该恢复响应消息包括时隙标识符、其自己的布隆过滤器以及与新的布隆过滤器相关联的参数(例如,计数、过滤器尺寸和散列循环)。共识节点106可以将恢复响应消息电子地发送到审计节点102。然后,审计节点102可以将其交易参考值输入到由共识节点106提供的布隆过滤器中,以识别其列表中的哪些交易参考值不在布隆过滤器中,并可以从其列表中删除这些交易。审计节点102可以为时隙生成新的Merkle根,可以确定审计节点102是否同步,并且如果需要可以重复恢复过程。
布隆过滤器的使用可以使得审计节点102或被许可的区块链网络中的另一节点能够在无需发送被许可的区块链的全部区块或大量的交易值的情况下执行恢复,从而减少网络流量并提高网络效率。审计节点102和其他节点仍然能够交换未确认的时隙对应的所有交易值,或者可以被配置为在布隆过滤器恢复不成功的情况下交换已完成的与时隙对应的区块或块头,以便使被许可的区块链网络中的所有节点保持同步,但可能只需要在这种情况下这样做,从而减少网络流量。另外,在被许可的区块链网络中使用时隙来组织交易和分离交易可以提供合适的组织和区分手段,这使得使用布隆过滤器提供更快恢复,同时还在很大程度上保持同步。例如,如果在对较晚的时隙的共识确认之前完成对较早的时隙的恢复,则去同步的共识节点106仍然能够在恢复较早的时隙的同时对较晚的时隙执行共识提议。
本文讨论的方法和***在被许可的区块链网络中提供了一种更有效的交易共识机制。对各个共识节点106使用共识提议,在有限数量的审计节点104中进行共识审计,以及在所有共识节点106中进行共识确认,当与使用布隆过滤器恢复去同步节点相结合时,使得被允许的区块链网络能够使用最少数量的数据消息交换以大约数秒或更快的速度执行共识,这不仅可以提高达成共识的速度,还可以提高达成共识的效率,这样减少了网络流量和拥塞,从而提高了网络性能并降低可运营费用。由此,比现有的共识机制相比,本文讨论的共识和恢复机制更快、更有效地达成共识。
审计节点
图2示出了***100中的审计节点102的实施例。对于相关领域的技术人员来说显而易见的是,图2中所示的审计节点102的实施例仅作为举例说明而提供,并且不是穷举所有可能的用于执行如本文所讨论的功能的审计节点102的配置。例如,图11所示的以及下面更详细讨论的计算机***1100可以是审计节点102的合适配置。如上所述,审计节点102可以被配置为执行如共识节点106一样的每个功能。因此,共识节点106可以包括审计节点102的用于执行与其相关联的功能的组件。
审计节点102可以包括接收设备202。接收设备202可以被配置为经由一个或多个网络协议在一个或多个网络上接收数据。接收设备202可以被配置为经由合适的通信网络和相应的网络协议从审计节点104和其他设备和***接收数据。在一些实施例中,接收设备202可以由多个设备组成,例如,通过不同网络接收数据的不同的接收设备(例如,通过局域网接收数据的第一接收设备和通过被许可的区块链网络接收数据的第二接收设备)。接收设备202可以接收电子传输的数据信号,其中,数据可以叠加或以其他方式编码到数据信号上,并且通过接收设备202接收数据信号并对数据信号进行解码、解析、读取或以其他方式获得所述数据。在一些情况下,接收设备202可以包括对接收到的数据信号进行解析以获得叠加在其上的数据的解析模块。例如,接收设备202可以包括解析器程序,其被配置为接收数据信号并且将接收到的数据信号变换成处理设备执行功能的可用输入以执行本文描述的方法和***。
接收设备202可以被配置为接收被许可的区块链网络中的其他节点(包括应用或成员节点、共识节点106、审计节点104等)电子发送的数据信号。由接收设备202接收的数据信号可以与交易消息、提议消息、提议消息、准备消息、准备响应消息、接受消息、确认消息、恢复消息和恢复响应消息叠加或以其他方式编码有这些消息。接收设备202还可以被配置为接收与附加数据叠加或以其他方式编码有附加数据的数据信号,以用于执行与作为被许可的区块链网络中的节点的操作相关联的功能,例如,许可更新、散列算法、公钥、布隆过滤器规范等。
审计节点102还可以包括通信模块204。通信模块204可以被配置为在模块、引擎、数据库、存储器和审计节点102的其他组件之间传输数据,以用于执行本文所讨论的功能。通信模块204可以由一种或多种通信类型组成,并且利用各种通信方法在计算设备内的通信。例如,通信模块204可以包括总线、触针连接器、导线等。在一些实施例中,通信模块204还可以被配置为在审计节点102的内部组件与审计节点102的外部组件(例如,外部连接的数据库、显示设备、输入设备等)之间进行通信。审计节点102还可以包括处理设备。处理设备可以被配置为执行本文所讨论的审计节点102的功能,这对于相关领域的技术人员来说是显而易见的。在一些实施例中,处理设备可以包括专门配置为执行处理设备的一个或多个功能的多个引擎和/或模块(例如,查询模块210、散列模块212、生成模块214、数据识别模块218、验证模块220等),和/或处理设备可以由上述引擎和/或模块组成。如本文所使用的,术语“模块”可以是被特别编程为接收输入、使用该输入执行一个或多个处理、并提供输出的软件或硬件。基于本公开的内容,由各种模块执行的输入、输出和处理对于本领域技术人员将是显而易见的。
审计节点102可以包括交易数据库206。交易数据库206可以被配置为使用合适的数据存储格式和模式来存储多个交易消息208。交易数据库206可以是关系数据库,其利用结构化查询语言来存储、识别、修改、更新、访问存储在其中的结构化数据集等。每个交易消息208可以是结构化数据集,其被配置为存储与将被添加到被许可的区块链的交易相关的数据。例如,每个交易消息208可以包括与相关交易对应的时隙相关联的时隙标识符、以及交易值。交易值可以是交易参考值、或者在审计节点102生成交易参考值中使用的交易记录或其他数据。
交易数据库206或审计节点102中的其他数据存储器(例如,下面更详细地讨论的存储器222)还可以被配置为存储未确认交易的列表。未确认交易的列表可以是与时隙相关联的列表(例如,通过相应的时隙标识符相关联),其包括将被添加到被许可的区块链的交易的交易参考值。在一些情况下,共识地图可以与相应的未确认交易的列表一起存储在交易数据库206中,其可以包括由审计节点102生成并且从共识节点106接收的针对相应的未确认交易列表的Merkle根。
审计节点102可以包括查询模块210。查询模块210可以被配置为对数据库执行查询以识别信息。查询模块210可以接收一个或多个数据值或查询字符串,并且可以基于此在指示的数据库(例如,交易数据库206)执行字符串查询以识别存储在其中的信息。然后,查询模块210可以根据需要将识别出的信息输出到审计节点102的适当的引擎或模块。查询模块210可以例如在交易数据库206上执行查询以在接收设备202接收到交易消息208时***交易消息208。例如,查询模块210还可以被配置为执行查询以更新未确认交易的列表、识别交易值以将其包含在新区块中、以及清除确认的时隙对应的共识地图和未确认交易。
审计节点102还可以包括散列模块212。散列模块212可以被配置为通过向数据应用一个或多个散列算法来生成数据的散列值。散列模块212可以接收作为输入的数据,可以通过对数据应用散列算法来生成散列值,并且可以将生成的散列值输出到审计节点102的另一模块或引擎。在一些情况下,散列模块212也可以接收作为输入的散列算法。在其他情况下,散列模块212可以被配置为识别(例如,通过查询模块210对存储器222执行查询)散列算法以将其用于生成散列值。散列模块212可以被配置为对被许可的区块链中的块头生成散列值,生成临时块头的块散列,生成交易值的交易参考值,为未确认交易的列表生成Merkle根,生成用作提议编号的数字签名、用于布隆过滤器的散列交易参考值,以及生成适合于执行如本文所讨论的审计节点102的功能的任何其他散列值。
审计节点102还可以包括生成模块214。生成模块214可以被配置为生成数据和数据消息,以用于执行如本文所讨论的审计节点102的功能。生成模块214可以接收请求、可以基于该请求生成数据消息或数据、并且可以将生成的数据或消息输出到审计节点102的另一模块或引擎。例如,可以配置生成模块214生成提议消息、准备消息、准备响应消息、接受消息、确认消息、恢复消息和恢复响应消息。生成模块214还可以被配置为生成临时块头、新块头、新区块,并且可以被配置为将新区块写入到被许可的区块链(例如,直接写入或通过生成查询并向查询模块210提交查询)。生成模块214还可以被配置为结合散列模块212生成布隆过滤器,以在去同步时用于恢复审计节点102。在一些情况下,生成模块214可以被配置为生成可以以任何合适的格式表示的时间戳。
审计节点102还可以包括数据识别模块218。数据识别模块218可以被配置为接收作为输入的一个或多个数据值,可以基于输入数据值识别数据,并且可以将识别的数据输出到审计节点102的另一个模块或引擎。例如,数据识别模块218可以被配置为识别交易参考值的顺序以基于此用于Merkle根的生成、并且识别提议编号的顺序以及识别用于共识审计的最高提议编号(或其他合适的共识标准)。数据识别模块218还可以被配置为将交易参考值输入到布隆过滤器中以识别未包括在布隆过滤器中的交易参考值,以便将其从相应的未确认交易列表中移除(例如,通过由查询模块210执行的查询)。
审计节点102还可以包括验证模块220。验证模块220可以被配置为接收作为输入的数据值、可以验证输入的数据值、并且可以将验证结果输出到审计节点的另一模块或引擎。例如,验证模块220可以验证包括在从审计节点104或共识节点106接收的确认消息中的数据,例如,通过确认由散列模块212针对块头生成的块散列与包括在由接收设备202接收的确认消息中的块散列匹配来进行所述验证。验证模块220还可以被配置为验证各Merkle根之间的等效性,以便识别审计节点102或相邻的共识节点106或审计节点104是否不同步。
审计节点102还可以包括发送设备216。发送设备216可以被配置为经由一个或多个网络协议在一个或多个网络上发送数据。发送设备216可以被配置为经由合适的通信网络和相应的网络协议将数据发送到审计节点104和其他实体。在一些实施例中,发送设备216可以由多个设备组成,例如,通过不同网络发送数据的不同的发送设备(例如,通过局域网发送数据的第一发送设备和用于通过被许可的区块链网络发送数据的第二发送设备)。发送设备216可以电子地发送叠加有可以由接收计算设备解析的数据的数据信号。在一些情况下,发送设备216可以包括用于对数据进行叠加、编码或以其他方式将数据格式化到适合于传输的数据信号的一个或多个模块。
发送设备216可以被配置为将数据信号电子地发送到被许可的区块链网络中的其他节点,例如,审计节点104、共识节点106、应用或成员节点等。由发送设备216电子发送的数据信号可以与用于执行本文讨论的审计节点102的功能的数据消息(例如,提议消息、准备消息、准备响应消息、接受消息、确认消息、恢复消息和恢复响应消息)叠加或以其他方式编码有所述数据消息。发送设备216还可以被配置为电子地发送与可以用于执行审计节点102的功能(例如,散列算法、布隆过滤器规范、公钥等)的其他数据叠加或以其他方式编码有所述数据消息。
审计节点102还可以包括存储器222。存储器222可以被配置为存储由审计节点102使用以执行本文所讨论的功能的数据。存储器222可以被配置为使用合适的数据格式化方法和模式来存储数据,并且可以是任何合适类型的存储器,例如,只读存储器、随机存取存储器等。例如,存储器222可以包括未确认交易的列表、共识延迟时间、共识地图、加密密钥和算法、通信协议和标准、数据格式化标准和协议、处理设备的模块和应用程序的程序代码、以及可以适合审计节点在执行本文公开的功能中使用的其他数据,这对于相关领域的技术人员来说是显而易见的。在一些实施例中,存储器222可以包括关系数据库或者由关系数据库组成,该关系数据库利用结构化查询语言来存储、识别、修改、更新、访问存储在其中的结构化数据集等。
共识提议
图3示出了用于将被添加到图1所示的和上文讨论的被许可的区块链网络的新交易的有效共识中的共识提议的过程300。
在步骤302,审计节点102可以等待从应用或成员节点、共识节点106或被配置为提交交易以将其包括在被许可的区块链中的被许可的区块链网络中的其他节点接收交易消息。在步骤304,审计节点102可以识别是否接收到新的交易消息。新的交易消息可以是其包括的交易值和/或相应的交易参考值尚未包括在未确认交易的列表中的交易消息。在可以使用时隙的情况下,如果相应的交易参考值未包括在该时隙对应的未确认交易参考值的列表中,则该交易消息是新的。
如果接收到新的交易消息,则然后在步骤306,审计节点102的散列模块212可以生成交易的交易参考值(如果适用的话),并且审计节点102的查询模块210可以执行查询以将交易参考值存储到相应的时隙对应的未确认交易的列表中,并存储交易值以便以后将其包括在区块中。在步骤308,审计节点102的发送设备216可以将该交易消息重新广播到与其相邻的每个共识节点106。一旦已经重新广播了交易消息,或者直接在步骤304确定交易消息不是新的之后(例如,因此不再存储并重新广播),然后,在步骤310,审计节点102可以确定共识延迟时间是否已经到期。该确定基于共识延迟时间(例如,可以存储在审计节点102的存储器222中)和时间戳。时间戳可以由生成模块214生成,并且时间戳可以是第一次接收到针对一个时隙的交易消息的时间戳,可以是接收到要对该时隙接收的最新的交易消息的时间戳、或者其他合适的时间。
如果共识延迟时间尚未到期,则过程300可以返回到步骤302,其中审计节点102可以继续等待接收新的交易消息,直到共识延迟时间已经到期为止。在共识延迟时间到期时,然后,在步骤312,审计节点102的散列模块212可以生成未确认交易的列表的Merkle根,如果适用的话,未确认交易的列表可以仅包括与特定时隙相关联的那些未确认的交易。可以通过对成对交易参考值进行散列并接着对散列结果进行散列直到识别出对应Merkle树的根节点,来生成Merkle根。在一些实例中,审计节点102的数据识别模块218可以在生成Merkle根之前识别未确认交易的列表的顺序,其可以是交易参考值的自然顺序,例如,递增的数字顺序。
在步骤314,审计节点102的生成模块214可以生成提议消息,该提议消息可以由审计节点102的发送设备216电子地发送到每个相邻的共识节点106(例如,包括执行共识节点106的功能的任何相邻审计节点104)。提议消息可以包括生成的Merkle根,并且如果适用的化,还包括相关联的时隙的时隙标识符。在步骤316,审计节点102的接收设备202可以从每个相邻的共识节点106接收多个提议消息,该多个提议消息可以包括相同的时隙标识符,如果适用的话,还包括由各个共识节点106从它们自己的未确认交易的列表生成的Merkle根。
在步骤318,审计节点102的验证模块220可以执行验证以确定由生成模块214生成的Merkle根是否与从相邻的共识节点106接收到的提议消息中包括的大多数Merkle根相匹配。如果与所接收的Merkle根匹配,则可以完成过程300,从而对审计节点102完成共识提议过程。如果没有匹配,则审计节点102是去同步的,则可以进入下面更详细讨论的如图4A,4B和5所示的恢复过程以重新同步。
节点去同步恢复
图4A和4B示出了用于恢复被许可的区块链网络中的不同步的审计节点102或其他节点过程,例如,可以在图3中所示的和上文讨论的过程300的步骤318中识别出不同步。
在步骤402,审计节点102和相邻的共识节点106都接收将被添加到被许可的区块链的交易的交易消息。每个交易消息都可以包括时隙标识符和交易值,其中,如果适用的话,相应节点的散列模块212可以基于交易值生成交易参考值,其中,交易参考值存储在针对相应的时隙的未确认交易的列表中。在步骤404,每个相应节点的散列模块212使用未确认交易的列表来生成Merkle根。在一些实例中,两个节点都可以在生成Merkle根之前对未确认交易的列表进行排序。
在步骤406,审计节点102和相邻的共识节点106可以交换提议消息,其中,每个提议消息都可以包括时隙标识符和由相应节点生成的Merkle根。在步骤408,审计节点102的验证模块220可以检测审计节点102的散列模块212生成的Merkle根是不正确的,这是因为审计节点102的散列模块212生成的Merkle根与相邻的共识节点106或者与提供提议消息的审计节点102相邻的大多数共识节点106生成的Merkle根不匹配。因此,缺少匹配可以指示出审计节点102在它的未确认交易的列表中缺少至少一个交易参考值,或者该未确认交易的列表包括不应该在该列表中的额外的交易参考值。
在步骤410,审计节点102的生成模块214可以使用未确认交易的列表生成布隆过滤器。布隆过滤器的尺寸至少是针对所述时隙的所述列表中的未确认交易的数量的两倍,并且可以使用预定数量的散列循环使用一个或多个散列算法来生成该布隆过滤器散列循环。在步骤412,生成模块214可以生成恢复消息,该恢复消息至少包括时隙标识符、生成的布隆过滤器、布隆过滤器的尺寸、在布隆过滤器的生成中使用的散列循环的数量、以及针对该时隙的所述节点的未确认交易的列表中的未确认交易的数量,然后可以通过审计节点102的发送设备216以电子方式将恢复消息发送到相邻的共识节点106。在步骤414,共识节点的接收设备可以接收恢复信息。
在步骤416,共识节点106可以识别节点的未确认交易的列表中是否缺少交易,或者节点的列表是否包括额外的未确认交易。可以基于恢复消息中包括的未确认交易的数量与该共识节点自己的对于所述时隙的所述列表中的未确认交易的数量的比较进行上述确定。如果共识节点106确定审计节点102缺少交易,则共识节点106可以通过将共识节点的列表中的交易参考值应用到恢复消息中包括的布隆过滤器中来识别未包括在所述节点的列表中的交易参考值。可以将其参考值未包括在布隆过滤器中的交易消息放入到共识节点106生成的恢复响应消息中。如果共识节点106确定审计节点102具有额外的交易,则共识节点106可以使用其自己的未确认交易的列表来生成其自己的布隆过滤器,其可以使用与恢复消息中包括的布隆过滤器相同的规范,或者可以是不同的规范。然后,共识节点106可以生成包括新的布隆过滤器及其规范的恢复响应消息。
在步骤418,共识节点106可以将恢复响应消息电子地发送到审计节点102。在步骤420,审计节点102的接收设备202可以接收恢复响应消息,如果适用的话,其可以包括时隙标识符和附加交易消息或布隆过滤器和规范。在步骤422,审计节点102可以相应地更新其未确认交易的列表。如下面更详细讨论的,审计节点102可以将新接收的交易消息的交易参考值添加到它的未确认交易的列表中,或者可以使用共识节点106提供的布隆过滤器来识别交易参考值以将其从未确认交易的列表中删除。在步骤424,审计节点102的验证模块220可以通过将由审计节点102的散列模块212生成的未确认交易的新的Merkle根与从相邻的共识节点106和其他相邻节点接收到的Merkle根进行核对,来验证未确认交易的更新列表。在验证可能不成功的情况下,审计节点102可以重复从步骤410开始的过程,以进一步恢复它的未确认交易的列表。
图5示出了用于恢复审计节点102中的未确认交易的去同步列表的过程500,例如,过程500可以在图4A和4B示出以及上面讨论的过程中发生。
在步骤502,生成模块214可以从给定时隙标识符对应的未确认交易的列表生成布隆过滤器,其已经被审计节点102确定为与被许可的区块链网络中的其他共识节点106不同步。布隆过滤器的尺寸至少是列表中未确认交易的计数的两倍,并且可以通过将未确认交易的列表中的交易参考值通过使用一个或多个散列算法的预定数量的散列循环来生成。生成模块214可以生成恢复消息,该恢复消息包括时隙标识符、布隆过滤器、布隆过滤器的尺寸、时隙对应的节点的列表中的未确认交易的计数、以及散列循环的数量。如果适用的话,恢复消息还可以包括有关在散列循环中使用的一个或多个散列算法的信息。
在步骤504,审计节点102的发送设备216可以将生成的恢复消息电子地发送到已在其提议消息中提供了正确的Merkle根的相邻的共识节点106,这可以由包括在每个提议消息中的Merkle根确定。在步骤506,审计节点102的接收设备202响应于恢复消息从相邻的共识节点106接收恢复响应消息,该恢复消息可以至少包括时隙标识符和附加数据。在步骤508,数据识别模块218可以识别恢复响应消息中包括的附加数据的类型。
如果恢复响应消息包括交易消息,则过程500可以进行到步骤510,其中可以基于交易消息更新关于所述时隙的未确认交易的列表。审计节点102的散列模块212可以通过将一个或多个散列算法应用于每个交易消息中包括的交易值来生成每个交易消息的交易参考值,并且审计节点102的查询模块210可以在交易数据库206上执行第一查询以将交易消息208存储在与所述时隙相关联的数据存储区中,并在存储器222或其他合适的数据存储器上执行第二查询以将交易参考值添加到未确认交易的列表中。
如果恢复响应消息包括布隆过滤器,则过程500可以进行到步骤512。在步骤512,数据识别模块218或审计节点102的其他合适的模块或引擎可以在其未确认交易的列表中的交易参考值应用到包括在恢复响应消息中的布隆过滤器中,记录提供的布隆过滤器的尺寸和散列循环的数量,从而识别未包括在布隆过滤器中的交易参考值(例如,因此未包括在共识节点的未确认交易的列表中),也就是不正确的交易参考值。在步骤514,审计节点102的查询模块210可以对交易数据库206和审计节点102的其他存储器222执行查询,以从未确认交易的列表及其对应的交易消息208中移除识别的不正确交易参考值。
一旦审计节点102已经基于恢复响应消息完成了交易参考值和交易消息的移除或添加,则在步骤516,审计节点102的散列模块212可以使用更新的未确认交易的列表来生成所述时隙的新Merkle根。在Merkle根的生成包括对交易参考值排序的情况下,数据识别模块218可以对更新的交易参考值的列表的顺序进行更新,以适应添加或删除交易参考值所必需的任何变化。在步骤518,审计节点102的验证模块220可以确定新的Merkle根是否正确。当新的Merkle根与来自参与恢复的相邻共识节点106和/或其他相邻共识节点的提议消息中包括的Merkle根进行比较时,可以基于对新的Merkle根的评估进行上述确定。如果新的Merkle根是正确的,则完成过程500并且审计节点102回到同步。如果新的Merkle根不正确,则过程500可以返回到步骤502并针对更新的交易参考值的列表重复上述过程。在这样的实例中,过程500可以继续重复,直到审计节点102生成正确的Merkle根并且因此回到与被许可的区块链网络的同步。
共识审计
图6示出了为了被添加到被许可的区块链的新交易的共识而在被许可的区块链网络的共识机制中执行共识审计的过程600。
在步骤602,审计节点102的生成模块214生成潜在新区块的临时块头,该潜在新区块将被添加到针对特定的一组未确认交易(例如,与特定时隙相关联的交易)的被许可的区块链。临时块头可以至少包括最新添加到被许可的区块链的区块的头部的散列值和针对未确认交易列表生成的Merkle根。在一些实例中,临时块头还可以包括时隙标识符、与审计节点102相关联的公钥、随机数、版本标识符或将包括在用于新块的最终头部中的其他数据。
在步骤604,审计节点102的散列模块212可以通过将一个或多个预定散列算法应用于所述临时块头来生成临时块头的散列块。在步骤606,审计节点102的生成模块214可以生成作为共识审计的提议编号的数字签名。可以基于所述块散列生成数字签名,并且可以使用与审计节点102相关联的公钥来生成数字签名。在使用公钥的情况下,其可以是在生成散列块之前的包括在临时块头中的相同公钥。
在步骤608,审计节点102的生成模块214可以生成准备消息,审计节点102的发送设备216可以将该准备消息电子地发送到被许可的区块链网络中的其他审计节点104。准备消息可以至少包括块散列和提议编号,并且如果适用的话,还可以包括用于生成提议编号的公钥、时隙标识符和包括在临时块头中的随机数。在步骤610,审计节点102的接收设备202可以从被许可的区块链网络中的其他审计节点104接收准备响应消息。如果接收到准备响应消息,则准备响应消息可以包括时隙标识符,并且审计节点102提供的提议编号比审计节点自己的提议编号更高,并且如果适用的话,还可以包括与先前接受的提议相关联的数据,例如,接受的提议编号、块散列、公钥和随机数。
在步骤612,审计节点102的数据识别模块218可以确定被许可的区块链网络中的确定数量的审计节点106是否已经用准备响应消息响应了节点的准备消息。如果确定数量的审计节点已经用准备响应消息作出了响应,则在步骤614,审计节点102的生成模块214可以生成接受消息。接受消息可以包括与节点的准备消息中所包括的数据相同的数据,但是该数据被格式化或以其他方式被确定为接受消息。在步骤616,审计节点102的发送设备216可以将接受消息电子地发送到被许可的区块链网络中的其他审计节点104。
如果在步骤612,审计节点102确定该确定数量的审计节点104未使用准备响应消息作出响应,则在步骤618,审计节点102的接收设备202可等待从另一个审计节点104接收接受消息。在这种情况下,审计节点102将不会已经生成最高的提议编号,并且将等待审计节点104对其进行识别。在这种情况下,过程600还可以包括从包括更高的提议编号的另一个审计节点104接收准备消息,并且由审计节点102利用其自己的准备响应消息对其作出响应,确认更高的提议编号。在这种情况下,将从审计节点104接收接受消息,审计节点102已将准备响应消息发送给了审计节点104。
一旦接受消息已经由审计节点102生成和分发或者由审计节点102接收,则在步骤620,审计节点102的生成模块214可以生成确认消息。确认消息可以是被许可的区块链网络中的共识确认的一部分,并且可以至少包括正被确认的时隙对应的时隙标识符、块散列、利用公钥生成的为最高提议编号的数字签名(如果适用的话)、和包括在接受消息中的随机数(如果适用的话)。在步骤622,审计节点102的发送设备216可以将确认消息电子地发送到与其相邻的每一个共识节点106,该相邻的共识节点106又可以将确认消息重新广播到其自己的相邻共识节点106,以便在整个被许可的区块链网络中传播确认消息。
共识确认
图7示出了如由被许可的区块链网络中的审计节点102或另一个共识节点106执行的共识确认的过程700,该过程用于确认已达成共识并且随后将相关联的新区块写入到被许可的区块链。
在步骤702,审计节点102的接收设备202可以接收确认消息。在审计节点102可以是审计节点104的情况下,可以在审计节点102内部接收如由生成模块214生成的确认消息(例如,在图6中所示的过程600的步骤620中和上文讨论的)。确认消息可以至少包括与正被确认的时隙相关联的时隙标识符、最终的新区块的临时块头的块散列、数字签名、用于生成数字签名的公钥、以及随机数(如果适用的话)。
在步骤704,审计节点102的生成模块214可以生成新区块的块头。块头可以包括与临时块头中包括的数据相同的数据,该临时块头已被散列以生成包括在确认消息中的散列块,除了签名和块散列之外,以及除了在共识提议期间由审计节点102生成的Merkle根之外,其可以是包括在确认消息中的相同数据。在步骤706,散列模块212可以通过将生成散列块所使用的一个或多个散列算法应用于生成的块头来生成散列值。
在步骤708,审计节点102的验证模块220可以验证确认消息。可以基于在步骤706由审计节点102生成的块头的散列值与包括在确认消息中的块散列的比较来验证确认消息。如果散列值与散列块不匹配,则验证不成功并且共识确认结束,因为这指示审计节点使用不正确的Merkle根并且不同步,指示审计节点102本身不同步并且具有不正确的Merkle根,或者包括在确认消息或审计节点102中的数据已经受到损害。如果散列值与块散列匹配,验证成功,则在步骤710,审计节点102的查询模块210可以执行查询以将对应于时隙的新区块写入被许可的区块链。新区块可以包括与时隙相关联的每个未确认交易的交易值和块头,该块头可以是在步骤704生成的块头,并且还包括数字签名。
将区块添加到被许可的区块链的示例性方法
图8示出了在使用用于区块的共识的有效共识机制之后将该区块添加到被许可的区块链的方法800。
在步骤802,将由多个区块组成的区块链存储在处理服务器(例如,审计节点102)的存储器(例如,存储器222)中,其中,所述多个区块包括最近添加的区块,最近添加的区块至少包括块头和一个或多个交易值。在步骤804,可以由处理服务器的接收设备(例如,接收设备202)从与区块链相关联的一个或多个共识节点(例如,共识节点106)接收多个交易消息,其中,每个交易消息至少包括交易值。在步骤806,可以由处理服务器的散列模块(例如,散列模块212)使用与包括在多个交易消息的每一个中的交易值相关联的交易参考值,来生成多个交易消息的Merkle根。
在步骤808,可以由处理服务器的散列模块通过将散列算法应用于最近添加的区块中包括的块头来生成先前的散列值。在步骤810,可以由处理服务器的生成模块(例如,生成模块214)生成提议的块头,其中,所提议的块头至少包括先前的散列值和生成的Merkle根。在步骤812,可以由处理服务器的散列模块通过将散列算法应用于所生成的提议的块头来生成确认散列值。
在步骤814,可以由处理服务器的生成模块生成提议编号,其中,提议编号是为生成的提议的块头生成的数字签名的数值。在步骤816,可以由处理服务器的发送设备(例如,发送设备216)将准备消息以电子方式发送到与区块链相关联的多个审计节点(例如,审计节点104),其中,准备消息至少包括生成的确认散列值和生成的提议编号。在步骤818,可以由处理服务器的接收设备从多个审计节点中的至少大多数审计节点接收响应消息,其中,每个准备响应消息至少包括生成的确认散列值和接受的提议编号。
在步骤820,可以由处理服务器的数据识别模块(例如,数据识别模块218)基于所生成的提议编号的数值和每个响应消息中包括的接受的提议编号的数值以及预定标准,来识别同意的提议编号。在步骤822,可以由处理服务器的发送设备将接受消息电子地发送到多个审计节点,其中,接受消息至少包括生成的确认散列值和识别的同意的提议编号。在步骤824,可以由处理服务器的发送设备将确认消息电子地发送到与区块链相关联的多个共识节点,其中确认消息至少包括生成的确认散列值和识别的同意的提议编号。在步骤826,可以由查询模块(例如,查询模块210)在存储器上执行查询,以将新区块添加到区块链,新区块至少包括多个交易消息中的每一个交易消息包括的交易值和新块头,新块头至少包括先前的散列值、生成的Merkle根和同意的提议编号。
在一个实施例中,多个交易消息中的每个交易消息还可以包括特定时隙标识符、提议的块头、准备消息、响应消息、接受消息、确认消息,并且每个新块头都可以包括特定时隙标识符,并且包括在最近添加的区块中的块头可以包括不同的时隙标识符。在一些实施例中,与包括在多个交易消息中的每个交易消息中的交易值相关联的交易参考值可以是所述交易值。在一个实施例中,方法800还可以包括:由处理服务器的散列模块通过使用预定的散列算法对相应的交易值进行散列,来生成与包括在多个交易消息中的每个交易消息中的交易值相关联的交易参考值。
在一些实施例中,方法800还可以包括在处理服务器的存储器中存储共识延迟时间,其中,多个交易消息中的每一个交易消息还包括与时间相关联的共同识别值,并且在与共同识别值相关联的所述时间之后的共识延迟时间到期之后生成所述Merkle根。在一个实施例中,方法800还可以包括由处理服务器的查询模块在生成Merkle根之前,基于自然排序对与包括在多个交易消息中的每个交易消息中的交易值相关联的交易参考值进行排序。在一些实施例中,方法800还可以包括由处理服务器的发送设备向多个共识节点电子地发送提议消息,其中,提议消息至少包括生成的Merkle根。
在一个实施例中,方法800还可以包括:由处理服务器的接收设备从多个共识节点中的每一个共识节点接收提议消息,其中,提议消息至少包括提议的Merkle根;并且,由处理服务器的验证模块(例如,验证模块220)验证所生成的Merkle根与所接收的提议消息中包括的至少大部分提议的Merkle根相等。在一些实施例中,可以使用随机数与数字签名的组合来进一步生成提议编号,准备消息还可以包括随机数,每个响应消息还可以包括关联的随机数,并且接受消息、确认消息和新的块头的每一个都可以进一步包括与同意的提议编号相关联的随机数。
在一个实施例中,方法800还可以包括在存储器中存储与处理服务器相关联的公钥,其中,数字签名是使用公钥为提议的块头生成的,准备消息还包括所述公钥,每个响应消息还包括在生成相关联的接受的提议编号时使用的相关联的公钥,并且接受消息、确认消息和新块头还包括与同意的提议编号相关联的公钥。在一些实施例中,方法800还可以包括:由处理服务器的查询模块基于相应的数值对生成的提议编号和每个响应消息中包括的接受的提议编号进行排序,其中,基于所述排序和预定标准来识别同意的提议编号。在另一实施例中,预定标准可以是选择最高的数值。
使用布隆过滤器恢复丢失数据或额外数据的第一示例性方法
图9示出了用于在不同步的被许可的区块链网络的节点中恢复丢失的未确认交易的方法900。
在步骤902,可以将多个交易消息(例如,交易消息208)存储在处理服务器(例如,审计节点102)的交易数据库(例如,交易数据库206)中,其中,每个交易消息包括与至少包括交易值的区块链交易相关的结构化数据集。在步骤904,可以由处理服务器的生成模块(例如,生成模块214)生成多个交易消息的布隆过滤器,其中,布隆过滤器使用预定数量的散列循环生成并且所述布隆过滤器的尺寸是存储在交易数据库中的多个交易消息的计数的至少两倍。
在步骤906,可以由处理服务器的生成模块生成恢复消息,其中,恢复消息至少包括多个交易消息的计数、散列循环的预定数量、所述尺寸和生成的布隆过滤器。在步骤908,可以由处理服务器的发送设备(例如,发送设备216)以电子方式将生成的恢复消息发送到至少一个共识节点(例如,共识节点106)。
在步骤910,可以由处理服务器的接收设备(例如,接收设备202)从至少一个共识节点中的一个或多个接收响应消息,其中,响应消息包括至少一个附加交易消息。在步骤912,可以由处理服务器的查询模块(例如,查询模块210)在交易数据库上执行查询以***至少一个附加交易消息。
在一个实施例中,方法900还可以包括:由处理服务器的散列模块(例如,散列模块212)使用与包括在多个交易消息中的每个交易消息中的交易值相关联的交易参考值,来生成多个交易消息的Merkle根;由处理服务器的接收设备从至少一个共识节点中的每一个共识节点接收提议消息,其中,提议消息至少包括提议的Merkle根;并且,在电子地发送生成的恢复消息之前,由处理服务器的验证模块(例如,验证模块220)验证所生成的Merkle根不等于在每个接收的提议消息中包括的提议的Merkle根。在另一实施例中,方法900还可以包括:由处理服务器的散列模块使用与包括在每个相应的交易消息中的交易值相关联的交易参考值,来生成多个交易消息和所述至少一个附加交易消息的新的Merkle根;并且由处理服务器的验证模块验证新的Merkle根等于在每个接收的提议消息中包括的提议的Merkle根。
在另一实施例中,方法900还可以包括:由处理服务器的散列模块通过使用预定的散列算法对相应的交易值进行散列,来生成与包括在多个交易消息中的每个交易消息中的交易值相关联的交易参考值。在又一实施例中,方法900还可以包括:由处理服务器的查询模块在生成Merkle根之前,基于自然排序对与包括在多个交易消息中的每个交易消息中的交易值相关联的交易参考值进行排序。
在一些实施例中,多个交易消息中的每一个交易消息还可以包括特定时隙标识符,恢复消息和响应消息中的每一个还可以包括所述特定时隙标识符,并且所述至少一个附加交易消息中的每一个附加交易消息都可以包括所述特定时隙标识符。在一个实施例中,对于预定数量的散列循环中的每一个,可以使用预定的散列算法生成布隆过滤器。
使用布隆过滤器恢复丢失数据或额外数据的第二示例性方法
图10示出了对通过使用布隆过滤器来移除节点中的未确认交易中所包括的额外数据进行恢复,以使未确认交易被添加到被许可的区块链的方法1000。
在步骤1002,可以将多个交易消息(例如,交易消息208)存储在处理服务器(例如,审计节点102)的交易数据库(例如,交易数据库206)中,其中,每个交易消息包括与区块链交易相关的包括至少一个交易值的结构化数据集。在步骤1004,可以由处理服务器的生成模块(例如,生成模块214)生成多个交易消息的布隆过滤器,其中,布隆过滤器使用预定数量的散列循环生成并且所述布隆过滤器的尺寸是存储在交易数据库中的所述多个交易消息的计数的至少两倍。
在步骤1006,可以由处理服务器的生成模块生成恢复消息,其中,恢复消息至少包括多个交易消息的计数、散列循环的预定数量、所述尺寸和生成的布隆过滤器。在步骤1008,可以由处理服务器的发送设备(例如,发送设备216)以电子方式将生成的恢复消息发送到至少一个共识节点(例如,共识节点106)。
在步骤1010,可以由处理服务器的接收设备(例如,接收设备202)从所述至少一个共识节点中的一个或多个接收响应消息,其中,响应消息至少包括第二布隆过滤器、散列循环的指示的数量、指示的过滤器的尺寸和预期的交易消息的数量。在步骤1012,可以由处理服务器的数据识别模块(例如,数据识别模块218)基于所包括的交易值、散列循环的指示的数量、指示的过滤器尺寸、预期的交易消息的数量以及第二布隆过滤器,来识别未包括在第二布隆过滤器中的多个交易消息中的至少一个交易消息。在步骤1014,可以由处理服务器的查询模块(例如,查询模块210)在交易数据库上执行查询,以删除所述至少一个识别的交易消息。
在一个实施例中,预期的交易消息的数量可以少于所述多个交易消息的计数。在一些实施例中,指示的过滤器尺寸可以是预期的交易消息的数量的至少两倍。在一个实施例中,在执行查询之后更新的所述多个交易消息的计数可以等于预期的交易消息的数量。在一些实施例中,多个交易消息中的每一个交易消息还可以包括特定时隙标识符,并且恢复消息和响应消息中的每一个还可以包括所述特定时隙标识符。在一个实施例中,可以使用预定的散列算法针对预定数量的散列循环中的每一个生成布隆过滤器。
在一个实施例中,方法1000还可以包括:由处理服务器的散列模块(例如,散列模块212)使用与包括在所述多个交易消息中的每个交易消息中的交易值相关联的交易参考值,来生成多个交易消息的Merkle根;由处理服务器的接收设备从所述至少一个共识节点中的每一个共识节点接收提议消息,其中,提议消息至少包括提议的Merkle根;并且,在电子地发送生成的恢复消息之前,由处理服务器的验证模块(例如,验证模块220)验证所生成的Merkle根不等于在每个接收的提议消息中包括的提议的Merkle根。在另一实施例中,方法1000还可以包括:在使用与包括在每个相应交易消息中的交易值相关联的交易参考值删除所述至少一个识别的交易消息之后,由处理服务器的散列模块生成所述多个交易消息的新的Merkle根;并且由处理服务器的验证模块验证新的Merkle根等于在每个接收的提议消息中包括的提议的Merkle根。
在另一实施例中,方法1000甚至可以进一步包括:由处理服务器的散列模块通过使用预定的散列算法对相应的交易值进行散列,来生成与包括在多个交易消息中的每个交易消息中的交易值相关联的交易参考值。在又一实施例中,方法1000还可以包括:由处理服务器的查询模块在生成Merkle根之前,基于自然排序对与包括在所述多个交易消息中的每个交易消息中的交易值相关联的交易参考值进行排序。
计算机***架构
图11示出了计算机***1100,其中,本公开的实施例或其一部分可以实现为计算机可读代码。例如,可以使用硬件、软件、固件,其上存储有指令的非暂时性计算机可读介质或其组合来在计算机***1100中实现图1的审计节点102,并且图1的审计节点102可以在一个或多个计算机***或其他处理***中实现。硬件、软件或其任何组合可以体现为用于实现图3,4A,4B和5-10的方法的模块和组件。
如果使用可编程逻辑,则这种逻辑可以在由可执行软件代码配置成为专用计算机或专用设备(例如,可编程逻辑阵列、专用集成电路等)的商业上可获得的处理平台上执行。本领域普通技术人员可以理解,可以使用包括多核多处理器***、小型计算机、大型计算机、具有分布式功能的链接或聚集的计算机以及几乎可以嵌入到任何设备中的普通或微型计算机的各种计算机***配置来实践所公开的主题的实施例。例如,可以使用至少一个处理器设备和存储器来实现上述实施例。
如本文讨论的处理器单元或设备可以是单个处理器、多个处理器或其组合。处理器设备可具有一个或多个处理器“核”。如本文所讨论的术语“计算机程序介质”、“非暂时性计算机可读介质”和“计算机可用介质”通常用于指代有形介质,例如,可移动存储单元1118、可移动存储单元1122以及安装在硬盘驱动器1112中的硬盘。
通过该示例性计算机***1100来描述本公开的各种实施例。在阅读本说明书之后,如何使用其他计算机***和/或计算机体系结构来实现本公开对相关领域的技术人员来说将显而易见。尽管将操作描述为顺序过程,但是一些操作事实上可以并行地、同时地和/或在分布式环境中执行,并且程序代码可以本地存储或远程存储以供单个或多个处理器的机器访问。另外,在一些实施例中,在不脱离所公开的主题的精神的情况下,可以重新排列各个操作的顺序。
处理器设备1104可以是被配置为执行本文公开的功能的专用或通用处理器设备。处理器设备804可以连接到通信基础设施1106,例如,总线、消息队列、网络、多核消息传输方案等。网络可以是适合于执行本文公开的功能的任何网络,其可以包括局域网(LAN)、广域网(WAN)、无线网络(例如WiFi)、移动通信网络、卫星网络、因特网、光纤、同轴电缆、红外线、射频(RF)、或其任何组合。其他合适的网络类型和配置对于相关领域的技术人员来说将是显而易见的。计算机***1100还可以包括主存储器1108(例如,随机存取存储器、只读存储器等),并且还可以包括辅助存储器1110。辅助存储1110可以包括硬盘驱动器1112和可移动存储驱动器1114,例如软盘驱动器、磁带驱动器、光盘驱动器、闪存等。
可移动存储驱动器1114可以以公知的方式从可移动存储单元1118读取和/或写入到可移动存储单元1118。可移动存储单元1118可以包括可由可移动存储驱动器1114读取和写入的可移动存储介质。例如,如果可移动存储驱动器1114是软盘驱动器或通用串行总线端口,则可移动存储单元1118可以分别是软盘或便携式闪存驱动器。在一个实施例中,可移动存储单元1118可以是非暂时性计算机可读记录介质。
在一些实施例中,辅助存储器1110可以包括允许将计算机程序或其他指令加载到计算机***1100的另外的装置,例如可移动存储单元1122和接口1120。这样的装置的示例可以包括程序盒和盒式接口(例如,如视频游戏***中所见到的)、可移动存储器芯片(例如,EEPROM、PROM等)和相关的插座以及其他可移动存储单元1122和接口1120,这对本领域技术人员来说是显而易见的。
存储在计算机***1100中(例如,存储在主存储器1108和/或辅助存储器1110中)的数据可以存储在任何类型的合适的计算机可读介质上,例如,光学存储器(例如,光盘、数字通用光盘、蓝光光盘等)或磁带存储器(例如,硬盘驱动器)。可以以任何类型的合适的数据库配置(例如,关系数据库、结构化查询语言(SQL)数据库、分布式数据库、对象数据库等)来配置该数据。合适的配置和存储类型对本领域的技术人员来说将是显而易见的。
计算机***1100还可以包括通信接口1124。通信接口1124可以被配置为允许软件和数据在计算机***1100和外部设备之间传输。示例性的通信接口1124可以包括调制解调器、网络接口(例如,以太网卡)、通信端口、PCMCIA插槽和卡等。经由通信接口1124传送的软件和数据可以是信号的形式,其可以是电子的、电磁的、光学的或其它信号,这对相关领域的技术人员来说是显而易见的。信号可以经由通信路径1126行进,通信路径1126可以被配置为承载信号并且可以使用电线、电缆、光纤、电话线、蜂窝电话链路、射频链路等来实现。
计算机***1100还可以包括显示器接口1102。显示器接口1102可以被配置为允许数据在计算机***1100和外部显示器1130之间传输。示例性的显示器接口1102可以包括高清晰度多媒体接口(HDMI)、数字视频接口(DVI)、视频图形阵列(VGA)等。显示器1130可以是用于显示经由计算机***1100的显示器接口1102发送的数据的任何适当类型的显示器,包括阴极射线管(CRT)显示器、液晶显示器(LCD)、发光二极管(LED)显示器、电容式触摸显示器、薄膜晶体管(TFT)显示器等。
计算机程序介质和计算机可用介质可以指可以是存储器半导体(例如,DRAM等)的存储器,例如主存储器1108和辅助存储器1110。这些计算机程序产品可以是用于向计算机***1100提供软件的装置。计算机程序(例如,计算机控制逻辑)可以存储在主存储器1108和/或辅助存储器1110中。也可以经由通信接口1124来接收计算机程序。当执行该计算机程序时,可以使计算机***1100能够实现本文所讨论的本方法。特别地,当执行计算机程序时,可以使得处理器设备1104能够实现如本文所讨论的图3,4A,4B和5-10所示的方法。因此,该计算机程序可以表示计算机***1100的控制器。在使用软件实现本公开的情况下,可以将软件存储在计算机程序产品中,并使用可移动存储驱动器1114、接口1120、和硬盘驱动器1112或通信接口1124将软件加载到计算机***1100中。
处理器设备1104可以包括被配置为执行计算机***1100的功能的一个或多个模块或引擎。每个模块或引擎可以使用硬件来实现,并且在一些例子中也可以使用软件(例如,对应于存储在主存储器1108或辅助存储器1110中的程序代码和/或程序的软件)来实现。在该例子中,在由计算机***1110的硬件执行程序代码之前,可以由处理器设备1104编译(例如,通过编译模块或引擎)对程序代码进行编译。例如,程序代码可以是以编程语言编写的源代码,编程语言被编译成诸如汇编语言或机器代码之类的较低级别的语言以供处理器设备1104和/或计算机***1100的任何附加硬件组件执行。编译过程可以包括使用词法分析、预处理、解析、语义分析、语法导向翻译、代码生成、代码优化、以及可适用于将程序代码翻译成适合于控制计算机***1100执行本文公开的功能的较低级别语言的任何其他技术。相关领域的技术人员将明白,该过程导致计算机***1100成为专门编程为执行上述功能的专门配置的计算机***1100。
除了其他特性之外,与本公开一致的技术提供了一种使用有效的共识机制将区块添加到被许可的区块链网络以及使用布隆过滤器恢复被许可的区块链网络中的节点中的额外数据或丢失数据的***和方法。虽然上面已经描述了所公开的***和方法的各种示例性实施例,但是应当理解,它们仅仅是为了示例的目的而提供的,而不是限制。这不是详尽的并且不将披露的内容限制在所披露的确切形式上。在不背离广度或范围的情况下,可以根据上述教导作出修改和变化或者可以从本公开的实践获得修改和变化。

Claims (34)

1.一种使用布隆过滤器恢复丢失数据或额外数据的方法,包括:
在处理服务器的交易数据库中存储多个交易消息,其中,每个交易消息包括与区块链交易相关的结构化数据集,所述结构化数据集至少包括交易值;
由所述处理服务器的生成模块生成所述多个交易消息的布隆过滤器,其中,所述布隆过滤器使用预定数量的散列循环生成并且所述布隆过滤器的尺寸是存储在所述交易数据库中的所述多个交易消息的数量的至少两倍;
由所述处理服务器的所述生成模块生成恢复消息,其中,所述恢复消息至少包括所述多个交易消息的数量、散列循环的预定数量、所述尺寸和生成的布隆过滤器;
由所述处理服务器的发送设备以电子方式将生成的恢复消息发送到至少一个共识节点;
由所述处理服务器的接收设备从所述至少一个共识节点中的一个节点或多个节点接收响应消息,其中,所述响应消息包括至少一个附加交易消息;以及
由所述处理服务器的查询模块在所述交易数据库上执行查询以***所述至少一个附加交易消息。
2.根据权利要求1所述的方法,还包括:
由所述处理服务器的散列模块使用与包括在所述多个交易消息中的每个交易消息中的交易值相关联的交易参考值,来生成所述多个交易消息的Merkle根;
由所述处理服务器的所述接收设备从所述至少一个共识节点中的每一个共识节点接收提议消息,其中,所述提议消息至少包括提议的Merkle根;以及
在以电子方式发送生成的恢复消息之前,由所述处理服务器的验证模块验证所生成的Merkle根不等于在每个接收的提议消息中包括的提议的Merkle根。
3.根据权利要求2所述的方法,还包括:
由所述处理服务器的所述散列模块使用与包括在每个相应交易消息中的所述交易值相关联的交易参考值,来生成所述多个交易消息和所述至少一个附加交易消息的新的Merkle根;以及
由所述处理服务器的所述验证模块验证所述新的Merkle根等于在每个接收的提议消息中包括的所述提议的Merkle根。
4.根据权利要求2所述的方法,还包括:
由所述处理服务器的所述散列模块通过使用预定的散列算法对相应的交易值进行散列,来生成与包括在所述多个交易消息中的每个交易消息中的所述交易值相关联的交易参考值。
5.根据权利要求2所述的方法,还包括:
由所述处理服务器的所述查询模块在生成所述Merkle根之前,基于自然排序对与包括在所述多个交易消息中的每个交易消息中的所述交易值相关联的所述交易参考值进行排序。
6.根据权利要求1所述的方法,其中,
多个所述交易消息中的每一个交易消息还包括特定时隙标识符,
所述恢复消息和响应消息中的每一个还包括所述特定时隙标识符,以及
所述至少一个附加交易消息中的每一个附加交易消息包括所述特定时隙标识符。
7.根据权利要求1所述的方法,其中,对于所述预定数量的散列循环中的每一个,使用预定的散列算法生成所述布隆过滤器。
8.一种使用布隆过滤器恢复丢失数据或额外数据的方法,包括:
在处理服务器的交易数据库中存储多个交易消息,其中,每个交易消息包括与区块链交易相关的结构化数据集,所述结构化数据集至少包括交易值;
由所述处理服务器的生成模块生成所述多个交易消息的布隆过滤器,其中,所述布隆过滤器使用预定数量的散列循环生成并且所述布隆过滤器的尺寸是存储在所述交易数据库中的所述多个交易消息的数量的至少两倍;
由所述处理服务器的所述生成模块生成恢复消息,其中,所述恢复消息至少包括所述多个交易消息的数量、散列循环的预定数量、所述尺寸和生成的布隆过滤器;
由所述处理服务器的发送设备以电子方式将生成的恢复消息发送到至少一个共识节点;
由所述处理服务器的接收设备从所述至少一个共识节点中的一个节点或多个节点接收响应消息,其中,所述响应消息至少包括第二布隆过滤器、散列循环的指示的数量、指示的过滤器尺寸和预期的交易消息的数量;
由所述处理服务器的数据识别模块基于所包括的交易值、散列循环的所述指示的数量、指示的过滤器尺寸、预期的交易消息的数量以及第二布隆过滤器,来识别未包括在所述第二布隆过滤器中的所述多个交易消息中的至少一个交易消息;以及
由所述处理服务器的查询模块在所述交易数据库上执行查询以删除至少一个所识别的交易消息。
9.根据权利要求8所述的方法,其中,所述预期的交易消息的数量少于所述多个交易消息的所述数量。
10.根据权利要求8所述的方法,其中,所指示的过滤器的尺寸至少是所述预期的交易消息的数量的两倍。
11.根据权利要求8所述的方法,其中,在执行所述查询之后所述多个交易消息的更新的数量等于所述预期的交易消息的数量。
12.根据权利要求8所述的方法,还包括:
由所述处理服务器的散列模块使用与包括在所述多个交易消息中的每个交易消息中的交易值相关联的交易参考值,来生成所述多个交易消息的Merkle根;
由所述处理服务器的所述接收设备从所述至少一个共识节点中的每一个共识节点接收提议消息,其中,所述提议消息至少包括提议的Merkle根;以及
在以电子方式发送生成的恢复消息之前,由所述处理服务器的验证模块验证所生成的Merkle根不等于在每个接收的提议消息中包括的所述提议的Merkle根。
13.根据权利要求12所述的方法,还包括:
在删除至少一个所识别的交易消息之后,使用与包括在每个相应交易消息中的所述交易值相关联的交易参考值,由所述处理服务器的所述散列模块生成所述多个交易消息的新的Merkle根;以及
由所述处理服务器的所述验证模块验证所述新的Merkle根等于在每个接收的提议消息中包括的所述提议的Merkle根。
14.根据权利要求12所述的方法,还包括:
由所述处理服务器的所述散列模块,通过使用预定的散列算法对相应的交易值进行散列,生成与包括在所述多个交易消息中的每个交易消息中的所述交易值相关联的交易参考值。
15.根据权利要求12所述的方法,还包括:
由所述处理服务器的所述查询模块在生成所述Merkle根之前,基于自然排序对与包括在所述多个交易消息中的每个交易消息中的所述交易值相关联的所述交易参考值进行排序。
16.根据权利要求8所述的方法,其中,
多个所述交易消息中的每一个交易消息还包括特定时隙标识符,以及
所述恢复消息和响应消息中的每一个还包括所述特定时隙标识符。
17.根据权利要求8所述的方法,其中,对于预定数量的散列循环中的每一个,使用预定的散列算法生成所述布隆过滤器。
18.一种使用布隆过滤器恢复丢失数据或额外数据的***,包括:
处理服务器的交易数据库,其被配置为存储多个交易消息,其中,每个交易消息包括与区块链交易相关的结构化数据集,所述结构化数据集至少包括交易值;
所述处理服务器的生成模块,其被配置为生成
所述多个交易消息的布隆过滤器,其中,所述布隆过滤器使用预定数量的散列循环生成并且所述布隆过滤器的尺寸是存储在所述交易数据库中的所述多个交易消息的数量的至少两倍;和
恢复消息,其中,所述恢复消息至少包括所述多个交易消息的数量、散列循环的预定数量、所述尺寸和生成的布隆过滤器;
所述处理服务器的发送设备,其被配置为以电子方式将生成的恢复消息发送到至少一个共识节点;
所述处理服务器的接收设备,其被配置为从所述至少一个共识节点中的一个节点或多个节点接收响应消息,其中,所述响应消息包括至少一个附加交易消息;以及
所述处理服务器的查询模块,其被配置为在所述交易数据库上执行查询以***所述至少一个附加交易消息。
19.根据权利要求18所述的***,还包括:
所述处理服务器的验证模块;和
所述处理服务器的散列模块,其被配置为使用与包括在所述多个交易消息中的每个交易消息中的所述交易值相关联的交易参考值,来生成所述多个交易消息的Merkle根,其中
所述处理服务器的所述接收设备还被配置为从所述至少一个共识节点中的每一个共识节点接收提议消息,其中,所述提议消息至少包括提议的Merkle根;以及
所述处理服务器的所述验证模块被配置为:在以电子方式发送生成的恢复消息之前,验证所生成的Merkle根不等于在每个接收的提议消息中包括的所述提议的Merkle根。
20.根据权利要求19所述的***,其中,
所述处理服务器的所述散列模块还被配置为使用与包括在每个相应交易消息中的所述交易值相关联的交易参考值,来生成所述多个交易消息和所述至少一个附加交易消息的新的Merkle根,以及
所述处理服务器的所述验证模块还被配置为验证所述新的Merkle根等于在每个接收的提议消息中包括的所述提议的Merkle根。
21.根据权利要求19所述的***,其中,所述处理服务器的所述散列模块还被配置为通过使用预定的散列算法对相应的交易值进行散列,来生成与包括在所述多个交易消息中的每个交易消息中的所述交易值相关联的所述交易参考值。
22.根据权利要求19所述的***,其中,所述处理服务器的所述查询模块还被配置为:在生成所述Merkle根之前,基于自然排序对与包括在所述多个交易消息中的每个交易消息中的所述交易值相关联的所述交易参考值进行排序。
23.根据权利要求18所述的***,其中,
多个所述交易消息中的每一个交易消息还包括特定时隙标识符,
所述恢复消息和响应消息中的每一个还包括所述特定时隙标识符,以及
所述至少一个附加交易消息中的每一个附加交易消息包括所述特定时隙标识符。
24.根据权利要求18所述的***,其中,对于所述预定数量的散列循环中的每一个,使用预定的散列算法生成所述布隆过滤器。
25.一种使用布隆过滤器恢复丢失数据或额外数据的***,包括:
处理服务器的交易数据库,其被配置为存储多个交易消息,其中,每个交易消息包括与区块链交易相关的结构化数据集,所述结构化数据集至少包括交易值;
所述处理服务器的生成模块,其被配置为生成
所述多个交易消息的布隆过滤器,其中,所述布隆过滤器使用预定数量的散列循环生成并且所述布隆过滤器的尺寸是存储在所述交易数据库中的所述多个交易消息的数量的至少两倍;
恢复消息,其中,所述恢复消息至少包括所述多个交易消息的所述数量、散列循环的所述预定数量、所述尺寸和生成的布隆过滤器;
所述处理服务器的发送设备,其被配置为以电子方式将生成的恢复消息发送到至少一个共识节点;
所述处理服务器的接收设备,其被配置为从所述至少一个共识节点中的一个节点或多个节点接收响应消息,其中,所述响应消息至少包括第二布隆过滤器、散列循环的指示的数量、指示的过滤器尺寸和预期的交易消息的数量;
所述处理服务器的数据识别模块,其被配置为基于所包括的交易值、散列循环的所述指示的数量、指示的过滤器尺寸、预期的交易消息的数量以及第二布隆过滤器,来识别未包括在所述第二布隆过滤器中的所述多个交易消息中的至少一个交易消息;以及
所述处理服务器的查询模块,其被配置为在所述交易数据库上执行查询以删除至少一个识别的交易消息。
26.根据权利要求25所述的***,其中,所述预期的交易消息的数量少于所述多个交易消息的所述数量。
27.根据权利要求25所述的***,其中,所指示的过滤器的尺寸至少是所述预期的交易消息的数量的两倍。
28.根据权利要求25所述的***,其中,在执行所述查询之后所述多个交易消息的更新的数量等于所述预期的交易消息的数量。
29.根据权利要求25所述的***,还包括:
所述处理服务器的验证模块;和
所述处理服务器的散列模块,其被配置为使用与包括在所述多个交易消息中的每个交易消息中的所述交易值相关联的交易参考值,来生成所述多个交易消息的Merkle根,其中
所述处理服务器的所述接收设备还被配置为从所述至少一个共识节点中的每一个共识节点接收提议消息,其中,所述提议消息至少包括提议的Merkle根,并且
所述处理服务器的所述验证模块被配置为在以电子方式发送生成的恢复消息之前,验证所生成的Merkle根不等于在每个接收的提议消息中包括的所述提议的Merkle根。
30.根据权利要求29所述的***,其中,
所述处理服务器的所述散列模块被配置为,在删除至少一个所识别的交易消息之后,使用与包括在每个相应的交易消息中的所述交易值相关联的交易参考值生成所述多个交易消息的新的Merkle根,以及
所述处理服务器的所述验证模块被配置为验证所述新的Merkle根等于在每个接收的提议消息中包括的所述提议的Merkle根。
31.根据权利要求29所述的***,其中,所述处理服务器的所述散列模块还被配置为通过使用预定的散列算法对相应的交易值进行散列,来生成与包括在所述多个交易消息中的每个交易消息中的所述交易值相关联的所述交易参考值。
32.根据权利要求29所述的***,其中,所述处理服务器的所述查询模块还被配置为:在生成所述Merkle根之前,基于自然排序对与包括在所述多个交易消息中的每个交易消息中的所述交易值相关联的所述交易参考值进行排序。
33.根据权利要求25所述的***,其中,
多个所述交易消息中的每一个交易消息还包括特定时隙标识符,以及
所述恢复消息和响应消息中的每一个还包括所述特定时隙标识符。
34.根据权利要求25所述的***,其中,对于所述预定数量的散列循环中的每一个,使用预定的散列算法生成所述布隆过滤器。
CN201780032307.1A 2016-05-24 2017-04-19 使用布隆过滤器对被许可的区块链进行去同步恢复的方法和*** Active CN109313654B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210042531.1A CN114398519A (zh) 2016-05-24 2017-04-19 使用布隆过滤器对被许可的区块链进行去同步恢复的方法和***

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/163,077 US10198325B2 (en) 2016-05-24 2016-05-24 Method and system for desynchronization recovery for permissioned blockchains using bloom filters
US15/163,077 2016-05-24
PCT/US2017/028225 WO2017204944A1 (en) 2016-05-24 2017-04-19 Method and system for desychronization recovery for permissioned blockchains using bloom filters

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210042531.1A Division CN114398519A (zh) 2016-05-24 2017-04-19 使用布隆过滤器对被许可的区块链进行去同步恢复的方法和***

Publications (2)

Publication Number Publication Date
CN109313654A CN109313654A (zh) 2019-02-05
CN109313654B true CN109313654B (zh) 2022-01-07

Family

ID=59227848

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201780032307.1A Active CN109313654B (zh) 2016-05-24 2017-04-19 使用布隆过滤器对被许可的区块链进行去同步恢复的方法和***
CN202210042531.1A Pending CN114398519A (zh) 2016-05-24 2017-04-19 使用布隆过滤器对被许可的区块链进行去同步恢复的方法和***

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202210042531.1A Pending CN114398519A (zh) 2016-05-24 2017-04-19 使用布隆过滤器对被许可的区块链进行去同步恢复的方法和***

Country Status (5)

Country Link
US (3) US10198325B2 (zh)
EP (2) EP3465481B1 (zh)
CN (2) CN109313654B (zh)
SG (1) SG11201808474YA (zh)
WO (1) WO2017204944A1 (zh)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
US10438197B2 (en) * 2016-04-13 2019-10-08 Paypal, Inc. Public ledger authentication system
CN109074576A (zh) * 2016-04-29 2018-12-21 区块链控股有限公司 使用区块链实现逻辑门功能
US10375561B2 (en) * 2016-05-26 2019-08-06 International Business Machines Corporation Coordinating the use of independent radio receivers associated with multiple different transmitters
CN107438003B (zh) * 2016-05-27 2022-08-09 索尼公司 电子设备、用于电子设备的方法和信息处理***
US10097344B2 (en) 2016-07-15 2018-10-09 Mastercard International Incorporated Method and system for partitioned blockchains and enhanced privacy for permissioned blockchains
US10275541B2 (en) * 2016-08-05 2019-04-30 Micron Technology, Inc. Proactive corrective actions in memory based on a probabilistic data structure
CN106991334B (zh) * 2016-11-24 2021-03-02 创新先进技术有限公司 一种数据存取的方法、***及装置
CN107018125B (zh) 2017-02-17 2019-08-09 阿里巴巴集团控股有限公司 一种区块链***、数据存储方法及装置
AU2018230763A1 (en) 2017-03-08 2019-10-31 Ip Oversight Corporation System and method for creating commodity asset-secured tokens from reserves
US10809916B2 (en) * 2017-04-17 2020-10-20 Oracle International Corporation Instance recovery using bloom filters
WO2018215951A1 (en) * 2017-05-26 2018-11-29 nChain Holdings Limited Script based blockchain interaction
US10341748B2 (en) * 2017-07-05 2019-07-02 Infinera Corporation Packet-optical in-band telemetry (POINT) framework
GB201711879D0 (en) * 2017-07-24 2017-09-06 Nchain Holdings Ltd Computer-implemented system and method
EP3444997A1 (de) * 2017-08-18 2019-02-20 Siemens Aktiengesellschaft Vorrichtungen zum bereitstellen einer menge von kryptographisch geschützten und gefilterten sowie sortierten transaktionsdatensätzen eines gliedes einer blockkette
US11316696B2 (en) * 2017-09-29 2022-04-26 R3 Ltd. Hash subtrees for grouping components by component type
WO2019070938A1 (en) * 2017-10-04 2019-04-11 Silvio Micali INTELLIGENT DECLARATIVE CONTRACTS
US10862672B2 (en) * 2017-10-24 2020-12-08 Intuit, Inc. Witness blocks in blockchain applications
WO2019100063A1 (en) * 2017-11-20 2019-05-23 Moshe Shadmon A system and apparatus to manage data using a peer-to-peer network and the blockchain
US11386232B2 (en) * 2017-12-05 2022-07-12 The Guppy Group Inc. Distributed data management and verification
KR102232641B1 (ko) * 2017-12-13 2021-03-26 서강대학교산학협력단 블록체인 기반 IoT 환경에서의 다중 검색을 지원하는 데이터 구조체를 이용한 검색 방법 및 그 방법에 따른 장치
US20190188086A1 (en) * 2017-12-14 2019-06-20 International Business Machines Corporation Redundancy reduction in blockchains
US10554412B2 (en) * 2018-03-06 2020-02-04 Robust Analytics, Inc. Method and network to implement decentralized validation and authentication mechanisms to prevent ADS-B cyber-attacks
CN108763302A (zh) * 2018-04-19 2018-11-06 深圳市网心科技有限公司 区块链共识处理方法、电子装置及计算机可读存储介质
TWI673988B (zh) * 2018-05-25 2019-10-01 柯賓漢數位金融科技有限公司 區塊鏈的生成方法及系統
US11323530B2 (en) * 2018-06-06 2022-05-03 International Business Machines Corporation Proxy agents and proxy ledgers on a blockchain
CN113408008B (zh) * 2018-07-05 2022-12-30 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及介质
US10956377B2 (en) * 2018-07-12 2021-03-23 EMC IP Holding Company LLC Decentralized data management via geographic location-based consensus protocol
CN109067516B (zh) * 2018-07-20 2021-05-11 杭州复杂美科技有限公司 一种抽签方法、共识方法、设备和存储介质
CN108846750B (zh) * 2018-08-01 2020-09-15 杭州复杂美科技有限公司 一种股权证明共识方法
CN111082922B (zh) * 2018-10-18 2021-11-19 北京天能博信息科技有限公司 一种区块链的数据处理方法及相关设备
US11068470B2 (en) * 2018-11-09 2021-07-20 Innoplexus Ag System and method for interoperability of blockchains
US10642825B2 (en) * 2018-11-09 2020-05-05 Innoplexus Ag System and method for interoperability of blockchains
CN109660352B (zh) * 2018-11-16 2021-12-03 深圳变设龙信息科技有限公司 一种基于区块链的分销关系记录方法、装置及终端设备
WO2020133148A1 (zh) * 2018-12-28 2020-07-02 合肥达朴汇联科技有限公司 区块链的数据处理方法、装置和区块链***
CN110245522B (zh) * 2019-01-16 2022-07-12 腾讯科技(深圳)有限公司 区块链资金结算***中的数据处理方法、终端和介质
WO2020158973A1 (ko) * 2019-01-30 2020-08-06 주식회사 아티프렌즈 가설 수락 프로토콜-2 방식의 블록체인 합의 시스템 및 방법
CN109902091B (zh) * 2019-02-21 2021-08-10 腾讯科技(深圳)有限公司 数据区块在区块链上记录的方法、领导记账节点和介质
US11347598B2 (en) 2019-03-18 2022-05-31 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
US10938750B2 (en) 2019-03-18 2021-03-02 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
CA3058233C (en) 2019-03-18 2023-03-07 Alibaba Group Holding Limited Consensus system downtime recovery
US11314763B2 (en) * 2019-03-26 2022-04-26 Centurylink Intellectual Property Llc Off-chain functionality for data contained in blocks of blockchain
GB2582978B (en) * 2019-04-12 2022-05-04 Nchain Holdings Ltd Methods and devices for propagating blocks in a blockchain network
KR102221366B1 (ko) * 2019-04-18 2021-03-02 주식회사 웨이투빗 백업 데이터에 대한 신뢰성을 확보하면서도 블록체인 네트워크를 복구하며, 노드를 재활용함으로써 자원 소모를 최소화하는 딜레이드 동기화 방법 및 장치
EP3764233A1 (en) * 2019-07-08 2021-01-13 Continental Teves AG & Co. OHG Method of identifying errors in or manipulations of data or software stored in a device
US10956444B2 (en) * 2019-07-31 2021-03-23 Advanced New Technologies Co., Ltd. Block chain state data synchronization method, apparatus, and electronic device
US11113272B2 (en) 2019-07-31 2021-09-07 Advanced New Technologies Co., Ltd. Method and apparatus for storing blockchain state data and electronic device
CN110602051B (zh) * 2019-08-15 2022-03-29 深圳壹账通智能科技有限公司 基于共识协议的信息处理方法及相关装置
CN110572287B (zh) * 2019-09-05 2022-03-18 腾讯科技(深圳)有限公司 数据容灾方法、装置、计算机设备和存储介质
GB2586865A (en) * 2019-09-06 2021-03-10 Nchain Holdings Ltd Methods and Devices for Tracking and Measuring Proof-of-Work Contributions in a Mining Pool
CN110609872B (zh) * 2019-09-20 2021-03-05 北京海益同展信息科技有限公司 用于同步节点数据的方法和装置
CN110704438B (zh) * 2019-09-26 2023-10-03 深圳前海微众银行股份有限公司 一种区块链中布隆过滤器的生成方法及装置
EP3809275B1 (en) * 2019-10-16 2022-11-09 Fetch.ai Limited System and method to improve system reliability via consistent recordal of data entities
US11354198B2 (en) 2019-11-19 2022-06-07 International Business Machines Corporation Snapshot for world state recovery
CN110880147B (zh) * 2019-11-22 2022-08-26 腾讯科技(深圳)有限公司 一种交易处理方法、相关设备及计算机存储介质
CN111523897B (zh) * 2020-05-06 2023-04-07 杭州复杂美科技有限公司 防攻击方法、设备和存储介质
CN111667264B (zh) * 2020-05-08 2023-04-14 深圳启元信息服务有限公司 区块数据的传输方法、装置、电子设备及非易失性计算机存储介质
US11424922B2 (en) * 2020-05-14 2022-08-23 Paypal, Inc. Hashing schemes for cryptographic private key generation
CN111526217B (zh) * 2020-07-03 2020-10-09 支付宝(杭州)信息技术有限公司 一种区块链中的共识方法和***
US11875357B2 (en) * 2020-07-09 2024-01-16 Mastercard International Incorporated Method and system of using miner commitment to reward proofs
CN112068958A (zh) * 2020-08-31 2020-12-11 常州微亿智造科技有限公司 布隆过滤器和数据处理方法
CN111966538B (zh) * 2020-10-20 2021-04-27 支付宝(杭州)信息技术有限公司 一种区块链数据的恢复方法和装置
US11456949B1 (en) * 2020-11-18 2022-09-27 Quickbase, Inc. Routing networks with asynchronous message backup and replay
CN113032489B (zh) * 2021-03-29 2023-07-21 湖北央中巨石信息技术有限公司 一种基于区块链的异步共识方法及***及装置及介质
US20230214392A1 (en) * 2021-12-31 2023-07-06 Verizon Patent And Licensing Inc. Systems and methods for scalable off-chain storage of blockchain-secured data
CN117743472B (zh) * 2024-02-06 2024-05-07 之江实验室 一种存储任务断点同步方法、装置、介质及设备

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6247023B1 (en) * 1998-07-21 2001-06-12 Internationl Business Machines Corp. Method for providing database recovery across multiple nodes
US6920477B2 (en) * 2001-04-06 2005-07-19 President And Fellows Of Harvard College Distributed, compressed Bloom filter Web cache server
US7424498B1 (en) * 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US20070255823A1 (en) * 2006-05-01 2007-11-01 International Business Machines Corporation Method for low-overhead message tracking in a distributed messaging system
US8966252B2 (en) * 2007-03-13 2015-02-24 Board Of Trustees Of Michigan State University Private entity authentication for pervasive computing environments
US8601285B2 (en) * 2007-11-23 2013-12-03 Nokia Corporation Method for secure program code execution in an electronic device
US8732746B2 (en) * 2009-06-01 2014-05-20 Fourthwall Media, Inc. System for and method of targeting broadcast messages
US9179305B2 (en) 2009-06-11 2015-11-03 Qualcomm Incorporated Bloom filter based device discovery
US9195980B2 (en) 2009-10-30 2015-11-24 Nokia Technologies Oy Method and apparatus for recovery during authentication
JP2011130012A (ja) * 2009-12-15 2011-06-30 Sony Corp アクターノード、センサノード、担当区画変更方法、パラメータ変更方法、プログラムおよび情報処理システム
JP5359941B2 (ja) * 2010-03-10 2013-12-04 富士通株式会社 データ管理装置及びデータ管理方法
US8996563B2 (en) * 2010-04-06 2015-03-31 Tokutek, Inc. High-performance streaming dictionary
US8578049B2 (en) * 2010-10-04 2013-11-05 Futurewei Technologies, Inc. Content router forwarding plane architecture
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US20120271844A1 (en) * 2011-04-20 2012-10-25 Microsoft Corporation Providng relevant information for a term in a user message
US8935533B2 (en) * 2011-12-20 2015-01-13 Alcatel Lucent Method and apparatus for a scalable and secure transport protocol for sensor data collection
US9110792B1 (en) * 2012-03-12 2015-08-18 Emc Corporation System and method for cache replacement using bloom filter lookahead approach
US9086987B2 (en) * 2012-09-07 2015-07-21 International Business Machines Corporation Detection of conflicts between transactions and page shootdowns
US9086986B2 (en) * 2012-09-07 2015-07-21 International Business Machines Corporation Detection of conflicts between transactions and page shootdowns
CN103646111B (zh) * 2013-12-25 2017-02-15 普元信息技术股份有限公司 大数据环境下实现实时数据关联的***及方法
US9608829B2 (en) * 2014-07-25 2017-03-28 Blockchain Technologies Corporation System and method for creating a multi-branched blockchain with configurable protocol rules
EP3198539A4 (en) 2014-09-23 2018-05-16 Spondoolies Tech Ltd. System and method for providing shared hash engines architecture for a bitcoin block chain
US9727275B2 (en) * 2014-12-02 2017-08-08 International Business Machines Corporation Coordinating storage of data in dispersed storage networks
US10120739B2 (en) * 2014-12-02 2018-11-06 International Business Machines Corporation Prioritized data rebuilding in a dispersed storage network
US20170109735A1 (en) * 2015-07-14 2017-04-20 Fmr Llc Computationally Efficient Transfer Processing and Auditing Apparatuses, Methods and Systems
US20170228731A1 (en) * 2016-02-09 2017-08-10 Fmr Llc Computationally Efficient Transfer Processing and Auditing Apparatuses, Methods and Systems
US10339523B2 (en) * 2015-07-14 2019-07-02 Fmr Llc Point-to-point transaction guidance apparatuses, methods and systems
US20170060941A1 (en) * 2015-08-25 2017-03-02 Futurewei Technologies, Inc. Systems and Methods for Searching Heterogeneous Indexes of Metadata and Tags in File Systems
US11562353B2 (en) 2015-11-24 2023-01-24 Mastercard International Incorporated Method and system for gross settlement by use of an opaque blockchain
US10491377B2 (en) * 2017-02-28 2019-11-26 Google Llc Hashing using data parallel instructions

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ETHEREUM:A SECURE DECENTRALISED GENERALISED TRANSACTION LEDGER HOMESTEAD DRAFT;Gavin Wood;《http://web.archive.org/web/20160330220735if_/http://gavwood.com/paper.pdf》;20160330;全文 *

Also Published As

Publication number Publication date
US20170344435A1 (en) 2017-11-30
EP3465481B1 (en) 2024-02-28
US20190138401A1 (en) 2019-05-09
EP4224780A1 (en) 2023-08-09
US20220019503A1 (en) 2022-01-20
US10198325B2 (en) 2019-02-05
US11663090B2 (en) 2023-05-30
EP3465481A1 (en) 2019-04-10
CN114398519A (zh) 2022-04-26
US11163649B2 (en) 2021-11-02
WO2017204944A1 (en) 2017-11-30
SG11201808474YA (en) 2018-12-28
CN109313654A (zh) 2019-02-05

Similar Documents

Publication Publication Date Title
CN109313654B (zh) 使用布隆过滤器对被许可的区块链进行去同步恢复的方法和***
CN109313752B (zh) 使用审计保证形成用于被许可的区块链的高效共识机制的方法和***
CN109417483B (zh) 用于分区区块链和增强被许可的区块链的隐私的方法和***
US11973869B2 (en) Maintaining blocks of a blockchain in a partitioned blockchain network
US11444787B2 (en) Method and system for efficient distribution of configuration data utilizing permissioned blockchain technology
CN111953496A (zh) 用于使用数字签名的区块链变型的方法和***
US11341161B2 (en) Method and system for grouping of blockchain nodes for greater consensus
US12008023B2 (en) Method and system for grouping of blockchain nodes
CN118120183A (zh) 用于从区块链中修剪区块以用于数据保留和存储可扩展性目的的方法和***
CN117957528A (zh) 用于许可的区块链中智能合约的并行处理的方法和***
CN113849583A (zh) 一种基于关系数据库的区块链实现方法
EP4121926A1 (en) Method and system to delegate issuance capability to a third-party

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant