CN111985003A - 数据库恶意对等体识别 - Google Patents
数据库恶意对等体识别 Download PDFInfo
- Publication number
- CN111985003A CN111985003A CN202010426725.2A CN202010426725A CN111985003A CN 111985003 A CN111985003 A CN 111985003A CN 202010426725 A CN202010426725 A CN 202010426725A CN 111985003 A CN111985003 A CN 111985003A
- Authority
- CN
- China
- Prior art keywords
- peripheral
- peers
- blockchain
- peer
- hash value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000002093 peripheral effect Effects 0.000 claims abstract description 213
- 230000004044 response Effects 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims description 68
- 230000001902 propagating effect Effects 0.000 claims 1
- 238000003860 storage Methods 0.000 description 35
- 238000012545 processing Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 27
- 230000015654 memory Effects 0.000 description 24
- 230000006870 function Effects 0.000 description 19
- 238000010801 machine learning Methods 0.000 description 15
- 238000004132 cross linking Methods 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000006854 communication Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 238000012986 modification Methods 0.000 description 9
- 230000004048 modification Effects 0.000 description 9
- 238000012795 verification Methods 0.000 description 8
- 238000012163 sequencing technique Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000009412 basement excavation Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000003137 locomotive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3265—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Accounting & Taxation (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Development Economics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本公开涉及数据库恶意对等体识别。例证的操作可包括下述中的一个或多个:由区块链网络的一个或多个外围对等体中的每个接收来自排序者对等体的新区块,计算新区块的哈希值,确定计算的哈希值不同于来自大多数外围对等体的哈希值,确定与来自大多数外围对等体的不同哈希值对应的一个或多个区块不同于新区块,和作为响应,停止向区块链网络提交区块。
Description
技术领域
本申请一般涉及检测恶意排序者或外围对等体的方法和系统,更特别地,涉及数据库恶意对等体识别。
背景技术
集中式数据库在位于一个位置的单个数据库(例如数据库服务器)中存储和维持数据。该位置通常是中央计算机,例如,桌上型中央处理器(CPU)、服务器CPU或者大型计算机。存储在集中式数据库上的信息通常可以从多个不同的位置访问。例如,基于客户端/服务器配置,多个用户或客户端工作站可以同时在集中式数据库上工作。由于其位置单一,集中式数据库易于管理、维持和控制,尤其是对安全性来说。在集中式数据库内,数据冗余被降至最小,因为所有数据的单个存储地点也意味给定的一组数据只有一条主记录。
然而,集中式数据库存在重大的缺陷。例如,集中式数据库存在单点故障。特别地,如果没有容错考虑,并且发生了硬件故障(例如硬件、固件和/或软件故障),那么数据库中的所有数据都丢失,所有用户的工作都中断。另外,集中式数据库高度依赖于网络连接。结果,连接越慢,每次访问数据库所需的时间就越长。另一个缺陷在于当集中式数据库由于位置单一而经历高通信量时,就会出现瓶颈。此外,集中式数据库提供有限的数据访问,因为数据库只维持数据的一个副本。结果,多个设备不能同时访问同一项数据,否则会产生严重的问题或者冒着重写存储的数据的风险。此外,由于数据库存储系统几乎没有数据冗余,因此除了通过手动操作从备份存储中恢复以外,意外丢失的数据很难恢复。因而,需要一种克服这些缺陷和限制的解决方案。
发明内容
一个例证实施例提供一种包含区块链网络的系统,所述区块链网络包括排序者对等体和一个或多个外围对等体中的一个或多个,所述排序者对等体被配置成创建和传播新区块,所述一个或多个外围对等体耦接到所述排序者对等体,每个外围对等体被配置成进行下述中的一个或多个:计算新区块的哈希值(hash),确定计算的哈希值不同于来自大多数外围对等体的哈希值,确定与来自大多数外围对等体的不同哈希值对应的一个或多个区块不同于新区块,和作为响应,停止向区块链网络提交区块。
再一个例证实施例提供一种方法,所述方法包括下述中的一个或多个:由区块链网络的一个或多个外围对等体中的每个接收来自排序者对等体的新区块,计算新区块的哈希值,确定计算的哈希值不同于来自大多数外围对等体的哈希值,确定与来自大多数外围对等体的不同哈希值对应的一个或多个区块不同于新区块,和作为响应,停止向区块链网络提交区块。
另一个例证实施例提供一种包含指令的非临时性计算机可读介质,当由处理器读取时,所述指令使所述处理器进行下述中的一个或多个:由区块链网络的一个或多个外围对等体中的每个接收来自排序者对等体的新区块,计算新区块的哈希值,确定计算的哈希值不同于来自大多数外围对等体的哈希值,确定与来自大多数外围对等体的不同哈希值对应的一个或多个区块不同于新区块,和作为响应,停止向区块链网络提交区块。
附图说明
图1A按照例证实施例,图解说明处理新区块的系统的方框图。
图1B按照例证实施例,图解说明处理新区块序列的系统的方框图。
图2A按照例证实施例,图解说明例证的区块链体系结构配置。
图2B按照例证实施例,图解说明区块链交易流。
图3A按照例证实施例,图解说明许可型网络。
图3B按照例证实施例,图解说明另一种许可型网络。
图3C按照例证实施例,图解说明非许可型网络。
图4按照例证实施例,图解说明进行区块完整性检查的系统消息接发图。
图5A按照例证实施例,图解说明核实区块链中的新区块的例证方法的流程图。
图5B按照例证实施例,图解说明核实区块链中的区块序列的例证方法的流程图。
图5C按照例证实施例,图解说明防止区块链中的漏洞的例证方法的流程图。
图6A按照例证实施例,图解说明配置成进行记载在本文中的一个或多个操作的例证系统。
图6B按照例证实施例,图解说明配置成进行记载在本文中的一个或多个操作的再一种例证系统。
图6C按照例证实施例,图解说明配置成利用智能合约的另一种例证系统。
图6D按照例证实施例,图解说明配置成利用区块链的另一种例证系统。
图7A按照例证实施例,图解说明对于添加到分布式分类账的新区块的处理。
图7B按照例证实施例,图解说明新数据区块的内容。
图7C按照例证实施例,图解说明用于数字内容的区块链。
图7D按照例证实施例,图解说明可表示区块链中的各个区块的结构的区块。
图8A按照例证实施例,图解说明存储机器学习(人工智能)数据的例证区块链。
图8B按照例证实施例,图解说明例证的量子安全区块链。
图9图解说明支持一个或多个例证实施例的例证系统。
具体实施方式
易于理解的是正如本文图中所说明和例示的,目前的各个组件可以按各种不同的配置进行排列和设计。从而,如在附图中表示的方法、设备、非临时性计算机可读介质和系统至少之一的实施例的以下详细说明并不意图限制要求保护的本申请的范围,相反仅仅是所选实施例的代表。
在一个或多个实施例中,可以按任何适当的方式组合或移除在本说明书中记载的目前的各个特征、结构或特性。例如,贯穿本说明书的短语“例证实施例”、“一些实施例”或者其他类似语言的使用指的是结合该实施例说明的特定特征、结构或特性可以包含在至少一个实施例中。从而,贯穿本说明书的短语“例证实施例”、“在一些实施例中”、“在其他实施例中”或者其他类似语言的出现不一定都指的是同一组实施例,在一个或多个实施例中,可以按任何适当的方式组合或移除记载的特征、结构或特性。此外,在附图中,元件之间的任意连接可以允许单向和/或双向通信,即使描述的连接是单向或双向箭头。另外,附图中描述的任意设备可以是不同的设备。例如,如果显示移动设备在发送信息,那么有线设备也可以用来发送该信息。
另外,尽管在实施例的说明中使用了术语“消息”,不过,本申请可以适用于许多类型的网络和数据。此外,尽管在例证实施例中描述了某些类型的连接、消息和信令,不过,本申请不限于某种类型的连接、消息和信令。
例证实施例提供可提供数据库恶意对等体识别的方法、系统、组件、非临时性计算机可读介质、设备和/或网络。
在一个实施例中,本申请利用作为分布式存储系统的去中心化数据库(比如区块链),所述去中心化数据库包括相互通信的多个节点。去中心化数据库包括只可追加的不可变数据结构,类似于能够在互不信任的各方之间维持记录的分布式分类账。互不信任的各方在本文中被称为对等体或对等体节点。每个对等体维持数据库记录的副本,并且如果未在分布的各个对等体之间达成共识,那么任何单个对等体都不能修改数据库记录。例如,对等体可以执行共识协议来验证区块链存储交易,将存储交易分成区块,并对于这些区块构建哈希链。该处理通过考虑到一致性,根据需要对存储交易进行排序,形成分类账。在各个实施例中,可以使用许可型区块链和/或非许可型区块链。在公有或非许可型区块链中,任何人都可以在没有特定身份的情况下参与。公有区块链可涉及原生(native)加密货币,并使用基于各种协议,比如工作量证明(PoW)的共识。另一方面,许可型区块链数据库提供一组实体之间的安全交互,这些实体有共同的目标,但是彼此并不完全信任,比如交换资金、商品、信息等的企业。
本申请可以利用操作任意的可编程逻辑的区块链,所述任意的可编程逻辑是按去中心化存储方案定制的,称为“智能合约”或“链码”。在一些情况下,对于管理功能和参数,可能存在专门的链码,这些链码被称为系统链码。本申请还可利用智能合约,智能合约是充分利用区块链数据库的防篡改性质和节点之间的底层协议(称为背书或背书策略)的可信的分布式应用。与本申请关联的区块链交易可以在被提交给区块链之前经过“背书”,而未经背书的交易则被忽视。背书策略允许链码以背书所需的一组对等节点的形式为交易指定背书人。当客户端将交易发送给背书策略中指定的对等体时,交易被执行以验证该交易。在验证之后,交易进入排序阶段,在排序阶段,使用共识协议来产生分组成各区块的已背书交易的有序序列。
本申请可以利用作为区块链系统的通信实体的节点。从不同类型的多个节点可以在同一物理服务器上运行的意义来说,“节点”可以进行逻辑功能。节点在信任域中被分组,并且与以各种方式控制它们的逻辑实体关联。节点可包括不同的类型,比如客户端或提交客户端节点,客户端或提交客户端节点向背书人(例如,对等体)提交交易调用,并向排序服务(例如,排序节点)广播交易提案。另一种类型的节点是对等体节点,它可以接收客户端提交的交易,提交交易,和维持区块链交易的分类账的状态和副本。对等体还可以扮演背书人的角色,尽管这不是必需的。排序服务节点或者排序者是为所有节点运行通信服务的节点,它实现交付保证,比如在提交交易和修改区块链的世界状态时向系统中的每个对等体节点的广播,这是通常包含控制和设置信息的初始区块链交易的另一个名称。
本申请可以利用分类账,分类账是区块链的所有状态转换的有序的、防篡改的记录。状态转换可以源于由参与各方(例如,客户端节点、排序节点、背书人节点、对等体节点等)提交的链码调用(即,交易)。每个参与方(比如对等体节点)可以维持分类账的副本。交易可以导致一组资产键值对,所述一组资产键值对作为一个或多个操作数,比如创建、更新、删除等被提交给分类账。分类账包括用于以区块的形式存储不可变的有序记录的区块链(也被称为链)。分类账还包括维持区块链的当前状态的状态数据库。
本申请可以利用作为交易日志的链,所述交易日志是作为哈希链接的区块构成的,每个区块包含一系列的N个交易,其中N等于或大于1。区块头包括区块的交易的哈希值,以及前一个区块的区块头的哈希值。这样,分类账上的所有交易可按顺序排列,并且加密地链接在一起。因而,在不破坏哈希链接的情况下,不可能篡改分类账数据。最近添加的区块链区块的哈希值表示在它之前的链上的每个交易,使得能够确保所有对等体节点都处于一致且可信的状态。链可以保存在对等体节点文件系统(即,本地、附加存储器、云等)上,从而有效地支持区块链工作负载的只可追加性质。
不可变的分类账的当前状态表示链交易日志中所包含的所有键的最新值。由于当前状态表示已为通道所知的最新键值,因此它有时被称为世界状态。链码调用针对分类账的当前状态数据执行调用。为了使这些链码调用高效,键的最新值可被存储在状态数据库中。状态数据库可以只是链的交易日志的索引视图,于是它可以随时从链中重新生成。在交易被接受之前,状态数据库可以在对等体节点启动时自动恢复(或在需要时生成)。
本文中说明和描述的目前的解决方案的一些益处包括在许可型区块链网络中检测恶意排序者对等体或外围对等体的新能力,以及在一组顺序的连续区块内检测恶意行为的批处理。
公开的处理不可能在传统数据库上而不是在区块链上实现,因为目前的处理利用关于新区块提交和共享分类账的分布式共识来存储提交的区块。传统数据库缺乏这些处理和结构。
本申请通过在区块链网络内检测可能恶意行事,从而损坏数据或者存储修改后的数据的对等体,来对利用区块链的计算机功能进行功能改进。尽管许可型区块链网络有时被认为是天生安全的,不过在提交阶段,损坏的区块仍然有可能被存储到区块链中。通过检测损坏的或者被更改的区块,维护网络安全和完整性。没有新数据被存储在区块链的区块中。
在区块链网络中,每个对等体包括共享分类账,共享分类账包括通常被分组成区块,以便有效地分发的交易的有序序列。在一些许可型区块链网络中,存在一组专用于将交易排序和批处理成区块的对等体(下面称为“排序对等体”或者“排序者”),并将所述区块分发给区块链网络的其余对等体(下面称为“外围对等体”)。分发是通过使外围对等体从排序对等体拉取区块,使排序对等体将区块发送给外围对等体,通过涉及前述两种方法之一的方法,或者通过涉及一种前述方法的方法,不过也可以通过使外围对等体互相发送区块,而不是直接从排序对等体接收区块来完成的。
在大多数区块链网络中,利用非对称加密,比如(但不限于)RSA或ECDSA签名方案对区块链网络参与者发送的交易签名。由于排序对等体缺少私钥,因此它们不能在保持签名的有效性的同时修改发送的待排序交易,因为这需要相当大的计算能力。
许可型区块链网络的威胁模型可以考虑恶意排序对等体或恶意外围对等体。恶意排序对等体可能与其他排序对等体串通,向外围对等体提供不同的区块,甚至与外围对等体串通(取决于它们的威胁模型)变更它们的协议。恶意排序对等体的百分比没有上限。如果外围对等体与其他外围对等体充分合作并且遵守协议,那么它们可被认为是诚实的。如果外围对等体可运行修改过的协议版本,并且试图阻止诚实对等体发现它们不遵守诚实对等体所执行的协议,那么它们可被认为是恶意的。
在超级分类账架构(Hyperledger Fabric)v0.6中,体系结构是围绕执行拜占庭共识协议(即,PBFT)的按全网状拓扑连接的一小部分验证器对等体构建的,并且所有对等体定期通过检查点机制交换区块哈希值。如果在进行后向哈希链验证,以确保从远程验证器对等体取得的区块序列的完整性之后,验证器对等体从发布对应哈希值的其他对等体收集到给定序列号的f+1个相同哈希值,以安全地同步它们自己的分类账,那么验证器对等体可以使用这些哈希值。
超级分类账架构v0.6中的假设在于f是拜占庭验证器对等体的数量的完全上限,从而如果验证器节点收到给定区块序列的相同哈希值的f+1认证,那么它不会达到分叉世界状态。然而,超级分类账架构v0.6的体系结构与本申请说明的体系结构有着根本的不同,即,它是一个同构的体系结构,因而它不适合其中在切割区块的对等体的中央核心周围部署许多对等体的用例。在这样的布局中,外围对等体不能使用在超级分类账架构v0.6中实现的机制作为黑盒,因为即使恶意外围对等体的百分比存在上限,收集相同区块哈希值Hi的f+1认证也毫无意义,因为由于区块不是由外围对等体切割的,因此可能存在收集关于不同区块哈希值Hj≠Hi的认证的一组不同的f+1个外围对等体,从而在没有检测的情况下会发生链分叉。另外,如果外围对等体使用了超级分类账架构v0.6机制,那么在没有早期检测的情况下,仍然可能发生分叉。超级分类账架构v0.6协议和实现不在对等体之间传递性地中继信息,而是只具有点对点传播。从而它在大规模部署中并不实用,而本申请建议使用与签名消息结合的闲聊协议。这允许以高效且可扩展的方式传播数据,并且增加了检测和揭露投票支持两个不同哈希值的外围对等体的能力,从而抑制此类行为。
本申请的目的是检测分叉攻击,即使所有的排序对等体都是恶意的,只要它们不强制外围对等体采用不同的区块即可。尽管排序对等体不能改变将出现在区块中的交易(因为它们缺少交易提交者的私钥),但是它们仍然可以通过向不同的外围对等体发送不同的区块来造成链分叉,从而损害区块链的完整性。这可能会通过使不同客户端看到区块链数据的不同视图,从而蓄意破坏读取共享分类账中的交易的客户端应用。
就崩溃容错(CFT)排序服务来说,检测状态分歧的能力是非常关键并且重要的性质。它可以允许为外部监视系统发布报警事件。此外,拜占庭容错(BFT)排序服务可以减轻链分叉的风险,因为可能无法保证对抗性排序服务对等体数量增长超过排序服务网络总规模的三分之一的阈值。
本公开介绍了在几个假设下,检测区块链网络100的对等体的链分叉尝试的方法。
首先,由非恶意(诚实)排序对等体创建的区块都具有单调递增且连续的序列。第一个区块被排序为0,创建的下一个区块被排序为1,依次类推。通过不创建特定序列的区块,恶意排序节点就不能创建链分叉,因为它等同于具有崩溃故障,随后恢复的诚实排序节点。其次,排序对等体加密地对它们输出给网络的区块进行签名,每个块都带有节点的标识符,比如(但不限于)x509证书。签名可以利用标识符来核实,并且标识符本身可以利用某种身份基础设施(比如(但不限于)开始于节点的标识符,并且终止于核实者节点信任的认证机构的认证机构验证链)来核实。
第三,外围对等体都使用相同的加密哈希函数H。
图1A按照例证实施例,图解说明处理新区块的系统的方框图。参见图1A,网络100包括排序者对等体104、外围对等体108、其他外围对等体112和共享分类账128。网络100是许可型区块链网络,比如超级分类账架构区块链网络。
本文中的协议利用区块链网络100的节点总数的阈值,这意味对等体是可计数的,并且对等体的数量是已知数。在诸如比特币之类的公有区块链网络中,节点数从来不是已知的,并且拜占庭节点的百分比的阈值(这里表示成f)不存在,因为恶意方可以通过为其节点生成身份,将所希望的任意多的节点加入区块链网络中,并且自己运行不止f个节点。
排序者对等体104从区块链网络100内的其他对等体接收已背书区块链交易,并将各组交易聚集到新区块116中。尽管例示了一个排序者对等体104,不过应明白的是在区块链网络100中,可存在任意数量的排序者对等体104。为了简化网络100的描述和帮助理解公开的处理,显示了一个排序者对等体104。当排序者对等体104创建新区块116时,它将新区块116传送给区块链网络100的外围对等体108、112。外围对等体108、112是区块链网络100中不是排序者对等体104的所有其他对等体,通常被认为是区块链对等体。
在公开的处理中,网络100的所有外围对等体108、112都并行地操作公开的处理。然而,说明和处理关注于在单个外围对等体(外围对等体108)内发生了什么,以及它如何与网络中的其他外围对等体112协作。于是应明白的是关于外围对等体108讨论的操作同时在每个外围对等体112中发生。在区块链网络100中可存在任意数量的外围对等体108、112。
响应于收到新区块116,外围对等体108计算新区块116的哈希值120。同时,外围对等体108向区块链网络100中的大多数外围对等体112请求新区块116的哈希值。其他外围对等体112中的每一个也都这样做。外围对等体108从大多数其他外围对等体112接收请求的哈希值128,比较请求的哈希值128和计算的哈希值120。如果所有请求的哈希值128和计算的哈希值120相同,那么新区块116有效,外围对等体108作为存储到区块链网络100的共享分类账132的提交区块136地包含该新区块。如果请求的哈希值128中的一个或多个和计算的哈希值120不同,那么很可能创建新区块116的排序者对等体104可能是恶意的。
外围对等体108之后通过向提供与计算的哈希值120不匹配(miscompare)的请求哈希值128的每个外围对等体112请求所述新区块,核实排序者对等体104是否是恶意的。这些外围对等体112将请求的区块124提供给外围对等体108,外围对等体108随后比较请求的区块124和外围对等体108接收的新区块116。如果请求的区块124与新区块116不同,那么创建新区块116的排序者对等体104是恶意的排序者对等体104。
(不参与交易的排序的)诚实外围对等体108、112没有动机就他们从排序对等体104接收的区块向每个节点撒谎,因为由于外围对等体108、112不和排序对等体104串通,对外围对等体108、112来说感兴趣的是具有相同的共享分类账132内容。另外,可以要求每个对等体通过发送区块本身来证明它对区块的断言,从而暴露其谎言,因为区块是由排序节点104签名的。于是,在其中外围对等体108、112可就他们从排序对等体104接收的区块撒谎的任何环境中,可以与这里概述的协议一起运行通过从外围对等体108、112接收这些块来要求证明的独立协议。在恶意外围对等体108、112的情况下,它们可能向诚实对等体撒谎,并且可能与排序对等体104或者其他外围对等体108、112串通,以使不同的诚实对等体采用包含不同交易的区块,或者具有相同的交易但是顺序不同的区块。认为可以接受的是恶意对等体采用与诚实对等体不同的区块,但是所有的诚实对等体必须采用相同的区块。
区块链网络中的恶意外围对等体108、112的数量不能超过外围对等体总数的某个(公知的)百分比。具体地,网络中的可能的恶意外围对等体108、112的数量的上限是已知的,这里表示成f。外围对等体108、112都共享为区块链网络100中的每个人都知道的公共数字B。对等体以大小B为一批地排列从排序对等体104接收的区块。如果对等体未收到区块bi,但是收到区块bj,j>i,那么保证最终从排序对等体104或者外围对等体108、112收到bi。另外,外围对等体108、112都共享为区块链网络100中的所有实体已知的公共持续时间Tout。
本申请的数据结构可以驻留在存储器中或者盘上,或者驻留在任何类型的存储装置或存储装置的组合中。外围对等体108、112都将区块维持在从0开始,一直到接收的最新区块的各个区块的依次且连续的有序列表中。所述列表中的各个区块的哈希值用作默克尔树154中的叶子,每次收到并验证区块时,在每个外围对等体108、112都重建和重新计算默克尔树154。外围对等体108、112不断相互通知他们最新验证和未验证的区块序列。已验证区块被认为是已存储到共享分类账132的区块,是默克尔树154中的叶子,而未验证区块则不是。由于区块按顺序进入共享分类账132,因此如果bj是已验证区块,那么也被验证。
对等体咨询其他外围对等体108、112的阈值计数(以下称为t),以便经受其中排序对等体104向不同的对等体发布不同的区块,或者恶意外围对等体108、112(如果适用的话)不遵守其协议,以便使诚实对等体采用区块的不同集合的情形。对等体需要咨询的阈值计数t取决于威胁模型。对于诚实外围对等体108、112,阈值计数t可包括所有外围对等体108、112之中的外围对等体108、112总数的至少50%,这意味包括该对等体本身至少为50%+1。对于恶意外围对等体108、112:(提示:恶意对等体计数的上限表示为f)=所有外围对等体108、112之中的外围对等体108、112总数的至少50%+f,这意味包括该对等体本身至少为50%+f+1。对等体不需要直接相互通信来收集哈希值的阈值计数,但是也可以对它们希望发布的数据进行签名,并用诸如(但不限于)闲聊、广播等的传播协议,在外围对等体108、112之间传播所述数据。
如前所述,对等体以大小B为一批地排列从排序服务接收的区块。如果对等体未收到区块bi,但是确实收到区块bj,j>i,那么保证最终从排序对等体104或者外围对等体108、112收到bi。由此可以得出如果对等体收到一批区块中的所有区块bi·B,bi·B+1,…b(i+1)·B-1,但是未收到一组区块bj,…bj+k,约束条件为j+k<(i+1)·B-1,那么它最终将获得缺失的区块。
然而,如果存在缺失的一组连续索引,并且所述一组连续索引中的最后一个是(i+1)·B-1,那么(显然)完全不能保证对等体会收到它们,因为可能这是正在接收的最后一批,并且任意排序对等体104没有创建任何新区块。这种情况下,那么Tout表示在对等体决定进行协议的步骤(2)之前会等待的时限。
在算法上如上描述协议本身:
1.在外围对等体p收到B个区块bi,bi+1,…bi+B-1之时:
向t个外围对等体(表示对等体的集合Q)咨询它们的未验证区块序列和已验证区块序列。
a.如果未找到具有已验证区块序列b′i,b′i+1,…b′i+B-1的对等体,那么从t个对等体取回它们已收到的哈希值H(bi),H(bi+1),…H(bi+B-1),如果适用的话。
如果没有收集到这样的t个哈希值-那么返回步骤(1)。
b.如上所述,如果存在具有区块序列bi,bi+1,…bi+B-1的节点q∈Q,则意味该节点已构建了在其最低级别(叶级别)包含这些区块的默克尔树。
从q获得其叶子是哈希值H(bi),H(bi+1),…H(bi+B-1)的默克尔树的根哈希值(如上所述,q维持这样的默克尔树,并且由于rB只取决于bi,bi+1,…bi+B-1,因此不管q的分类账高度是多少,它都将保持不变)。
ii.否则,认为bi,bi+1,…bi+B-1经过验证,将它们提交给共享分类账,并更新默克尔树。
2.如果在时限Tout内未及时从区块链网络100收到B个区块,那么:
a.令bi,bi+1,…bi+k,约束条件为k<B-1是从区块链网络100接收的最后区块。
b.将区块zi+k+1,…zi+B-1定义为最后一批中缺失的区块,并将它们的哈希值表示为0。
c.对各个区块进行步骤(1)的协议,同时向t个外围对等体咨询区块bi,bi+1,…bi+k,zi+k+1,…zi+B-1,但是在联系其他对等体时-指定索引i+k,…i+B-1,万一所联系的对等体q在查询时收到新区块的话。
注意:步骤1也可以通过发送其叶子是区块b′i,b′i+1,…b′i+B-1的哈希值的默克尔树根来进行,不过为了简单起见和易于区分已提交并且已为其构建默克尔树的已验证区块和未验证区块,协议不对步骤1a使用默克尔树。另外,默克尔树方法可以用以下述方式:H(H(bi)||H(bi+1)…||H(bB+i-1))定义的累积哈希或者类似的方式替代。
当外围对等体互相咨询它们的区块哈希值时,它们可以采用它们的区块哈希值,或者检测链分叉尝试。区块可被模拟成外围对等体输入协议中的值,输出要么是他们提出的区块,要么是分叉尝试的事件。
所公开的协议实现可中止共识的性质。
一致有效性教导:“如果处理决定v,那么某个处理以前提出过v”。于是,如果外围对等体采用某个区块,那么这意味有t个其他外围对等体或者在过去也提出了该区块(该区块已被验证),或者在本轮中也提出了该区块(该区块之前未被任何外围对等体验证过)。
一致性教导:“正确的处理不会决定不同的值”。于是,反过来假定存在2个外围对等体p和q,以致p采用具有哈希值Hp的区块bi,而q采用具有哈希值Hq的区块bi。由于每个外围对等体咨询至少50%+f的其他外围对等体,因此存在p和q两者都咨询过的诚实外围对等体r。根据该假设和协议,得出r告知q其bi的哈希值为Hq,并告知p其bi的哈希值为Hp。于是,r不遵守协议,从而是恶意的,这是矛盾的。
终止教导:“最终,所有正确的处理要么决定要么中止”。从协议可以容易地得出对于外围对等体与其他对等体咨询的每个区块,它要么只被告知它为区块本身计算的哈希值,要么被告知不同的哈希值,然后它终止协议,因为检测到链分裂尝试。
α-可中止性教导:“存在α<1,以致对于其中大多数处理都正确的任何故障模式,存在由于该故障模式而在运行中异常中止的某个处理的概率至多为α”。将外围对等体的数量表示为n,恶意外围对等体的数量表示为f,以致2f<n。令p是外围对等体。为了计算简单起见,假定它关于它所拥有的区块恰好(而不是至少)咨询个其他外围对等体。只选择诚实外围对等体的概率为:并且由于每个外围对等体都独立地进行选择,因此对于给定区块批次,所有诚实外围对等体都不选择任何恶意外围对等体的概率为(phonest)n-f,这意味某个处理在运行中异常中止的概率α至多为:α=1-(phonest)n-f。
图1B按照例证实施例,图解说明处理新区块序列的系统的方框图。参见图1B,网络150包括参考图1A说明的相同的对等体104、108、112和共享分类账132,但是表示其中处理区块序列170,而不是单个区块116的系统150。区块序列170是一组两个或更多个连续的区块。
为了使协议更高效,应节约网络带宽,并且优选应使传送的数据量降至最小。为此,区块被安排成某个全球已知的批量大小B的批次,对于区块或区块序列170的区块的每个此类批次,创建默克尔树154,其中默克尔树154的叶节点是该批次的区块哈希值。为了使两个外围对等体108、112比较批次中的区块的所有哈希值,只需要比较默克尔树154的根节点哈希值158。假定默克尔树的哈希函数是抗碰撞的,当且仅当两个外围对等体108、112拥有的默克尔树根节点哈希值158相等时,该批次的所有区块哈希值才相同。这节省了网络带宽,而且与如图1A中所示一次比较一个区块更高效,因为相同的默克尔树根节点哈希值158可被发送给区块链网络150中的所有外围对等体108、112。
然而,存在一种需要解决的极端情况:由于区块链是逐个而不是成批地增加区块,因此可能已过去太长的时间(这里表示成Tout),而区块链网络150仍然可能没有足够的区块来填充一批B个区块。在这种情况下,外围对等体118、112只是用为零的哈希值来填充该批次中的剩余空位,计算默克尔树根节点哈希值158,并将其连同为零、而不是实际的区块哈希值的索引一起发送给对等体。
每个外围对等体118、112包括默克尔树154。默克尔树154包括均存储区块的哈希值的叶节点。默克尔树154具有根节点,根节点存储整个默克尔树154的根节点哈希值158。从而,通过比较根节点哈希值158,外围对等体118、112可确定两个或更多个默克尔树154是相同的。
如果默克尔树154是在经过验证(提交)的区块的哈希值上构建的,那么当收到未被验证的区块时-可以如以前一样发送它们的哈希值,并咨询外围对等体108、112。否则,如果默克尔树154是不考虑区块的有效性,在区块的哈希值上构建的,那么当收到未被验证的区块时,默克尔树154需要连同默克尔树154一起不断被更新。对等体还发送非零的区块的连续前缀的范围(以便让其他外围对等体108、112明白哪些叶子对应于未包含在默克尔树154构建中的区块)。
响应于收到区块序列170,外围对等体108通过计算区块序列170的各个区块的哈希值,并将计算的哈希值存储到它自己的默克尔树154的叶节点,将区块序列170添加到它自己的默克尔树154。同时,外围对等体108向区块链网络100中的大多数外围对等体112请求它们自己的默克尔树154的根节点哈希值158。回想一下,每个外围对等体108、112并行地执行这些步骤,包括用区块序列170的哈希值更新它自己的默克尔树154。外围对等体108从大多数其他外围对等体112接收请求的根节点哈希值162,并比较请求的根节点哈希值128和它自己的根节点哈希值158。如果所有请求的根节点哈希值162都和外围对等体108的根节点哈希值158相同,那么区块序列170是有效的,外围对等体108作为存储到区块链网络100的共享分类账132的提交区块136地包含区块序列170。如果请求的根节点哈希值162中的一个或多个和外围对等体108的根节点哈希值158不同,那么很可能创建区块序列170的排序者对等体104可能是恶意的。
外围对等体108之后通过向提供与外围对等体108的根节点哈希值158不匹配的请求根节点哈希值162的每个外围对等体112请求区块序列,核实排序者对等体104是否是恶意的。这些外围对等体112将请求的区块序列166提供给外围对等体108,外围对等体108随后比较请求的区块序列166和外围对等体108接收的区块序列170。如果请求的区块序列166与区块序列170不同,那么创建区块序列170的排序者对等体104是恶意的排序者对等体104。
图2A按照例证实施例,图解说明区块链体系结构配置200。参见图2A,区块链体系结构200可包括某些区块链元素,例如,一组区块链节点202。区块链节点202可包括一个或多个节点204-210(仅仅举例描述了这4个节点)。这些节点参与许多活动,比如区块链交易添加和验证处理(共识)。区块链节点204-210中的一个或多个可以基于背书策略为交易背书,并且可以为体系结构200中的所有区块链节点提供排序服务。区块链节点可以发起区块链认证,并试图写入存储在区块链层216中的区块链不可变分类账,分类账的副本也可以存储在支撑性物理基础设施214上。区块链配置可包括一个或多个应用224,应用224可连接到应用编程接口(API)222,以访问和执行存储的程序/应用代码220(例如,链码、智能合约等),程序/应用代码220可以按照参与者所寻求的定制配置来创建,可以维持它们自己的状态,控制它们自己的资产,和接收外部信息。这可被部署成交易,并通过附加到分布式分类账,安装在所有区块链节点204-210上。
区块链基础或平台212可包括各种层次的区块链数据、服务(例如,加密信任服务、虚拟执行环境等),和支撑性物理计算机基础设施,所述计算机基础设施可以用于接收和存储新的交易,并提供对正试图访问数据条目的审计者的访问。区块链层216可以暴露提供对处理程序代码和接合物理基础设施214所需的虚拟执行环境的访问的接口。加密信任服务218可用于核实诸如资产交换交易之类的交易,和使信息保持私密性。
图2A的区块链体系结构配置可以通过由区块链平台212暴露的一个或多个接口和提供的服务,处理和执行程序/应用代码220。代码220可控制区块链资产。例如,代码220可以存储和传送数据,可以由节点204-210以智能合约和具有条件的关联链码或者受其执行所影响的其他代码元素的形式执行。作为非限制性例子,可以创建智能合约来执行提醒、更新和/或受更改、更新等影响的其他通知。智能合约本身可以用来识别与授权和访问要求,以及分类账的使用关联的规则。例如,信息226可包括来自排序者对等体的新区块或新区块序列,可由包含在区块链层216中的一个或多个处理实体(例如,虚拟机)处理。结果228可包括对其他外围对等体的提供哈希值和区块的请求,以便进行比较,从而检测恶意行为。物理基础设施214可以用于取回记载在本文中的任意数据或信息。
智能合约可以通过高级应用和编程语言来创建,随后被写入区块链之中的区块中。智能合约可包括通过区块链(例如,区块链对等体的分布式网络)登记、存储和/或复制的可执行代码。交易是智能合约代码的执行,它可响应与智能合约关联的条件得到满足而进行。智能合约的执行可以触发对数字区块链分类账的状态的可信修改。由智能合约执行所引起的对区块链分类账的修改可以通过一种或多种共识协议,在区块链对等体的整个分布式网络中自动复制。
智能合约可以将数据以键值对的格式写入区块链中。此外,智能合约代码可以读取存储在区块链中的值,并在应用操作中使用它们。智能合约代码可将各种逻辑运算的输出写入区块链中。代码可用于在虚拟机或其他计算平台中创建临时数据结构。写入区块链的数据可以是公开的,和/或可以加密从而维持私密状态。智能合约所使用/生成的临时数据由提供的执行环境保存在存储器中,随后一旦识别出区块链所需的数据,就删除所述临时数据。
链码可以包括智能合约的代码解释,并具有附加特征。如本文中所述,链码可以是部署在计算网络上的程序代码,在所述计算网络中,链码在共识过程中由链验证器一起执行和验证。链码接收哈希值,并从区块链取回与通过利用预先保存的特征提取器创建的数据模板关联的哈希值。如果哈希标识符的哈希值和从保存的标识符模板数据创建的哈希值匹配,那么链码将授权密钥发送给请求的服务。链码可被写入与加密细节关联的区块链数据中。
图2B按照例证实施例,图解说明区块链的节点之间的区块链交易流250的例子。参见图2B,交易流可包括由应用客户端节点260发送给背书对等体节点281的交易提案291。背书对等体281可核实客户端签名,并执行链码函数以发起交易。输出可包括链码结果,在链码中读取的键/值版本的集合(读取集合),和写入链码中的键/值的集合(写入集合)。如果被批准,那么提案响应292连同背书签名一起被发送回客户端260。客户端260将背书组装到交易有效负载293中,并向排序服务节点284广播交易有效负载293。排序服务节点284随后将排序的交易作为区块传递给通道上的所有对等体281-283。在提交给区块链之前,每个对等体281-283可以验证交易。例如,对等体可检查背书策略,以确保指定对等体的正确分配已经对结果进行签名,并且对照交易有效负载293认证了签名。
再次参见图2B,客户端节点260通过构建请求,并将请求发送给作为背书人的对等体节点281来发起交易291。客户端260可包括充分利用支持的软件开发工具包(SDK)的应用,所述SDK利用可用的API来生成交易提案。该提案是调用链码函数,以致可以读取数据和/或将数据写入分类账(即,为资产写入新的键值对)的请求。SDK可以充当填充程序(shim),以将交易提案打包成适当架构的格式(例如,通过远程过程调用(RPC)的协议缓冲区),并且获取客户端的加密凭证,以产生交易提案的唯一签名。
作为响应,背书对等体节点281可以核实:(a)交易提案是良好地形成的,(b)过去未提交过该交易(重放-攻击保护),(c)签名有效,和(d)提交者(本例中,客户端260)被适当授权,以在该通道上进行提议的操作。背书对等体节点281可以将交易提案输入作为调用的链码函数的实际参数。随后针对当前状态数据库执行链码,以产生包括响应值、读取集合和写入集合的交易结果。然而,此时不对分类账进行任何更新。在292,值的集合,连同背书对等体节点281的签名一起作为提案响应292被传回客户端260的SDK,该SDK解析有效负载,以供应用使用。
作为响应,客户端260的应用检查/核实背书对等体签名,并比较提案响应,以判定提案响应是否相同。如果链码仅仅查询分类账,那么应用将检查查询响应,并且一般不会将交易提交给排序节点服务284。如果客户端应用打算将交易提交给排序节点服务284,以更新分类账,那么该应用在提交之前,判定指定的背书策略是否已得到满足(即,是否交易所需的所有对等体节点都对交易进行了背书)。这里,客户端可以只包括交易的多方之一。这种情况下,每个客户端可以具有它们自己的背书节点,并且每个背书节点需要对交易进行背书。该体系结构使得即使应用选择不检查响应,或者以其他方式转发未背书的交易,背书策略也仍将由对等体强制执行,并在提交验证阶段得到维持。
在成功检查之后,在步骤293,客户端260将背书组装到交易中,并在交易消息内向排序节点284广播交易提案和响应。交易可包含读取/写入集合,背书对等体签名和通道ID。背书节点284不需要为了进行其操作而检查交易的整个内容,相反,排序节点284可以简单地从网络中的所有通道接收交易,按通道按时间顺序对交易排序,并且每个通道地创建交易的区块。
交易的区块从排序节点284被传递给通道上的所有对等体节点281-283。区块内的交易294被验证,以确保任何背书策略得到满足,和确保自通过交易执行而生成读取集合以来,对于读取集合变量,分类账状态没有任何变化。区块中的交易被标记为有效或无效。此外,在步骤295,每个对等体节点281-283将区块附加到该通道的链上,并且对于每个有效的交易,写入集合被提交给当前状态数据库。发出事件,以向客户端应用通知交易(调用)已被不可变地附加到链上,以及通知交易是否被验证或者无效。
图3A图解说明以分布式的去中心化点对点体系结构为特征的许可型区块链网络300的例子。在这个例子中,区块链用户302可以向许可型区块链304发起交易。在这个例子中,交易可以是部署、调用或查询,可以通过充分利用SDK的客户端应用发出,直接通过API发出,等等。网络可以提供对监管者306,比如审计者的访问。区块链网络运营者308管理成员许可,比如将监管者306登记为“审计者”,将区块链用户302登记为“客户端”。审计者可以仅限于查询分类账,而客户端可以被授权部署、调用和查询某些类型的链码。
区块链开发人员310可以编写链码和客户端应用。区块链开发人员310可以通过接口将链码直接部署到网络。为了将来自传统数据源312的凭证包含在链码中,开发人员310可以利用带外连接来访问数据。在这个例子中,区块链用户302通过对等体节点314连接到许可型区块链304。在继续进行任意交易之前,对等体节点314从管理用户角色和许可的认证机构316取回用户的登记和交易证书。在一些情况下,区块链用户必须拥有这些数字证书,以便在许可型区块链304上进行交易。同时,可能要求试图利用链码的用户在传统数据源312核实他们的凭证。为了确认用户的授权,链码可以通过传统处理平台318使用与该数据的带外连接。
图3B图解说明以分布式的去中心化对等体系结构为特征的许可型区块链网络320的另一个例子。在这个例子中,区块链用户322可以向许可型区块链324提交交易。在这个例子中,交易可以是部署、调用或查询,可以通过充分利用SDK的客户端应用发出,直接通过API发出,等等。网络可以提供对监管者326,比如审计者的访问。区块链网络运营者328管理成员许可,比如将监管者326登记为“审计者”,将区块链用户322登记为“客户端”。审计者可以仅限于查询分类账,而客户端可以被授权部署、调用和查询某些类型的链码。
区块链开发人员330编写链码和客户端应用。区块链开发人员330可以通过接口将链码直接部署到网络。为了将来自传统数据源332的凭证包含在链码中,开发人员330可以利用带外连接来访问数据。在这个例子中,区块链用户322通过对等体节点334连接到网络。在继续进行任何交易之前,对等体节点334从认证机构336取回用户的登记和交易证书。在一些情况下,区块链用户必须拥有这些数字证书,以便在许可型区块链324上进行交易。同时,可能要求试图利用链码的用户在传统数据源332核实他们的凭证。为了确认用户的授权,链码可以通过传统处理平台338使用与该数据的带外连接。
在一些实施例中,本文中的区块链可以是非许可型区块链。与需要加入许可的许可型区块链相反,任何人都可以加入非许可型区块链。例如,为了加入非许可型区块链,用户可以创建个人地址,并通过提交交易,从而将条目添加到分类账,开始与网络交互。另外,所有各方都可以选择在系统上运行节点,并采用挖矿协议来帮助核实交易。
图3C图解说明由包括多个节点354的非许可型区块链352处理的交易的过程350。发送方356希望通过非许可型区块链352,向接收方358发送付款或者某种其他形式的价值(例如契约、医疗记录、合同、商品、服务或任何其他可以封装在数字记录中的资产)。在一个实施例中,发送方设备356和接收方设备358都可具有(与区块链352关联的)数字钱包,所述数字钱包提供用户界面控制和交易参数显示。作为响应,交易通过区块链352广播到节点354。取决于区块链352的网络参数,节点基于由非许可型区块链352创建者建立的规则(可以是预先定义的,或者动态分配的),核实360交易。例如,这可包括核实涉及的各方的身份,等等。可以立即核实交易,或者可以将交易与其他交易一起放在队列中,节点354基于一组网络规则判定交易是否有效。
在构造362,使有效交易形成区块,并用锁(哈希值)密封。该处理可以由节点354之中的挖矿节点来进行。挖矿节点可以利用额外的软件专门用于挖矿和为非许可型区块链352创建区块。每个区块可以由利用网络一致同意的算法创建的哈希值(例如,256位数字等)来识别。每个区块可以包括区块头、对链中前一个区块的区块头的哈希值的指针或引用,以及一组有效交易。对前一个区块的哈希值的引用与区块的安全独立链的创建关联。
在可将区块添加到区块链之前,必须对区块进行验证。对于非许可型区块链352的验证可包括工作量证明(PoW),它是对来源于区块头的谜题的解决方案。尽管未在图3C的例子中表示,不过用于验证区块的另一种处理是权益证明。不同于其中算法奖励解决数学问题的矿工的工作量证明,就权益证明来说,取决于创建者的财富,也被定义为“权益”,以确定的方式选择新区块的创建者。随后,选中/挑选的节点进行类似的证明。
就挖矿364来说,节点试图通过对一个变量进行增量式变化,直到解决方案满足整个网络的目标为止来求解区块。这创建PoW,从而确保正确的答案。换句话说,可能的解决方案必须证明在解决该问题时计算资源被耗尽。在一些类型的非许可型区块链中,矿工可因为正确地开采区块而得到有价值的回报(例如硬币等)。
这里,PoW处理,以及区块的链接使区块链的修改变得极其困难,因为为了使一个区块的修改得以被接受,攻击者必须修改所有后续区块。此外,随着新的区块被开采,修改区块的难度增大,后续区块的数量也增大。就分发366来说,成功验证的区块通过非许可型区块链352被分发,所有节点354将区块添加到作为非许可型区块链352的可审计分类账的主链。此外,发送方356提交的交易中的值被存入或以其他方式转移到接收方设备358的数字钱包。
图4按照例证实施例,图解说明进行区块完整性检查的系统消息接发图400。参见图4,系统图400包括排序者对等体410、外围对等体420和其他外围对等体430。
排序者对等体410创建新区块(415),并将新区块416分发给外围对等体420和其他外围对等体430。外围对等体420计算新区块的哈希值425A,这与其他外围对等体430计算新区块的哈希值425N并行进行。外围对等体420将请求426传送给其他外围对等体430,以提供新区块416的哈希值。如关于图1A所述,其他外围对等体430并行地进行相同的处理。从而,由其他外围对等体430进行的相同处理用后缀“N”表示,而由外围对等体420进行的那些处理用后缀“A”表示。请求哈希值426和所请求的哈希值427都用双向箭头表示,以额外表示这种并行性。然而,这时只具体讨论由外围对等体420执行的区块。其他外围对等体430构成网络中的大部分外围对等体。
响应于收到请求426,其他外围对等体430中的每一个都将请求的哈希值427提供给外围对等体420。外围对等体420比较计算的哈希值和请求的哈希值(435A),并判定是否所有请求的哈希值都与计算的哈希值相同(440A)。如果所有请求的哈希值都与计算的哈希值相同(440A),那么外围对等体420将该新区块提交给区块链网络(445A)。之后,外围对等体420确定所有请求的哈希值与计算出的哈希值不相同(440A)(即,发生了不匹配)(450A)。这种情况下,外围对等体420停止向区块链网络提交新区块(455A)。
图5A按照例证实施例,图解说明核实区块链中的新区块的例证方法的流程图500。参见图5A,方法500可包括一个或多个以下步骤。
在方框504,排序者对等体创建新区块,并将该新区块分发给区块链网络的对等体。
在方框508,区块链网络的外围对等体计算新区块的哈希值。
在方框512,每个外围对等体从同一区块链网络的大多数外围对等体获取新区块的哈希值。
在方框516,每个外围对等体比较计算的新区块的哈希值和从大多数外围对等体获得的哈希值。
在方框520,如果任意哈希值不匹配,那么每个观察到不匹配的外围对等体从供给不匹配的哈希值的那些外围对等体,获得与不匹配的哈希值对应的区块。
在方框524,如果获得的任意区块与所述新区块不匹配,那么外围对等体停止提交区块。这意味恶意排序者对等体创建了坏区块。
图5B按照例证实施例,图解说明核实区块链中的区块序列的例证方法的流程图530。参见图5B,方法530包括一个或多个以下步骤。
在方框534,排序者对等体创建区块序列,并将新的区块序列分发给区块链网络的对等体。
在方框538,区块链网络的外围对等体计算新的区块序列的哈希值。
在方框542,每个外围对等体将计算的哈希值添加到它自己的默克尔树中,其中默克尔树的每个叶节点存储不同区块的哈希值。
在方框546,每个外围对等体向区块链网络的大多数其他外围对等体请求默克尔树根节点哈希值。每个外围对等体比较它自己的默克尔树根节点哈希值和它从请求被发送给的其他外围节点接收的默克尔树根节点哈希值。
在方框550,如果任意根节点哈希值不匹配,那么观察到不匹配的每个外围对等体从供给不匹配的根节点哈希值的那些外围对等体,获得与不匹配的根节点哈希值对应的区块序列。
在方框554,如果任意获得的区块序列与新区块序列不匹配,那么外围对等体停止提交区块。这意味恶意的排序者对等体创建了坏的区块序列。
图5C按照例证实施例,图解说明防止区块链中的漏洞的例证方法的流程图560。参见图5C,方法560可包括以下步骤中的一个或多个步骤。
在方框564,提交交联交易。例如,与第一个和第二个区块链的一方或用户关联的计算设备提交第一个交联交易,以便添加到第一个区块链,并提交第二个对应的交联交易,以便添加到第二个区块链。例如,第一个交联交易可被提交给与区块链A关联的节点,以便添加到区块链A,第二个交联交易可被提供给与区块链B关联的节点,以便添加到区块链B。在一些方面,例如,当用户预期区块链A和B之一可能未来会变得静默时,用户可以提交对应的交联交易。在一些方面,例如,可以同时提交对应的交联交易。在一些方面,例如,第一个和第二个交联交易可以大约在同一时间,例如彼此在几秒钟、几分钟或几小时内被提交给第一个和第二区块链。在一些方面,交联交易之一可以首先提交给具有较高的区块添加率的区块链,之后另一个交联交易可以提交给具有较低的区块添加率的区块链。例如,最忙的区块链可以首先接收交联交易的提交,然后是不太忙的区块链接收交联交易的提交。在一些方面,例如,一旦交联交易被确认为存在于最繁忙的区块链上的新区块中,对应的交联交易就可以提交给不太忙的区块链。在一些方面,例如,这可以反过来,交联交易可以首先提交给不太忙的区块链,然后提交给最繁忙的区块链。
在方框568,查询第一个和第二个区块链。用户,例如区块链A和/或B的同一用户或另一个用户的计算设备可以关于第一交联交易查询第一个区块链,例如区块链A。例如,该用户可以响应区块链B进入静默期,查询区块链A。例如,用户最初可以确定区块链B已经进入静默期,并且可以知道或识别出区块链A和B已经通过交联交易被交联。例如,通过查询区块链B,以了解是否存在任何过去的交联交易,并将区块链A识别为具有在区块链B中找到的交联交易的对应交联交易的区块链,用户可以确定区块链A和B已被交联。用户的计算设备可以基于查询到的第一个交联交易,识别第二个区块链,例如区块链B,例如通过对于区块链B查看ID(图4)。用户的计算设备可以根据基于第一个交联交易的第二个区块链的识别,针对对应的第二个交联交易查询第二个区块链。
在方框572,比较交联交易。如果第二个交联交易存在于第二个区块链中,那么可以比较第二个交联交易和第一个交联交易,以判定第二个交联交易是否对应于第一个交联交易。例如,可以利用提交交联交易的用户的公钥,访问或解码交易摘要。如果使用相同的公钥解码交易摘要,那么可以验证交联交易,因为已确认同一用户提交了两个交联交易。
在方框576,进行检查,以判定是否应使第二个区块链无效。用户的计算设备可以基于查询的结果,判定对应的第二个交联交易存在与否。如果第二个交联交易不存在于第二个区块链中,那么可以使第二个区块链的至少一部分无效。例如,第二个交联交易的缺少可能是第二个区块链的至少一部分已被修改或篡改的指示。在一些方面,用户可以利用第一个和第二个区块链的先前的对应交联交易来验证区块链的至少一部分。例如,如果区块链B缺失交联交易,那么用户可以改为尝试至少验证区块链B的结束于对应交联交易的部分。
在方框580,验证第二个区块链。如果基于比较,确定第二个交联交易对应于第一个交联交易,那么可以验证第二个区块链。或者,如果确定第二个交联交易不对应于第一个交联交易,那么可以使第二个区块链无效。例如,如果公钥没有解码交易摘要中的一个或者两者,那么用户将知道交联交易至少之一不是由同一用户提交的,于是第二个交联交易作为第二个区块链上的安全性和完整性的证据是无效的,于是至少使第二个区块链的一部分无效。
图6A按照例证实施例,图解说明包括配置成进行各种操作的物理基础设施610的例证系统600。参见图6A,物理基础设施610包括模块612和模块614。模块614包括区块链620和智能合约630(它可驻留在区块链620上),智能合约630可执行包含在任意例证实施例中的(模块612中的)任意操作步骤608。步骤/操作608可包括说明或描述的实施例中的一个或多个,可以表示写入或者从一个或多个智能合约630和/或区块链620读取的输出或写入信息。物理基础设施610、模块612和模块614可包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是同一模块。
图6B按照例证实施例,图解说明配置成进行各种操作的另一种例证系统640。参见图6B,系统640包括模块612和模块614。模块614包括区块链620和智能合约630(它可驻留在区块链620上),智能合约630可执行包含在任意例证实施例中的(模块612中的)任意操作步骤608。步骤/操作608可包括说明或描述的实施例中的一个或多个,可以表示写入或者从一个或多个智能合约630和/或区块链620读取的输出或写入信息。物理基础设施610、模块612和模块614可包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是同一模块。
图6C按照例证实施例,图解说明配置成利用合约各方之间的智能合约配置的例证系统,和配置成在区块链上强制执行智能合约条款的中介服务器。参见图6C,配置650可表示由明确地识别一个或多个用户设备652和/或656的智能合约630驱动的通信会话、资产转移会话或者处理或过程。智能合约执行的执行、操作和结果可由服务器654管理。智能合约630的内容可能需要作为智能合约交易方的实体652和656中的一个或多个的数字签名。智能合约执行的结果可以作为区块链交易被写入区块链620中。智能合约630驻留在区块链620上,区块链620可以驻留在一个或多个计算机、服务器、处理器、存储器和/或无线通信设备上。
图6D按照例证实施例,图解说明包含区块链的系统660。参见图6D的例子,应用编程接口(API)网关662提供用于访问区块链逻辑(例如,智能合约630或链码)和数据(例如,分布式分类账等)的公用接口。在这个例子中,API网关662是用于通过将一个或多个实体652和656连接到区块链对等体(即,服务器654),在区块链上进行交易(调用、查询等)的公用接口。这里,服务器654是区块链网络对等体组件,它保持世界状态的副本和分布式分类账,允许客户端652和656查询关于世界状态的数据,和将交易提交到区块链网络,在区块链网络中,取决于智能合约630和背书策略,背书对等体将运行智能合约630。
以上实施例可以用硬件、处理器执行的计算机程序、固件、或者上述的组合来实现。计算机程序可以包含在计算机可读介质,比如存储介质上。例如,计算机程序可以驻留在随机存取存储器(“RAM”)、闪存、只读存储器(“ROM”)、可擦可编程只读存储器(“EPROM”)、电可擦可编程只读存储器(“EEPROM”)、寄存器、硬盘、可拆卸磁盘、光盘只读存储器(“CD-ROM”)、或者本领域已知的任何其他形式的存储介质中。
例证的存储介质可以耦接到处理器,以致处理器可以从存储介质读取信息和将信息写入存储介质。在备选方案中,存储介质可以是处理器的组成部分。处理器和存储介质可以存在于专用集成电路(“ASIC”)中。在备选方案中,处理器和存储介质可作为离散组件存在。
图7A按照例证实施例,图解说明添加到分布式分类账720的新区块的处理700,图7B按照例证实施例,图解说明区块链的新数据区块结构730的内容。参见图7A,客户端(未图示)可以向区块链节点711、712和/或713提交交易。客户端可以是从任意来源接收的制定区块链720上的活动的指令。例如,客户端可以是代表诸如设备、人员或实体行事,以为区块链提出交易的应用。多个区块链对等体(例如,区块链节点711、712和713)可以维持区块链网络的状态和分布式分类账720的副本。在区块链网络中可能存在不同类型的区块链节点/对等体,包括模拟并对客户端提出的交易进行背书的背书对等体,以及核实背书、验证交易并将交易提交给分布式分类账720的提交对等体。在这个例子中,区块链节点711、712和713可以充当背书人节点和/或提交者节点的角色。
分布式分类账720包括将不可变的排序记录存储在区块中的区块链,和维持区块链722的当前状态的状态数据库724(当前世界状态)。每个通道可以存在一个分布式分类账720,并且每个对等体为它们是其成员的每个通道维持它们自己的分布式分类账720的副本。区块链722是作为哈希链接的区块构成的交易日志,其中每个区块包含N个交易的序列。区块可包括如图7B中所示的各种组件。通过在当前区块的区块头内添加在先区块的区块头的哈希值,可以生成区块的链接(图7A中用箭头表示)。这样,区块链722上的所有交易被排序,并且被加密地链接在一起,以防止在不破坏哈希链接的情况下篡改区块链数据。此外,由于链接的缘故,区块链722中的最新区块表示在它之前出现的每个交易。区块链722可以存储在支持只可追加区块链工作负载的对等体文件系统(本地或附加存储装置)上。
区块链722和分布式分类账722的当前状态可以保存在状态数据库724中。这里,当前状态数据表示曾包含在区块链722的链交易日志中的所有密钥的最新值。链码调用针对状态数据库724中的当前状态执行交易。为了使这些链码交易极其高效,所有密钥的最新值都存储在状态数据库724中。状态数据库724可以将索引视图包含在区块链722的交易日志中,于是它可以在任何时候从链重新生成。在交易被接受之前,状态数据库724可以在对等体启动时自动恢复(或者在需要时生成)。
背书节点从客户端接收交易,并基于模拟结果对交易进行背书。背书节点持有模拟交易提案的智能合约。当背书节点对交易进行背书时,背书节点创建交易背书,所述交易背书是背书节点对客户端应用的签名响应,指示所模拟的交易的背书。对交易进行背书的方法取决于在链码内规定的背书策略。背书策略的例子是“大多数背书对等体必须对交易进行背书”。不同的通道可以具有不同的背书策略。经过背书的交易由客户端应用转发给排序服务710。
排序服务710接受经过背书的交易,将它们排序到区块中,并把区块递送给提交对等体。例如,排序服务710可以在已达到交易阈值,计时器超时或者其他条件时发起新区块。在图7A的例子中,区块链节点712是已收到新数据区块730,以便存储在区块链720上的提交对等体。区块链中的第一个区块可被称为创世区块,它包括关于区块链、其成员、存储在其中的数据等的信息。
排序服务710可以由一群排序者组成。排序服务710不处理交易、智能合约或者维持共享分类账。相反,排序服务710可接受经过背书的交易,并指定将这些交易提交给分布式分类账720的顺序。区块链网络的体系结构可被设计成以致‘排序’的具体实现(例如,Solo、Kafka、BET等)成为可插入组件。
交易以一致的顺序被写入分布式分类账720。建立交易的顺序,以确保对状态数据库724的更新在它们被提交给网络时是有效的。与其中通过加密难题的求解,或者挖矿来进行排序的加密货币区块链系统(例如,比特币等)不同,在这个例子中,分布式分类账720的各方可以选择最适合该网络的排序机制。
当排序服务710初始化新数据区块730时,可以向提交对等体(例如,区块链节点711、712和713)广播新数据区块730。作为响应,每个提交对等体通过进行检查,以确保读取集合和写入集合仍然匹配状态数据库724中的当前世界状态,验证新数据区块730内的交易。具体地,提交对等体可以判定在背书人模拟交易时存在的读取数据是否与状态数据库724中的当前世界状态相同。当提交对等体验证交易时,交易被写入分布式分类账720上的区块链722,并且状态数据库724用来自读取-写入集合的写入数据更新。如果交易失败,即,如果提交对等体发现读-写集合不匹配状态数据库724中的当前世界状态,那么排序到区块中的交易仍将被包含在该区块中,不过它会被标记为无效,并且状态数据库724不会被更新。
参见图7B,存储在分布式分类账720的区块链722上的新数据区块730(也被称为数据区块)可包括诸如区块头740、区块数据750和区块元数据760之类的多个数据段。应意识到的是各个描述的区块及其内容,比如图7B中所示的新数据区块730及其内容仅仅是例子,并不意图限制例证实施例的范围。新数据区块730可将N个交易(例如,1、10、100、500、1000、2000、3000等)的交易信息存储在区块数据750内。新数据区块730还可在区块头740内包含到(例如,图7A中的区块链722上的)前一个区块的链接。特别地,区块头740可包括前一个区块的区块头的哈希值。区块头740还可包括唯一的区块号、新数据区块730的区块数据750的哈希值,等等。新数据区块730的区块号可以是唯一的,并且可以按各种顺序,比如从零开始的递增/顺序次序指派。
区块数据750可以存储记录在新数据区块730内的每个交易的交易信息。例如,交易数据可以包括交易的类型、版本、时间戳、分布式分类账720的通道ID、交易ID、时代、有效负载可见性、链码路径(部署tx)、链码名称、链码版本、输入(链码和函数)、诸如公钥和证书之类的客户端(创建者)身份、客户端的签名、背书人的身份、背书人签名、提案哈希值、链码事件、响应状态、命名空间、读取集合(由交易读取的密钥和版本的列表等)、写入集合(密钥和值的列表等)、启动密钥、终止密钥、密钥列表、默克尔树查询摘要等中的一个或多个。可以为N个交易中的每一个存储交易数据。
在一些实施例中,区块数据750还可以存储向区块链722中的区块的哈希链接链添加附加信息的新数据762。所述附加信息包括本文中说明或描述的步骤、特征、处理和/或动作中的一个或多个。因而,新数据762可以存储在分布式分类账720上的区块的不可变日志中。存储此类新数据762的一些益处反映在本文中公开和描述的各个实施例中。尽管在图7B中,在区块数据750中描述了新数据762,不过新数据762也可以位于区块头740或区块元数据760中。
区块元数据760可以存储元数据的多个字段(例如,作为字节数组等)。元数据字段可以包括区块创建时的签名、对最新配置区块的引用、识别区块内的有效和无效交易的交易过滤器、对区块排序的排序服务的持久化最新偏移量等。签名、最新配置区块和排序者元数据可以由排序服务710添加。同时,区块的提交者(比如区块链节点712)可以基于背书策略、读取/写入集合的核实等来添加有效性/无效性信息。交易过滤器可以包括大小与区块数据750中的交易数相等的字节数组,和识别交易是否有效/无效的验证代码。
图7C图解说明按照记载在本文中的实施例的数字内容的区块链770的实施例。数字内容可包括一个或多个文件和关联的信息。文件可包括媒体、图像、视频、音频、文件、链接、图形、动画、网页、文档或者其他形式的数字内容。区块链的不可变、只可追加特征起保护数字内容的完整性、有效性和真实性的保障,从而使区块链适合于在适用可采性规则的法律程序,或者其中考虑证据或对数字信息的呈现和使用有其他兴趣的其他背景中使用。这种情况下,数字内容可被称为数字证据。
区块链可以多种方式形成。在一个实施例中,数字内容可以包含在区块链本身中,并且可以从区块链本身访问。例如,区块链的每个区块可以存储引用信息(例如,区块头、值等)的哈希值以及关联的数字内容。哈希值和关联的数字内容随后可以一起被加密。从而,通过解密区块链中的每个区块,可以访问每个区块的数字内容,并且每个区块的哈希值可以用作引用前一个区块的基础。这可以如下举例说明:
区块1 区块2.......区块N
哈希值1 哈希值2 哈希值N
数字内容1 数字内容2 数字内容N
在一个实施例中,数字内容可不包含在区块链中。例如,区块链可以存储每个区块内容的加密哈希值,而不存储任何数字内容。数字内容可以与原始文件的哈希值关联地存储在另一个存储区或存储地址中。另一个存储区可以是用于存储区块链的同一存储设备,或者可以是不同的存储区,或者甚至是单独的关系数据库。通过获得或查询所关心的区块的哈希值,随后在存储区中查寻与实际数字内容对应地存储的该哈希值,可以引用或访问每个区块的数字内容。该操作可以通过例如数据库看门人(database gatekeeper)进行。这可以如下举例说明:
区块链
存储区
区块1哈希值 区块1哈希值…内容
. .
. .
. .
区块N哈希值区块N哈希值…内容
在图7C的例证实施例中,区块链770包括在有序序列中加密地链接的许多区块7781、7782、…778N,其中N≥1。用于链接区块7781、7782、…778N的加密可以是若干带密钥或不带密钥哈希函数中的任意一种。在一个实施例中,区块7781、7782、…778N须经历哈希函数,所述哈希函数从以区块中的信息为基础的输入产生n位字母数字输出(其中n为256或者另外的数字)。此类哈希函数的例子包括(但不限于)SHA类(SHA代表安全哈希算法)算法、Merkle-Damgard算法、HAIFA算法、默克尔树算法、基于随机数的算法和非抗冲突PRF算法。在另一个实施例中,区块7781、7782、…778N可以用与哈希函数不同的函数加密地链接。出于举例说明的目的,关于哈希函数,例如SHA-2进行以下的说明。
区块链中的各个区块7781、7782、…778N包括区块头、文件的版本和值。作为区块链中的哈希的结果,对于每个区块,区块头和值不同。在一个实施例中,所述值可以包含在区块头中。如下更详细所述,文件的版本可以是原始文件,或者原始文件的不同版本。
区块链中的第一个区块7781被称为创世区块,包括区块头7721、原始文件7741和初始值7761。用于创世区块,甚至在所有后续区块中使用的哈希方案可能不同。例如,第一个区块7781中的所有信息可以同时一起进行哈希,或者第一个区块7781中的每个信息或一部分信息可以单独进行哈希,随后可以进行分别哈希的各个部分的哈希。
区块头7721可包括一个或多个初始参数,所述初始参数例如可包括版本号、时间戳、随机数、根信息、难度级别、共识协议、持续时间、媒体格式、源、描述性关键字、和/或与原始文件7741和/或区块链关联的其他信息。区块头7721可以自动生成(例如,由区块链网络管理软件自动生成),或者可以由区块链参与者手动生成。与区块链中的其他区块7782~778N中的区块头不同,创世区块中的区块头7721不引用前一个区块,只是因为不存在前一个区块。
创世区块中的原始文件7741可以例如是由设备所捕捉的在被包含在区块链中之前经过或未经过处理的数据。通过系统的接口,从设备、媒体源或节点接收原始文件7741。原始文件7741与元数据关联,元数据例如可以由用户、设备和/或系统处理器手动或自动地生成。元数据可以与原始文件7741关联地包含在第一个区块7781中。
创世区块中的值7761是基于原始文件7741的一个或多个独特属性生成的初始值。在一个实施例中,所述一个或多个独特属性可包括原始文件7741的哈希值、原始文件7741的元数据、以及与该文件关联的其他信息。在一种实现中,初始值7761可以基于以下独特属性:
1)关于原始文件的SHA-2计算哈希值
2)始发设备ID
3)原始文件的开始时间戳
4)原始文件的初始存储位置
5)当前控制原始文件和关联元数据的软件的区块链网络成员ID
区块链中的其他区块7782~778N也具有区块头、文件和值。然而,不同于第一个区块7721,其他区块中的区块头7722~772N每一个都包括紧前一个区块的哈希值。紧前一个区块的哈希值可以仅仅是前一个区块的区块头的哈希值,或者可以是整个前一个区块的哈希值。通过在每个剩余区块中包含前一个区块的哈希值,如箭头780所示,可以逐个区块地从第N个区块到创世区块(以及关联的原始文件)进行追溯,以建立可审计且不可变的监管链。
其他区块中的区块头7722~772N每一个也可包括其他信息,例如,版本号、时间戳、随机数、根信息、难度级别、共识协议、和/或通常与对应文件和/或区块链关联的其他参数或信息。
其他区块中的文件7742~774N可以和原始文件相同,或者可以是创世区块中的原始文件的修改版本,取决于例如进行的处理的类型。进行的处理的类型可因区块而异。所述处理可能涉及例如在先区块中的文件的任何修改,比如修订文件的信息或以其他方式更改文件的内容,从文件中删除信息,或者向文件添加或追加信息。
另外或者另一方面,所述处理可能仅仅涉及从在先区块复制文件,改变文件的存储位置,从一个或多个在先区块分析文件,将文件从一个存储或记忆位置移动到另一个存储或记忆位置,或者进行与区块链的文件和/或其关联元数据有关的动作。涉及分析文件的处理例如可包括追加、包含或者以其他方式关联分析数据、统计数据或与文件关联的其他信息。
其他区块之中的每个其他区块中的值7762~776N都是唯一的值,并且由于执行的处理而各不相同。例如,任意一个区块中的值对应于前一个区块中的值的更新版本。所述更新反映在所述值被指派给的区块的哈希值中。各个区块的值于是提供在各个区块中进行什么处理的指示,还允许通过区块链追溯到原始文件。这种追溯确认整个区块链内的文件的监管链。
例如,考虑其中前一个区块中的文件的各个部分被修订、屏蔽或像素化,以便保护文件中所示的人员的身份的情况。在这种情况下,包括修订后的文件的区块将包含与修订后的文件关联的元数据,例如,修订是如何进行的,谁进行了修订,修订发生的时间戳等等。元数据可被哈希,以形成值。由于该区块的元数据与前一个区块中被哈希以形成值的信息不同,因此这些值彼此不同,可以在解密时恢复。
在一个实施例中,当下述中的任何一种或多种情况发生时,前一个区块的值可被更新(例如,计算新的哈希值),以形成当前区块的值。在本例证实施例中,通过哈希下面所提到的全部或部分信息,可以计算新的哈希值。
a)新的SHA-2计算哈希值,如果以任何方式处理了文件的话(例如,如果文件被修订、复制、变更、访问,或者采取某种其他动作)
b)文件的新的存储位置
c)识别的与文件关联的新的元数据
d)文件的访问或控制从一个区块链参与者到另一个区块链参与者的转移
图7D按照例证实施例,图解说明可表示区块链790中的各个区块的结构的区块的实施例。区块Blocki包括区块头772i、文件774i和值776i。
区块头772i包括前一个区块Blocki-1的哈希值和附加引用信息,所述附加引用信息例如可以是本文中讨论的任意类型的信息(例如,包括引用、特性、参数等的区块头信息)。所有区块引用前一个区块的哈希值,当然创世区块除外。前一个区块的哈希值可以只是前一个区块中的区块头的哈希值,或者前一个区块中的所有或部分信息(包括文件和元数据)的哈希值。
文件774i按顺序包括多个数据,比如Data 1、Data 2、…、Data N。所述数据用描述与该数据关联的内容和/或特性的元数据Metadata 1,Metadata 2,…,Metadata N标记。例如,每个数据的元数据可包括指示数据的时间戳的信息,处理数据,指示数据中描述的人员或其他内容的关键字,和/或有助于确定整个文件的有效性和内容,尤其是例如如结合下面讨论的实施例所述,其作为数字证据使用的其他特征。除了元数据以外,每个数据可以用对前一个数据的引用REF1、REF2、…、REFN标记,以防止篡改、文件中的空白和通过文件的顺序引用。
一旦元数据被指派给数据(例如,通过智能合约),元数据就不能在不变更哈希的情况下被改变,而哈希变更很容易被识别为无效。元数据从而创建可由区块链中的参与者访问以便使用的信息的数据日志。
值776i是基于前面讨论的任意各种类型的信息计算的哈希值或其他值。例如,对于任意给定区块Blocki,该区块的值可被更新,以反映对于该区块进行的处理,例如,新的哈希值、新的存储位置、关联文件的新的元数据、控制或访问的转移、标识符、或者要添加的其他动作或信息。尽管各个区块中的值被表示成与文件和区块头的数据的元数据分离,不过在另一个实施例中,所述值可以部分或全部基于该元数据。
一旦形成了区块链770,在任何时刻,通过关于各个区块之间的值的交易历史,查询区块链,可以获得文件的不可变的监管链。该查询或追踪过程可以从解密最近包含的区块(例如,最后的(第N个)区块)的值开始,随后继续解密其他各个区块的值,直到到达创世区块,并且恢复原始文件为止。解密还可涉及解密在每个区块的区块头和文件以及关联的元数据。
解密是基于在每个区块发生的加密的类型进行的。这可涉及私钥、公钥或者公钥-私钥对的使用。例如,当使用非对称加密时,区块链参与者或者网络中的处理器可以利用预定算法,生成公钥和私钥。公钥和私钥通过某种数学关系相互关联。公钥可以公开分发,以充当接收来自其他用户的消息的地址,例如IP地址或归属地址。私钥是保密的,用于对发送给其他区块链参与者的消息进行数字签名。签名包含在所述消息中,以致接收方可以利用发送方的公钥进行核实。这样,接收方可以确信只有发送方才能发送该消息。
生成密钥对可能类似于在区块链上创建账户,但不必在任何地方实际注册。另外,在区块链上执行的每个交易都由发送方利用其私钥进行数字签名。这种签名确保只有账户的所有者才能够追踪和处理(如果在智能合约所确定的许可范围之内)区块链的文件。
图8A和8B图解说明可以包含在本文中并在本文中使用的区块链的用例的附加例子。特别地,图8A图解说明存储机器学习(人工智能)数据的区块链810的例子800。机器学习依赖于大量的历史数据(或者训练数据)来建立预测模型,以便对新数据进行准确预测。机器学习软件(例如,神经网络等)通常可以筛选数百万条记录,从而发掘出非直观模式。
在图8A的例子中,主机平台820构建并部署用于资产830的预测监控的机器学习模型。这里,主机平台820可以是云平台、工业服务器、web服务器、个人计算机、用户设备等等。资产830可以是任何类型的资产(例如机器或设备等),比如飞机、机车、涡轮机、医疗机械和设备、石油和天然气设备、小船、船舰、车辆等。再例如,资产830可以是非有形资产,比如股票、货币、数字币、保险等。
区块链810可以用于显著改善机器学习模型的训练过程802和基于训练后的机器学习模型的预测过程804。例如,在802,历史数据可由资产830本身(或者通过中介,未图示)存储在区块链810上,而不是要求数据科学家/工程师或者其他用户收集数据。这可以显著减少主机平台820在进行预测模型训练时所需要的收集时间。例如,通过利用智能合约,数据可以直接并且可靠地从其起源地直接传送到区块链810。通过利用区块链810来确保所收集数据的安全性和所有权,智能合约可以直接将数据从资产发送给利用这些数据来构建机器学习模型的个人。这允许在资产830之间共享数据。
基于共识机制,收集的数据可以存储在区块链810中。共识机制拉入(许可的节点),以确保记录中的数据是经过核实和准确的。记录的数据具有时间戳、被加密签名并且不可变。于是,记录的数据是可审计的、透明的和安全的。在某些情况下(即,供应链、医疗、物流等),添加直接写入区块链的IoT设备可以增大记录数据的频率和准确性。
此外,针对所收集数据的机器学习模型的训练可由主机平台820进行多轮修正和测试。每一轮可以基于额外的数据或者以前未考虑过的数据,以帮助扩展机器学习模型的知识。在802,不同的训练和测试步骤(以及与之关联的数据)可由主机平台820存储在区块链810上。机器学习模型的每次修正(例如,变量、权重等的更改)可以存储在区块链810上。这提供模型是如何训练的,以及使用什么数据来训练模型的可核实证明。此外,当主机平台820获得最后训练的模型时,所得到的模型可以存储在区块链810上。
在对模型进行了训练之后,可以将其部署到真实环境中,在该环境中,模型可以基于最终训练的机器学习模型的执行进行预测/决策。例如,在804,机器学习模型可以用于诸如飞机、风力涡轮机、医疗机器之类资产的基于状态的维护(CBM)。在这个例子中,从资产830反馈的数据可以输入机器学习模型中,用于进行事件预测,比如故障事件、错误代码等。通过在主机平台820执行机器学习模型而作出的决定可以存储在区块链810上,以提供可审计/可核实的证据。作为一个非限制性例子,机器学习模型可以预测资产830的某个部件的未来故障/失效,并创建警报或通知以更换该部件。该决策背后的数据可由主机平台820存储在区块链810上。在一个实施例中,可以在区块链810上或者对于区块链810发生在本文中说明和/或描述的特征和/或动作。
区块链的新交易可被聚集到新区块中,并添加到现有哈希值中。随后对其加密以创建新区块的新哈希值。这在新交易被加密时被添加到下一个交易列表中,等等。结果是区块的链,每个区块均包含所有在先区块的哈希值。存储这些块的计算机定期比较它们的哈希值,以确保它们都一致。任何不一致的计算机丢弃导致问题的记录。这种方法对于确保区块链的抗篡改性很好,但并不完美。
游戏这种系统的一种方式是让不诚实用户对他们有利地改变交易列表,但是以保持哈希值不变的方式。这可以通过暴力来实现,换句话说,通过更改记录,对结果加密,和查看哈希值是否相同来实现。如果哈希值不相同,那么一次又一次地尝试,直到找到匹配的哈希值为止。区块的安全性基于以下信念:普通电脑只能在比如宇宙的年龄之类完全不切实际的时间尺度上进行这种暴力攻击。相比之下,量子计算机要快得多(快1000倍),从而构成的威胁也大得多。
图8B图解说明实现量子密钥分发(QKD)来抵御量子计算攻击的量子安全区块链852的例子850。在这个例子中,区块链用户可以利用QKD来核实彼此的身份。这利用诸如光子之类的量子粒子来发送信息,窃听者不可能在不破坏这些量子粒子的情况下复制它们。这样,发送方和接收方通过区块链可以确信彼此的身份。
在图8B的例子中,存在4个用户854、856、858和860。每对用户可以在他们之间共享密钥862(即,QKD)。由于在本例中有4个节点,因此存在6对节点,于是使用6个不同的密钥862,包括QKDAB、QKDAC、QKDAD、QKDBC、QKDBD和QKDCD。每对用户可通过利用诸如光子之类的量子粒子发送信息来创建QKD,窃听者不可能在不破坏这些量子粒子的情况下复制它们。这样,一对用户可以确信彼此的身份。
区块链852的操作基于两个过程(i)交易的创建,和(ii)聚合新交易的区块的构建。可以类似于传统区块链网络地创建新交易。每个交易可以包含关于发送方、接收方、创建时间、要转移的数量(或值)、证明发送方有用于该操作的资金的参考交易的列表等的信息。该交易记录随后被发送给所有其他节点,在所有其他节点,该交易记录被输入未确认交易池中。这里,两方(即,854-860之中的一对用户)通过提供他们的共享秘钥862(QKD)来认证交易。该量子签名可被附加到每个交易,从而使它极其难以篡改。每个节点根据区块链852的本地副本检查它们的条目,以核实每个交易都具有足够的资金。然而,这些交易尚未被确认。
可以利用广播协议,去中心化地创建区块,而不是对区块进行传统的挖矿处理。在预定的一段时间(例如,几秒、几分钟、几小时等),网络可把广播协议应用于任何未确认交易,从而关于交易的正确版本达成拜占庭协议(共识)。例如,每个节点可以拥有私有值(该特定节点的交易数据)。在第一轮中,节点相互传送它们的私有值。在随后的各轮中,节点传达它们在前一轮中从其他节点接收的信息。这里,诚实节点能够在新区块中创建完整的一组交易。该新区块可被添加到区块链852。在一个实施例中,可以在区块链852上或者对于区块链852发生在本文中说明和/或描述的特征和/或动作。
图9图解说明支持在本文中说明和/或描述的一个或多个例证实施例的例证系统900。系统900包括与众多其他的通用或专用计算系统环境或配置一起操作的计算机系统/服务器902。可适合于与计算机系统/服务器902一起使用的公知的计算系统、环境和/或配置的例子包括(但不限于)个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费类电子产品、网络PC、微型计算机系统、大型计算机系统、以及包含任意上述系统或设备的分布式云计算环境,等等。
可在由计算机系统执行的计算机系统可执行指令,比如程序模块的一般语境中说明计算机系统/服务器902。通常,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。可以在其中任务由通过通信网络链接的远程处理设备执行的分布式云计算环境中实践计算机系统/服务器902。在分布式云计算环境中,程序模块可以位于包括存储设备的本地和远程计算机系统存储介质中。
如图9所示,云计算节点900中的计算机系统/服务器902以通用计算设备的形式表现。计算机系统/服务器902的组件可以包括但不限于:一个或者多个处理器或者处理单元904,系统存储器906,连接不同系统组件(包括系统存储器906和处理单元904)的总线。
总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器902典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器902访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
在一个实施例中,系统存储器906实现其他附图的流程图。系统存储器906可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)910和/或高速缓存存储器912。计算机系统/服务器902可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统914可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。存储器906可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块918的程序/实用工具916,可以存储在例如存储器906中,这样的程序模块918包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块918通常执行本发明所描述的各实施例中的功能和/或方法。
本领域的技术人员会理解的是本申请的各个方面可被体现成系统、方法或计算机程序产品。因而,本申请的各个方面可以采取纯硬件实施例,纯软件实施例(包括固件、驻留软件、微代码等),或者结合本文中通常都可被称为“电路”、“模块”或“系统”的软件和硬件方面的实施例的形式。此外,本申请的各个方面可以采取包含在一个或多个计算机可读介质中的计算机程序产品的形式,所述一个或多个计算机可读介质具有包含于其中的计算机可读程序代码。
计算机系统/服务器902也可以与一个或多个外部设备920(例如键盘、指向设备、显示器922等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器902交互的设备通信,和/或与使得该计算机系统/服务器902能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口924进行。并且,计算机系统/服务器902还可以通过网络适配器926与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器926通过总线与计算机系统/服务器902的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器902使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
尽管在附图中例示了并且在上面的详细说明中说明了系统、方法和非临时性计算机可读介质至少之一的例证实施例,不过要明白的是本申请不限于公开的实施例,相反容许由以下权利要求书陈述和限定的众多重排、修改和替换。例如,各个附图的系统的能力可以由记载在本文中或者分布式体系结构中的模块或组件中的一个或多个来完成,可包括发射器和/或接收器。例如,由单个模块进行的全部或部分功能可以由这些模块中的一个或多个模块进行。此外,记载在本文中的功能可以在不同的时间,与模块或组件内部或外部的各种事件相关地进行。另外,在各个模块之间发送的信息可以通过下述至少之一在模块之间发送:数据网络、因特网、语音网络、网际协议网络、无线设备、有线设备和/或通过多种协议。另外,由任意模块发送或接收的消息可以直接地和/或通过一个或多个其他模块发送或接收。
本领域的技术人员会意识到“系统”可被体现为个人计算机、服务器、控制台、个人数字助手(PDA)、蜂窝电话机、平板计算设备、智能电话机或任何其他适当的计算设备,或者设备的组合。将上述功能表示成由“系统”执行并不意图以任何方式限制本申请的范围,而是意图提供许多实施例的一个例子。实际上,本文中公开的方法、系统和设备可以以符合计算技术的本地化和分布式形式实现。
应注意的是记载在本说明书中的系统特征中的一些是作为模块介绍的,以便更特别强调它们的实现独立性。例如,模块可被实现成硬件电路,包括定制的超大规模集成(VLSI)电路或门阵列,现成的半导体,比如逻辑芯片、晶体管、其者他离散组件。模块也可以在可编程硬件设备,比如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等中实现。
模块还可以至少部分地在软件中实现,以便由各种类型的处理器执行。例如,识别的可执行代码单元可包含计算机指令的一个或多个物理或逻辑块,所述计算机指令可被组织成对象、过程或函数。识别的模块的可执行代码不需要物理上放在一起,而是可以包括存储在不同位置的不同指令,当逻辑上连接在一起时,所述不同指令组成模块并实现模块的规定目的。此外,模块可以保存在计算机可读介质上,计算机可读介质例如可以是硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带或者用于保存数据的任何其他此类介质。
实际上,可执行代码模块可以是一条指令或者多条指令,甚至可以分布在几个不同的代码段、不同的程序和多个存储设备上。类似地,本文中,操作数据可以在模块中标识和说明,可以用任何适当的形式体现,并且可以在任何适当类型的数据结构内组织。操作数据可被收集成单个数据集,或者可以分布在不同的位置,包括在不同的存储设备上,并且可以至少部分仅仅作为电子信号存在于系统或网络上。
易于理解的是如在本文附图中描述和例示的本申请的各个组件可以按照各种不同的配置进行安排和设计。从而,实施例的详细说明并不意图限制要求保护的本申请的范围,而仅仅是本申请的所选实施例的代表。
本领域的普通技术人员易于理解以上所述的可以用不同顺序的多个步骤,和/或用配置与公开的那些配置不同的硬件元件来实践。于是,尽管基于这些优选实施例说明了本申请,不过对本领域的技术人员来说显然某些修改、变化和备选结构会是显而易见的。
尽管说明了本申请的优选实施例,不过要明白的是记载的实施例仅仅是例证性的,当考虑到其各种等同物和修改(例如,协议、硬件设备、软件平台等)时,本申请的范围仅由附加的权利要求书限定。
Claims (16)
1.一种系统,包括:
区块链网络,包括:
排序者对等体,所述排序者对等体被配置成:
创建和传播新区块;和
一个或多个外围对等体,所述一个或多个外围对等体耦接到所述排序者对等体,每个外围对等体被配置成:
计算新区块的哈希值;
确定计算的哈希值不同于来自大多数外围对等体的哈希值;
确定与来自大多数外围对等体的不同哈希值对应的一个或多个区块不同于新区块,和作为响应:
停止向区块链网络提交区块。
2.按照权利要求1所述的系统,其中所述一个或多个外围对等体中的每个确定计算的哈希值没有不同于来自大多数外围对等体的哈希值,和作为响应:
将新区块提交给区块链网络。
3.按照权利要求1所述的系统,其中所述大多数外围对等体包括区块链网络中的大部分外围对等体,但不包括计算新区块的哈希值的外围对等体。
4.按照权利要求1所述的系统,其中所述一个或多个外围对等体确定计算的哈希值不同于来自大多数外围对等体的哈希值包括所述一个或多个外围对等体还被配置成:
将计算的哈希值传送给所述大多数外围对等体;
从所述大多数外围对等体接收区块的哈希值;
比较计算的哈希值和每个接收的哈希值;和
将一个或多个接收的哈希值识别为不同于计算的哈希值。
5.按照权利要求4所述的系统,其中一个或多个外围对等体确定没有与来自大多数外围对等体的不同哈希值对应的区块不同于新区块,和作为响应:
确定提供不匹配的哈希值的外围对等体是恶意外围对等体;和
将新区块提交给区块链网络。
6.按照权利要求1所述的系统,其中所述一个或多个外围对等体确定与来自大多数外围对等体的不同哈希值对应的一个或多个区块不同于新区块包括所述一个或多个外围对等体还被配置成:
请求与来自大多数外围对等体的不同哈希值对应的区块;
响应于所述请求,接收区块;
比较接收的区块和新区块;和
响应于一个或多个接收的区块不同于新区块,确定排序者对等体是区块链网络中的恶意对等体。
7.按照权利要求6所述的系统,其中接收的区块和新区块都由排序者对等体正确地签名。
8.一种方法,包括:
由区块链网络的一个或多个外围对等体中的每个接收来自排序者对等体的新区块;
计算新区块的哈希值;
确定计算的哈希值不同于来自大多数外围对等体的哈希值;
确定与来自大多数外围对等体的不同哈希值对应的一个或多个区块不同于新区块,和作为响应:
停止向区块链网络提交区块。
9.按照权利要求8所述的方法,其中所述一个或多个外围对等体中的每个确定计算的哈希值没有不同于来自大多数外围对等体的哈希值,和作为响应,所述方法还包括:
将新区块提交给区块链网络。
10.按照权利要求8所述的方法,其中所述大多数外围对等体包括区块链网络中的大部分外围对等体,但不包括计算新区块的哈希值的外围对等体。
11.按照权利要求8所述的方法,其中所述一个或多个外围对等体确定计算的哈希值不同于来自大多数外围对等体的哈希值包括:
由所述一个或多个外围对等体将计算的哈希值传送给所述大多数外围对等体;
从所述大多数外围对等体接收区块的哈希值;
比较计算的哈希值和每个接收的哈希值;和
将一个或多个接收的哈希值识别为不同于计算的哈希值。
12.按照权利要求11所述的方法,其中响应于所述一个或多个外围对等体确定没有与来自大多数外围对等体的不同哈希值对应的区块不同于新区块,所述方法还包括:
由所述一个或多个外围对等体确定提供不匹配的哈希值的外围对等体是恶意外围对等体;和
将新区块提交给区块链网络。
13.按照权利要求8所述的方法,其中所述一个或多个外围对等体确定与来自大多数外围对等体的不同哈希值对应的一个或多个区块不同于新区块包括:
由所述一个或多个外围对等体请求与来自大多数外围对等体的不同哈希值对应的区块;
响应于所述请求,接收区块;
比较接收的区块和新区块;和
响应于一个或多个接收的区块不同于新区块,确定排序者对等体是区块链网络中的恶意对等体。
14.按照权利要求13所述的方法,其中接收的区块和新区块都由排序者对等体正确地签名。
15.一种包含指令的非临时性计算机可读介质,当由处理器读取时,所述指令使所述处理器执行按照权利要求8-14任意之一所述的方法。
16.一种设备,包括执行按照权利要求8-14任意之一所述的方法的步骤的模块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/422,956 US11949691B2 (en) | 2019-05-24 | 2019-05-24 | Malicious peer identification |
US16/422,956 | 2019-05-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111985003A true CN111985003A (zh) | 2020-11-24 |
Family
ID=73441791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010426725.2A Pending CN111985003A (zh) | 2019-05-24 | 2020-05-19 | 数据库恶意对等体识别 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11949691B2 (zh) |
CN (1) | CN111985003A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112926053A (zh) * | 2021-01-26 | 2021-06-08 | 上海树图区块链研究院 | 无许可区块链系统中恶意区块的探测方法、系统及p2p网络 |
US11089051B1 (en) | 2021-02-15 | 2021-08-10 | Theta Labs, Inc. | Preventing denial-of-service attacks in decentralized edge networks using verifiable delay functions (VDFs) |
CN113297569A (zh) * | 2021-05-06 | 2021-08-24 | 湖南兆物信链科技集团有限公司 | 基于哈希图的攻击处理方法、设备及存储介质 |
WO2022111109A1 (zh) * | 2020-11-25 | 2022-06-02 | 深圳前海微众银行股份有限公司 | 一种区块链的抗分叉检测方法及装置 |
WO2022121508A1 (en) * | 2020-12-07 | 2022-06-16 | International Business Machines Corporation | Minimizing the impact of malfunctioning peers on blockchain |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019235864A1 (ko) * | 2018-06-05 | 2019-12-12 | 주식회사 네트워크디파인즈 | 신뢰가 없는 네트워크에서 데이터 전달을 증명하는 방법 및 장치 |
US11177962B2 (en) * | 2019-02-05 | 2021-11-16 | Visa International Service Association | Optimizations for verification of interactions system and method |
US11088844B2 (en) * | 2019-03-26 | 2021-08-10 | International Business Machines Corporation | Preservation of privacy of inputs |
EP3754899B1 (en) * | 2019-06-20 | 2022-03-02 | Telefónica Iot & Big Data Tech, S.A. | Method and system for inter-dlt networks trust enhancement |
US11468044B2 (en) * | 2019-11-25 | 2022-10-11 | Visa International Service Association | Optimizations for verification of interactions system and method using probability density functions |
US11275726B1 (en) * | 2020-12-06 | 2022-03-15 | Kamu Data Inc. | Distributed data processing method with complete provenance and reproducibility |
CN114911925A (zh) * | 2021-02-10 | 2022-08-16 | 中国人民银行数字货币研究所 | 一种区块链地址分类方法和装置 |
US11689374B1 (en) * | 2021-11-15 | 2023-06-27 | OneSpan Canada Inc. | Blockchain-enhanced proof of identity |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657438A (zh) * | 2017-09-18 | 2018-02-02 | 联动优势科技有限公司 | 一种区块链生成方法、数据验证方法、节点及系统 |
CN109361661A (zh) * | 2018-10-08 | 2019-02-19 | 莆田市烛火信息技术有限公司 | 一种依附相关链算力的区块链的共识装置 |
US20190109713A1 (en) * | 2017-10-06 | 2019-04-11 | Stealthpath, Inc. | Methods for internet communication security |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9836908B2 (en) | 2014-07-25 | 2017-12-05 | Blockchain Technologies Corporation | System and method for securely receiving and counting votes in an election |
EP3125489B1 (en) | 2015-07-31 | 2017-08-09 | BRITISH TELECOMMUNICATIONS public limited company | Mitigating blockchain attack |
US9871775B2 (en) * | 2015-08-10 | 2018-01-16 | Cisco Technology, Inc. | Group membership block chain |
US10387684B2 (en) | 2016-12-09 | 2019-08-20 | International Business Machines Corporation | Interlocked blockchains to increase blockchain security |
US10740733B2 (en) * | 2017-05-25 | 2020-08-11 | Oracle International Corporaton | Sharded permissioned distributed ledgers |
GB201709188D0 (en) | 2017-06-09 | 2017-07-26 | Nchain Holdings Ltd | Computer-Implemented system and method |
US11251975B1 (en) * | 2017-09-27 | 2022-02-15 | Seagate Technology Llc | Block chain based trusted security infrastructure |
US20200366495A1 (en) * | 2018-01-29 | 2020-11-19 | Ubiquicorp Limited | Proof of majority block consensus method for generating and uploading a block to a blockchain |
US20210224776A1 (en) * | 2018-05-15 | 2021-07-22 | Schlumberger Technology Corporation | Blockchain-based entitlement service |
US11238448B1 (en) * | 2019-03-21 | 2022-02-01 | Equinix, Inc. | Efficient network service provisioning |
US11151261B2 (en) * | 2019-04-03 | 2021-10-19 | Cisco Technology, Inc. | Blockchain system with severable data and cryptographic proof |
-
2019
- 2019-05-24 US US16/422,956 patent/US11949691B2/en active Active
-
2020
- 2020-05-19 CN CN202010426725.2A patent/CN111985003A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657438A (zh) * | 2017-09-18 | 2018-02-02 | 联动优势科技有限公司 | 一种区块链生成方法、数据验证方法、节点及系统 |
US20190109713A1 (en) * | 2017-10-06 | 2019-04-11 | Stealthpath, Inc. | Methods for internet communication security |
CN109361661A (zh) * | 2018-10-08 | 2019-02-19 | 莆田市烛火信息技术有限公司 | 一种依附相关链算力的区块链的共识装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022111109A1 (zh) * | 2020-11-25 | 2022-06-02 | 深圳前海微众银行股份有限公司 | 一种区块链的抗分叉检测方法及装置 |
WO2022121508A1 (en) * | 2020-12-07 | 2022-06-16 | International Business Machines Corporation | Minimizing the impact of malfunctioning peers on blockchain |
US11375009B1 (en) | 2020-12-07 | 2022-06-28 | International Business Machines Corporation | Minimizing the impact of malfunctioning peers on blockchain |
GB2617732A (en) * | 2020-12-07 | 2023-10-18 | Ibm | Minimizing the impact of malfunctioning peers on blockchain |
CN112926053A (zh) * | 2021-01-26 | 2021-06-08 | 上海树图区块链研究院 | 无许可区块链系统中恶意区块的探测方法、系统及p2p网络 |
CN112926053B (zh) * | 2021-01-26 | 2023-11-28 | 上海树图区块链研究院 | 无许可区块链系统中恶意区块的探测方法、系统及p2p网络 |
US11089051B1 (en) | 2021-02-15 | 2021-08-10 | Theta Labs, Inc. | Preventing denial-of-service attacks in decentralized edge networks using verifiable delay functions (VDFs) |
CN113297569A (zh) * | 2021-05-06 | 2021-08-24 | 湖南兆物信链科技集团有限公司 | 基于哈希图的攻击处理方法、设备及存储介质 |
CN113297569B (zh) * | 2021-05-06 | 2022-08-12 | 湖南兆物信链科技集团有限公司 | 基于哈希图的攻击处理方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11949691B2 (en) | 2024-04-02 |
US20200374300A1 (en) | 2020-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111985003A (zh) | 数据库恶意对等体识别 | |
US11943237B2 (en) | Malicious peer identification for database block sequence | |
CN115210741B (zh) | 部分有序的区块链 | |
CN112084256A (zh) | 用于数据库的聚合机器学习验证 | |
CN111951003A (zh) | 用于管理对用户数据的同意的认知系统 | |
CN114365116A (zh) | 来自私有区块链的更新的链外通知 | |
US11775556B2 (en) | Faster view change for blockchain | |
CN112084257A (zh) | 有效的数据库机器学习验证 | |
CN112131254A (zh) | 用于区块链分类账的sql处理引擎 | |
US11251938B2 (en) | Blockchain verification using non-consecutive blocks | |
CN111881206A (zh) | 用于数据块的多层图像编码 | |
CN114651248A (zh) | 用于经许可的区块链的随机节点选择 | |
CN115211093A (zh) | 数据对象的有效阈值存储 | |
CN112241919A (zh) | 具有数据流控制的多域区块链网络 | |
CN111881109B (zh) | 数据库可合并分类账 | |
CN112084255A (zh) | 机器学习应用的有效验证 | |
CN114450708A (zh) | 基于现有链码的链码推荐 | |
CN115004625A (zh) | 用于区块链分类账的索引结构 | |
US11343313B1 (en) | Fault tolerant periodic leader rotation for blockchain | |
CN115605868A (zh) | 跨网身份提供 | |
CN112733159A (zh) | 用于区块链的自由搭乘节点识别 | |
CN112052474A (zh) | 蓝光拷贝服务 | |
CN114981773A (zh) | 无冲突版本控制 | |
CN116361823A (zh) | 用于隐私保护的区块链的选择性审计处理 | |
CN112019586B (zh) | 用于区块链的验证的方法和系统 |
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 |