CN111046069A - 一种块链式账本中的聚合计算方法、装置及设备 - Google Patents
一种块链式账本中的聚合计算方法、装置及设备 Download PDFInfo
- Publication number
- CN111046069A CN111046069A CN201911094079.8A CN201911094079A CN111046069A CN 111046069 A CN111046069 A CN 111046069A CN 201911094079 A CN201911094079 A CN 201911094079A CN 111046069 A CN111046069 A CN 111046069A
- Authority
- CN
- China
- Prior art keywords
- data
- data record
- block
- record
- data block
- 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.)
- Granted
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
-
- 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
- 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/06—Asset management; Financial planning or analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Computational Linguistics (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- Mathematical Physics (AREA)
- Game Theory and Decision Science (AREA)
- Human Resources & Organizations (AREA)
- Operations Research (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了一种块链式账本中的聚合计算方法、装置及设备。在块链式账本中进行聚合计算时,对计算目标进行迭代处理,每次迭代计算时,对当前所采用的数据记录进行完整性验证,验证通过之后再进行聚合计算,若验证失败则随时终止聚合计算。
Description
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种块链式账本中的聚合计算方法、装置及设备。
背景技术
在数据库领域中,聚合计算是一类较为常见的计算方法,包括求和、求平均、计数等等。在这个过程中,通常都是根据取得的数据进行直接聚合,无法保证数据的真实与聚合结果的准确。
基于此,本说明书实施例提供一种更为准确的聚合计算方法。
发明内容
本申请实施例的目的是提供一种在块链式账本中更为准确的聚合计算方法。
为解决上述技术问题,本申请实施例是这样实现的:
一种块链式账本中的聚合计算方法,包括:
确定聚合计算所采用的包括多条数据记录的集合,将聚合结果的初始值置为0,采用如下方式进行对所述集合和聚合结果进行迭代处理,直至达到预设的迭代要求:
从集合中选取一条数据记录,确定该数据记录所处的数据块;
验证该数据记录在所述数据块中的完整性,若验证通过,将所述数据记录从所述集合中剔除,聚合所述数据记录和当前聚合结果,得到更新后的集合和聚合结果;
若验证失败,终止所述聚合计算,返回验证失败的当前数据记录在账本中的位置信息;
迭代结束时,输出当前的聚合结果为聚合计算的目标结果。
对应的,本说明书实施例还提供一种块链式账本中的聚合计算装置,包括:
集合确定模块,确定聚合计算所采用的包括多条数据记录的集合,将聚合结果的初始值置为0:
迭代计算模块,从集合中选取一条数据记录,确定该数据记录所处的数据块;验证该数据记录在所述数据块中的完整性,若验证通过,将所述数据记录从所述集合中剔除,聚合所述数据记录和当前聚合结果,得到更新后的集合和聚合结果;
迭代终止模块,终止所述聚合计算,返回验证失败的当前数据记录在账本中的位置信息;
输出模块,迭代结束时,输出当前的聚合结果为聚合计算的目标结果。
通过本说明书实施例所提供的方案,在块链式账本中进行聚合计算时,对计算目标进行迭代处理,每次迭代计算时,对当前所采用的数据记录进行完整性验证,验证通过之后再进行聚合计算,若验证失败则随时终止聚合计算,从而保证了数据记录未经篡改或者丢失,聚合计算的结果更为准确。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本说明书实施例所涉及的系统架构示意图;
图2为本说明书实施例所提供的一种生成块链式账本的流程示意图;
图3为本说明书实施例所提供的一种数据块的块头的示意图;
图4为本说明书实施例提供的一种数据记录的索引创建方法的流程示意图;
图5为本说明书实施例所提供的块链式账本中的聚合计算方法的流程示意图;
图6是本说明书实施例提供的一种块链式账本中的聚合计算装置的结构示意图;
图7是用于配置本说明书实施例方法的一种设备的结构示意图。
具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
首先对本说明书实施例中所涉及的块链式账本进行说明。
块链式账本是一种应用在数据库中的中心化的数据存储结构,其面向的服务对象常常为各种机构,各机构则可以将它们与第三方用户(包括其它机构或者个人)之间所产生的数据记录在数据库服务方进行存储。如图1所示,图1为本说明书实施例所涉及的系统架构示意图。在该示意图中,一个企业机构可以面向多名用户,而每个用户均可以通过其对应的企业机构向数据库服务提供方进行查询。
例如,数据库服务端对接的机构是某金融产品公司,数据记录可以是个人用户在该金融产品公司的理财记录;或者,对接的机构可以是政府部门,其中的数据记录是政府部门对于该部门所管理的公共项目的开销明细;或者,数据库服务方对接的机构是某个医院,其中的数据记录是病人的病历;或者,数据库服务方对接的机构是第三方支付机构,数据记录可以是个人用户通过该机构的支付记录,等等。
在中心化的数据库服务端,块链式的账本通过如下方式生成,如图2所示,图2为本说明书实施例所提供的一种生成块链式账本的流程示意图,包括:
S201,接收待存储的数据记录,确定各数据记录的哈希值,其中,数据记录中包含业务属性。
此处的待存储的数据记录,可以是客户端个人用户的各种消费记录,也可以是应用服务器基于用户的指令,在执行业务逻辑时产生的业务结果、中间状态以及操作记录等等。具体的业务场景可以包括消费记录、审计日志、供应链条、政府监管记录、医疗记录等等。
在每个与数据库服务方对接的机构中,所述业务属性在所述对接机构中,一般而言是唯一存在的,业务属性基于不同的业务场景,可以包括用户名、用户身份证号、驾照编号、手机号、项目唯一编号、数据记录的类型(例如金融包编号)等等。
例如,对于第三方支付机构而言,数据记录是用户的消费记录,此时的业务属性即为用户标识(包括手机号、身份证号、用户名等等),或者对该用户标识进行哈希算法所得到的哈希值;或者,对于政府机构而言,数据记录为多个公共项目的开销流水,则此时的业务属性可以为每个项目的唯一编号。
业务属性可以存储在数据记录中的指定位置,例如数据记录的头部或者尾部。
S203,当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第N个数据块。
所述预设的成块条件包括:待存储的数据记录数量达到数量阈值,例如,每接收到一千条数据记录时,生成一个新数据块,将一千条数据记录写入块中;或者,距离上一次成块时刻的时间间隔达到时间阈值,例如,每隔5分钟,生成一个新数据块,将在这5分钟内接收到的数据记录写入块中。
此处的N指的是数据块的序号,换言之,在本说明书实施例中,数据块是以块链的形式,基于成块时间的顺序先后排列,具有很强的时序特征。其中,数据块的块高基于成块时间的先后顺序单调递增。块高可以是序号,此时第N个数据块的块高即为N;块高也可以其它方式生成,例如,将成块时间对称加密转换为大整型数据(例如,12位或者15位的整数)作为块高。
当N=1时,即此时的数据块为为初始数据块。初始数据块的哈希值和块高基于预设方式给定。例如,初始数据块中不包含数据记录,哈希值则为任一给定的哈希值,块高blknum=0;又例如,初始数据块的生成触发条件与其它数据块的触发条件一致,但是初始数据块的哈希值由对初始数据块中的所有内容取哈希确定。
当N>1时,由于前一数据块的内容和哈希值已经确定,则此时,可以基于前一数据块(即第N-1个数据块)的哈希值生成当前数据块(第N个数据块)的哈希值,例如,一种可行的方式为,确定每一条将要写入第N个块中的数据记录的哈希值,按照在块中的排列顺序,生成一个默克尔树,将默克尔树的根哈希值和前一数据块的哈希值拼接在一起,再次采用哈希算法,生成当前块的哈希值。又例如,还可以按照块中数据记录的顺序进行拼接并取哈希得到整体数据记录的哈希值,拼接前一数据块的哈希值和整体数据记录的哈希值,并对拼接得到的字串进行哈希运算,生成数据块的哈希值。
上述方式生成的数据块,可以包括块头和块体两个部分。块体中可以用于存储拼接数据的明文,或者拼接数据的哈希值等等;块头中可以用于存储有关本数据块的元数据,例如,账本的版本号,前一数据块的哈希值,自身数据块中的拼接数据所组成的默克尔树的根哈希值,自身数据块的哈希值,用于记录拼接数据的被操作状态的状态数组等等。如图3所示,图3为本说明书实施例所提供的一种数据块的块头的示意图。
用户在上传数据成功后,即可以得到对应的数据记录的哈希值以及所处的数据块的哈希值,并保存,并且可以基于该哈希值发起完整性验证。具体的验证方式即为在数据库中重新计算数据记录自身的哈希值以及所处的数据块的哈希值,与本地所保存的进行对比。
通过前述的数据块的生成方式,每一个数据块通过哈希值确定,数据块的哈希值由数据块中的数据记录的内容、顺序以及前一数据块的哈希值决定。用户可以随时基于数据块的哈希值发起验证,对于数据块中任何内容(包括对于数据块中数据记录内容或者顺序的修改)的修改都会造成在验证时计算得到的数据块的哈希值和数据块生成时的哈希值不一致,而导致验证失败,从而实现了中心化下的不可篡改。
在对于块链式账本中的数据块进行完整性验证时,一般而言,即指定一段数据块进行连续的完整性验证,或者从初始数据块开始进行连续的完整性验证。验证的方式即为获取前一数据块的哈希值,并采用与生成数据块的哈希值时的同样算法,根据自身的数据记录和前一数据块的哈希值,重新计算一遍自身数据块的哈希值,以进行验证。
在一种实施方式下,如果是用户需要在本地对一条数据记录进行完整性验证,则可以预先将块头中的信息预先下载至本地进行存储,从而可以在需要验证时,只需向数据库服务端查询“默克尔路径”即可,并在本地计算该数据记录的哈希值,以及根据“默克尔路径”计算默克尔树的根哈希,并与本地所保存的块头信息中的根哈希进行一致性对比。
基于前述方式,在数据库服务端中可以得到一份难以篡改的块链式账本用于存储数据记录。为了查询数据方便,本说明书实施例还提供一种针对于块链式账本的索引创建方法。如图4所示,图4为本说明书实施例提供的一种数据记录的索引创建方法的流程示意图,该流程具体包括如下步骤:
S401,在块链式账本中,针对任一数据记录,获取所述数据记录中所包含的业务属性。
业务属性的具体位置以及获取方式可以是数据库服务方和对接机构事先协商。例如,对接机构所提供的数据记录为标准结构化的数据记录时,业务属性可以从数据记录中指定偏移量获取,或者由特定字符标识起始位置和结束位置;又或者,对接机构所提供的数据记录为非结构化的数据时,在对接机构上传时可以直接在每条数据记录的开头拼接上包含业务属性的头部,数据库服务方可以直接从头部获取每条数据记录的业务属性。
S403,确定所述数据记录在账本中的位置信息,所述位置信息包括数据记录所处的数据块的块高,以及,在所处的数据块中的偏移量。
如前所述,一个块链式的账本由多个数据块组成,同时,一个数据块中通常包含多个数据记录。因此,在本说明书实施例中,所述的位置信息具体指的是一条数据记录被保存时,处于账本中的哪个数据块上,以及,在该数据块中的什么位置。
在本说明书实施例所提供的数据块中,可以有多种方式用来标识不同的数据块,包括数据块的哈希值或者块高。
数据块的哈希值为根据前一区块哈希值和自身数据记录进行哈希计算而得到的哈希值,可以用于唯一、明确地标识一个数据块。在块链式的账本中,通常第一个数据块其块高为0,以后每增加一个数据块,块高加1;或者,还可以将数据块的成块时间转换为一个大的单调递增整型数据(一般为12至15位)序列,作为数据块的块高。因此,一个数据块通常有一个明确的块高。
又例如,在一个已经确定的要写入数据库的数据块,其中数据记录的排序也已经固定,因此一个数据记录在该数据块中的序号也是明确的,在数据记录的长度为固定单位时,序号同样可以用于明确该数据记录在其所处的数据块中的位置信息。即,序号同样也可以用于指示数据记录在数据块中的偏移量。
同时,在一个数据块中,由于通常包含了多个数据记录,因此,还可以用各数据记录在该数据块中的地址偏移量来分别标识数据块中的数据记录。显而易见,在同一个数据块中,各数据记录的地址偏移量并不相同。
当然,由于在本说明书实施例所提供的方式中,数据块的具体格式是可以自定义的(例如,数据块的块头中所包含的元数据信息和备注信息,数据块的块高所采取的形式等等),在不同的格式下,位置信息的内容也会有所不同,这并不构成对本方案的限定。
S405,建立所述业务属性和位置信息的对应关系,写入以所述业务属性为主键的索引。
即,该索引是一个倒排索引。在该索引中,主键是数据记录中所包含的业务属性。具体的写入方式为,当索引中的主键不包含所述指定标识字段时,在索引表中创建以所述指定标识字段为主键的索引记录。
当所述索引中的主键包含所述指定标识字段时,将所述位置信息写入所述指定标识字段所处的索引记录。需要说明的是,此处的写入不是覆盖性的写入,而是将位置信息添加到该索引记录的值中,与其它位置信息并列存在与该索引记录中。
如表1所示,表1为本说明书实施例所提供的一种示例性索引表。其中Key即为业务属性的具体值,Value部分的每个数组即为一条位置信息,每个数组中的前部分块高,后部分为数据记录在该数据块中的序号,通过块高和序号即可以唯一的确定一条数据记录。容易理解,在索引表中,一个key可以对应于多个位置信息。
表1
Key | Value |
0X123456 | (2,08),(2,10),(300,89),(300,999) |
344X0001 | (5,01),(8,22) |
…… | …… |
通过本说明书实施例所提供的方案,对于写入账本的数据记录,确定出数据记录的业务属性,以及在账本中的存储位置,建立起二者的对应关系,创建以业务属性为主键的倒排索引,不必了解用户的业务详情,从索引中即可以基于业务属性对于数据记录进行相应统计,以及后续的查询和验证。
在该索引表中,由于一个业务属性可以对应于多个位置信息(即一条索引记录中可以包含多个位置信息,或者说一个业务属性可以对应于多个数据记录),在将位置信息写入索引中时,还可以将位置信息按照数据记录在账本中的先后顺序依次进行排列,有利于用户的查询以及验证。数据记录在账本中的先后顺序即可以数据记录被写入账本的时间戳(即数据块的成块时间戳)来体现,以及,对于同一数据块中的数据记录的先后顺序,则可以通过在数据块中的排序先后来体现。通过对位置信息进行排序,可以便于在查询获取读取数据记录时依序获取得到相应的数据记录,提高用户体验。
在实际应用中,经常会发起针对某个业务属性的聚合计算,包括求和、求均值、求最大值/最小值、计数、求标准差、求方差等等。例如,以用户ID为业务属性时,对接机构需要查询自己所服务的若干用户在过去12个月中所分别上传的数据记录的数量。这个过程就需要保证账本中各用户的数据记录都是没有篡改或者遗漏的,否则不能保证聚合结果的准确性。
基于此,本说明书实施例提供一种块链式账本中的聚合计算方法,如图5所示,图5为本说明书实施例所提供的块链式账本中的聚合计算方法的流程示意图,包括:
S501,确定聚合计算所采用的包括多条数据记录的集合,将聚合结果的初始值置为0。
具体而言,用户或者对接结构在发起聚合计算时,可以通过相应的聚合指令发送至数据库服务端。例如,Count(ID,Blknum),在其中,“Count”为计数,“ID”为业务属性,Blknum为块高,通过该指令,计算用户“ID”在块高“Blknum”之前的数据记录的条数。
在一种实施方式下,基于业务属性在账本中的唯一性,数据库服务端接收到该指令,即可以采用遍历的方式,查询整个账本,确定账本中包含有业务属性的数据记录,从而得到包含N条数据记录的集合。
在另一种实施方式下,若数据库服务端已经建立了关于业务属性和位置信息的索引,则可以从索引中查询所述业务属性所对应的位置信息,根据查询得到的位置信息获取包含有所述业务属性的多条数据记录,生成所述集合。初始的聚合结果作为0,不会影响聚合计算。
预设的迭代要求一般为集合中的所有数据记录都被遍历过,在本说明书实施例中可以是集合被迭代至空集。
在确定了初始的集合、初始的聚合结果以及迭代结束条件之后,采用如下方式对集合和聚合结果进行迭代:
S503,从集合中选取一条数据记录,确定该数据记录所处的数据块,验证该数据记录在所述数据块中的完整性。
在聚合运算中,数据记录迭代顺序可以是随机的,也可以是有序的。数据记录的随机选取,不影响聚合结果。当然,也可以按照一定的顺序进行选取,例如,按照数据记录的产生时间或者上传时间进行选取。
具体而言,若采用的是从初始数据块开始,遍历账本的方式获得前述集合,则可以根据数据记录在账本中的块高确定先后顺序,并按照块高的顺序依次选取数据记录进行迭代。
若通过索引中查询业务属性所对应的位置信息而得到前述集合,此时,相应的,如果索引记录中的值(即多条位置信息)是依据时间戳排序的,那么此时,同样可以对集合中的数据寄了根据位置信息的排序进行同样的排序,从而得到可以依序对数据记录进行迭代。数据记录基于时间顺序(块高的顺序也可以认为是一种时间顺序)的可以与用户的现实相联系,基于时间顺序的迭代可以满足用户的实际应用的需要。
在块链式账本中,对于数据记录的完整性进行验证时,一种方式可以是:确定数据记录所处的数据块,并且根据该数据块中的数据记录构建默克尔树,并计算当前的默克尔树的哈希值,从而可以与块头中所存储的默克尔树的哈希值进行一致性对比,若不一致,则说明该数据记录已经被篡改。
另一种方式则可以是,在用户或者对接机构将数据记录上传服务端时,自己本地保存有数据记录的备用副本或者备用副本的哈希值,从而可以计算该数据记录的当前哈希值,并且与备用副本的哈希值进行一致性对比,以实现完整性验证。
需要说明的是,备用副本的哈希值可以是数据库服务端所返回的,中心化的数据库服务端可以对该哈希值进行数字签名,以确保该哈希值是得到了数据库服务端的认可。
例如,在用户上传数据时,服务端就已经确定了各数据记录的哈希值,此时就可以对哈希值进行数字签名并且返回至用户。用户保存该具有数字签名的哈希值即可。从而可以随时基于该哈希值与对应的数据记录进行完整性验证。
具体的聚合结果S(i)与聚合计算的方式相关,1≤i≤N。例如,在选取了第一条数据记录进行计算时,若聚合计算为求和SUM或者求最值,则S(1)等于第一条数据记录中的相关值;若聚合计算为计数COUNT,则S(1)=1,等等。
S505,若验证通过,将所述数据记录从所述集合中剔除,聚合所述数据记录和当前聚合结果,得到更新后的集合和聚合结果。
在初次验证通过之后,对于第i次迭代中的所使用的第i条数据记录,即根据第i条数据记录和当前的聚合结果S(i-1)再次进行聚合计算,更新聚合结果得到S(i)。
同时,在每次验证成功并进行计算之后,即将该数据记录从当前的集合中剔除(包括第一条),避免重复计算,从而得到更新后的包含数据记录的集合。容易理解,每次更新之后集合中的数据记录减少一条。
例如,在i=2时,若聚合计算为求和SUM,则S(2)等于S(1)与第二条数据记录中的相关值的和;若聚合计算为计数COUNT,则根据S(1)=1和当第二条数据记录计数,得到S(2)=2,等等。
容易理解,若每次验证都成功,则i值从2开始,每次迭代之后,i值自动加1,直至i等于N。在这个过程中,每次迭代时只会获取一条数据记录,并进行完整性验证,如果每条数据记录都通过了完整性验证,则迭代不会终止,直至i=N,将会输出最终聚合结果S(N)。
S507,若验证失败,终止所述聚合计算,返回验证失败的当前数据记录在账本中的位置信息。
若任一数据记录的完整性验证失败,则迭代即时终止,数据库服务端获取该验证失败的数据记录的位置信息,并返回验证失败的第i条数据记录在账本中的位置信息至聚合计算指令的发起方,通知聚合指令的发起方“数据记录有误”,以便进一步进行后续的跟进。
S509,迭代结束时,输出当前的聚合结果为聚合计算的目标结果。
此处的迭代结束指的是验证一直成功直至集合为空,而不包括前述的因为验证失败导致的聚合计算终止。
通过本说明书实施例所提供的方案,在块链式账本中进行聚合计算时,对计算目标进行迭代处理,每次迭代计算时,对当前所采用的数据记录进行完整性验证,验证通过之后再进行聚合计算,若验证失败则随时终止聚合计算,从而保证了数据记录未经篡改或者丢失,聚合计算的结果更为准确。
对应的,本说明书实施例还提供一种块链式账本中的聚合计算装置,如图6所示,图6是本说明书实施例提供的一种块链式账本中的聚合计算装置的结构示意图,包括:
集合确定模块601,确定聚合计算所采用的包括多条数据记录的集合,将聚合结果的初始值置为0:
迭代计算模块603,从集合中选取一条数据记录,确定该数据记录所处的数据块;验证该数据记录在所述数据块中的完整性,若验证通过,将所述数据记录从所述集合中剔除,聚合所述数据记录和当前聚合结果,得到更新后的集合和聚合结果;
迭代终止模块605,终止所述聚合计算,返回验证失败的当前数据记录在账本中的位置信息;
输出模块607,迭代结束时,输出当前的聚合结果为聚合计算的目标结果。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图5所示的聚合计算方法。
图7示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图5所示的聚合计算方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。
Claims (13)
1.一种块链式账本中的聚合计算方法,包括:
确定聚合计算所采用的包括多条数据记录的集合,将聚合结果的初始值置为0,采用如下方式进行对所述集合和聚合结果进行迭代处理,直至达到预设的迭代要求:
从集合中选取一条数据记录,确定该数据记录所处的数据块,验证该数据记录在所述数据块中的完整性;
若验证通过,将所述数据记录从所述集合中剔除,聚合所述数据记录和当前聚合结果,得到更新后的集合和聚合结果;
若验证失败,终止所述聚合计算,返回验证失败的当前数据记录在账本中的位置信息;
迭代结束时,输出当前的聚合结果为聚合计算的目标结果。
2.如权利要求1所述的方法,确定聚合计算所采用的包括多条数据记录的集合,包括:
接收聚合计算指令,其中,所述聚合计算指令中包含有业务属性;
遍历账本,确定包含有所述业务属性的多条数据记录,生成所述集合;或者,从预先建立的索引中查询所述业务属性所对应的位置信息,根据查询得到的位置信息获取包含有所述业务属性的多条数据记录,生成所述集合。
3.如权利要求1所述的方法,所述块链式账本通过如下方式预先生成:
接收待存储的数据记录,确定各数据记录的哈希值,其中,数据记录中包含业务属性;
当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和各数据记录的第N个数据块。
4.如权利要求3所述的方法,所述预设的成块条件包括:
待存储的数据记录数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。
5.如权利要求2所述的方法,所述索引通过如下方式预先建立:
在块链式账本中,针对任一数据记录,获取所述数据记录中所包含的业务属性;
确定所述数据记录在账本中的位置信息,所述位置信息包括数据记录所处的数据块的块高,以及,在所处的数据块中的偏移量;
建立所述业务属性和位置信息的对应关系,写入以所述业务属性为主键的索引。
6.如权利要求5所述的方法,写入以所述业务属性为主键的索引,包括:
确定数据记录的时间戳;在同一索引记录中按照时间戳的先后顺序,将数据记录的位置信息依序写入索引记录的值;
相应的,遍历其它数据记录进行迭代处理,包括:按照索引记录中的位置信息的顺序依序对所述数据记录进行迭代处理。
7.一种块链式账本中的聚合计算装置,包括:
集合确定模块,确定聚合计算所采用的包括多条数据记录的集合,将聚合结果的初始值置为0:
迭代计算模块,从集合中选取一条数据记录,确定该数据记录所处的数据块;验证该数据记录在所述数据块中的完整性,若验证通过,将所述数据记录从所述集合中剔除,聚合所述数据记录和当前聚合结果,得到更新后的集合和聚合结果;
迭代终止模块,终止所述聚合计算,返回验证失败的当前数据记录在账本中的位置信息;
输出模块,迭代结束时,输出当前的聚合结果为聚合计算的目标结果。
8.如权利要求7所述的装置,所述集合确定模块,接收聚合计算指令,其中,所述聚合计算指令中包含有业务属性;遍历账本,确定包含有所述业务属性的多条数据记录,生成所述集合;或者,从预先建立的索引中查询所述业务属性所对应的位置信息,根据查询得到的位置信息获取包含有所述业务属性的多条数据记录,生成所述集合。
9.如权利要求7所述的装置,还包括数据块生成模块,接收待存储的数据记录,确定各数据记录的哈希值,其中,数据记录中包含业务属性;当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和各数据记录的第N个数据块。
10.如权利要求9所述的装置,所述预设的成块条件包括:
待存储的数据记录数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。
11.如权利要求9所述的装置,还包括索引创建模块,在块链式账本中,针对任一数据记录,获取所述数据记录中所包含的业务属性;确定所述数据记录在账本中的位置信息,所述位置信息包括数据记录所处的数据块的块高,以及,在所处的数据块中的偏移量;建立所述业务属性和位置信息的对应关系,写入以所述业务属性为主键的索引。
12.如权利要求11所述的装置,所述索引创建模块,确定数据记录的时间戳;在同一索引记录中按照时间戳的先后顺序,将数据记录的位置信息依序写入索引记录的值;相应的,遍历其它数据记录进行迭代处理,包括:按照索引记录中的位置信息的顺序依序对所述数据记录进行迭代处理。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至6任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110719967.5A CN113434550A (zh) | 2019-11-11 | 2019-11-11 | 一种块链式账本中的聚合计算方法、装置及设备 |
CN201911094079.8A CN111046069B (zh) | 2019-11-11 | 2019-11-11 | 一种块链式账本中的聚合计算方法、装置及设备 |
PCT/CN2020/116810 WO2021093461A1 (zh) | 2019-11-11 | 2020-09-22 | 一种块链式账本中的聚合计算方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911094079.8A CN111046069B (zh) | 2019-11-11 | 2019-11-11 | 一种块链式账本中的聚合计算方法、装置及设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110719967.5A Division CN113434550A (zh) | 2019-11-11 | 2019-11-11 | 一种块链式账本中的聚合计算方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111046069A true CN111046069A (zh) | 2020-04-21 |
CN111046069B CN111046069B (zh) | 2021-05-07 |
Family
ID=70232330
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911094079.8A Active CN111046069B (zh) | 2019-11-11 | 2019-11-11 | 一种块链式账本中的聚合计算方法、装置及设备 |
CN202110719967.5A Pending CN113434550A (zh) | 2019-11-11 | 2019-11-11 | 一种块链式账本中的聚合计算方法、装置及设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110719967.5A Pending CN113434550A (zh) | 2019-11-11 | 2019-11-11 | 一种块链式账本中的聚合计算方法、装置及设备 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN111046069B (zh) |
WO (1) | WO2021093461A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111556115A (zh) * | 2020-04-22 | 2020-08-18 | 财付通支付科技有限公司 | 一种基于区块链的数据处理方法、装置、设备及存储介质 |
CN112286939A (zh) * | 2020-06-12 | 2021-01-29 | 支付宝(杭州)信息技术有限公司 | 块链式账本中全局状态的哈希的生成方法、装置及设备 |
WO2021093461A1 (zh) * | 2019-11-11 | 2021-05-20 | 蚂蚁区块链科技(上海)有限公司 | 一种块链式账本中的聚合计算方法、装置及设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116664129B (zh) * | 2023-07-28 | 2023-11-10 | 武汉趣链数字科技有限公司 | 区块链账本数据迭代方法、电子设备及可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105187218A (zh) * | 2015-09-30 | 2015-12-23 | 谈建 | 一种多核心基础设施的数字化记录签名、验证方法 |
CN107240002A (zh) * | 2017-06-06 | 2017-10-10 | 北京汇通金财信息科技有限公司 | 一种电力交易方法、装置及微电网系统 |
CN107315786A (zh) * | 2017-06-12 | 2017-11-03 | 腾讯科技(深圳)有限公司 | 业务数据存储方法及装置 |
CN108073699A (zh) * | 2017-12-12 | 2018-05-25 | 中国联合网络通信集团有限公司 | 大数据聚合分析方法及装置 |
CN110033363A (zh) * | 2018-12-14 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 基于区块链的事件处理方法及装置、电子设备 |
CN110222109A (zh) * | 2019-05-29 | 2019-09-10 | 邓子航 | 基于分布式账本技术的节点拼接系统、方法及区块链节点 |
CN110225012A (zh) * | 2019-05-30 | 2019-09-10 | 电子科技大学 | 一个基于联盟链的外包数据的拥有权检查和更新方法 |
US20190278773A1 (en) * | 2017-03-07 | 2019-09-12 | International Business Machines Corporation | Grouping in analytical databases |
CN110378697A (zh) * | 2019-07-22 | 2019-10-25 | 南京信息工程大学 | 一种基于rsa累加器的区块链轻节点utxo交易验证方法及其装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10103893B2 (en) * | 2015-02-27 | 2018-10-16 | Guardtime IP Holdings, Ltd. | Blockchain-supported, fail-safe synchronization in a data authentication infrastructure |
KR101795696B1 (ko) * | 2016-07-14 | 2017-11-09 | 주식회사 코인플러그 | 메신저 서비스를 통하여 송수신되는 데이터에 대한 기록 및 검증 서비스를 제공하는 방법, 및 이를 이용한 서버 |
CN107817946B (zh) * | 2016-09-13 | 2021-06-04 | 阿里巴巴集团控股有限公司 | 用于混合存储设备读写数据的方法以及装置 |
CN106850193A (zh) * | 2017-03-23 | 2017-06-13 | 中国人民公安大学 | 一种基于md5和密钥的云存储数据持久性检测方法 |
CN108664322A (zh) * | 2017-03-29 | 2018-10-16 | 广东神马搜索科技有限公司 | 数据处理方法及系统 |
CN109656873B (zh) * | 2018-11-02 | 2023-04-14 | 平安科技(深圳)有限公司 | 基于区块链的数据归档方法、装置及终端设备 |
CN109472598A (zh) * | 2018-11-07 | 2019-03-15 | 平安医疗健康管理股份有限公司 | 一种基于区块链的健康数据校验方法、设备及服务器 |
CN109658259A (zh) * | 2018-11-19 | 2019-04-19 | 平安科技(深圳)有限公司 | 农户清单数据处理方法、装置、计算机设备及存储介质 |
CN110162662B (zh) * | 2019-04-18 | 2023-02-28 | 创新先进技术有限公司 | 一种块链式账本中数据记录的验证方法、装置及设备 |
CN110084699A (zh) * | 2019-04-30 | 2019-08-02 | 深圳前海微众银行股份有限公司 | 交易记录的聚合方法、装置、交易列表系统及存储介质 |
CN110349019B (zh) * | 2019-06-03 | 2020-11-10 | 创新先进技术有限公司 | 一种块链式账本中的验证方法、装置及设备 |
CN111046069B (zh) * | 2019-11-11 | 2021-05-07 | 蚂蚁区块链科技(上海)有限公司 | 一种块链式账本中的聚合计算方法、装置及设备 |
-
2019
- 2019-11-11 CN CN201911094079.8A patent/CN111046069B/zh active Active
- 2019-11-11 CN CN202110719967.5A patent/CN113434550A/zh active Pending
-
2020
- 2020-09-22 WO PCT/CN2020/116810 patent/WO2021093461A1/zh active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105187218A (zh) * | 2015-09-30 | 2015-12-23 | 谈建 | 一种多核心基础设施的数字化记录签名、验证方法 |
US20190278773A1 (en) * | 2017-03-07 | 2019-09-12 | International Business Machines Corporation | Grouping in analytical databases |
CN107240002A (zh) * | 2017-06-06 | 2017-10-10 | 北京汇通金财信息科技有限公司 | 一种电力交易方法、装置及微电网系统 |
CN107315786A (zh) * | 2017-06-12 | 2017-11-03 | 腾讯科技(深圳)有限公司 | 业务数据存储方法及装置 |
CN108073699A (zh) * | 2017-12-12 | 2018-05-25 | 中国联合网络通信集团有限公司 | 大数据聚合分析方法及装置 |
CN110033363A (zh) * | 2018-12-14 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 基于区块链的事件处理方法及装置、电子设备 |
CN110222109A (zh) * | 2019-05-29 | 2019-09-10 | 邓子航 | 基于分布式账本技术的节点拼接系统、方法及区块链节点 |
CN110225012A (zh) * | 2019-05-30 | 2019-09-10 | 电子科技大学 | 一个基于联盟链的外包数据的拥有权检查和更新方法 |
CN110378697A (zh) * | 2019-07-22 | 2019-10-25 | 南京信息工程大学 | 一种基于rsa累加器的区块链轻节点utxo交易验证方法及其装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021093461A1 (zh) * | 2019-11-11 | 2021-05-20 | 蚂蚁区块链科技(上海)有限公司 | 一种块链式账本中的聚合计算方法、装置及设备 |
CN111556115A (zh) * | 2020-04-22 | 2020-08-18 | 财付通支付科技有限公司 | 一种基于区块链的数据处理方法、装置、设备及存储介质 |
CN111556115B (zh) * | 2020-04-22 | 2023-04-21 | 财付通支付科技有限公司 | 一种基于区块链的数据处理方法、装置、设备及存储介质 |
CN112286939A (zh) * | 2020-06-12 | 2021-01-29 | 支付宝(杭州)信息技术有限公司 | 块链式账本中全局状态的哈希的生成方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113434550A (zh) | 2021-09-24 |
CN111046069B (zh) | 2021-05-07 |
WO2021093461A1 (zh) | 2021-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110188096B (zh) | 一种数据记录的索引创建方法、装置及设备 | |
CN110162662B (zh) | 一种块链式账本中数据记录的验证方法、装置及设备 | |
CN109902086B (zh) | 一种索引创建方法、装置及设备 | |
CN111046069B (zh) | 一种块链式账本中的聚合计算方法、装置及设备 | |
CN110162526B (zh) | 一种块链式账本中数据记录的查询方法、装置及设备 | |
CN110825737A (zh) | 索引创建和数据查询方法、装置及设备 | |
CN109902071A (zh) | 业务日志存储方法、系统、装置及设备 | |
CN111352935B (zh) | 一种块链式账本中的索引创建方法、装置及设备 | |
CN110837502B (zh) | 一种块链式账本中的数据存储方法、装置及设备 | |
CN110349019B (zh) | 一种块链式账本中的验证方法、装置及设备 | |
CN110347679B (zh) | 一种基于收据的数据存储方法、装置及设备 | |
CN110347674A (zh) | 一种基于业务标识的索引创建方法、装置及设备 | |
CN110879687B (zh) | 一种基于磁盘存储的数据读取方法、装置及设备 | |
CN110716965B (zh) | 一种块链式账本中的查询方法、装置及设备 | |
CN110059084A (zh) | 一种数据存储方法、装置及设备 | |
CN110019278A (zh) | 一种数据验证方法、装置及设备 | |
CN110008203A (zh) | 一种数据清除方法、装置及设备 | |
CN110008249A (zh) | 一种基于时间的数据查询方法、装置及设备 | |
CN110046281A (zh) | 一种数据添加方法、装置及设备 | |
CN110750533A (zh) | 一种基于多条业务属性的数据存储方法、装置及设备 | |
CN110362570B (zh) | 一种数据存储方法、装置及设备 | |
CN111444194B (zh) | 一种块链式账本中索引的清除方法、装置及设备 | |
CN110019373A (zh) | 一种基于哈希值的数据查询方法、装置及设备 | |
CN110636042B (zh) | 一种服务端已验证块高的更新方法、装置及设备 | |
CN110020547A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200702 Address after: Unit 02, 20 / F, block a, building 4, Lane 838, Huangpi South Road, Huangpu District, Shanghai 200025 Applicant after: Ant blockchain Technology (Shanghai) Co., Ltd Address before: 801-11, Section B, 8th floor, No. 556, Xixi Road, Xihu District, Hangzhou City, Zhejiang Province Applicant before: Alipay (Hangzhou) Information Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |