CN115668856A - 分散式数据库中的许可事件 - Google Patents
分散式数据库中的许可事件 Download PDFInfo
- Publication number
- CN115668856A CN115668856A CN202180039625.7A CN202180039625A CN115668856A CN 115668856 A CN115668856 A CN 115668856A CN 202180039625 A CN202180039625 A CN 202180039625A CN 115668856 A CN115668856 A CN 115668856A
- Authority
- CN
- China
- Prior art keywords
- event
- blockchain
- event data
- transaction
- context
- 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
Images
Classifications
-
- 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
-
- 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
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
示例操作包括以下一个或多个操作:从实体接收事件数据,确定事件数据满足背书策略,设置对应于事件数据的上下文的标识符,生成包括事件数据和标识符的事件,以及提交事件以用于记录在分散式数据库中,其中标识符用于验证对应于事件数据中的上下文的状态是正确的。
Description
背景技术
集中式数据库在一个位置处的单个数据库(例如,数据库服务器)中存储和维护数据。该位置通常是中央计算机,例如台式中央处理单元(CPU)、服务器CPU或大型计算机。存储在集中式数据库上的信息典型地可从多个不同点访问。多个用户或客户端工作站可以例如基于客户端/服务器配置在集中式数据库上同时工作。集中式数据库由于其单个位置而易于管理、维护和控制,尤其是出于安全目的。在集中式数据库内,数据冗余被最小化,因为所有数据的单个存储位置也意味着给定数据集仅具有一个主要记录。
发明内容
一个示例实施例提供了一种***,该***包括:接收器,用于从实体接收事件数据;存储区域,用于存储智能合约(smart contract)的链码;以及处理器,用于执行智能合约以执行以下中的一项或多项:确定事件数据满足背书策略(endorsement policy);设置对应于事件数据的上下文的标识符;生成包括事件数据和标识符的事件,以及提交事件以记录在分散式数据库中,其中标识符验证与事件数据中的上下文相对应的状态是正确的。
另一示例实施例提供一种方法,该方法包括以下中的一项或多项:从实体接收事件数据;确定事件数据满足背书策略;设置对应于事件数据的上下文的标识符;生成包括事件数据和标识符的事件;以及提交事件以用于记录在分散式数据库中,其中标识符用于验证对应于事件数据中的上下文的状态是正确的。
又一示例实施例提供一种包括指令的非暂态性计算机可读介质,指令在被处理器读取时使处理器执行下列操作中的一项个或多项:从实体接收事件数据;确定事件数据满足背书策略;设置对应于事件数据的上下文的标识符;生成包括事件数据和标识符的事件;以及提交事件以用于记录在分散式数据库中,其中,标识符验证对应于事件数据中的上下文对应的状态是正确的。
附图说明
图1A示出了根据示例实施例的包括数据库的***的网络图。
图1B示出了根据示例实施例的与数据库一起操作的组件的另一网络图。
图1C示出根据示例实施例的与数据库一起操作的组件的另一网络图;
图2A示出根据示例实施例的示例区块链架构配置。
图2B示出根据示例实施例的区块链交易(transaction)流。
图3A示出根据示例实施例的经许可的网络。
图3B示出根据示例实施例的另一经许可的网络。
图3C示出根据示例实施例的未许可(permissionless)的网络。
图4示出了根据示例实施例的***消息图。
图5示出了根据示例实施例的流程图。
图6A示出根据示例实施例的被配置为执行本文所述的一个或多个操作的示例***。
图6B示出根据示例实施例的被配置为执行本文所述的一个或多个操作的另一示例***。
图6C示出根据示例实施例的被配置为利用智能合约的另一示例***。
图6D示出根据示例实施例的被配置为利用区块链的又一示例***。
图7A示出根据示例实施例的新块被添加到分布式分类账的过程。
图7B示出根据示例实施例的新数据块的内容。
图7C示出了根据示例实施例的用于数字内容的区块链。
图7D示出根据示例实施例的可以表示区块链中的块的结构的块。
图8A示出根据示例实施例的存储机器学习(人工智能)数据的示例区块链。
图8B示出根据实例实施例的示例量子安全区块链。
图9示出了支持一个或多个示例实施例的示例***。
具体实施方式
将容易理解的是,如在本文的附图中大体描述和图示的,本发明的部件可以以各种不同的配置布置和设计。因此,如附图中表示的方法、装置、非暂态性计算机可读介质和***中的至少一个的实施例的以下详细描述并不旨在限制所要求保护的申请的范围,而是仅仅表示所选择的实施例。
在一个或多个实施例中,如贯穿本说明书所描述的即时特征、结构、或特性可以以任何适合的方式被组合或移除。例如,贯穿本说明书的短语“示例实施例”、“一些实施例”或其他类似语言的使用是指以下事实:结合实施例所描述的特定特征、结构或特性可以包括在至少一个实施例中。因此,贯穿本说明书出现的短语“示例实施例”、“在一些实施例中”、“在其它实施例中”、或其它类似语言不一定都指相同组的实施例,并且在一个或多个实施例中,可以任何合适的方式组合或去除所描述的特征、结构、或特性。进一步,在图中,元件之间的任何连接可以允许单向和/或双向通信,即使所描绘的连接是单向或双向箭头。而且,在附图中描绘的任何设备可以是不同的设备。例如,如果移动设备被示为发送信息,则有线设备也可被用于发送该信息。
此外,虽然在实施例的描述中使用了术语“消息”,但是也可使用其他类型的网络数据,例如,数据包、帧、数据报等。此外,尽管在示范性实施例中可以描述特定类型的消息和信令,但是它们不限于特定类型的消息和信令。
在一个实施例中,申请利用作为分布式存储***的分散式数据库(诸如区块链),该分布式存储***包括彼此通信的多个节点。分散式数据库包括类似于能够在互不信任方之间维护记录的分布式分类账的仅附加不可变数据结构。不可信方在本文中称为对等体或对等节点。每个对等体维护数据库记录的副本,并且没有单个对等体可以修改数据库记录,而在分布式对等体之间没有达成共识(consensus)。例如,对等体可执行共识协议以验证区块链存储交易,将存储交易分组成块,并在块上建立哈希链。为了共识性(consistency),该过程根据需要通过排序存储交易形成分类账。在各种实施例中,可以使用经许可的和/或未许可的区块链。在公共或未许可的区块链中,任何人都可以在没有特定身份的情况下参与。公共区块链可涉及本地加密货币并且使用基于各种协议(诸如工作证明(PoW))的共识。相反,经许可的区块链数据库提供共享共同目标但不完全信任彼此的一组实体(诸如交换资金、商品、信息等的企业)之间的安全交互。
本申请可以利用操作任意、可编程逻辑的区块链,其被定制为分散式存储方案并且被称为“智能合约”或“链码”。在一些情况下,可存在被称为***链码的管理功能和参数的专用链码。申请还可以利用智能合约,智能合约是可信的分布式应用,其利用区块链数据库的防篡改特性和节点之间的基础协议,这被称为背书或背书策略。与本申请相关联的区块链交易在被提交至区块链之前可以被“背书”,而未被背书的交易被忽略。背书策略允许链码以对于背书必需的对等节点集合的形式指定用于交易的背书者/背书人(endorser)。当客户端将交易发送给背书策略中指定的对等体时,执行该交易以验证交易。在验证之后,交易进入排序阶段,其中使用共识协议产生被分组为块的背书交易的有序序列。
本申请可以利用作为区块链***的通信实体的节点。在不同类型的多个节点可在同一物理服务器上运行的意义上,“节点”可执行逻辑功能。节点被分组在信任域中并且与以不同方式控制它们的逻辑实体相关联。节点可以包括不同类型,诸如向背书者(例如,对等体)提交交易调用并且向排序服务(例如,排序节点)广播交易提案的客户端或提交-客户端节点。另一类型的节点是对等节点,其可接收客户端提交的交易、提交交易并维持区块链交易的分类账的状态和副本。对等体也可以具有背书人的作用。排序服务节点或排序器是为所有节点运行通信服务的节点,并且其实现递送保证,诸如在提交交易和修改区块链的世界状态时向***中的每个对等节点广播。世界状态可以构成初始区块链交易,其通常包括控制和设置信息。
本申请能够利用分类账,该分类账是区块链的所有状态转换的排序、防篡改记录。状态转换可以由参与方(例如,客户端节点、排序节点、背书者节点、对等节点等)提交的链码调用(即,交易)引起。每个参与方(诸如对等节点)可维护分类账的副本。交易可以导致一组资产密钥值对作为一个或多个操作数被提交到分类账,诸如创建、更新、删除等。分类账包括用于在块中存储不可变的排序记录的区块链(也称为链)。分类账还包括维护区块链的当前状态的状态数据库。
本申请可以利用作为交易日志的链,所述交易日志被构造为哈希链接的块,并且每个块包含N个交易的序列,其中N等于或大于1。块报头包括块的交易的哈希以及先前块的报头的哈希。以这种方式,分类账上的所有交易可被排序和加密地链接在一起。因而,不可能篡改分类账数据而不破坏哈希链接。最近添加的区块链块的哈希表示在链之前已经出现的每个交易,从而使得可以确保所有对等节点都处于共识且可信的状态。链可存储在对等节点文件***(即,本地的、附加的存储、云等)上,有效地支持区块链工作负载的仅附加性质。
不可变分类账的当前状态表示包括在链交易日志中的所有密钥的最新值。因为当前状态表示通道已知的最新密钥值,所以有时将其称为世界状态。链码调用执行针对分类账的当前状态数据的交易。为了使这些链码交互有效,密钥的最新值可以存储在状态数据库中。状态数据库可以简单地是到链的交易日志中的索引视图,并且因此可以在任何时间从链中重新生成。在对等节点启动时并且在接受交易之前,可以自动恢复(或者如果需要的话生成)状态数据库。
事件是在区块链网络和其他类型的分散式数据库中传输的一种类型的消息。当满足特定条件时,事件可以由验证者使用智能合约的链码创建。例如,当新的交易块将被提交至区块链时,可以创建通常被称为基本事件的一种类型的事件。其他类型的事件可以构成链码的一部分或者指示链码的状态。例如,定制事件可以涉及链码已经指定用于分发到网络内部或外部的实体(例如,节点、用户、客户端等)的某些消息。网络的事件具有例如由它们的确认器和/或网络策略确定的不同级别的隐私、访问或限制并不罕见。不同的链码可以用于管理具有不同状态级别的事件的创建、分发和/或访问。
示例实施例提供方法、***、组件、非暂态计算机可读媒质、设备和/或网络,其在事件被存储在分散式数据库(诸如但不限于区块链)中之前生成并验证事件。事件生成和验证以改善计算机管理区块链信息和资产的功能的方式来执行。在一个实施例中,通过添加与事件关联地存储的新信息来实现改进,该新信息将事件(以及例如一个或多个相关联的交易)绑定到由数据库管理的对象和/或命名空间。所述新信息例如可以是密钥信息,诸如但不限于密钥名称或密钥地址。
通过基于新信息执行操作,在将事件提交到数据库之前和/或结合与事件有关的数据库查询,事件的验证可以与相关联的交易以比较多的时间和处理效率的方式执行。在一个实施例中,密钥信息相对于对象或事件被预先验证。因此,当事件(和交易)存在于与事件相关联的字段中时,将密钥信息与要记录在区块链或其他数据库中的事件(以及例如一个或多个伴随交易)一起用于自动验证事件(和(多个)交易)。在一个实施例中,这样的字段可以被包括在或附加到事件。在该实施例或另一实施例中,与事件相关联的交易可包括消息格式,该消息格式包括字段以及事件数据。因此,检查有效密钥信息(例如,匹配已知的密钥信息)的存在用于验证事件及其(多个)伴随交易,而不必查询数据库中的其他节点的网页员来执行验证。
在一个实施例中,执行操作以将事件与状态命名空间中的伪写入相关。当定义事件时,事件可包括建立产生事件的有效性的密钥信息。当事件和一个或多个相关联的交易被验证时,事件可被评估为该密钥信息的伪写入。甚至当没有对该密钥执行状态修改时,验证可以确保事件和/或相关联的交易将仍然有效,即使交易修改了该密钥信息。这具有以下优点:事件的消费者(例如,节点和/或节点客户端)现在可以在且仅当事件与预期的密钥信息相关联时才认为事件有效。如果密钥及其访问被适当地选择,则事件的有效性暗示一个或多个相关联的交易的有效性。
除了前述内容之外,从安全角度看,本文描述和描绘的即时解决方案的一些附加益处包括向数据库客户端(例如,账单管理应用中的消费者)保证事件及其交易和其他内容是正确的,条件是事件及其相关联的交易/内容被适当地背书并且假设背书策略被适当地设置(例如,如果背书策略不正确,则不能主张任何分类账密钥的正确性)。利用由本文描述的实施例提供的密钥信息及其伴随操作,如果数据库用户(例如,通过客户端应用)想要尝试确认事件的正确性,则用户将不得不在接收到事件之后求助于查询,以便从足够数量的对等节点验证事件的条件或其他内容是否实际上是真实的。
图1A示出了用于在对应于事件的数据被生成并被记录在分散式数据库中之前证实事件是正确的***100的示例实施例的逻辑图。为了说明性目的,分散式数据库将被讨论为区块链。然而,在另一实施例中,可以使用不同类型的数据库。
参照图1A,***100包括网络实体,诸如耦接至客户端(或客户端应用)110的节点(N1)120。客户端110可以生成通过通信链路传输到节点120的事件数据115,通信链路例如可以包括有线或无线网络或其他通信路径。事件数据可以包括任何形式的信息,但可以具体地涉及区块链的预期应用。在下面更详细地讨论的一个非限制性示例中,事件数据包括针对一个或多个网络实体的客户的账单信息。在这种情况下,网络实体可以属于例如同一公司或不同公司。在一个实施例中,客户端110可以在被递送到节点120之前对事件数据和/或一个或多个相关联的交易进行加密。对应的解密(例如,密钥)信息可以位于区块链网络或相关联的客户端的一个或多个其他节点处,所述节点可以用于执行解密以访问例如从区块链查询产生的事件。节点120可以是分散式数据库的多个节点中的一个。在一个实施例中,节点120可以是在将事件和交易提交至区块链之前执行事件和/或交易验证的对等节点。
如图1A所示,节点120包括处理器122和存储区域124,存储区域124存储由处理器执行的智能合约的链码。在操作中,处理器从客户端110接收事件数据,然后将事件数据与背书策略125比较。如果满足背书策略的条件或要求,处理器122执行智能合约的链码以生成事件。事件单独或与相关联的一个或多个交易一起可随后被提交以供区块链的共识和提交(consensus and committal)。在一个实施例中,每个事件或相关联的交易可以涉及在区块链数据库中管理的相同或不同的对象。在一些情况下,事件和相关联的交易可指示该对象的不同状态。因此,区块链可存储具有相关联交易的事件,其中每个事件的内容可表示相关联对象的不同状态(或状态改变)。为了在命名空间基础上生成密钥信息,节点120(并且实际上区块链网络中的一个或多个其他节点)可包括命名空间逻辑126。
图1B示出了随着时间以区块链记录的一系列交易1701至170N之间的逻辑关系150的示例。在该示例中,所有交易涉及相同的对象或命名空间190。在计费应用中,对象190可以对应于客户账单的状态,该客户账单对应于节点120接收的事件数据。在这种情况下,客户端110可以是银行、***公司、公用事业公司或对货物和/或服务开账单的另一实体。
参照图1B,交易1701至170N中的一个或多个可与由节点120的处理器基于从客户端110接收的事件数据的不同项生成的对应事件相关联。在该示例中,事件(E1)1801对应于相关联的交易(T1)1701,事件(E2)1802对应于相关联的交易(T2)1702,等等。每个事件可指示对象(或其相关联的交易)的状态。虽然在图1B中显示事件与交易不同,但是在一个实施例中,事件(或事件数据)可包括在交易或事件格式的附加或附加字段中。例如,在图1C所示的一个实施例中,每个交易或事件的格式195可以具有消息结构,该消息结构包括含有指示事件数据的信息的第一字段196、包括可以用于根据本文描述的一个或多个实施例的改进验证的事件密钥信息的第二字段197、以及包括交易信息的第三字段198。
根据以下示例可以理解交易与事件之间的一种可能关系。当对象190指示客户X的账单时,事件(E1)1801可指示已经为客户X生成账单的状态。相关交易(T1)1701可指示例如账单的金额。事件(E2)1802可指示账单的不同状态。例如,事件E2可以指示尚未为交易支付账单的状态(T2)1702,其指示该账单的第一到期日期已经到期。一个或多个后续交易可反映不同附加状态改变和相关联交易。例如,偶数(EN)180N可以指示顾客X的账单已被支付,并且其相关联的交易(TN)170N可以指示晚期费用已被添加到账单。由此,对于区块链分类账,可以为由网络管理的相同对象记录具有相关联事件的交易。
在一个实施例中,对象可与区块链网络的状态命名空间相关联。命名空间可以是具有与智能合约的全局命名空间不同的验证规则的状态空间的分区,诸如超分类账结构中的私有数据收集。命名空间甚至可以是具有其自身的验证规则的单个密钥,诸如超分类账结构中的基于状态的背书或其他区块链***中的令牌。
返回图1A,为了防止欺诈并且确保存储在区块链中的信息的有效性,智能合约执行处理器122的链代码可以生成包括用于验证的附加字段的事件,例如,确认事件是正确的或者以其他方式是真的和有效的。这可以例如由处理器执行智能合约124的链码以生成链接到对象的信息(例如,标识符)来执行。该标识符可例如由网络权力生成并被预先授权以与对象(或命名空间)一起使用。因此,标识符可以充当仅通过被链接到事件来验证事件的基础,由此减轻查询区块链中的对等节点的分类账以便确定事件(及其相关联的交易)的内容是正确的需要。在图1C的示例事件或交易格式中,标识符可被包括在第二字段197中,第二字段197是为事件验证目的而保留的新生成的字段。
一旦标识符被设置(例如,通过访问预存储的信息或直接从网络权力获取),处理器122可以将标识符***用于验证的第二字段中。以至少这种方式,所述处理器可以被认为执行伪写入操作,所述伪写入操作涉及在所述事件(或交易)的专用字段中预存信息,所述信息可以用于在生成事件用于共识和提交到区块链之前对事件进行验证。该标识符在该事件中的生成和***(或其他关联)可改善计算机管理该区块链的效率,至少在减少对等节点和总体管理网络实体的处理开销方面。
在一个实施例中,存储在事件的新的第二字段中的信息可以链接到与事件相关联的对象。例如,在一个实施例中,被伪写到事件/交易的第二字段中的生成的标识符可包括已经为对应于事件的特定对象预先生成的密钥信息。因为已经(例如,通过网络机构)验证了对象的密钥信息,所以可以通过确认密钥信息与事件相关联来验证事件(及其相关联的交易)。这减轻了在将交易提交至要被附加到区块链的新块之前查询区块链节点的分类架以验证事件及其相关联的交易的需要。因此,密钥信息可用于有效地将事件绑定到经编程以基于密钥信息执行验证或授权的授权机制或验证授权。在一个实施例中,密钥信息可以包括分配给对象的密钥名称。在另一实施例中,密钥信息可包括分配给对象的密钥地址。在又一实施例中,处理器可基于客户端110接收的事件数据来生成与对象相关联的不同类型的标识信息,以用于授权事件的生成。密钥信息可以在***到事件或交易格式的附加字段中之前用一个或多个安全特征(例如,不同形式的加密)来编码。
在一个实施例中,由处理器122实现的智能合约的链码可以被编程为基于命名空间生成用于事件授权的密钥信息。每个命名空间可具有多个对应的对象,这些对象可不同于对应于其他命名空间的对象,并且这些对象中的每个可具有一个或多个对应的交易和/或事件,这取决于例如区块链的预期应用。
为了在命名空间基础上生成密钥信息,节点120(并且实际上区块链网络中的一个或多个其他节点)可包括命名空间逻辑126。这样的逻辑可以是,例如,诸如但不限于Hyperledger Sawtooth平台的区块链平台的一部分。命名空间逻辑126可被节点120用来授权事件的生成以提供不相关交易(例如,与同一对象不相关的交易)之间的分离。例如,节点120可以包括命名空间逻辑126,命名空间逻辑126使用全局状态存储并允许将存储分成不同的命名空间,其中每个命名空间对应于对象的单独类别。在一个非限制性示例中,每个命名空间可对应于不同的客户,并且对应于每个命名空间的事件可对应于发给那些客户的账单。
当节点120包括命名空间逻辑时,可为每个命名空间中的每个对象预先生成不同的密钥信息。在一个实施例中,可为对应于同一命名空间的多个对象生成相同的密钥信息。在任一情况下,密钥信息可被预先验证和授权以与对应于关联对象的事件和/或交易关联地使用。以此方式,可以通过确认节点120发出的用于授权的事件以及区块链中的后续记录具有分配给事件所对应的对象的适当对应密钥信息来执行事件授权。因此,可以防止查询区区块链中的节点目录以执行事件授权的低效处理,从而改进计算机的操作,因为它涉及管理区区块链交易的事件生成、授权、共识和提交,以及涉及当区块链被相同或另一节点查询时验证交易及其相关联的事件的后续操作。
根据前述特征,节点120可在实现本文描述的一个或多个实施例时如下操作。当从客户端110接收到事件数据时,处理器122通过在事件(或交易格式)中另外设置新的(事件验证)字段来发出新的事件,该新的字段包括与对象和/或对象所对应的命名空间相对应的密钥信息。如先前所解释的,所发出的事件可以包括指示与事件正对其执行伪写入的交易相对应的状态的信息。平台验证码(例如,包括在智能合约的链码中)在验证一个或多个对应交易时检查新(事件验证)字段中的密钥信息。
在一些情况下,与发出的事件相关联的交易可能已经修改了密钥信息。然而,将密钥信息存储在新字段中确保即使当交易被修改时,例如由节点120或平台验证码引用的密钥信息(除了该交易实际执行的任何修改之外)仍然被认为是有效的。
随后,当客户端应用程序(例如,对应于客户端110、节点120的另一客户端或区块链网络中的另一节点的客户端)执行查询以从区块链中的块检索交易事件时,该客户端应用程序可通过基于存储在该交易事件的事件验证字段中的密钥信息执行比较来验证交易事件的有效性(或正确性)。例如,因为客户端应用可获得或已记录了与取回的交易事件相关联的特定对象(和/或命名空间)的密钥信息,客户端应用可将存储在取回的交易事件的字段中的密钥信息与该对象(或命名空间)的已知密钥信息进行比较。如果存在匹配,客户端应用确定交易事件是有效的,而不必查询在区块链网络中的其他节点的分支。如果不存在匹配,则客户端应用可以确定区块链中记录的交易事件是欺诈性的(例如,来自恶意攻击者)或以其他方式不可信。
这些实施例的示例场景是计费应用。例如,如果由节点120的处理器122执行的智能合约将要发出指示客户的特定账单(对象)已被完全支付的状态的事件,那么可以用引用账单的引用密钥信息的字段来增强事件。在这种情况下,如果客户和/或其他方(例如,***公司)授权相关联的交易(例如,转移资金来支付账单)有权修改该账单的事件状态,“完全支付的账单”事件可以仅被认为是有效的。事件状态的有效性可以基于存储在事件的附加字段中的密钥信息(或交易消息格式)来确认。
在一些情况下,在上述示例场景中,交易本身可以使得密钥信息被修改。例如,将账单的事件状态从“未付费”更新为“完全付费”可能导致修改一大组密钥,不是所有密钥都易于预测或需要等同的背书以使账单支付被授权。然而,这些密钥中的一些(诸如表示账单的已支付状态的密钥)必须在有效交易中被修改,并且因此必须被经授权修改账单的实体背书。通过将事件绑定到密钥信息,客户端应用从试图确认完整支付的区块链中检索信息可能仅需要确定创建事件的节点120中的智能合约的状态机制的子集。这可以具有保存顾客信息的隐私和安全性的有益效果,同时允许客户端应用获得它已经请求的信息以便确认账单支付的有效性。
在没有密钥信息的情况下,客户端应用将需要以不安全的方式操作(完全不执行事件验证)或将至少需要执行时间和处理低效操作以便验证事件,既在提交到区块链之前又在客户端应用的区块链查询之后的验证期间。例如,客户将不得不对分类账状态进行往返查询以确认该事件被适当地生成。此外,在没有本文描述的实施例的事件密钥绑定方法的情况下,尚未支付账单的攻击者可发出有效交易(例如,可能支付不相关的较小账单),但附加指示支付不同的较大账单的事件。当接收到事件时,应用可以(a)检查交易的状态修改,并且尝试验证状态修改对应于事件内容(该方法是脆弱的并且容易出错的),(b)立即返回分类账以询问账单的状态是什么来确认事件内容是正确的(这是昂贵的并且容易出错的),或(c)在面值处接受事件并且经受攻击。通过引入实施例的事件绑定,客户端应用可例如采取具有基于匹配新事件字段中的密钥信息执行的附加有效性检查的方法(c)并且保持安全。
图2A示出根据示例实施例的区块链架构配置200。参照图2A,区块链架构200可包括某些区块链元件,例如,一组区块链节点202。区块链节点202可以包括一个或多个节点204-210(这四个节点仅通过示例来描绘)。这些节点参与许多活动,诸如区块链交易添加和确认过程(共识)。区块链节点204-210中的一个或多个可以基于背书策略对交易进行背书,并且可以为架构200中的所有区块链节点提供排序服务。区块链节点可发起区块链认证并试图写入存储在区块链层216中的区块链不可变分类账,其副本也可存储在支撑物理基础设施214上。区块链配置可以包括被链接到应用编程接口(API)222以访问和执行所存储的程序/应用代码220(例如,链码、智能合约等)的一个或多个应用224,所存储的程序/应用代码220可以根据参与者寻求的定制配置来创建并且可以维护其自己的状态、控制其自己的资产和接收外部信息。这可以例如被部署为交易并且经由附加到分布式分类账而被安装在所有区块链节点204-210上。
区块链基础或平台212可包括不同层的区块链数据、服务(例如,加密信任服务、虚拟执行环境等)和支持物理计算机基础设施,所述基础设施可用于接收和存储新交易并提供对试图访问数据条目的审核者的访问。区块链层216可以暴露接口,该接口提供对处理程序代码和参与物理基础设施214所必需的虚拟执行环境的访问。加密信任服务218可用于验证交易(例如,资产交换交易)并保持信息私有。
图2A的区块链架构配置可经由由区块链平台212暴露的一个或多个接口和提供的服务来处理和执行程序/应用代码220。代码220可以控制区块链资产。例如,代码220可以存储和转移数据,并且可以由节点204-210以智能合约和相关联的链码的形式来执行,该链码具有经受其执行的条件或其他代码元素。作为非限制性实例,可以创建智能合约以执行提醒、更新和/或受到改变、更新等的其他通知。智能合约本身可用于标识与分类账的授权和访问要求和使用相关联的规则。例如,信息226可以包括从客户端应用、节点或其他网络实体接收的事件数据。事件数据可以由接收节点用作生成和验证事件的基础。可以使用包括由接收节点实现的智能合约的链码的逻辑来执行事件生成和验证。例如,该链码可以包括在应用程序224中,或者可以与应用程序224分离。智能合约和/或应用224可以由包括在区块链层216中的一个或多个处理实体(在一种情况下,例如,虚拟机)执行。
在其他操作中,智能合约的链码可以例如基于数据库网络中现有的背书策略生成和验证事件。在一个实施例中,智能合约可以确定与接收的事件数据相关的数据库对象(例如,账单)和/或命名空间。然后,节点可基于背书策略的条款对事件(和任何乘务员交易)进行背书和验证。如果条件是背书和验证被满足(例如,根据事件数据的内容和/或数据库的预期应用可能不同),则节点可以对事件进行数字签名并授权其在整个网络中被发出,例如,包括它被提交到区块链。
在一个实施例中,可以基于与由数据库网络管理的对象或预定命名空间相关联的事件数据来预测背书。例如,接收事件数据的节点的智能合约可以针对由网络管理的已知对象和/或命名空间检查数据的内容。如果存在匹配,则智能合约可以检索与该对象或命名空间关联地存储的密钥信息,然后生成包括用于存储密钥信息的新字段的对应事件。将密钥信息包括在事件中保证了事件的内容(包括例如与事件相关联的任何状态改变或交易)是正确和有效的。
结果228可以包括用新的字段的现在背书的和验证的事件,该新字段包括由智能合约生成的密钥信息。事件可在有或没有一个或多个相关联的交易的情况下输出。该事件(和关联交易)可以输出到区块链网络,用于共识和随后提交到区块链中的新块。在一个实施例中,可以将事件作为通知发送到区块链网络中的其他节点。一旦被提交到区块链,与节点(例如,对等节点204、206、208、210等)通信的客户端应用就可以查询该区块链以寻找事件。包括在新字段中的密钥信息因此可用于自动验证事件的内容和任何相关联的交易是正确的。物理基础设施214可用于检索本文所述的任何数据或信息。
本文描述的智能合约可以经由高级应用和编程语言创建,并且然后写到区块链中的块。智能合约可以包括利用区块链(例如,区块链对等体的分布式网络)注册、存储和/或复制的可执行代码。交易是智能合约代码的执行,其可以响应于满足与智能合约相关联的条件而执行。智能合约的执行可以触发对数字区块链分类账的状态的可信修改。由智能合约执行引起的对区块链分类账的修改可以通过一个或多个共识协议遍及区块链对等体的分布式网络被自动复制。
智能合约可以以密钥值对的格式向区块链写入数据。此外,智能合约代码可以读取存储在区块链中的值,并在应用操作中使用它们。智能合约代码可以将不同逻辑操作的输出写入到区块链中。代码可以用于在虚拟机或其他计算平台中创建临时数据结构。写入区块链的数据可以是公共的和/或可以被加密并维持为私有的。由智能合约使用/生成的临时数据由供应的执行环境保存在存储器中,然后一旦标识了区块链需要的数据就删除。
链码可以包括具有附加特征的智能合约的代码解释。如本文所描述的,链码可以是部署在计算网络上的程序代码,其中链码在共有过程期间由链确认器一起执行和验证。链码接收哈希并且从区块链中检索与通过使用先前存储的特征或上下文提取器创建的数据模板相关联的哈希。如果哈希标识符的哈希和从所存储的标识符模板数据创建的哈希匹配,则链码向所请求的服务发送授权密钥。链码可以向区块链写入与加密细节相关联的数据。
图2B示出根据示例实施例的区块链的节点之间的区块链交易流250的示例。参考图2B,交易流程可包括由应用客户端节点260发送至背书的对等节点281的交易提案291。背书的对等体281可验证客户端签名并且执行链码功能以发起交易。输出可以包括链码结果、在链码中读取的密钥/值版本的集合(读取集合)、以及在链码中写入的密钥/值的集合(写入集合)。如果被批准,提案响应292连同背书签名一起被发送回客户端260。客户端260将背书组装成交易有效载荷293并将其广播至排序服务节点284。排序服务节点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的示例中未示出,但是用于验证块的另一过程是权益证明(proof-of-stake)。与工作证明(proof-of-work)不同,其中,算法用权益证明来奖励解决数学问题的挖掘者,新块的创建者以确定性方式被选择,取决于其财富,也被定义为“权益(stake)”。然后,由选择的/选择的节点执行类似的证明。
利用挖掘364,节点尝试通过对一个变量进行增量改变直到解决方案满足全网络目标来解决块。这产生PoW,从而确保正确答案。换言之,潜在的解决方案必须证明在解决该问题时耗尽计算资源。在一些类型的未许可区块链中,可以为矿工奖励用于正确挖掘封锁的价值(例如,币等)。
这里,PoW过程在块的链旁边使得区块链的修改极其困难,因为攻击者必须修改所有后续块以便接受一个块的修改。此外,随着新块的挖掘,修改块的难度增加,并且后续块的数量增加。通过分发366,成功验证的块被分发通过未许可分组链352,并且所有节点354将该块添加到作为未许可分组链352的可审计的分类账的多数链中。此外,将由发送者356提交的交易中的值存入或以其他方式传送到接收者设备358的数字钱包。
图4示出了根据示例实施例的用于生成和确认事件的***消息图400。参照图4,***图400包括第一实体410、第二实体420以及区块链430。第一实体410可以是区块链网络的第一节点,第二实体420可以是区块链网络的第二节点。
参照图4,消息图包括接收第一消息411,该第一消息包括在生成新事件时考虑的事件数据。可以从与第一实体410、区块链网络的另一节点或另一实体通信的客户端应用接收第一消息。事件数据可包括标识或提供可用作标识区块链网络的对象和/或命名空间的基础的信息的内容。在一个实施例中,事件数据的内容可以指示相关对象的状态(或状态的改变),例如,对于公司的特定客户的账单的对象,事件数据可以指示账单的状态已经从“未付费”的状态改变为“完全付费”的状态。
在操作412中,一旦接收到第一消息,第一实体410的处理器执行智能合约以确定第一消息的内容。内容被提交至背书策略,该背书策略可定义将在背书和验证事件数据时执行的一组条件或操作,以便确定是否应当在网络中生成事件。所述条件或操作可包括确定由消息内容指示的对象是否对应于先前由区块链网络生成和维持的密钥信息。附加地或可替代地,第一实体的处理器可确定是否存在对应于事件数据的内容的预定命名空间。如果不存在任何条件,那么事件数据可能不被验证并且事件的产生可能被拒绝。另一方面,如果已满足背书策略的条件,则可生成事件。
在操作413中,一旦确定已满足背书策略的条件,执行第一实体410的智能合约的处理器生成具有存储对应于与事件数据相关的对象和/或命名空间的密钥信息的新字段的事件。可以以各种方式执行该操作。例如,所生成的事件可以包括具有密钥信息的新字段。附加地或可替代地,与事件相关联的交易的消息格式可包括包含密钥信息的新字段。
一旦事件已经被创建,消息414就被发送到区块链430。该消息可以与事件和一个或多个相关联的交易一起被发送,如果它们存在的话。一旦接收到,则在操作415,区块链提交事件以供共识,并且然后在区块链中的新块中提交事件。
然后可以在事件已经被提交至区块链之后的任何点处将消息416从第二实体420发送至区块链430。消息416可包括访问事件及其(多个)伴随交易的查询。
在操作417中,从区块链检索包含事件的块,并且在回复消息418中将所述块发送回第二实体420。
在操作419中,第二实体420搜索从区块链检索的事件的内容并且检索密钥信息。然后将该密钥信息与对应于该事件的内容的对象(和/或命名空间)的已知密钥信息进行比较。如果存在匹配,则第二实体420可确定事件连同与从区块链430检索的信息中标识的事件相关联的任何交易是有效的。这些操作可以例如通过由第二实体420的处理器执行的智能合约来执行。
图5示出了根据示例实施例的管理诸如区块链的分散式数据库中的信息的示例方法的流程图500。参考图5,方法500可以包括,在510,从实体接收事件数据。事件数据的内容可包括指示将被生成并记录在区块链中的事件的各种类型的信息。实体可以是区块链节点的客户端应用、区块链中的节点、另一区块链实体、或区块链网络外部但与网络的一个或多个实体通信的实体。
在520,确定事件数据是否满足背书策略。背书策略可包括本文所述的一个或多个要求或条件。在一个实施例中,背书策略可要求事件数据的内容对应于由区块链管理的对象或区块链的命名空间中的一个或多个。在计费应用中,例如,对象可以是特定账单,并且事件数据可以指示与账单相关的交易。例如,事件数据可以指示关于账单的状态变化已经发生,例如,从“未付费”到“完全付费”的变化。命名空间可以例如对应于公司或服务的发出账单和/或提供与账单有关的服务或商品的客户。
在530,设置对应于事件数据的上下文的标识符。事件数据的上下文可以是或包括例如先前指示的对象或命名空间。在一个实施例中,标识符可包括本文所述的任何类型的密钥信息。例如,事件数据的上下文可包括元组,该元组包括对应于数据库的通道名称、命名空间、集合或密钥名称中的所有或任意两个或更多个。密钥信息可例如被预先设置为对应于对象或命名空间。因此,密钥信息与事件和/或一个或多个相关联的交易的关联可用于自动验证事件是正确的。
在540,一旦已满足背书策略和标识符集,方法可包括生成用于提交至区块链网络的事件。所生成的事件可以包括例如多个字段。字段可以包括从事件数据获得的信息,其指示由数据库管理的状态、对象、命名空间或上下文。另一字段可包括标识符,例如针对对象、命名空间或其他上下文预先确定的密钥信息。
在550处,所生成的事件可被提交到区块链网络。这可涉及将事件提交以供新块中的共识和主题记录记录在区块链中。在一个实施例中,这可以包括向区块链网络中的对等节点提供事件的通知,而不管事件是否被记录在区块链中。
在560,可查询区块链以检索事件,并且可通过将检索到的事件中的密钥信息与已被预授权并链接到与事件的内容相关联的对象或命名空间的已知密钥信息进行匹配来确认检索到的事件的内容的验证。
图6A示出了包括被配置为执行根据示例实施例的各种操作的物理基础设施610的示例***600。参考图6A,物理基础设施610包括模块612和模块614。模块614包括区块链620和智能合约630(其可以驻留在区块链620上),智能合约630可以执行包括在任何举例实施例中的任何操作步骤608(在模块612中)。步骤/操作608可以包括所描述或描绘的实施例中的一个或多个,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础设施610、模块612和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。进一步,模块612和模块614可以是相同的模块。
图6B示出了根据示例实施例的被配置为执行各种操作的另一个示例***640。参考图6B,***640包括模块612和模块614。模块614包括区块链620和智能合约630(其可以驻留在区块链620上),智能合约630可以执行包括在任何举例实施例中的任何操作步骤608(在模块612中)。步骤/操作608可以包括所描述或描绘的实施例中的一个或多个,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。模块612和模块614可包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。进一步,模块612和模块614可以是相同的模块。
图6C示出根据示例实施例的被配置为在订约方之间利用智能合约配置的示例***和被配置为在区块链上强制执行智能合约条款的调解服务器。参考图6C,配置650可以表示由明确标识一个或多个用户设备652和/或656的智能合约630驱动的通信会话、资产传输会话或过程或程序。智能合约执行的执行、操作和结果可以由服务器654管理。智能合约630的内容可能需要作为智能合约交易的各方的实体652和656中的一个或多个的数字签名。智能合约执行的结果可以作为区块链交易被写到区块链620。智能合约630驻留在可以驻留在一个或多个计算机、服务器、处理器、存储器和/或无线通信设备上的区块链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可执行背书者节点(endorser node)、提交者节点(committer node)或两者的作用。
分布式分类账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上。区块链中的第一块可以称为创始块(genesis block),其包括关于区块链、其成员、存储在其中的数据等的信息。
排序服务710可以由排序器群集构成。排序服务710不处理交易、智能合约或维护共享分类账。相反,排序服务710可以接受背书的业务并且指定那些业务被提交到分布式分类账720的顺序。可以设计区块链网络的架构,使得“排序”(例如,Solo、Kafka、BFT等)的具体实现变成可插拔组件。
交易以共识的顺序被写到分布式分类账720。交易的顺序被建立以确保对状态数据库724的更新在它们被提交至网络时是有效的。与其中通过解决密码谜题或挖掘发生排序的密码货币区块链***(例如,Bitcont等)不同,在该示例中,分布式分类账720的各方可以选择最适合该网络的排序机制。
当排序服务710初始化新数据块730时,新数据块730可以被广播到提交对等体(例如,区块链节点711、712和713)。作为响应,每个提交对等体通过检查以确保读取集和写入集仍匹配状态数据库724中的当前世界状态来验证新数据块730内的交易。具体地,提交对等体可以确定当背书者模拟交易时存在的读数据是否与状态数据库724中的当前世界状态相同。当提交对等体验证交易时,交易被写到分布式分类账720上的区块链722,并且状态数据库724用来自读-写集合的写数据来更新。如果交易失败,即,如果提交对等体发现读-写集合与状态数据库724中的当前世界状态不匹配,则排序到块中的交易将仍然被包括在该块中,但它将被标记为无效,并且状态数据库724将不被更新。
参考图7B,被存储在分布式分类账720的区块链722上的新数据块730(也被称为数据块)可以包括多个数据段,诸如块报头740、块数据750和块元数据760。应当理解,不同描绘的块和其内容,诸如新数据块730和其内容。图7B中示出的仅是示例,并不意味着限制示例实施例的范围。新数据块730可以在块数据750内存储N个交易(例如,1、10、100、500、1000、2000、3000等)的交易信息。新数据块730还可以包括到块报头740内的先前块(例如,图7A中的区块链722上)的链。特定来说,块报头740可包含先前块的报头的哈希。块报头740还可包括唯一块编号、新数据块730的块数据750的哈希等。新数据块730的块编号可以是唯一的并且以不同顺序分配,诸如从零开始的递增/顺序的次序。
块数据750可以存储被记录在新数据块730内的每个交易的交易信息。例如,交易数据可以包括交易的类型、版本、时间戳、分布式分类账720的通道ID、交易ID中的一个或多个,时期、有效载荷可见性、链码路径(部署tx)、链码名称、链码版本、输入(链码和功能)、客户端(创建者)标识(诸如公钥和证书)、客户端的签名、背书人的身份、背书人签名、提案哈希、链码事件、响应状态、命名空间、读取集合(由交易读取的密钥和版本的列表等)、写入集合(密钥和值的列表等)、开始密钥、结束密钥、密钥的列表、Merkel树查询概要等。可针对N个交易中的每个交易存储交易数据。
在一些实施例中,块数据750还可以存储新数据762,该新数据将附加信息添加至区块链722中的块的哈希链的链。附加信息包括本文中描述或描绘的步骤、特征、过程和/或动作中的一个或多个。因而,新数据762可以存储在分布式分类账720上的不可变块日志中。存储这样的新数据762的一些益处反映在本文公开和描绘的不同实施例中。虽然在图7B中,新数据762被描绘在块数据750中,但是也可位于块报头740或块元数据760中。
块元数据760可存储元数据的多个字段(例如,作为字节阵列等)。元数据字段可以包括关于块创建的签名、对最后配置块的引用、标识块内的有效和无效交易的交易过滤器、对块进行排序的排序服务的存留的最后偏移等。签名、最后配置块、和排序器元数据可以由排序服务710添加。同时,块(诸如区块链节点712)的提交者可以基于背书策略、读/写集合的验证等来添加有效/无效信息。交易过滤器可包括大小等于块数据750中的交易的数量的字节阵列和标识交易是否有效/无效的验证码。
图7C示出了根据本文描述的实施例的用于数字内容的区块链770的实施例。数字内容可包括一个或多个文件和相关联的信息。所述文件可包含媒体、图像、视频、音频、文本、链接、图形、动画、网页、文档或其他形式的数字内容。区块链的不可变的、仅附加的方面充当保护措施来保护数字内容的完整性、有效性和真实性,从而使其适合用于法律程序中,其中可接受性规则适用,或在其中考虑证据或其中数字信息的呈现和使用以其他方式感兴趣的其他设置中。在这种情况下,数字内容可以被称为数字证据。
区块链可以各种方式形成。在一个实施例中,数字内容可以包括在区块链本身中并且从区块链本身访问。例如,区块链的每个块可以沿着相关联的数字内容存储引用信息的哈希值(例如,报头、值等)。然后可以一起加密哈希值和相关联的数字内容。因此,每个块的数字内容可以通过解密区块链中的每个块来访问,并且每个块的哈希值可以用作引用先前块的基础。这可以说明如下:
在一个实施例中,数字内容可以不包括在区块链中。例如,区块链可在没有任何数字内容的情况下存储每个块的内容的经加密的哈希。数字内容可以被存储在与原始文件的哈希值相关联的另一存储区域或存储器地址中。其他存储区域可以是用于存储区块链的相同存储设备,或者可以是不同的存储区域或者甚至是单独的关系数据库。通过获得或查询感兴趣块的哈希值,然后在存储区域中查找与该实际数字内容对应存储的值,可以引用或访问每个块的数字内容。这个操作可以被执行,例如,数据库网守。这可以说明如下:
在图7C的示例实施例中,区块链770包括以有序序列密码连接的多个块7781、7782、…、778N,其中N≥1。用于链接块7781、7782、…、778N的加密可以是多个密钥加密或无密钥加密哈希函数中的任何函数。在一个实施例中,块7781、7782、…、778N经受哈希函数,该哈希函数从基于块中的信息的输入产生n位字母数字输出(其中,n是256或另一个数)。这样的哈希函数的示例包括但不限于SHA类型(SHA代表安全哈希算法)算法、Merkle-Damgard算法、HAIFA算法、Merkle-tree算法、基于现时的算法和防冲突的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中的每个包括紧接在前面的块的哈希值。前一个块的哈希值可以仅是前一个块的报头的哈希或者可以是整个前一个块的哈希值。通过在剩余块的每中包括前一块的哈希值,可以在逐块的基础上执行从第N个块返回到创始块(和相关联的原始文件)的跟踪,如箭头780所指示的,以建立可审计的和不可变的监管链。
其他块中的报头7722至772N中的每一个还可以包括其他信息,例如,版本号、时间戳、随机数、根信息、难度级、共识协议和/或其他参数或与对应的文件和/或区块链相关联的信息。
在其他块中的文件7742至774N可以等于原始文件或者可以是创始块中的原始文件的修改版本,这取决于例如执行的处理的类型。所执行的处理的类型可从块到块变化。该处理可以涉及,例如,对在前块中的文件的任何修改,如编辑信息或以其他方式改变文件的内容、将信息从这些文件带走、或将信息添加或附加到这些文件上。
另外或可替代地,处理可以涉及仅从在前块复制文件、改变文件的存储位置、分析来自一个或多个在前块的文件、将文件从一个存储或存储器位置移动到另一个、或执行相对于区块链的文件和/或其相关联的元数据的动作。涉及分析文件的处理可以包括例如附加、包括或以其他方式将不同分析、统计或与该文件相关联的其他信息相关联。
其他块中的其他块7762至776N中的每一个中的值是唯一的值,并且作为所执行的处理的结果都是不同的。例如,任何一个块中的值对应于先前块中的值的更新版本。该更新反映在被赋值的块的哈希中。块的值因此提供在块中执行什么处理的指示,并且还允许通过区块链返回到原始文件的跟踪。该跟踪确认文件在整个区块链中的监管链(chain-of-custody)。
例如,考虑先前块中的文件的部分被编辑、阻挡(block out)或像素化以便保护在文件中示出的人的身份的情况。在这种情况下,包括编辑文件的块将包括与编辑文件相关联的元数据,例如,如何执行编辑、谁执行编辑、编辑发生的时间戳等。元数据可被哈希以形成值。因为块的元数据不同于经哈希以在先前块中形成值的信息,所以所述值彼此不同,且可在解密时恢复。
在一个实施例中,当发生以下任何一个或多个时,可以更新先前块的值(例如,计算新的哈希值)以形成当前块的值。在这个举例实施例中,可以通过对以下指出的信息的全部或一部分进行哈希来计算新的哈希值。
a)如果文件已经以任何方式处理(例如,如果文件被编辑、复制、更改、访问或采取一些其他动作),则新SHA-2计算的哈希值;
b)文件的新存储位置
c)所标识的与所述文件相关联的新元数据;
d)将所述文件的访问或控制从一个区块链参与者传输至另一个区块链参与者;
图7D示出根据一种实施例的可表示区块链790中的块结构的块的实施例。所述块Blocki包括报头772i、文件774i和值776i。
报头772i包括先前块Blocki-1的哈希值和附加引用信息,所述附加引用信息例如可以是本文所讨论的任意类型的信息(例如,包括引用、特性、参数等的报头信息)。所有块引用前一块的哈希,当然除了创始块。前一块的哈希值可以仅是前一块中的报头的哈希或前一块中的信息的全部或部分(包括文件和元数据)的哈希。
文件774i包括多个数据,如按顺序的数据1、数据2、…、数据N。用描述与数据相关联的内容和/或特性的元数据元数据1、元数据2、…、元数据N标记数据。例如,每个数据的元数据可以包括用于指示数据的时间戳、处理数据、指示人员或数据中描绘的其他内容的关键字、和/或可以有助于作为整体建立文件的有效性和内容、并且特别是其使用数字证据的其他特征的信息,例如,如结合以下讨论的实施例所描述的。除了元数据之外,每个数据可以标记有对先前数据的引用REF1、REF2、…、REFN以防止篡改、文件中的间隙、以及通过文件的顺序引用。
一旦元数据被分配给数据(例如,通过智能合约),在没有哈希改变的情况下不能更改元数据,这可以容易地被标识用于无效。因此,元数据创建可被访问以供区块链中的参与者使用的信息的数据记录。
值776i是哈希值或基于先前讨论的任何类型的信息计算的其他值。例如,对于任何给定的块Blocki,该块的值可被更新以反映为该块执行的处理,例如,新的哈希值、新的存储位置、相关联的文件的新的元数据、控制或访问的传输、标识符、或将被添加的其他动作或信息。尽管每个块中的值被示出为与文件的数据的元数据和标头分离,但是在另一实施例中,该值可以部分地或整体地基于该元数据。
一旦形成区块链770,在任何时间点,可以通过查询区块链以获得跨块的值的交易历史来获得文件的不可变托管链。该查询或跟踪过程可开始于解密最当前包括的块(例如,最后(第N)块)的值,然后继续解密其他块的值,直到到达创始块并恢复原始文件为止。解密还可包括在每个块解密报头和文件以及相关联的元数据。
解密是基于在每个块中发生的加密的类型来执行的。这可涉及使用私钥、公钥或公钥-私钥对。例如,当使用非对称加密时,网络中的区块链参与者或处理器可使用预定算法生成公钥和私钥对。公钥和私钥通过某种数学关系相互关联。公共密钥可公开分发以用作从其他用户接收消息的地址,例如,IP地址或家庭地址。私有密钥保密并且用于对发送到其他区块链参与者的消息进行数字签名。签名被包括在消息中,使得接收者可以使用发送者的公钥来验证。这样,接收者可以确信只有发送者可能已经发送该消息。
产生密钥对可类似于在区块链上创建账户,但不必实际上在任何地方注册。此外,在区块链上执行的每个交易由发送方使用其私钥进行数字签名。此签名确保仅账户的所有者能够跟踪和处理(如果在由智能合约确定的许可的范围内)区块链的文件。
图8A和图8B示出了可以合并和使用在本文中的区块链的使用情况的另外的实例。具体地,图8A示出了存储机器学习(人工智能)数据的区块链810的示例800。机器学习依赖于大量历史数据(或训练数据)来构建预测模型以便对新数据进行准确预测。机器学习软件(例如,神经网络等)经常可以筛选数百万个记录以挖掘非直观模式。
在图8A的示例中,主机平台820构建并部署用于资产830的预测监视的机器学***台820可以是云平台、工业服务器、web服务器、个人计算机、用户设备等。资产830可以是任何类型的资产(例如,机器或设备等),诸如飞机、机车、涡轮机、医疗机器和设备、油气设备、船、船、交通工具等。作为另一示例,资产830可以是非有形资产,诸如股票、货币、数字币、保险等。
可以使用区块链810来显著地改进机器学***台820在执行预测模型训练时所需的收集时间。例如,使用智能合约,数据可以直接地并且可靠地从其起始位置直接传输到区块链810。通过使用区块链810来确保所收集的数据的安全性和所有权,智能合约可以直接将数据从资产发送到使用该数据来建立机器学习模型的个体。这允许在资产830之间共享数据。
可以基于共识机制将所收集的数据存储在区块链810中。共识机制拉入(允许节点)以确保正在记录的数据被验证并准确。所记录的数据被加时间戳、密码签名和不变。因此,它是可审计的、透明的、并且安全的。在某些情况下(即,供应链、医疗保健、物流等),添加直接写入该区块链的IoT设备可增加被记录的数据的频率和准确度。
此外,对收集的数据的机器学***台820进行的细化和测试的轮次。每个回合可以基于附加数据或先前未被考虑来帮助扩展机器学***台820存储在区块链810上。机器学***台820已经实现最终训练的模型时,所得到的模型可以被存储在区块链810上。
在已经训练了模型之后,可以将其部署到现场环境,其中,其可以基于最终训练的机器学***台820处执行机器学***台820存储在区块链810上。在一个实施例中,本文描述和/或描绘的特征和/或动作可以在区块链810上或相对于区块链810发生。
区块链的新交易可被一起聚集成新块并被添加到现有哈希值。然后将其加密以创建新块的新哈希。当交易被加密时,其被添加到下一交易列表,等等。结果是各自包含所有先前块的哈希值的区块链。存储这些块的计算机定期比较它们的哈希值以确保它们全部共识。任何不同意的计算机丢弃引起该问题的记录。这种方法对于确保该区块链的抗篡改性是良好的,但它不是完美的。
游戏该***的一种方式是不诚实的用户以他们的偏好改变交易列表,但是以保持哈希不变的方式。这可以通过强力完成,换言之,通过改变记录、加密结果以及查看哈希值是否相同。并且如果不是,则反复地尝试,直到它找到匹配的哈希为止。区块链的安全性基于这样的信念:普通计算机仅能够在完全不切实际的时间尺度(诸如宇宙的年龄)上执行这种暴力攻击。相比之下,量子计算机要快得多(快1000s倍)并且因此造成更大的威胁。
图8B示出了实现量子密钥分配(QKD)以防止量子计算攻击的量子安全区块链852的示例850。在该示例中,区块链用户可以使用QKD来验证彼此的身份。这利用诸如光子的量子粒子发送信息,在不破坏光子的情况下***无法复制该信息。这样,发送者和接收者通过该区块链可以确定彼此的身份。
在图8B的示例中,存在四个用户854、856、858和860。每对用户均可在它们之间共享密钥862(即,QKD)。由于在该示例中存在四个节点,因此存在六对节点,因此使用六个不同的秘密密钥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)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线以及***组件互连(PCI)总线。
计算机***/服务器902通常包括各种计算机***可读介质。这样的介质可以是可由计算机***/服务器902访问的任何可用介质,并且其包括易失性和非易失性介质、可移动和不可移动介质。在一个实施例中,***存储器906实现其他附图的流程图。***存储器906可包括易失性存储器形式的计算机***可读介质,诸如随机存取存储器(RAM)910和/或高速缓存存储器912。计算机***/服务器902还可以包括其他可移动/不可移动、易失性/非易失性计算机***存储媒质。仅通过示例的方式,存储***914可以被提供用于从不可移除的非易失性磁性介质(未示出,并且通常被称为“硬盘驱动器”)进行读取和写入。尽管未示出,可以提供用于从可移动非易失性磁盘(例如,“软盘”)读取或向其写入的磁盘驱动器,以及用于从可移动非易失性光盘(如CD-ROM、DVD-ROM或其他光学介质)读取或向其写入的光盘驱动器。在这样的情况下,每一个可以通过一个或多个数据介质接口连接到总线。如以下将进一步描绘和描述的,存储器906可以包括具有被配置成用于执行该应用的不同实施例的功能的一组(例如,至少一个)程序模块的至少一个程序产品。
具有一组(至少一个)程序模块918的程序/实用程序916,以及操作***、一个或多个应用程序、其他程序模块和程序数据,可以通过示例而非限制的方式存储在存储器906中。操作***、一个或多个应用程序、其他程序模块和程序数据中的每一个或它们的一些组合可以包括网络环境的实现方式。程序模块918通常执行如本文所述的应用的不同实施例的功能和/或方法。
如本领域技术人员将理解的,本申请的方面可以体现为***、方法或计算机程序产品。因此,本申请的方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或者结合软件和硬件方面的实施例的形式,在本文中可以统称为“电路”、“模块”或“***”。此外,本申请的方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有体现在其上的计算机可读程序代码。
计算机***/服务器902还可与一个或一个以上外部设备920(例如,键盘、指针设备、显示器922等)通信;和/或使计算机***/服务器902能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)。这样的通信可经由I/O接口924发生。此外,计算机***/服务器902可以经由网络适配器926与诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,互联网)的一个或多个网络通信。如所描绘的,网络适配器926经由总线与计算机***/服务器902的其他部件通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与计算机***/服务器902结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器和数据归档存储***等。
虽然***、方法和非暂态计算机可读介质中的至少一个的示例实施例已经在附图中示出并且在前面的详细描述中描述,但是将理解的是,本申请不限于所公开的实施例,而是能够具有由以下权利要求阐述和定义的许多重排、修改和替换。例如,不同附图的***的能力可由本文描述的或分布式架构中的一个或多个模块或组件来执行,并且可包括发射器、接收器或两者对。例如,由单独模块执行的功能的全部或一部分可由这些模块中的一者或一者以上执行。进一步,本文描述的功能可以在不同时间和关于模块或组件内部或外部的不同事件来执行。此外,在各个模块之间发送的信息可以经由数据网络、互联网、语音网络、互联网协议网络、无线设备、有线设备和/或经由多个协议中的至少一个在模块之间发送。而且,由任何模块发送或接收的消息可直接和/或经由一个或多个其他模块发送或接收。
本领域技术人员将理解,“***”可以体现为个人计算机、服务器、控制台、个人数字助理(PDA)、蜂窝电话、平板计算设备、智能电话或任何其他合适的计算设备或设备的组合。将上述功能呈现为由“***”执行并不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个实例。实际上,本文公开的方法、***和装置可以以与计算技术一致的局部和分布式形式来实现。
根据一个或多个前述实施例,提供了表示管理分散式数据库中的信息存储的改进的***、方法和计算机可读介质,并且更具体地涉及管理分散式数据库的交易和其他事件数据,包括但不限于区块链。
在一个实施例中,实施例中的一个或多个实施例通过防止由zantine客户端将有效但误导地形成的交易******中来解决问题,所述交易表现为发出与特定操作相对应的事件但是没有执行所述操作。在传统数据库中,交易可由任何参与者安全地在入口处过滤,因为在任何验证节点中存在信任的假设。相反,根据一个或多个实施例,因为不同的参与者可能具有要求不同背书的不同的官方和/或不同国家来修改他们,所以这些一个或多个实施例不能在传统数据库下运行。
此外,本文描述的一个或多个实施例通过消除攻击表面(在其他有效的交易上的假冒事件)来提高客户端应用的安全性。另外,一个或多个实施例可以在分散式数据库中存储和管理新类型的数据。例如,新数据可存储在封装事件的交易内。该额外数据可由交易验证组件使用以执行比验证交易所需的更多验证检查。该附加数据随后被客户消费,该客户现在能够安全地处理该事件,因为如果交易被标记为有效,则客户知道这些
进行附加的安全性检查。
应注意,本说明书中所描述的***特征中的一些已经被呈现为模块,以便更具体地强调其实现独立性。例如,模块可以被实现为硬件电路,所述硬件电路包括定制超大规模集成(VLSI)电路或门阵列、诸如逻辑芯片、晶体管之类的现成半导体、或其他分立组件。模块也可以在可编程硬件设备(诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等)中实现。
模块也可以至少部分地在软件中实现,用于由不同类型的处理器执行。所标识的可执行代码单元可以例如包括可以例如被组织为对象、过程或函数的计算机指令的一个或多个物理或逻辑块。然而,所标识的模块的可执行文件不需要在物理上位于一起,而是可以包括存储在不同位置的不同指令,当逻辑地结合在一起时,所述不同指令包括模块并且实现模块的所述目的。进一步,模块可存储在计算机可读媒体上,所述计算机可读媒体可为(例如)硬盘驱动器、快闪装置、随机存取存储器(RAM)、磁带或用于存储数据的任何其他此类媒体。
实际上,可执行代码的模块可以是单个指令或许多指令,并且甚至可以分布在几个不同的代码段上、在不同的程序之间、以及跨几个存储器设备。类似地,操作数据可以在本文中在模块内被标识和示出,并且可以以任何合适的形式体现和组织在任何合适类型的数据结构内。操作数据可以作为单个数据集来收集,或者可以分布在不同位置上,包括在不同的存储设备上,并且可以至少部分地仅仅作为电子信号存在于***或网络上。
将容易理解的是,如在此的附图中总体上描述和展示的,本申请的这些部件可以按多种多样的不同构型来安排和设计。因此,实施例的详细描述不旨在限制所要求的应用的范围,而仅代表本申请的所选实施例。
本领域普通技术人员将容易理解,可以用不同顺序的步骤和/或用与所公开的配置不同的配置的硬件元件来实践以上内容。因此,虽然已经基于这些优选实施例描述了本申请,但是对于本领域技术人员而言显而易见的是,某些修改、变化和替代构造将是显而易见的。
虽然已经描述了本申请的优选实施例,但是应当理解的是,所描述的实施例仅是说明性的,并且当考虑对其的全范围的等效物和修改(例如,协议、硬件设备、软件平台等)时,本申请的范围将仅由所附权利要求书限定。
Claims (20)
1.一种***,包括:
接收器,用于从实体接收事件数据;
存储区域,用于存储智能合约的代码;以及
处理器,用于执行所述智能合约以:
确定所述事件数据满足背书策略;
设置对应于所述事件数据的上下文的标识符;
生成包括所述事件数据和所述标识符的事件;以及
提交所述事件以记录在分散式数据库中,其中所述标识符验证与所述事件数据中的所述上下文相对应的状态是正确的。
2.根据权利要求1所述的***,其中所述标识符包括先前所生成的对应于所述事件数据的所述上下文的密钥信息。
3.根据权利要求1所述的***,其中所述事件数据的所述上下文是指由所述数据库管理的对象。
4.根据权利要求1所述的***,其中所述事件数据的所述上下文包括元组,所述元组包括与所述数据库相对应的以下至少两项:通道名称、命名空间、集合或密钥名称。
5.根据权利要求1所述的***,其中所述事件数据的所述上下文包括元组,所述元组包括与所述数据库相对应的通道名称、命名空间、集合和密钥名称。
6.根据权利要求1所述的***,其中所述处理器根据包括将所述标识符以对应于所述事件的格式***到预定字段中的操作以将要生成所述事件。
7.根据权利要求1所述的***,其中:
所述上下文是由所述数据库管理的对象或命名空间,并且
所述标识符是针对所述对象或命名空间预先认证的。
8.一种方法,包括:
从实体接收事件数据;
确定所述事件数据满足背书策略;
设置对应于所述事件数据的上下文的标识符;
生成包括所述事件数据和所述标识符的事件;以及
提交所述事件以用于记录在分散式数据库中,其中所述标识符用于验证对应于所述事件数据中的所述上下文的状态是正确的。
9.根据权利要求8所述的方法,其中所述标识符包括先前所生成的对应于所述事件数据的所述上下文的密钥信息。
10.根据权利要求8所述的方法,其中所述事件数据的所述上下文是指由所述数据库管理的对象。
11.根据权利要求8所述的方法,其中所述事件数据的所述上下文包括元组,所述元组包括对应于所述数据库的以下至少两项:通道名称、命名空间、集合或密钥名称。
12.根据权利要求8所述的方法,其中所述事件数据的所述上下文包括元组,所述元组包括对应于所述数据库的通道名称、命名空间、集合和密钥名称。
13.根据权利要求8所述的方法,其中生成所述事件包括:将所述标识符以对应于所述事件的格式***到预定字段中。
14.根据权利要求8所述的方法,其中:
所述上下文是由所述数据库管理的对象或命名空间,并且
所述标识符是针对所述对象或命名空间预先认证的。
15.一种存储指令的非暂态性计算机可读介质,所述指令在由一个或多个处理器执行时使所述一个或多个处理器:
从实体接收事件数据;
确定所述事件数据满足背书策略;
设置对应于所述事件数据的上下文的标识符;
生成包括所述事件数据和所述标识符的事件;以及
提交所述事件以用于记录在分散式数据库中,其中所述标识符验证对应于所述事件数据中的所述上下文的状态是正确的。
16.根据权利要求15所述的介质,其中,所述标识符包括先前所生成的对应于所述事件数据的所述上下文的密钥信息。
17.根据权利要求15所述的介质,其中所述事件数据的所述上下文是指由所述数据库管理的对象。
18.根据权利要求15所述的介质,所述事件数据的所述上下文包括元组,所述元组包括对应于所述数据库的以下至少两项:通道名称、命名空间、集合或密钥名称。
19.根据权利要求15所述的介质,其中生成所述事件包括将所述标识符以对应于所述事件的格式***到预定字段中。
20.根据权利要求15所述的介质,其中:
所述上下文是由所述数据库管理的对象或命名空间,并且
所述标识符是针对所述对象或命名空间预先认证的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/917,247 | 2020-06-30 | ||
US16/917,247 US20210406876A1 (en) | 2020-06-30 | 2020-06-30 | Permissioned eventing in a decentralized database |
PCT/IB2021/054257 WO2022003436A1 (en) | 2020-06-30 | 2021-05-18 | Permissioned eventing in a decentralized database |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115668856A true CN115668856A (zh) | 2023-01-31 |
Family
ID=79031106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180039625.7A Pending CN115668856A (zh) | 2020-06-30 | 2021-05-18 | 分散式数据库中的许可事件 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20210406876A1 (zh) |
JP (1) | JP2023530594A (zh) |
KR (1) | KR20230005353A (zh) |
CN (1) | CN115668856A (zh) |
CA (1) | CA3180249A1 (zh) |
GB (1) | GB2611687A (zh) |
IL (1) | IL298416A (zh) |
WO (1) | WO2022003436A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220129445A1 (en) * | 2020-10-28 | 2022-04-28 | Salesforce.Com, Inc. | Keyspace references |
CN115756439B (zh) * | 2022-10-20 | 2024-02-13 | 乾三(北京)科技有限公司 | 一种状态机引擎编排方法、装置及计算机设备 |
WO2024096914A1 (en) * | 2022-10-31 | 2024-05-10 | Venkataraman Mohan | Blockchain based document and data sharing |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150379510A1 (en) * | 2012-07-10 | 2015-12-31 | Stanley Benjamin Smith | Method and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain. |
WO2017091530A1 (en) * | 2015-11-24 | 2017-06-01 | Gartland & Mellina Group | Blockchain solutions for financial services and other transaction-based industries |
EP3193299A1 (en) * | 2016-01-15 | 2017-07-19 | Accenture Global Services Limited | Device, method and system for autonomous selection of a commodity supplier through a blockchain distributed database |
US11940978B2 (en) * | 2018-09-19 | 2024-03-26 | International Business Machines Corporation | Distributed platform for computation and trusted validation |
US11212076B2 (en) * | 2018-09-19 | 2021-12-28 | International Business Machines Corporation | Distributed platform for computation and trusted validation |
US11032063B2 (en) * | 2018-09-19 | 2021-06-08 | International Business Machines Corporation | Distributed platform for computation and trusted validation |
US20200142693A1 (en) * | 2018-11-07 | 2020-05-07 | International Business Machines Corporation | Transparent code processing |
CA3061594A1 (en) * | 2018-11-14 | 2020-05-14 | Royal Bank Of Canada | System and method for cross-border blockchain platform |
US20200184548A1 (en) * | 2018-12-07 | 2020-06-11 | Honeywell International Inc. | Systems and methods for leasing equipment or facilities using blockchain technology |
US11244313B2 (en) * | 2019-01-31 | 2022-02-08 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing declarative smart actions for coins and assets transacted onto a blockchain using distributed ledger technology (DLT) |
US10726002B1 (en) * | 2019-08-19 | 2020-07-28 | DLT Global Inc. | Relational data management and organization using DLT |
US10585882B1 (en) * | 2019-09-23 | 2020-03-10 | Trace, LLC | Systems and methods for writing updates to and/or reading previously stored updates of assets implemented as smart contracts on a decentralized database |
-
2020
- 2020-06-30 US US16/917,247 patent/US20210406876A1/en active Pending
-
2021
- 2021-05-18 GB GB2300463.3A patent/GB2611687A/en active Pending
- 2021-05-18 CN CN202180039625.7A patent/CN115668856A/zh active Pending
- 2021-05-18 CA CA3180249A patent/CA3180249A1/en active Pending
- 2021-05-18 KR KR1020227042214A patent/KR20230005353A/ko active Search and Examination
- 2021-05-18 IL IL298416A patent/IL298416A/en unknown
- 2021-05-18 JP JP2022571219A patent/JP2023530594A/ja active Pending
- 2021-05-18 WO PCT/IB2021/054257 patent/WO2022003436A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
IL298416A (en) | 2023-01-01 |
CA3180249A1 (en) | 2022-01-06 |
US20210406876A1 (en) | 2021-12-30 |
GB202300463D0 (en) | 2023-03-01 |
WO2022003436A1 (en) | 2022-01-06 |
JP2023530594A (ja) | 2023-07-19 |
GB2611687A (en) | 2023-04-12 |
KR20230005353A (ko) | 2023-01-09 |
AU2021300620A1 (en) | 2022-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112241919B (zh) | 具有数据流控制的多域区块链网络 | |
CN114365116A (zh) | 来自私有区块链的更新的链外通知 | |
AU2021254870B2 (en) | Faster view change for blockchain | |
AU2021210206B2 (en) | Index structure for blockchain ledger | |
CN112084255A (zh) | 机器学习应用的有效验证 | |
CN114450708A (zh) | 基于现有链码的链码推荐 | |
US11475365B2 (en) | Verification of stochastic gradient descent | |
US11455598B2 (en) | Automated conflict resolution | |
CN115668856A (zh) | 分散式数据库中的许可事件 | |
US11924348B2 (en) | Honest behavior enforcement via blockchain | |
CN112733159A (zh) | 用于区块链的自由搭乘节点识别 | |
CN112052474A (zh) | 蓝光拷贝服务 | |
CN115943411A (zh) | 用于保护数据的噪声交易 | |
US20210314155A1 (en) | Trusted ledger stamping | |
CN114981773A (zh) | 无冲突版本控制 | |
CN115427980A (zh) | 上下文完整性保持 | |
US20210150597A1 (en) | Automated invoicing | |
CN116361823A (zh) | 用于隐私保护的区块链的选择性审计处理 | |
WO2023046409A1 (en) | Digital asset platform with hsm verification | |
CN112016118B (zh) | 用于匿名数据库评级更新的方法和*** | |
US11314729B2 (en) | Multi-candidate data structure for transaction validation | |
CN116529723A (zh) | Dlt网络的自动合并 | |
CN111984378B (zh) | 数据库异常事务提交预防 | |
US20230087602A1 (en) | Privacy-preserving state reference | |
US20210349854A1 (en) | Batch processing |
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 |