CN111984378A - 数据库异常事务提交预防 - Google Patents

数据库异常事务提交预防 Download PDF

Info

Publication number
CN111984378A
CN111984378A CN202010439306.2A CN202010439306A CN111984378A CN 111984378 A CN111984378 A CN 111984378A CN 202010439306 A CN202010439306 A CN 202010439306A CN 111984378 A CN111984378 A CN 111984378A
Authority
CN
China
Prior art keywords
transaction
data
blockchain
risk score
transaction proposal
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
Application number
CN202010439306.2A
Other languages
English (en)
Inventor
S·A·巴瑟特
张琦
P·诺瓦特尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/422,951 external-priority patent/US11579919B2/en
Priority claimed from US16/422,954 external-priority patent/US11809896B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN111984378A publication Critical patent/CN111984378A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Abstract

本公开涉及数据库异常事务提交预防。示例操作可以包括以下一项或多项:由风险评分模块接收区块链事务提案,获取事务提案数据,获取外部数据,根据事务提案数据和外部数据计算风险得分,比较风险得分和风险评分阈值,基于比较结果提供提交决策,以及提交或拒绝与事务提案相对应的经背书的事务。

Description

数据库异常事务提交预防
技术领域
本申请一般涉及数据库中的异常事务检测,并且更具体地,涉及数据库的异常事务检测和提交预防。
背景技术
集中式数据库在一个位置的单一数据库(例如,数据库服务器)中存储和维护数据。该位置通常是中央计算机,例如,台式中央处理单元(CPU)、服务器CPU或大型计算机。通常可以从多个不同的点访问存储在集中式数据库中的信息。例如,基于客户端/服务器配置,多个用户或客户端工作站可以在集中式数据库上同时工作。集中式数据库易于管理、维护和控制,特别是出于安全目的,因为它位于单一位置。在集中式数据库内,减少了数据冗余,因为所有数据的单一存储位置也意味着给定的一组数据仅具有一个主记录。
然而,集中式数据库遭受重大缺陷。例如,集中式数据库具有单一故障点。特别地,如果不考虑容错性,并且发生硬件故障(例如,硬件、固件和/或软件故障),则数据库内的所有数据都将丢失并且所有用户的工作都会中断。此外,集中式数据库高度依赖于网络连通性。因此,连接越慢,每次数据库访问所需的时间量越多。另一缺陷是,由于单一位置,当集中式数据库遇到高流量时,会出现瓶颈。此外,由于数据库仅维护数据的一个副本,因此集中式数据库提供了对数据的有限访问。因此,多个设备在不造成对已存储数据的覆写的严重问题或风险的情况下,无法同时访问同一条数据。此外,由于数据库存储系统的数据冗余很小甚至没有,因此,意外丢失的数据很难恢复,除了通过从备份存储中手动操作。因此,需要一种克服这些缺陷和限制的解决方案。
发明内容
一个示例实施例提供了一种系统,该系统包括:区块链客户端,被配置为生成事务提案,以及区块链网络,包括风险评分模块,被配置为执行以下各项中的一个或多个:获取事务提案数据,获取外部数据,根据事务提案数据和外部数据计算风险评分,将风险评分与风险评分阈值进行比较,以及基于比较结果提供提交决策,以及提交者节点或对等方,被配置为执行以下各项中的一个或多个:接收与事务提案相对应的经背书的事务,以及基于提交决策,将经背书的事务提交到区块链网络中的区块链或拒绝该事务。
另一示例实施例提供了一种方法,该方法包括以下各项中的一个或多个:由风险评分模块接收区块链事务提案,获得事务提案数据,获得外部数据,根据事务提案数据和外部数据计算风险得分,将风险评分与风险评分阈值进行比较,基于比较结果提供提交决策,以及提交或拒绝与事务提案相对应的经背书的事务。
另一示例实施例提供了一种包括指令的非暂态计算机可读介质,当指令被处理器读取时,使处理器执行以下各项中的一个或多个:由风险评分模块接收区块链事务提案,获得事务提案数据,获得外部数据,根据事务提案数据和外部数据计算风险得分,将风险评分与风险评分阈值进行比较,基于比较结果提供提交决策,以及提交或拒绝与事务提案相对应的经背书的事务。
另一示例实施例提供一种系统,包括:区块链客户端,被配置为生成事务提案;以及区块链网络,包括风险评分模块,被配置为执行以下各项中的一个或多个:获取事务提案数据,获取外部数据,根据事务提案数据和外部数据计算风险评分,将风险评分与风险评分阈值进行比较,以及基于比较结果提供背书决策,以及一个或多个背书者节点或对等方,被配置为执行以下各项中的一个或多个:模拟事务提案;以及响应于所模拟的事务提案和背书决策,向区块链客户端提供背书或拒绝。
另一示例实施例提供了一种方法,该方法包括以下各项中的一个或多个:由风险评分模块接收区块链事务提案,获得事务提案数据,获得外部数据,根据事务提案数据和外部数据计算风险评分,将风险评分与风险评分阈值进行比较,根据比较结果提供背书决策,以及认可或拒绝事务提案。
另一示例实施例提供了一种包括指令的非暂态计算机可读介质,当指令被处理器读取时,使处理器执行以下各项中的一个或多个:由风险评分模块接收区块链事务提案,获得事务提案数据,获得外部数据,根据事务提案数据和外部数据计算风险评分,将风险评分与风险评分阈值进行比较,根据比较结果提供背书决策,以及认可或拒绝事务提案。
附图说明
图1A示出了根据示例实施例的包括数据库的风险评分系统的第一网络图示。
图1B示出了根据示例实施例的包括数据库的风险评分系统的第二网络图示。
图2A示出了根据示例实施例的示例区块链架构配置。
图2B示出了根据示例实施例的区块链事务流。
图3A示出了根据示例实施例的许可网络。
图3B示出了根据示例实施例的另一许可网络。
图3C示出了根据示例实施例的无需许可网络。
图4示出了根据示例实施例的用于执行基于风险的事务背书的系统消息图示。
图5A示出了根据示例实施例的基于风险评分的背书的示例方法的流程图。
图5B示出了根据示例实施例的检测异常事务的示例方法的流程图。
图6A示出了根据示例实施例的被配置为执行本文所描述的一个或多个操作的示例系统。
图6B示出了根据示例实施例的被配置为执行本文所描述的一个或多个操作的另一示例系统。
图6C示出了根据示例实施例的被配置为利用智能契约的再一示例系统。
图6D示出了根据示例实施例的被配置为利用区块链的又一示例系统。
图7A示出了根据示例实施例的用于将新的区块添加至分布式账本的过程。
图7B示出了根据示例实施例的新数据区块的内容。
图7C示出了根据示例实施例的用于数字内容的区块链。
图7D示出了根据示例实施例的可以表示区块链中的区块的结构的块。
图8A示出了根据示例实施例的存储机器学习(人工智能)数据的示例区块链。
图8B示出了根据示例实施例的示例量子安全区块链。
图9示出了支持一个或多个示例实施例的示例系统。
具体实施方式
将容易理解的是,如本文的附图中所一般性描述和示出的,即时组件可以以各种不同的配置来布置和设计。因此,如附图所示,对方法、设备、非暂态计算机可读介质和系统中的至少一个的实施例的以下详细描述并非旨在限制所要求保护的本申请的范围,而仅仅是所选实施例的代表。
在整个说明书中描述的即时特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合或去除。例如,在整个说明书中,短语“示例实施例”、“一些实施例”或其他类似语言的使用是指以下事实:结合该实施例描述的特定特征、结构或特性可以包括在至少一个实施例中。因此,在整个说明书中,短语“示例实施例”、“在一些实施例中”,“在其他实施例中”或其他类似语言的出现不一定全都指同一组实施例,并且所描述的特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合或去除。此外,在图示中,即使所示出的连接是单向或双向箭头,元件之间的任何连接都可以允许单向和/或双向通信。而且,附图中示出的任何设备可以是不同的设备。例如,如果示出移动设备正在发送信息,那么有线设备也可以用于发送信息。
另外,尽管在实施例的描述中可能已经使用术语“消息”,但是本申请可以应用于多种类型的网络和数据。此外,尽管在示例性实施例中可以描述某些类型的连接、消息和信令,但是本申请不限于某种类型的连接、消息和信令。
示例实施例提供了方法、系统、组件、非暂态计算机可读介质、设备和/或网络,其为数据库提供异常事务检测和提交预防。
在一个实施例中,该应用程序利用作为分布式存储系统的分散式数据库(例如,区块链),其包括彼此通信的多个节点。分散式数据库包括类似于能够维护互不信任的各方之间的记录的分布式账本(ledger)的只能追加的不可变数据结构。不信任各方在本文中称为对等方或对等节点。每个对等方都维护数据库记录的副本,并且在分布式对等方之间未达成共识的情况下,没有任何一个对等方可以修改数据库记录。例如,对等方可以执行共识协议以验证区块链存储事务,将存储事务分组为区块,并在这些区块上构建哈希链。为了保持一致性,此过程在必要时通过对存储事务进行排序来形成账本。在各种实施例中,可以使用许可的和/或无需许可的区块链。在公共或无需许可的区块链中,任何人都可以在没有特定身份的情况下参与。公共区块链可以涉及本地加密货币,并可以基于各种协议(例如,工作量证明(PoW))使用共识。另一方面,许可的区块链数据库在一组共享共同目标但彼此之间并不完全信任的实体之间提供安全的交互,例如,交换资金、商品、信息等业务。
该应用程序可以利用区块链,区块链可操作任意的、可编程的逻辑,这些逻辑针对分散式存储方案定制,并被称为“智能合约”或“链码”。在某些情况下,可能存在用于管理功能和参数的专用链码,其被称为系统链码。该应用程序可以进一步利用智能合约,这些合约是受信任的分布式应用程序,其利用区块链数据库的防篡改属性和节点之间的基础协定,其被称为背书或背书策略。与该应用程序相关联的区块链事务可以在提交至区块链之前被“背书”,而未背书的事务将被忽略。背书策略允许链码以背书所必需的一组对等节点的形式指定事务的背书人。当客户端将事务发送给背书策略中指定的对等方时,事务将被执行以验证事务。验证之后,事务进入排序阶段,其中,使用共识协议来产生被分组为区块的经背书的事务的有序序列。
该应用程序可以利用作为区块链系统的通信实体的节点。在不同类型的多个节点可以在同一物理服务器上运行的意义上,“节点”可以执行逻辑功能。节点在信任域中被分组,并与以各种方式控制它们的逻辑实体相关联。节点可以包括不同的类型,例如客户端或提交客户端节点,提交客户端节点向背书者(例如,对等方)提交事务调用,并且将事务提案广播给排序服务(例如,排序节点)。另一类型的节点是对等节点,其可以接收客户提交的事务,提交事务并维护区块链事务的账本的状态和副本。尽管不是必需的,但对等方也可以充当背书人的角色。排序服务节点或排序者是为所有节点运行通信服务的节点,并实现递送保证,例如在提交事务和修改区块链的世界状态(world state)时向系统中的每个对等节点进行广播,这是初始区块链事务的另一个名称,通常包括控制和设置信息。
该应用程序可以利用账本,该账本是区块链的所有状态转变的有序的、防篡改的记录。状态转换可以由参与方(例如,客户端节点、排序节点、背书者节点、对等节点等)提交的链码调用(即,事务)引起。每个参与方(例如,对等节点)都可以维护账本的副本。事务可能导致一组资产键值(key-value)对作为一个或多个操作数(例如,创建、更新、删除等)被提交到账本。账本包括区块链(也称为链),用于将不可变的、有序的记录存储在区块中。账本还包括状态数据库,用于维护区块链的当前状态。
该应用程序可以利用作为事务日志的链,其被构造为哈希链接的区块,并且每个区块包含N个事务的序列,其中N等于或大于1。区块头包括该区块的事务的哈希值,以及先前区块头的哈希值。以这种方式,账本上的所有事务都可以被排序并以密码链接在一起。因此,在不破坏哈希链接的情况下不可能篡改账本数据。最近添加的区块链区块的哈希值表示链上之前发生的每个事务,从而可以确保所有对等节点处于一致且受信任的状态。该链可以被存储在对等节点文件系统(即本地、附加存储、云等)上,从而有效地支持区块链工作负载的只能追加的性质。
不可变账本的当前状态表示链事务日志中包括的所有密钥的最新值。由于当前状态代表通道已知的最新密钥,因此有时将其称为世界状态。链码调用针对账本的当前状态数据执行事务。为了使这些链码交互有效,可以将密钥的最新值存储在状态数据库中。状态数据库可以只是链的事务日志的索引视图,因此可以随时从链中重新生成。状态数据库可以在对等节点启动时以及在接受事务之前自动恢复(或根据需要生成)状态数据库。
提交给区块链的某些事务可能是异常的。发生这种情况的原因可能是设备配置错误(例如,物联网(IOT)设备一次或重复发送错误的温度)、被盗用的用户故意试图将错误的数据发送到区块链、或客户端应用程序或对等方中的故障。在这种情况下,可能需要先识别一种主动机制来标记事务,然后再将其提交到共享账本中,并查找异常的提交事务。
对于应用程序,异常行为的示例可以包括在前两个月的上午9-11点之间发送大小为100字节的数据,以及在下午10-11点之间突然发送1千字节的数据,或者是通常每5秒调用智能合约的应用程序,突然每秒调用智能合约。对于智能合约,异常行为的示例可能包括调用智能合约被用户打断(例如,系统管理员卸载链码),通常需要5秒才能完成的智能合约,突然要花费10秒才能完成,通常涉及密钥1到5的智能合约,突然涉及或创建密钥10到15。在另一示例中,金融智能合约通常可能只密集写入以更新共享账本中的发票资产,但突然开始对发票资产执行密集读取。在另一示例中,IOT智能合约通常发送0到40度之间的温度值,但它突然发送高于100度的值。在又一示例中,智能合约参数的大小通常在100字节到1千字节之间变化,但是突然变成2兆字节。在最后一个示例中,智能合约通常接受3个参数,但突然只接受1个参数(即其他两个参数为空)。
本文描述和示出的即时解决方案的一些益处包括提供一种监视区块链事务并在将异常事务提交给共享账本之前对其进行标记/识别,以及查看已提交的异常事务的新功能,以便可以采取适当的措施。本申请描述了创建用于区块链事务的风险评分系统的方法,以减轻与将数据发送到区块链的配置错误的、被盗用的或故障的实体相关联的风险。该方法使用链下和链上数据来计算风险评分以检测异常事务,并在事务背书的决策中使用风险评分。风险评分可以存储在共享账本中,以进一步分析事务异常(异常阈值可以更改)。本申请还描述了一种用于确定已提交事务是否异常的方法。
所公开的方法和系统不可能在传统数据库而不是区块链中实现。节点或对等方将基于风险评分模块的输出来决定是否对事务进行背书。这个过程,特别是对于背书,与区块链紧密耦合。
所公开的方法和系统通过添加风险评分模块来增强区块链的功能,其防止恶意事务被存储到区块链共享账本中。新数据被存储在区块链的区块中。所存储的新数据是事务的历史元数据,例如发行者身份、事务的数据访问模式、调用频率等。风险评分模块将使用这些数据项来计算事务的风险评分,并确定事务是否异常。
图1A示出了根据示例实施例的包括数据库的风险评分系统100的第一网络图示。参考图1A,系统100包括区块链网络,其既可以是公共区块链网络,也可以是许可的区块链网络。
系统100包括区块链客户端104,其向背书节点或对等方112和风险评分模块116生成事务提案136。系统100还包括各种区块链节点或对等方108(被示出为区块链节点或对等方108A到区块链节点或对等方108Z)、智能合约128和共享账本124。
响应于接收到事务提案136,背书者节点或对等方112模拟事务提案136并将事务数据168提供给风险评分模块116。事务数据168可以包括模拟结果、事务提案的执行时间、事务提案的发行者标识符或事务大小。例如,如果事务大小发生重大变化,则风险评分可能会增加。关于用户身份,如果事务先前由用户A启动,而突然由用户B启动了相同事务,则它可能会怀疑,并增加事务的风险评分。风险评分模块116计算风险评分并将风险评分与当前风险评分阈值120进行比较。风险评分模块116可以是与区块链节点或对等方108一起运行的容器,或者是在区块链节点或对等方108中运行的与执行智能合约的例程不同的另一例程。
风险评分可以基于事务数据168和其他数据。风险评分模块116可以从各种来源获得其他数据,以计算更有意义或更准确的风险评分。共享数据156可以从一个或多个区块链节点或对等方108获得。先前相似或相同事务的历史144可以从共享账本124中获得。调用历史140或区块链下数据访问模式152可以从智能合约128获得。智能合约128逻辑通常不考虑过去的智能合约调用历史或过去写入、更新或读取的其他键/值对。
在一些实施例中,智能合约128可以从到区块链网络的数据库或其他外部存储库获得区块链下数据132。区块链下数据132可以包括但不要求包括非常大的数据项,该数据项可以包括文档、照片、视频、音乐、音频148等。在一些实施例中,在区块链上对非常大的项的存储可能有限,从而需要区块链下数据存储132。
取决于实施方式,风险评分阈值120可以是网络范围、超级账本架构通道范围或链码范围的参数。在一个实施例中,风险评分阈值120是固定的,而在其他实施例中,风险评分阈值120可以基于接收到的事务数据168和其他数据而变化,如本文所述。风险评分阈值120提供指定计算边界的值,由此在边界的一侧上的事务提案136建议在背书决策160中被背书,而在边界的另一侧上的事务提案136建议在背书决策160中被拒绝。在计算风险评分并做出背书决策160之后,风险评分模块116将背书决策160提供给背书者节点或对等方。
背书者节点或对等方112接收背书决策160,并基于背书决策160向区块链客户端104提供背书或拒绝164。在一个实施例中,如果背书决策160建议拒绝事务提案136,则将拒绝164提供给区块链客户端104。在另一实施例中,如果背书决策160建议背书事务提案136,则将背书164提供给区块链客户端104。在一个实施例中,背书决策160可以在事务提案136模拟之前被审查。在另一实施例中,如果相应的背书决策160建议拒绝,则可以不模拟事务提案136,并且可以向区块链客户端104提供拒绝164。在另一实施例中,可以在事务提案136模拟之后审查背书决策160。
图1B示出了根据示例实施例的包括数据库的风险评分系统的第二网络图示。参考图1B,系统170包括区块链网络,其既可以是公共区块链网络,也可以是许可的区块链网络。
系统170可以类似于图1A中描述的系统100,但是操作在提交阶段而不是背书阶段。系统170包括区块链客户端104,其生成对背书者节点或对等方112的事务提案136。系统170还可以包括风险评分模块116、提交者节点或对等方174、区块链节点或对等方108(被示出为区块链节点或对等方108A至区块链节点或对等方108Z)、区块链下数据132和共享账本124。
响应于接收到事务提案136,背书者节点或对等方112模拟事务提案136并将事务数据168提供给风险评分模块116。在模拟事务提案136之后,背书者节点或对等方112向区块链客户端104提供背书190。风险评分模块116计算风险评分,并基于与当前风险评分阈值120相比较的计算出的风险评分,向提交者节点或对等方174提供风险评分决策178。风险评分阈值120提供指定计算边界的值,由此在边界的一侧上的事务提案136建议在背书决策178中被提交,而在边界的另一侧上的事务提案136建议在背书决策178中被拒绝。在一个实施例中,风险评分阈值120是固定的,而在其他实施例中,风险评分阈值120可以基于接收到的事务提案136和其他数据而变化,如本文所描述的。事务数据168可以包括生成事务提案136的用户或发起区块链客户端104的身份,以及对受事务提案136影响的数据的大小或数量的指示。
风险评分模块116可以从各种来源获得其他数据,以计算更有意义或更准确的风险评分。共享数据156可以从一个或多个区块链节点或对等方108获得。先前相似或相同事务的历史144可以从共享账本124获得。区块链下数据访问模式152可以从区块链下数据132获得。区块链下数据132可以包括但不要求包括非常大的数据项,该数据项可以包括文档、照片、视频、音乐、音频等。在一些实施例中,在区块链上对非常大的项的存储可能有限,从而需要区块链下数据存储132。
提交者节点或对等方174从风险评分模块116接收风险评分决策178,并从区块链客户端104接收经背书的事务182。在一个实施例中,如果风险评分决策178建议拒绝经背书的事务182,则相应事务将不被提交到共享账本124。在另一实施例中,如果风险评分决策178建议批准经背书的事务182,则相应事务将被提交186到共享账本124。
图2A示出了根据示例实施例的区块链架构配置200。参考图2A,区块链架构200可以包括某些区块链元素,例如,一组区块链节点202。区块链节点202可以包括一个或多个节点204-210(这四个节点仅以示例的方式示出)。这些节点参与许多活动,例如区块链事务添加和验证过程(共识)。区块链节点204-210中的一个或多个可以基于背书策略来对事务进行背书,并且可以为架构200中的所有区块链节点提供排序服务。区块链节点可以发起区块链认证并且试图写入存储在区块链层216中的区块链不可变账本,其副本也可以被存储在底层物理基础设施214上。区块链配置可以包括一个或多个应用程序224,其被链接到应用程序编程接口(API)222以访问和执行所存储的程序/应用程序代码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。排序服务节点284然后将所排序的事务作为区块传递给通道上的所有对等方281-283。在提交到区块链之前,每个对等方281-283可以验证事务。例如,对等方可以检查背书策略,以确保正确分配的指定对等方已经对结果进行了签名并针对事务有效负载293验证了签名。
再次参考图2B,客户端节点260通过构造请求并将其发送给作为背书者的对等节点281来发起事务291。客户端260可以包括利用所支持的软件开发工具包(SDK)的应用程序,其利用可用的API来生成事务提案。该提案是调用链码功能的请求,以便可以将数据读取和/或写入账本(即,为资产写入新的键值对)。SDK可以用作将事务提案打包为适当构造的格式(例如,通过远程进程调用(RPC)的协议缓冲区)并获取客户端的加密凭证以产生事务提案的唯一签名的库。
作为响应,背书对等节点281可以验证(a)事务提案的格式正确,(b)过去尚未提交该事务(重放攻击保护),(c)签名有效,以及(d)提交者(在此示例中为客户端260)已被适当授权在该通道上执行所提出的操作。背书对等节点281可以将事务提案输入作为对所调用的链码功能的参数。然后针对当前状态数据库执行链码,以产生事务结果,包括响应值、读取集和写入集。然而,此时尚未对账本进行任何更新。在292,将值的集合以及背书对等节点281签名一起作为提案响应292传递回客户端260的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)。与工作量证明不同的是,在工作量证明中算法奖励解决数学问题的挖掘者,而通过权益证明,基于其财富(也称为“权益”),以确定性的方式选择新区块的创建者。然后,由所选择/选定的节点执行类似的证明。
利用挖掘364,节点尝试通过对一个变量进行增量改变来解决该区块,直到解决方案满足网络范围的目标为止。这将创建PoW,从而确保正确答案。换句话说,一种潜在的解决方案必须证明在解决问题中消耗了计算资源。在某些类型的无需许可的区块链中,挖掘者可能会因正确挖掘了区块而获得价值(例如,硬币等)的奖励。
这里,PoW过程以及区块的链化使得对区块链的修改极其困难,因为攻击者必须修改所有后续的区块以使对于一个区块的修改被接受。此外,随着新区块被挖掘,修改区块的难度增加,后续区块的数量也增加。通过分发366,通过无需许可的区块链352来分发成功验证的区块,并且所有节点354将区块添加到多数链,该多数链是无需许可的区块链352的可审计账本。此外,由发送方356提交的事务中的值被存入或以其他方式转移到接收方设备358的数字钱包中。
图4示出了根据示例实施例的用于执行基于风险的事务背书的系统消息图400。参照图4,系统图400包括区块链客户端410、区块链网络420和风险评分模块430。区块链客户端410生成到区块链网络420的事务提案415。事务提案416被转移到区块链网络420的背书者节点或对等方,其模拟事务提案425。区块链网络420的背书者节点或对等方可以从事务提案416识别用户身份、事务大小和执行时间435,并将该信息作为事务数据436提供给风险评分模块430。
响应于接收到事务数据436,风险评分模块430可以获得与先前的相似或相同事务有关的过去历史、键/值更新作为所接收的事务提案,以及链下数据440。事务历史441可以从区块链网络420的共享账本中取回。如果事务先前更新了特定范围的键/值对,但是突然开始更新其他键/值对,则该事务可能是可疑的,并且相应的风险评分可能会增加。
除了历史记录441和事务数据436之外,风险评分模块430还可以从不属于区块链网络420的一部分的存储资源中获取链下数据。链下数据可以包括不适合于存储在区块链网络420中的数据形式。
风险评分模块430为事务提案416计算风险评分445,并将所计算的风险评分与风险阈值450进行比较。风险阈值识别将正常事务与异常区块链事务区分开的当前水平。根据经比较的风险评分,风险评分模块430确定背书决策451,并将背书决策451提供给区块链网络420中的背书者节点或对等方。背书决策451可以建议对相应事务提案416的背书或拒绝455。
区块链网络420中的背书者节点或对等方可以在接收背书决策451之前或之后模拟事务提案425。在一个实施例中,如果接收到的背书决策451建议背书,则背书者节点或对等方可以向区块链节点或对等方410返回背书456。在另一实施例中,如果接收到的背书决策451建议拒绝,则背书者节点或对等方可以将向区块链节点或对等方410返回拒绝456。响应于接收到背书456,区块链客户端410创建区块链事务460并将区块链事务461提供给区块链网络420。
图5A示出了根据示例实施例的基于风险评分的背书的示例方法500的流程图。参照图5A,方法500可以包括以下步骤中的一个或多个。
在框504,区块链背书者节点或对等方接收事务提案。所公开的方法为包括调用和查询事务的新事务计算风险评分。
在框508,风险评分模块获得风险评分参数。可以从接收到事务提案的背书者节点或对等方获得风险评分参数。也可以在将事务提交到共享账本之前调用风险评分模块。风险评分可以是基于阈值的数字。
风险评分模块具有可用于计算风险评分的若干相关输入:发起事务的用户的身份、事务的大小、该被识别用户的过去历史、对特定键/值对的过去更新,和执行时间。输入信息可以与链上事务有关,例如区块链上的金融事务的实际发票。
风险评分模块还可以接受链下数据作为输入,并且可以组合链上数据和链下数据。链下数据可以包括大型项,例如照片、音乐和文档。链下数据可以通过区块链上的智能合约进行访问。可以监视链下数据存储区的访问模式,以识别异常的链上应用程序/智能合约。智能合约可以读取链下数据,然后突然密集写入链下数据。智能合约可以尝试访问其从未访问过的链下数据。应用程序通常可以周期性地访问链下数据,其在一段时间内未连接到链下数据。
风险评分计算也可以是特定于组织的。不同的对等方可以共享来自各种应用程序/智能合约/链下数据的信息,以实现更优化或更准确的风险评分估算。
在框512,风险评分模块为事务提案计算风险评分。可以通过考虑智能合约和应用程序语义以及链下数据来计算风险评分。例如,如果应用程序利用收集温度数据的传感器,则其创建的数据值不应大于150F,否则可能指示异常或恶意事务。
在框516,风险评分模块确定所计算的风险评分是否超过阈值。在一个实施例中,阈值是预定的并且是固定的。在另一实施例中,阈值可以是可变的,并且响应于先前计算的风险评分或获得的风险参数而变化。
在框520,响应于事务提案不超过风险阈值,背书者节点或对等方对事务提案进行背书。
在框524,响应于事务提案超过风险阈值,背书者节点或对等方拒绝事务提案。
图5B示出了根据示例实施例的检测异常事务的示例方法的流程图550。参照图5B,方法550可以包括以下步骤中的一个或多个。
在框554,接收对于与应用程序相关联的代理的配置以监视应用程序事务。在一些实施例中,可以在推或拉操作之后接收该配置。在一些实施例中,可以在应用程序/代理运行时期间动态地更新代理的配置。在一些实施例中,可以在运行时期间用具有不同能力的不同代理来动态替换或补充该代理。在一些实施例中,代理配置可以包括关于监视什么类型的事务、监视频率、监视规则、默认动作、警报参数、错误过程、通信细节(例如,安全性、与哪些其他代理/组件通信等)的指令等。如本领域普通技术人员将理解的,代理配置可以包括与本公开一致的许多其他配置选项。所提供的示例并不意味着以任何方式限制可能的代理配置。
在框558,使用代理监视传入和传出的应用程序事务。在典型的实施例中,将代理代码作为应用程序的一部分插入并编译到应用程序代码中,以便代理从应用程序的角度而不是从移除的位置“查看”事务。在一些实施例中,使用安全外壳(SSH)协议来执行事务。
在框562,将所监视的事务数据发送到监视服务器以进行异常事务检测。
在框566,确定是否已经检测到异常事务。在一些实施例中,使用通过学习机确定连续更新的行为模型的学习机来执行异常事务检测。如果尚未检测到异常事务,则该方法返回至框558以继续监视传入和传出的应用程序事务。如果已经检测到异常事务,则该方法进行到框570。
在框570,从监视服务器接收指令以基于所发送的监视事务数据执行动作。动作可以包括重新路由事务、阻止事务等。
在框574,接收系统/代理基于接收到的指令执行动作。在一些实施例中,动作可以包括由代理执行的动作以及触发其他代理/系统执行动作。在一些实施例中,系统/代理向监控服务器报告所执行动作的状态,以确保动作已完成。如有必要,监视服务器可以请求其他动作或触发其他系统/代理执行动作。
图6A示出了根据示例实施例的包括被配置为执行各种操作的物理基础设施610的示例系统600。参考图6A,物理基础设施610包括模块612和模块614。模块614包括区块链620和智能合约630(可以驻留在区块链620上),其可以执行包括在任何示例实施例中的任何操作步骤608(在模块612中)。步骤/操作608可以包括所描述或示出的一个或多个实施例,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础设施610、模块612、和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是同一模块。
图6B示出了根据示例实施例的被配置为执行各种操作的另一示例系统640。参考图6B,系统640包括模块612和模块614。模块614包括区块链620和智能合约630(可以驻留在区块链620上),其可以执行包括在任何示例实施例中的任何操作步骤608(在模块612中)。步骤/操作608可以包括所描述或示出的一个或多个实施例,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础设施610、模块612、和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是同一模块。
图6C示出了根据示例实施例的被配置为利用缔约方之间的智能合约配置的示例系统以及被配置为在区块链上实施智能合约条款的中介服务器。参考图6C,配置650可以代表由智能合约630驱动的通信会话、资产转移会话或过程或进程,该智能合约630显式地识别一个或多个用户设备652和/或656。可以由服务器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上的提交对等方。区块链中的第一区块可以被称为创世区块(genesisblock),其包括关于区块链、其成员、存储在其中的数据等的信息。
排序服务710可以由排序者集群组成。排序服务710不处理事务、智能合约或维护共享账本。而是,排序服务710可以接受经背书的事务并指定将那些事务提交给分布式账本720的顺序。区块链网络的架构可以被设计为使得“排序”的特定实现(例如,Solo、Kafka、BFT等)成为可插拔组件。
事务以一致的顺序被写入分布式账本720。建立事务的顺序以确保对状态数据库724的更新在提交给网络时有效。与通过解决加密难题或挖掘进行排序的加密货币区块链系统(例如,比特币等)不同,在该示例中,分布式账本720的各方可以选择最适合该网络的排序机制。
当排序服务710初始化新数据区块730时,可以将新数据区块730广播给提交对等方(例如,区块链节点711、712和713)。作为响应,每个提交对等方通过检查以确保读取集和写入集仍与状态数据库724中的当前世界状态相匹配,来验证新数据区块730内的事务有效。具体而言,提交对等方可以确定当背书者模拟事务时存在的读取数据是否与状态数据库724中的当前世界状态相同。当提交对等方验证事务有效时,将事务写入分布式账本720上的区块链722,并且状态数据库724使用读写集中的写入数据进行更新。如果事务失败,即,如果提交对等方发现读写集与状态数据库724中的当前世界状态不匹配,则排序为区块的事务仍将被包括在该区块中,但它将被标记为无效,并且状态数据库724将不被更新。
参考图7B,存储在分布式账本720的区块链722上的新数据区块730(也称为数据区块)可以包括多个数据段,例如区块头740、区块数据750和区块元数据760。应当理解,各所示区块及其内容,例如图7B中所示的新数据区块730及其内容仅是示例,并且不意味着限制示例实施例的范围。新数据区块730可以在区块数据750内存储N个事务(例如,1、10、100、500、1000、2000、3000等)的事务信息。新数据区块730还可以在区块头740内包括到先前区块(例如,在图7A中的区块链722上)的链接。特别地,区块头740可以包括先前区块头的哈希值。区块头740还可以包括唯一的区块号、新数据区块730的区块数据750的哈希值等等。新数据区块730的区块号可以是唯一的,并且可以以各种顺序分配,例如从零开始的递增/序列顺序。
区块数据750可以存储记录在新数据区块730内的每个事务的事务信息。例如,事务数据可以包括以下各项中的的一项或多项:事务类型、版本、时间戳、分布式账本720的通道ID、事务ID、时期、有效负载可见性、链码路径(部署事务)、链码名称、链码版本、输入(链码和功能)、客户端(创建者)识别(例如公钥和证书)、客户端签名、背书者身份、背书者签名、提案哈希值、链码事件、响应状态、名称空间、读取集(事务读取的密钥和版本的列表)、写入集(密钥和值的列表等)、开始密钥、结束密钥、密钥列表、默克尔树查询摘要等等。可以针对N个事务中的每一个存储事务数据。
在一些实施例中,区块数据750还可以存储新数据762,其将附加信息添加到区块链722中的哈希链接的区块链。附加信息包括本文描述或示出的步骤、特征、过程和/或动作中的一个或多个。因此,新数据762可以被存储在分布式账本720上的区块的不可变日志中。存储这种新数据762的一些益处反映在本文公开和示出的各种实施例中。虽然在图7B中新数据762被示在区块数据750中,但是也可以位于区块头740或区块元数据760中。
区块元数据760可以存储元数据的多个字段(例如,作为字节阵列等)。元数据字段可以包括在区块创建时的签名、对最后一个配置区块的引用、识别区块内有效事务和无效事务的事务过滤器、对区块进行排序的排序服务的持续最后偏移等。签名,最后配置区块和排序者元数据可以由排序服务710添加。同时,区块的提交者(例如,区块链节点712)可以基于背书策略、读取/写入集的验证等来添加有效性/无效性信息。事务过滤器可以包括大小等于区块数据750中的事务数量的字节阵列和识别事务有效/无效的验证码。
图7C示出了根据本文所描述的实施例的用于数字内容的区块链770的实施例。数字内容可以包括一个或多个文件和相关联的信息。文件可以包括媒体、图像、视频、音频、文本、链接、图形、动画、网页、文档或其他形式的数字内容。区块链不可变的,仅追加的方面可作为保护数字内容的完整性、有效性和真实性的保障,使其适用于适用受理规则的法律程序或者考虑证据或以其他方式对数字信息的展示和使用感兴趣的其他设定。在这种情形中,数字内容可以被称为数字证据。
区块链可以以各种方式形成。在一个实施例中,数字内容可以被包括在区块链本身中并且可以从其访问。例如,区块链中的每个区块可以沿着相关联的数字内容存储引用信息的哈希值(例如,头、值等)。然后可以将哈希值和相关联的数字内容一起加密。因此,可以通过解密区块链中的每个区块来访问每个区块的数字内容,并且每个区块的哈希值可以用作引用先前区块的基础。如下所示:
区块1区块2...区块N
哈希值1哈希值2哈希值N
数字内容1数字内容2数字内容N
在一个实施例中,数字内容可以不包括在区块链中。例如,区块链可以存储每个区块的内容的加密哈希值,而无需任何数字内容。数字内容可以与原始文件的哈希值相关联地存储在另一存储区域或存储器地址中。另一存储区域可以是用于存储区块链的同一存储设备,也可以是不同的存储区域,甚至是分离的关系数据库。可以通过获取或查询感兴趣的区块的哈希值,然后在与实际数字内容相对应地存储的存储区域中查找该值,来引用或访问每个区块的数字内容。例如,可以由例如数据库网守执行该操作。如下所示:
Figure BDA0002503516370000171
在图7C的示例实施例中,区块链770包括以有序序列加密链接的多个区块7781、7782,...,778N,其中N≥1。用于链接区块7781、7782,...,778N的加密可以是任何数量的密钥或非密钥哈希函数。在一个实施例中,区块7781、7782,...,778N经哈希函数,其基于区块中的信息根据输入产生n比特字母数字输出(其中n是256或另一数字)。此类哈希函数的示例包括但不限于SHA型(SHA代表安全哈希算法)算法、Merkle-Damgard算法、HAIFA算法、Merkle树算法、基于随机数(nonce-base)的算法和非防冲突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所示,以建立可审计且不可变的监管链(chain-of-custody)。
其他区块中的头7722至772N中的每一个还可以包括其他信息,例如版本号、时间戳、随机数、根信息、难度级别、共识协议和/或与相应文件和/或区块链整体相关联的其他参数或信息。
其他区块中的文件7742至774N可以等于原始文件,也可以是创世区块中原始文件的修改版本,例如取决于所执行的处理类型。所执行的处理类型可以因区块而异。该处理可以包括例如对先前区块中的文件的任何修改,诸如编辑信息或以其他方式改变文件的内容、从文件中取走信息、或向文件添加或附加信息。
附加地或替代地,该处理可以包括仅从先前的区块复制文件、改变文件的存储位置、分析来自一个或多个先前区块的文件、将文件从一个存储或存储器位置移动到另一个、或相对于区块链的文件和/或其关联的元数据执行动作。涉及分析文件的处理可以包括例如附加、包括或以其他方式关联各种分析、统计或与文件相关联的其他信息。
其他区块中的每个其他区块7762至776N中的值是唯一值,并且由于所执行的处理而全都不同。例如,任何一个区块中的值都对应于先前区块中值的更新版本。该更新被反映在该值被分配到的区块的哈希值中。因此,区块的值提供了在区块中执行了何种处理的指示,并且还允许通过区块链追溯到原始文件。这种追溯确认了整个区块链中文件的监管链。
例如,考虑对先前区块中的文件的部分进行编辑、屏蔽或像素化以保护文件中所示的人的身份的情况。在这种情况下,包括已编辑文件的区块将包括与已编辑文件相关联的元数据,例如,如何执行编辑、执行编辑的人员、发生(一个或多个)编辑的时间戳等。可以对元数据进行哈希处理以形成值。由于该区块的元数据与经哈希处理以形成先前区块中的值的信息不同,因此这些值互不相同,并且在解密时可以恢复。
在一个实施例中,当任何一个或多个后续区块发生时,可以更新先前区块的值(例如,计算新的哈希值)以形成当前区块的值。在该示例实施例中,可以通过对以下所述的全部或部分信息进行哈希处理来计算新的哈希值。
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可用于显着改善机器学习模型的训练过程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发生。
可以将用于区块链的新事务一起收集到一个新区块中,并添加到现有的哈希值中。然后将其加密以创建针对新区块的新的哈希值。这将在加密后被添加到下一个事务列表中,依此类推。由此产生区块的链,其中每个区块都包含所有前面区块的哈希值。存储这些区块的计算机会定期比较其哈希值,以确保它们都一致。任何不一致的计算机都将丢弃导致问题的记录。这种方法对于确保区块链的防篡改很有用,但并不是完美的。
玩弄该系统的一种方式是不诚实的用户以他们的喜好来改变事务列表,但是以使哈希值保持不变的方式。这可以通过蛮力来完成,换句话说就是通过更改记录、对结果进行加密以及查看哈希值是否相同来实现。如果不这样,则一次又一次尝试,直到找到匹配的哈希值为止。区块链的安全性是基于这样的信念,即普通计算机只能在完全不切实际的时间范围内(例如,宇宙的年龄)执行这种蛮力攻击。相比之下,量子计算机要快得多(快几千倍),因此构成更大的威胁。
图8B示出了量子安全区块链852的示例850,其实现量子密钥分配(QKD)以保护免受量子计算攻击。在该示例中,区块链用户可以使用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支持本文描述和/或示出的一个或多个示例实施例。系统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 (31)

1.一种系统,包括:
区块链客户端,被配置为生成事务提案;以及
区块链网络,包括:
风险评分模块,被配置为:
获取事务提案数据;
获取外部数据;
根据所述事务提案数据和所述外部数据计算风险评分;
比较所述风险评分和风险评分阈值;以及
基于所述比较提供提交决策;以及
提交者节点或对等方,被配置为:
接收与所述事务提案相对应的经背书的事务;以及
基于所述提交决策,将经背书的事务提交到所述区块链网络中的区块链或拒绝所述事务。
2.根据权利要求1所述的系统,还包括:
一个或多个背书者节点或对等方,被配置为:
模拟所述事务提案;以及
响应于所模拟的事务提案,向所述区块链客户端提供背书或拒绝之一。
3.根据权利要求2所述的系统,其中,所述提交决策包括响应于所述风险评分不超过所述风险评分阈值而将所述经背书的事务提交给共享账本的建议,其中所述提交决策包括响应于所述风险评分超过所述风险评分阈值而拒绝所述经背书的事务的建议。
4.根据权利要求2所述的系统,其中,所述事务提案数据包括所述事务提案的发起者的身份或所述事务提案所引用的数据的大小中的一个或多个,其中,所述事务提案数据确定所述风险评分模块是否对所述事务提案应用风险评分。
5.根据权利要求2所述的系统,其中,所述外部数据包括以下各项中的一个或多个:先前事务的事务历史、来自一个或多个区块链节点或对等方的共享数据、或区块链下数据。
6.根据权利要求5所述的系统,其中,所述事务历史包括以下各项中的一个或多个:先前何时调用同一事务、先前调用同一事务的频率、由一个或多个先前事务访问的一个或多个键-值对或键-值对范围、以及同一先前事务运行所花费的时间长度。
7.根据权利要求5所述的系统,其中,所述共享数据包括用于改善风险评分确定的数据,其中,所述区块链下数据包括文档、视频或音频中的一个或多个。
8.一种方法,包括:
由风险评分模块接收区块链事务提案;
获取事务提案数据;
获取外部数据;
根据所述事务提案数据和所述外部数据计算风险评分;
比较所述风险评分和风险评分阈值;
基于所述比较提供提交决策;以及
提交或拒绝与所述事务提案相对应的经背书的事务。
9.根据权利要求8所述的方法,还包括:
由一个或多个背书者节点或对等方模拟事务提案;以及
响应于所模拟的事务提案,向所述区块链客户端提供背书或拒绝之一。
10.根据权利要求9所述的方法,其中,所述提交决策包括响应于所述风险评分不超过所述风险评分阈值而将所述经背书的事务提交给共享账本的建议,其中所述提交决策包括响应于所述风险评分超过所述风险评分阈值而拒绝所述经背书的事务的建议。
11.根据权利要求9所述的方法,其中,所述事务提案数据包括所述事务提案的发起者的身份或所述事务提案所引用的数据的大小中的一个或多个,其中,所述事务提案数据确定所述风险评分模块是否对所述事务提案应用风险评分。
12.根据权利要求9所述的方法,其中,所述外部数据包括以下各项中的一个或多个:先前事务的事务历史、来自一个或多个区块链节点或对等方的共享数据、或区块链下数据。
13.根据权利要求12所述的方法,其中,所述事务历史包括以下各项中的一个或多个:先前何时调用同一事务、先前调用同一事务的频率、由一个或多个先前事务访问的一个或多个键-值对或键-值对范围、以及同一先前事务运行所花费的时间长度。
14.根据权利要求12所述的方法,其中,所述共享数据包括用于改善风险评分确定的数据,其中,所述区块链下数据包括文档、视频或音频中的一个或多个。
15.一种系统,包括:
区块链客户端,被配置为生成事务提案;以及
区块链网络,包括:
风险评分模块,被配置为:
获取事务提案数据;
获取外部数据;
根据所述事务提案数据和所述外部数据计算风险评分;
比较所述风险评分和风险评分阈值;以及
基于所述比较提供背书决策;以及
一个或多个背书者节点或对等方,被配置为:
模拟所述事务提案;以及
响应于所模拟的事务提案和所述背书决策,向所述区块链客户端提供背书或拒绝之一。
16.根据权利要求15所述的系统,其中,所述背书决策包括响应于所述风险评分不超过所述风险评分阈值而对所述事务提案进行背书的建议,其中所述背书决策包括响应于所述风险评分超过所述风险评分阈值而拒绝所述事务提案的建议。
17.根据权利要求16所述的系统,其中,所述一个或多个背书者节点或对等方响应于所述一个或多个背书者节点或对等方接收到对所述事务提案进行背书的建议而提供背书,其中所述一个或多个背书者节点或对等方响应于所述一个或多个背书者节点或对等方接收到拒绝所述事务提案的建议而提供拒绝。
18.根据权利要求16所述的系统,其中,所述事务提案数据包括所述事务提案的发起者的身份或所述事务提案所引用的数据的大小中的一个或多个,其中,所述事务提案数据确定所述风险评分模块是否对所述事务提案应用风险评分。
19.根据权利要求16所述的系统,其中,所述外部数据包括以下各项中的一个或多个:先前事务的事务历史、来自一个或多个区块链节点或对等方的共享数据、或区块链下数据。
20.根据权利要求19所述的系统,其中,所述事务历史包括以下各项中的一个或多个:先前何时调用同一事务、先前调用同一事务的频率、由一个或多个先前事务访问的一个或多个键-值对或键-值对范围、以及同一先前事务运行所花费的时间长度。
21.根据权利要求19所述的系统,其中,所述共享数据包括用于改善风险评分确定的数据,其中,所述区块链下数据包括文档、视频或音频中的一个或多个。
22.一种方法,包括:
由风险评分模块接收区块链事务提案;
获取事务提案数据;
获取外部数据;
根据所述事务提案数据和所述外部数据计算风险评分;
比较所述风险评分和风险评分阈值;
基于所述比较提供背书决策;以及
对所述事务提案进行背书或拒绝。
23.根据权利要求22所述的方法,其中,所述背书决策包括响应于所述风险评分不超过所述风险评分阈值而对所述事务提案进行背书的建议,其中所述背书决策包括响应于所述风险评分超过所述风险评分阈值而拒绝所述事务提案的建议。
24.根据权利要求23所述的方法,其中,对所述事务提案进行背书包括背书决策建议背书,其中,对所述事务提案进行拒绝包括背书决策建议拒绝所述事务提案。
25.根据权利要求23所述的方法,其中,所述事务提案数据包括所述事务提案的发起者的身份或所述事务提案所引用的数据的大小中的一个或多个,其中,所述事务提案数据确定所述风险评分模块是否对所述事务提案应用风险评分。
26.根据权利要求23所述的方法,其中,所述外部数据包括以下各项中的一个或多个:先前事务的事务历史、来自一个或多个区块链节点或对等方的共享数据、或区块链下数据。
27.根据权利要求26所述的方法,其中,所述事务历史包括以下各项中的一个或多个:先前何时调用同一事务、先前调用同一事务的频率、由一个或多个先前事务访问的一个或多个键-值对或键-值对范围、以及同一先前事务运行所花费的时间长度。
28.根据权利要求26所述的方法,其中,所述共享数据包括用于改善风险评分确定的数据,其中,所述区块链下数据包括文档、视频或音频中的一个或多个。
29.一种包括指令的非暂态计算机可读介质,所述指令在被处理器读取时使所述处理器执行根据权利要求8-14和22-28中任一项所述的方法。
30.一种计算机系统,包括:
一个或多个处理器;
耦合到所述一个或多个处理器的计算机可读存储介质,所述计算机可读存储介质包括指令,当所述指令由所述一个或多个处理器执行时实施如权利要求8-14以及22-28中任意一项所述的方法。
31.一种系统,所述系统包括分别用于执行如权利要求8-14以及22-28中任意一项所述的方法的各个步骤的模块。
CN202010439306.2A 2019-05-24 2020-05-22 数据库异常事务提交预防 Pending CN111984378A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16/422,954 2019-05-24
US16/422,951 2019-05-24
US16/422,951 US11579919B2 (en) 2019-05-24 2019-05-24 Anomalous transaction detection for database
US16/422,954 US11809896B2 (en) 2019-05-24 2019-05-24 Anomalous transaction commitment prevention for database

Publications (1)

Publication Number Publication Date
CN111984378A true CN111984378A (zh) 2020-11-24

Family

ID=73442212

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010439306.2A Pending CN111984378A (zh) 2019-05-24 2020-05-22 数据库异常事务提交预防

Country Status (1)

Country Link
CN (1) CN111984378A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9935772B1 (en) * 2016-02-19 2018-04-03 Vijay K Madisetti Methods and systems for operating secure digital management aware applications
CN109064063A (zh) * 2018-09-11 2018-12-21 北京工商大学 一种基于区块链的食品安全风险溯源分析系统及方法
US20190104196A1 (en) * 2017-09-29 2019-04-04 Oracle International Corporation System and method for providing a representational state transfer proxy service for a blockchain cloud service
US20190132350A1 (en) * 2017-10-30 2019-05-02 Pricewaterhousecoopers Llp System and method for validation of distributed data storage systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9935772B1 (en) * 2016-02-19 2018-04-03 Vijay K Madisetti Methods and systems for operating secure digital management aware applications
US20190104196A1 (en) * 2017-09-29 2019-04-04 Oracle International Corporation System and method for providing a representational state transfer proxy service for a blockchain cloud service
US20190132350A1 (en) * 2017-10-30 2019-05-02 Pricewaterhousecoopers Llp System and method for validation of distributed data storage systems
CN109064063A (zh) * 2018-09-11 2018-12-21 北京工商大学 一种基于区块链的食品安全风险溯源分析系统及方法

Similar Documents

Publication Publication Date Title
CN111951003A (zh) 用于管理对用户数据的同意的认知系统
US11809896B2 (en) Anomalous transaction commitment prevention for database
US11362826B2 (en) Endorsement process for non-deterministic application
CN111666332B (zh) 自动演进的数据库背书策略
US11251938B2 (en) Blockchain verification using non-consecutive blocks
US11489663B2 (en) Correlation-based hash tree verification
AU2021210206B2 (en) Index structure for blockchain ledger
CN114651248A (zh) 用于经许可的区块链的随机节点选择
US11636094B2 (en) Chaincode recommendation based on existing chaincode
CN114128214A (zh) 用于配置区块链的安全层
US11579919B2 (en) Anomalous transaction detection for database
CN112241919A (zh) 具有数据流控制的多域区块链网络
US11580098B2 (en) Multi-client transaction validation
CN115211093A (zh) 数据对象的有效阈值存储
US10956204B1 (en) Free-riding node identification for blockchain
WO2021197227A1 (en) Noisy transaction for protection of data
CN111881109A (zh) 数据库可合并分类账
CN112052474A (zh) 蓝光拷贝服务
US20210240673A1 (en) Load balancing based blockchain transaction submission
US20210126787A1 (en) Optimal endorser node determination based on state
CN112019586B (zh) 用于区块链的验证的方法和系统
US11416474B2 (en) Blockchain-based software library access and usage management
US20210279284A1 (en) Behavior driven graph expansion
US20210150597A1 (en) Automated invoicing
US11249949B2 (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