一种金融数据的存储方法、系统、装置及设备
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种金融数据的存储方法、系统、装置及设备。
背景技术
随着金融领域的不断发展,监管机构对于金融机构的合规性监管都日趋严格,监管机构也因此不得不在合规领域投入更多的资源。
例如,各金融机构需要将数据报送监管机构,监管机构也需要对报送上来的数据进行相应的跟踪分析,更进一步地,还需要从各种机构报送上来的数据中进行事中的异常交易识别,以及事后的报表审计等等。在这个过程中,监管方也需要证明自己并没有对金融机构所上报的数据进行过篡改。
基于此,需要一种不易双方篡改的金融数据存储方案。
发明内容
本申请实施例的目的是提供一种不易篡改的金融数据存储方案。
为解决上述技术问题,本申请实施例是这样实现的:
一种金融数据的存储方法,应用于包括多个金融机构端、数据库服务端和监管机构端的系统中,其中,所述数据库服务端通过块链式账本存储数据记录,所述方法包括:
任一金融机构端,发送携带金融机构标识的数据记录至数据库服务端,其中,所述数据记录包含用于表征所述数据记录类别的业务属性;
数据库服务端,接收所述数据记录,确定各数据记录的哈希值,并返回所述哈希值至金融机构端;
数据库服务端,当达到预设的成块条件时,将所述数据记录写入所述金融机构标识所对应的账本,生成包含数据块的哈希值和所述数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和各数据记录的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增;
监管机构端,确定待分析的业务属性,从数据库服务端的账本中获取包含相同待分析的业务属性的数据记录,以进行监管。
对应的,本说明书实施例还提供一种一种金融数据的存储系统,应用于包括多个金融机构端、数据库服务端和监管机构端的系统中,其中,所述数据库服务端通过块链式账本存储数据记录,在所述系统中,
任一金融机构端,发送携带金融机构标识的数据记录至数据库服务端,其中,所述数据记录包含用于表征所述数据记录类别的业务属性;
数据库服务端,接收所述数据记录,确定各数据记录的哈希值,并返回所述哈希值至金融机构端;
数据库服务端,当达到预设的成块条件时,将所述数据记录写入所述金融机构标识所对应的账本,生成包含数据块的哈希值和所述数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和各数据记录的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增;
监管机构端,确定待分析的业务属性,从数据库服务端的账本中获取包含相同待分析的业务属性的数据记录,以进行监管。
另一方面,本说明书实施例还提供一种金融数据的存储方法,应用于通过块链式账本存储数据记录的数据库服务端中,所述方法包括:
接收金融机构所发送的携带金融机构标识的数据记录,确定各数据记录的哈希值,并返回所述哈希值至金融机构端;
当达到预设的成块条件时,将所述数据记录写入所述金融机构标识所对应的账本,生成包含数据块的哈希值和所述数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和各数据记录的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。
与另一方面对应的,本说明书实施例还提供一种金融数据的存储装置,应用于通过块链式账本存储数据记录的数据库服务端中,所述装置包括:
接收模块,接收金融机构所发送的携带金融机构标识的数据记录,确定各数据记录的哈希值,并返回所述哈希值至金融机构端;
生成模块,当达到预设的成块条件时,将所述数据记录写入所述金融机构标识所对应的账本,生成包含数据块的哈希值和所述数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和各数据记录的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。
通过本说明书实施例所提供的方案,各金融机构将数据记录上传至数据库服务端以块链式账本的方式进行存储,数据库服务端将数据记录写入各金融机构的对应账本中,监管机构可以从数据库服务端中的多个账本中直接获取相应的数据记录进行交叉分析。通过块链式账本对数据记录进行存储,一方面,降低了监管机构端的存储压力;另一方面,金融机构端可以随时验证自己存储在数据库服务端中的数据是否完整无误,同时监管机构端需要进行审计/举证时可以将获取得到的数据记录交给金融机构端进行审计/举证前的验证,从而保证监管机构端拿到的数据是金融机构端所提供的原始数据,实现监管机构的自证清白。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本说明书实施例所涉及的系统架构示意图;
图2是本说明书实施例提供的一种金融数据的存储方法的流程示意图;
图3为本说明书实施例所提供的一种关于块头的示意图;
图4是本说明书实施例提供的一种数据记录的倒排索引创建方法的流程示意图;
图5为本说明书实施例所提供的应用于数据库服务端的金融数据的存储方法的流程示意图;
图6是本说明书实施例提供的一种金融数据的存储装置的结构示意图;
图7是用于配置本说明书实施例方法的一种设备的结构示意图。
具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
在金融监管中,监管机构需要对多家金融机构实施监管。监管的方式即为各金融机构将自身的数据记录,例如,各种报表(包括EAST报表、理财报表、外汇报表、抵押资料报表等等)、工作文档、风险日志等等上传至监管机构,监管机构需要对这些数据进行及时的持久化存储,以便进行风险交易识别以及事后的审计和举证。这就带来两个问题:第一,金融机构的数量众多,上传的报表更是繁杂,因此,对于监管机构带来很大的存储压力;第二,监管机构在审计、举证的过程中需要避免监守自盗的情形发生,即监管机构需要证明其所使用的数据即为金融机构所提供的原始数据,原始数据并未有过修改或者缺损,进一步地,这种证明需要被监管的金融机构的认可。
基于此,本说明书实施例提供一种适应于金融监管中的金融数据的存储方案。以下结合附图,详细说明本说明书各实施例提供的技术方案。如图1所示,图1为本说明书实施例所涉及的系统架构示意图。在该架构示意图中,各金融机构将自身的数据记录上传至数据库服务端,由数据库服务端通过块链式的账本进行存储,而监管机构在有需要的时候再从数据库服务端获取相应的需要分析的数据记录。
在该架构的数据库服服务端中,每一金融机构均存在至少一个对应的账本,金融机构可以将自身的数据写入对应的账本中。当然,一个金融机构也可以对应于多个账本,例如,用于存储报表的账本,以及,用于存储日志的账本。在账本中,金融机构的数据以明文的方式进行存储。在该架构中,监管机构可以访问或者读取数据库服务端中的任一账本。
如图2所示,图2是本说明书实施例提供的一种金融数据的存储方法的流程示意图,应用于包括多个金融机构端、数据库服务端和监管机构端的系统中,其中,所述数据库服务端通过块链式账本存储数据记录,该流程具体包括如下步骤:
S201,任一金融机构端,发送携带金融机构标识的数据记录至数据库服务端,其中,所述数据记录包含用于表征所述数据记录类别的业务属性。
如前所示,此处的数据记录可以包括各金融机构所产生的报表、工作文档、风险日志等等。金融机构标识一般而言可以是金融机构的统一社会信用代码或者服务端给定的标号等等。
数据记录中的业务属性基于不同的业务种类,可以包括用户名、用户身份证号、机构名、交易类别、数据记录类别等等。例如,在一条包含报表数据记录中,业务属性可以是表征该报表类别的报表编号“G01”,即资产负债项目统计表。
需要说明的是,业务属性可以包含多个不同程度的粒度划分。例如,业务属性还可以是报表中的某个个人或者机构的标识,例如,在报表G14-I最大十家集团客户授信情况表中,业务属性可以包含报表编号“G14-I”,还可以进一步的包含与该报表相关的机构名或者编号;又例如,在房产抵押资料中,业务属性还可以是抵押人的唯一标识以及产权证号。通过设置业务属性,在金融机构端可以给出每条数据记录的相关类别。
S203,数据库服务端,接收所述数据记录,确定各数据记录的哈希值,并返回所述哈希值至金融机构端。
哈希值(hash values)可以使用哈希函数(hash function)计算得到的值,支持的算法包括:MACTripleDES、MD5、RIPEMD160、SHA1、SHA256、SHA384、SHA512等等,总之,一个数据记录的块哈希值是一段较短的字符串,可以唯一的标识该数据记录,数据记录中任何内容的些微改动都会造成数据记录哈希值的很大变化。
S205,当达到预设的成块条件时,将所述数据记录写入所述金融机构标识所对应的账本,生成包含数据块的哈希值和所述数据记录的第N个数据块。
所述预设的成块条件包括:待存储的数据记录数量达到数量阈值,例如,每接收到一千条数据记录时,生成一个新数据块,将一千条数据记录写入块中;或者,距离上一次成块时刻的时间间隔达到时间阈值,例如,每隔5分钟,生成一个新数据块,将在这5分钟内接收到的数据记录写入块中。
在成块之前,数据库服务端需要确定每条数据记录自身的账本,即如图1中所示,金融机构1的数据记录只能写入金融机构1的专属账本中,实现彼此的隔离。
此处的N指的是数据块的序号,换言之,在本说明书实施例中,数据块是以块链的形式,基于成块时间的顺序先后排列,具有很强的时序特征。其中,数据块的块高基于成块时间的先后顺序单调递增。块高可以是序号,此时第N个数据块的块高即为N;块高也可以其它方式生成,例如,基于数据块的成块时间戳对称加密得到的大整型数据(一般为单调递增的12至15位整型数据),例如,一个13位的大整数。由于大整型是基于时间对称加密得到的,从而在需要数据块的成块时间时,可以同样的对称解密获得成块时间。
例如,对于成块时间“20xx-01-19 03:14:07.938576”,在经过对称加密之后,可以转换为一个大整型“1547838847938”,由于整型数据随时间单调递增,因此,“1547838847938”,此时即可以做为该数据块的块高,用于标识该数据块。
在本说明书,块高基于成块时间单调递增,这样即使采用了大整型数据,但是它们之间的仍然从小到大地,反映了各数据块之间的顺序。例如,若接下来一个数据块的成块时间为“20xx-01-19 03:16:07.235125”,则可以采用预设的对称加密算法将其转换为另一更大的大整型“1547838848125”。
当N=1时,即此时的数据块为为初始数据块。初始数据块的哈希值和块高基于预设方式给定。例如,初始数据块中不包含数据记录,哈希值则为任一给定的哈希值,块高blknum=0;又例如,初始数据块的生成触发条件与其它数据块的触发条件一致,但是初始数据块的哈希值由对初始数据块中的所有内容取哈希确定。
当N>1时,由于前一数据块的内容和哈希值已经确定,则此时,可以基于前一数据块(即第N-1个数据块)的哈希值生成当前数据块(第N个数据块)的哈希值,例如,一种可行的方式为,确定每一条将要写入第N个块中的数据记录的哈希值,按照在块中的排列顺序,生成一个默克尔树,将默克尔树的根哈希值和前一数据块的哈希值拼接在一起,再次采用哈希算法,生成当前块的哈希值。又例如,还可以按照块中数据记录的顺序进行拼接并取哈希得到整体数据记录的哈希值,拼接前一数据块的哈希值和整体数据记录的哈希值,并对拼接得到的字串进行哈希运算,生成数据块的哈希值。
在每一个数据块中,其包含用于存储元数据的块头,和,用于存储数据记录的块体。数据块中的块头可以用于存储诸如父哈希、自身的块哈希值、版本号、数据记录的根哈希、时间戳等等。如图3所示,图3为本说明书实施例所提供的一种关于块头的示意图,当然,块头的格式是可以基于业务需要进行自定义的,其还可以包含一些其它的信息,例如,用于描述数据记录状态的状态数组等等,而块体中则用于存储数据记录的明文。
通过前述的数据块的生成方式,每一个数据块通过哈希值确定,数据块的哈希值由数据块中的数据记录的内容、顺序以及前一数据块的哈希值决定。金融机构端可以随时基于返回的哈希值发起验证,对于账本中任何内容(包括对于数据块中数据记录内容或者顺序)的修改,都会造成在验证时计算得到的数据块的哈希值和数据块生成时的哈希值不一致,而导致验证失败,从而实现了中心化下的不可篡改。
S207,监管机构端,确定待分析的业务属性,从数据库服务端的账本中获取包含相同待分析的业务属性的数据记录,以进行监管。
在本说明书实施例中,监管机构端在每个账本中都拥有管理权权限,即监管机构端不再直接从金融机构端获取数据,而是从数据库服务端中提取相关数据。
具体而言,监管机构端可以根据指定的业务属性进行数据记录的提取。例如,监管机构端可以指定待分析的业务属性为报表编号“G01”,并且,从每个账本中提取出包含“G01”的数据记录,从而得到所有金融机构端所提供的资产负债项目统计表;又例如,监管机构端可以指定待分析的业务属性为某个机构编号“001”,从而从所有的账本中得到包含有关该机构的数据记录,从而监管机构可以从多个账本中提取出同一类报表,或者同一机构的交易记录,或者同一人员的相关资金流转记录等等,实现在多个金融机构间的统一监管和交叉分析。
例如,一种获取数据记录的方式为,监管机构端发送获取指令至数据库服务端,获取指令中包含业务属性。例如,Retrieve(G01,FULL),获取所有账本中包含编号“G01”的数据记录。
需要说明的是,数据库服务端本身并不会识别业务属性的语义。数据库服务端仅仅需要和金融机构端就业务属性在数据记录中的存储位置以及获取方式达成一定协议即可。例如,金融机构端所提供的数据记录为标准结构化的数据记录时,业务属性可以从数据记录中指定偏移量获取,或者由特定字符标识起始位置和结束位置;又或者,金融机构端提供的数据记录为非结构化的数据时,在金融机构端上传时可以直接在每条数据记录的开头拼接上包含业务属性的头部,数据库服务方可以直接从头部获取每条数据记录的业务属性。
在一种实施例中,当监管机构端确定了需要进行审计或者举证时,可以首先从数据库服务端获取相应的数据记录。并且,由数据记录中包含的金融机构表示,或者由数据记录的来源账本,确定出存储所述数据记录的金融机构端。然后,发送该数据记录的哈希值至金融机构端。由金融机构端进行相应的验证。
金融机构端在接收到监管机构所发送的哈希值时,一方面,可以从本地查询相应的哈希值进行匹配,如果存在完全一致的哈希值,可以知道该数据记录是自己发送的,且监管机构所得到的数据记录没有进行过修改并且是完好无损的。
另一方面,金融机构端还可以根据接收得到的哈希值向数据库服务端发起查询,从而得到相应的数据记录,并进行进一步的验证。此处的验证可以诸如简单支付验证(SPV,Simplified Payment Verification),即,服务端返回哈希值所对应的数据记录在数据块中的默克尔路径给金融机构端,由金融机构端根据数据记录的哈希值和默克尔路径计算得到根哈希,并与本地预存的数据块的根哈希进行一致性匹配,从而可以验证数据记录在账本中的完整性。
再一方面,此处的验证还可以是由数据库服务端对监管机构所返回的哈希值所对应的数据记录所处的数据块进行完整性验证。即,在数据库服务端验证哈希值所对应的数据块中的默克尔树的根哈希,以及根据该根哈希与前一数据块的哈希值重新计算该数据块的哈希值,并与数据块中所保存的数据块的哈希值进行一致性比较,从而得到数据库服务端对于本次完整性验证的结果。并且,该完整性验证的结果可以由数据库服务端进行签名并发送给金融机构端。
由前述内容可知,该验证结果的作用在于金融机构端确定是否承认监管机构端所使用的数据记录的真实性。如果验证结果为真,则金融机构端可以认定监管机构所使用的数据记录真实无误,如果验证结果为假,则金融机构端可以认定监管机构端所使用的数据记录已经不再完整。
通过本说明书实施例所提供的方案,各金融机构将数据记录上传至数据库服务端进行存储,数据库服务端将数据记录写入各金融机构的对应账本中,监管机构可以从数据库服务端中的多个账本中直接获取相应的数据记录进行交叉分析。通过块链式账本对数据记录进行存储,一方面,降低了监管机构端的存储压力;另一方面,金融机构端可以随时验证自己存储在数据库服务端中的数据是否完整无误,同时监管机构端需要进行审计/举证时可以将获取得到的数据记录交给金融机构端进行审计/举证前的验证,从而保证监管机构端拿到的数据是金融机构端所提供的原始数据,实现监管机构的自证清白。
而在这个过程中,数据库服务端中一直保存有数据记录的明文。当双方对于数据的一致性结论有异议时,任何一方甚至第四方(例如,法院)都可以再次发起验证,数据库服务端中的数据记录可以作为原始证据存在。
进一步地,在一种实施例中,当金融机构端得到了验证结果(包括自己本地的验证结果和/或服务端的验证结果)之后,还可以采用自身的私钥对该验证结果进行数字签名,并且返回包含数字签名的验证结果至监管机构端,监管机构端可以采用与金融机构端私所对应的的公钥对该数字签名进行解密,确定该验证结果是得到了金融机构端的承认/异议。并且,监管机构端可以将该包含数字签名的验证结果,发送至数据库服务端,写入监管机构端专门用于存储验证结果的账本中,作为以后的证据使用。
在一种实施方式中,当需要从账本中基于待分析的业务属性获取得到相应的数据记录时,数据库服务端可以基于业务属性从账本中进行遍历查询获得。或者,也可以从预先建立的关于业务属性的倒排索引中获取。如图4所示,图4是本说明书实施例提供的一种数据记录的倒排索引创建方法的流程示意图,该流程具体包括如下步骤:
S401,获取数据记录中所包含的业务属性。业务属性在数据记录中的具体位置以及获取方式在前文已经进行了说明,此处不再赘述。
S403,确定所述数据记录在账本中的位置信息,所述位置信息包括数据记录所处的数据块的块高,以及,在所处的数据块中的偏移量。
如前所述,一个块链式的账本由多个数据块组成,同时,一个数据块中通常包含多个数据记录。因此,在本说明书实施例中,所述的位置信息具体指的是一条数据记录被保存时,处于账本中的哪个数据块上,以及,在该数据块中的什么位置。
在本说明书实施例所提供的数据块中,可以有多种方式用来标识不同的数据块,包括数据块的哈希值或者块高。
数据块的哈希值为根据前一区块哈希值和自身数据记录进行哈希计算而得到的哈希值,可以用于唯一、明确地标识一个数据块。在块链式的账本中,通常第一个数据块其块高为0,以后每增加一个数据块,块高加1;或者,还可以将数据块的成块时间转换为一个大的单调递增整型数据(一般为12至15位)序列,作为数据块的块高。因此,一个数据块通常有一个明确的块高。
又例如,在一个已经确定的要写入数据库的数据块,其中数据记录的排序也已经固定,因此一个数据记录在该数据块中的序号也是明确的,在数据记录的长度为固定单位时,序号同样可以用于明确该数据记录在其所处的数据块中的位置信息。即,序号同样也可以用于指示偏移量。
同时,在一个数据块中,由于通常包含了多个数据记录,因此,还可以用各数据记录在该数据块中的地址偏移量来分别标识数据块中的数据记录。显而易见,在同一个数据块中,各数据记录的地址偏移量并不相同。
当然,由于在本说明书实施例所提供的方式中,数据块的具体格式是可以自定义的(例如,数据块的块头中所包含的元数据信息和备注信息,数据块的块高所采取的形式等等),在不同的格式下,位置信息的内容也会有所不同,这并不构成对本方案的限定。
S405,建立所述业务属性和位置信息的对应关系,写入以所述业务属性为主键的索引。
即,该索引是一个倒排索引。在该索引中,主键是数据记录中所包含的业务属性。具体的写入方式为,当索引中的主键不包含所述业务属性时,在索引表中创建以所述业务属性为主键的索引记录。
当所述索引中的主键包含所述业务属性时,将所述位置信息写入所述业务属性所处的索引记录。需要说明的是,此处的写入不是覆盖性的写入,而是将位置信息添加到该索引记录的值中,与其它位置信息并列存在与该索引记录中。
如表1所示,表1为本说明书实施例所提供的一种示例性索引表。其中Key即为业务属性的具体值(例如,可以是报表编号),Value部分的每个数组即为一条位置信息,每个数组中的前部分块高,后部分为数据记录在该数据块中的序号,通过块高和序号即可以唯一的确定一条数据记录。容易理解,在索引表中,一个key可以对应于多个位置信息。
表1
Key |
Value |
G01 |
(2,08),(2,10),(300,89),(300,999) |
G14 |
(5,01),(8,22) |
…… |
…… |
需要说明的是,在本说明书实施例中,一般而言,一个索引表对应于一份账本,在这种实施方式下,数据库服务端在进行查询时,可能需要查询多个索引表以获取全量账本中包含同一业务属性的数据记录。数据库服务端在查询时,则可以直接根据业务属性所对应的位置信息获取出一个账本中包含该业务属性的数据记录。通过遍历这种索引表,从而可以得到全量账本中包含该业务属性的数据记录。
对应的,本说明书实施例还提供一种金融数据的存储系统,应用于包括多个金融机构端、数据库服务端和监管机构端的系统中,其中,所述数据库服务端通过块链式账本存储数据记录,在所述系统中,
任一金融机构端,发送携带金融机构标识的数据记录至数据库服务端,其中,所述数据记录包含用于表征所述数据记录类别的业务属性;
数据库服务端,接收所述数据记录,确定各数据记录的哈希值,并返回所述哈希值至金融机构端;
数据库服务端,当达到预设的成块条件时,将所述数据记录写入所述金融机构标识所对应的账本,生成包含数据块的哈希值和所述数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和各数据记录的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增;
监管机构端,确定待分析的业务属性,从数据库服务端的账本中获取包含相同待分析的业务属性的数据记录,以进行监管。
进一步地,在所述系统中,所述预设的成块条件包括:待存储的数据记录数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。
进一步地,在所述系统中,监管机构端确定获取得到的数据记录对应的金融机构端,并发送所述数据记录的哈希值至对应的金融机构端;任一接收到哈希值的金融机构端,从数据库服务端中查询获取所述哈希值所对应的数据记录,并验证查询得到的数据记录,生成验证结果。
进一步地,在所述系统中,金融机构端根据金融机构本地预存的数据记录的哈希值,验证查询得到的数据记录的哈希值与所述预存的数据记录的哈希值的一致性;或者,验证所述询得到的数据记录所处的数据块的完整性。
进一步地,在所述系统中,金融机构端对所述验证结果进行数字签名,将包含数字签名的验证结果返回至监管机构端;监管机构端将所述包含数字签名的验证结果打包上传至数据库服务端;数据库服务端将所述包含数字签名的验证结果,写入监管机构端用于存储验证结果的账本。
进一步地,在所述系统中,数据库服务端,获取数据记录中所包含的业务属性;确定所述数据记录在账本中的位置信息,所述位置信息包括数据记录所处的数据块的块高,以及,在所处的数据块中的偏移量;建立所述业务属性和位置信息的对应关系,写入以所述业务属性为主键的索引;相应的,监管机构端,从所述索引中查询获取待分析的业务属性所对应的位置信息,获取所述位置信息所对应的数据记录。
另一方面,本说明书实施例还提供一种金融数据的存储方法,应用于通过块链式账本存储数据记录的数据库服务端中,如图5所示,图5为本说明书实施例所提供的应用于数据库服务端的金融数据的存储方法的流程示意图,所述方法包括:
S501,接收金融机构所发送的携带金融机构标识的数据记录,确定各数据记录的哈希值,并返回所述哈希值至金融机构端;
S503,当达到预设的成块条件时,将所述数据记录写入所述金融机构标识所对应的账本,生成包含数据块的哈希值和所述数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和各数据记录的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。
与另一方面对应的,本说明书实施例还提供一种金融数据的存储装置,应用于通过块链式账本存储数据记录的数据库服务端中,如图6所示,图6是本说明书实施例提供的一种金融数据的存储装置的结构示意图,包括:
接收模块601,接收金融机构所发送的携带金融机构标识的数据记录,确定各数据记录的哈希值,并返回所述哈希值至金融机构端;
生成模块603,当达到预设的成块条件时,将所述数据记录写入所述金融机构标识所对应的账本,生成包含数据块的哈希值和所述数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和各数据记录的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图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、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。