一种证券交易数据的存储方法、装置及设备与流程

文档序号:19745565发布日期:2020-01-21 18:20阅读:381来源:国知局
一种证券交易数据的存储方法、装置及设备与流程

本说明书实施例涉及信息技术领域,尤其涉及一种证券交易数据的存储方法、装置及设备。



背景技术:

在传统的证券交易中,挂单但是未成交的部分交易数据是不会计入对账单。因此,很多操盘手可能利用一些不可能成交的单子造成市场繁荣假象(例如,快速的挂单撤单一些不可能成交的单子),而同时在系统中没有证据。即使有些内部数据可能会保留痕迹,但是,也是很容易销毁或者被抵赖的,缺乏可审计性。

基于此,需要一种更为透明的证券交易数据的存储方案。



技术实现要素:

本申请实施例的目的是提供一种更为透明的证券交易数据的存储方案。

为解决上述技术问题,本申请实施例是这样实现的:

一种证券交易数据的存储方法,应用于通过块链式账本存储数据的中心化的数据库服务提供端中,包括:

获取证券交易平台的交易数据记录,其中,所述交易数据包括挂单成交记录和挂单未成交记录;

确定所述交易数据的哈希值,发送所述所述哈希值至所述客户端;

当达到预设的成块条件时,确定待写入数据块中的各交易数据记录,生成包含数据块的哈希值和数据记录的第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是用于配置本说明书实施例方法的一种设备的结构示意图。

具体实施方式

为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。

在证券交易中,一些操盘手为了达到控盘目的,经常制造一些不可能成交的单子,然后撤单,表面上看来市场很活跃,但是实际上则是利用这种手段影响了相关人员的心理,进而影响了证券价格。由于传统的对账单中对于这种未交易的记录是不计入对账单的,因此,事后审计的时候就看不出这方面的影响。基于此,本说明书实施例提供一种更为透明的证券交易数据的存储方案。

以下结合附图,详细说明本说明书各实施例提供的技术方案。如图1所示,图1是本说明书实施例提供的一种证券交易数据的存储方法的流程示意图,应用于通过块链式账本存储数据的中心化的数据库服务提供端中,该流程具体包括如下步骤:

s101,获取证券交易平台的交易数据记录,其中,所述交易数据包括挂单成交记录和挂单未成交记录。

在实际应用中,交易数据记录中还可以包含有具体的证券交易机构的标识(例如公司名、公司编号等等),以及发起交易的人员标识(内部编号、身份证号等等)。挂单未成交记录中应该包括挂单记录和撤单记录。

进一步地,交易数据记录还可以事先由机构或者交易人员进行数字签名,生成包含有交易数据记录和私钥的加密数据,数据库服务端可以在获取该加密数据后,由私钥所对应的公钥解密而得到交易数据记录。通过数字签名,可以进一步地的防止日后的抵赖,提高可审计性。

s103,确定所述交易数据的哈希值,发送所述所述哈希值至所述客户端

哈希值的计算方式即为常规的计算方式,此处不再赘述。用户或者机构可以根据返回的哈希值进行验证或者查询,以证明数据库服务端并没有对交易数据进行篡改。

例如,用户输入数据记录的哈希值,数据库服务端根据用户输入的数据记录的哈希值,即可以遍历查询得到一个哈希值所对应的数据记录;或者,可以根据哈希值与数据记录的位置信息的对应关系查询得到一个哈希值所对应的数据记录。

s105,当达到预设的成块条件时,确定待写入数据块中的各交易数据记录,生成包含数据块的哈希值和数据记录的第n个数据块。

所述预设的成块条件包括:待存储的交易数据记录数量达到数量阈值,例如,每接收到一千条交易数据记录时,生成一个新数据块,将一千条数据记录写入块中;或者,距离上一次成块时刻的时间间隔达到时间阈值,例如,每隔5分钟,生成一个新数据块,将在这5分钟内接收到的交易数据记录写入块中。

此处的n指的是数据块的序号,换言之,在本说明书实施例中,数据块是以块链的形式,基于成块时间的顺序先后排列,具有很强的时序特征。其中,数据块的块高基于成块时间的先后顺序单调递增。块高可以是序号,此时第n个数据块的块高即为n;块高也可以其它方式生成,例如,数据库服务端可以确定数据块的成块时间,而后采用对称加密算法将所述成块时间其转换为整型数据,将所述整型数据作为所述数据块的块高,成块时间越早,整型数据越小。

例如,对于成块时间“20xx-01-1903:14:07.938576”,在经过对称加密之后,可以转换为一个大整型“1547838847938”,由于整型数据随时间单调递增,因此,“1547838847938”。此时即可以做为该数据块的块高,用于标识该数据块。在本说明书,块高基于成块时间单调递增,这样即使采用了大整型数据,但是它们之间的仍然从小到大地,反映了各数据块之间的顺序。例如,若接下来一个数据块的成块时间为“20xx-01-1903:16:07.235125”,则可以采用预设的对称加密算法将其转换为另一更大的大整型“1547838848125”。

当n=1时,即此时的数据块为为初始数据块。初始数据块的哈希值和块高基于预设方式给定。例如,初始数据块中不包含交易数据记录,哈希值则为任一给定的哈希值,块高blknum=0;又例如,初始数据块的生成触发条件与其它数据块的触发条件一致,但是初始数据块的哈希值由对初始数据块中的所有内容取哈希确定。

当n>1时,由于前一数据块的内容和哈希值已经确定,则此时,可以基于前一数据块(即第n-1个数据块)的哈希值生成当前数据块(第n个数据块)的哈希值,例如,一种可行的方式为,确定每一条将要写入第n个块中的数据记录的哈希值,按照在块中的排列顺序,生成一个默克尔树,将默克尔树的根哈希值和前一数据块的哈希值拼接在一起,再次采用哈希算法,生成当前块的哈希值。又例如,还可以按照块中交易数据记录的顺序进行拼接并取哈希得到整体数据记录的哈希值,拼接前一数据块的哈希值和整体交易数据记录的哈希值,并对拼接得到的字串进行哈希运算,生成数据块的哈希值。

用户在上传数据成功后,即可以得到对应的交易数据记录的哈希值以及所处的数据块的哈希值,并保存,并且可以基于该哈希值发起完整性验证。

上述方式生成的数据块,可以包括块头和块体两个部分。块体中可以用于存储拼接数据的明文,或者拼接数据的哈希值等等;块头中可以用于存储有关本数据块的元数据,例如,账本的版本号,前一数据块的哈希值,自身数据块中的拼接数据所组成的默克尔树的根哈希值,自身数据块的哈希值,用于记录拼接数据的被操作状态的状态数组等等。如图2所示,图2为本说明书实施例所提供的一种数据块的块头的示意图。

通过前述的数据块的生成方式,每一个数据块通过哈希值确定,数据块的哈希值由数据块中的交易数据记录的内容、顺序以及前一数据块的哈希值决定。用户可以随时基于数据块的哈希值发起完整性验证,对于数据块中任何内容(包括对于数据块中数据记录内容或者顺序的修改)的修改都会造成在验证时计算得到的数据块的哈希值和数据块生成时的哈希值不一致,而导致验证失败,从而实现了中心化下的不可篡改。

完整性验证包括对于一个数据块的完整性验证,即,根据数据块中交易数据记录的哈希值重新组成默克尔树,计算默克尔树的根哈希值,并且根据默克尔树的根哈希值与前一数据块的哈希值重新计算该数据块的哈希值,与事先保存的数据块的哈希值进行一致性对比。

完整性验证还可以包括对于若干连续数据块的完整性验证,即根据数据块的块头中所保存的默克尔树的根哈希值与前一数据块的哈希值重新计算该数据块的哈希值,并与事先保存的数据块的哈希值进行对比。

通过本说明书实施例所提供的方案,对于交易平台所产生的证券交易数据记录,不论最终有没有成交,只要在系统中挂单就被视为交易数据记录,将其写入块链式账本,形成不可篡改且可以验证的账本记录,以便相关的反欺诈系统日后可以随时进行查验和审计,提高证券交易中的透明度。

在一种实施方式中,所述预设的成块条件包括:每隔一天生成一个数据块。例如,在每天的23点59分,将该天所接收到的交易记录写入一个数据块中。从而,在审计时,可以针对任一数据块进行相应的统计,确定出一个数据块(即每一天)中的挂单但是未成交的记录的数量以及交易,从而可以方便的统计出一天之内出现的未交易的数据记录的频率,便于审计工作的进行。

在一种实施方式中,交易数据记录包含业务属性,所述业务属性包含已成交记录或者未成交记录,用于表征交易数据记录的状态,例如,用0表征已经成交,1表征未成交。在实际应用中,可以在交易数据记录的头部或者尾部分配一定空间(例如,8个字节),用于记载业务属性。通过该方式,首先可以在统计时,识别交易数据记录的指定字段即可获知哪些数据记录是未交易的,提高效率。

进一步地,对于写进账本的交易数据记录,还可以确定其位置信息。如前所述,一个块链式的账本由多个数据块组成,同时,一个数据块中通常包含多个交易数据记录。因此,在本说明书实施例中,所述的位置信息具体指的是一条数据记录被保存时,处于账本中的哪个数据块上,以及,在该数据块中的什么位置。

在本说明书实施例所提供的数据块中,可以有多种方式用来标识不同的数据块,包括数据块的哈希值或者块高。

数据块的哈希值为根据前一区块哈希值和自身数据记录进行哈希计算而得到的哈希值,可以用于唯一、明确地标识一个数据块。在块链式的账本中,通常第一个数据块其块高为0,以后每增加一个数据块,块高加1;或者,还可以将数据块的成块时间转换为一个大的单调递增整型数据(一般为12至15位)序列,作为数据块的块高。因此,一个数据块通常有一个明确的块高。

又例如,在一个已经确定的要写入数据库的数据块,其中交易数据记录的排序也已经固定,因此一个交易数据记录在该数据块中的序号也是明确的,在数据记录的长度为固定单位时,序号同样可以用于明确该交易数据记录在其所处的数据块中的位置信息。即,序号同样也可以用于指示偏移量。

同时,在一个数据块中,由于通常包含了多个数据记录,因此,还可以用各数据记录在该数据块中的地址偏移量来分别标识数据块中的数据记录。显而易见,在同一个数据块中,各数据记录的地址偏移量并不相同。

如表1所示,表1为本说明书实施例所提供的针对某个用户所产生的交易数据记录的一种示例性索引表。其中key即为业务属性的具体值,0表征已经成交,1表征未成交;value部分的每个数组即为一条位置信息,每个数组中的前部分块高,该块高使用了大整型数据的形式,可以经过对称加密后转换为时间戳,后部分为数据记录在该数据块中的序号,通过块高和序号即可以唯一的确定一条数据记录。而用户以及其它第三方均可以针对该数据记录进行相应的查询和验证。

表1

在表1被创建之后,针对未成交的交易数据记录进行某些统计时,则只需直接依据索引表进行就可以了。例如,用户想要统计未成交的交易数据记录的数量时,直接统计属性key为“1”的数据记录的数量即可,通过索引表可以便利对数据记录进行查询或者统计。

进一步地,在一种实施方式中,由于索引表中的一条业务属性可以对应于多个位置信息(即对应于多个数据记录),因此,可以在将位置信息写入索引中时,还可以将位置信息按照数据记录的先后顺序依次进行排列,即,确定交易数据记录的时间戳,再根据时间戳写入位置信息,有利于用户的查询以及验证。数据记录在账本中的先后顺序即可以数据记录被写入账本的时间戳(即数据块的成块时间戳)来体现,以及,对于同一数据块中的数据记录,则可以通过在数据块中的排序先后来体现。

在这种实施方式下,如果用户需要查询某段时间之类的未成交的交易数据记录,则可以直接输入时间点即可。例如,用户输入查询指令,retrive(t1,t2,full),数据库服务端接收到指令后,即可将t1和t2均转换为相应的大整型数据bigt1和bigt2,得到块高区间[bigt1,bigt2],同时从表1中查询块高落入区间[bigt1,bigt2],且key值为“1”的所有数据记录。

由于在表1中,数据记录是根据块高的大小依序排列,在这种方式下的查询,不用遍历表1所有的数据,而只需要在区间内找到最接近bigt1和bigt2的块高,即可得到所有满足时间内的未成交的交易数据记录,如图3所示,图3为本说明书实施例所提供的一种查询方案的逻辑示意图。当然,对于已经成交的交易数据记录同理可得。通过该方式下的查询,可以避免遍历式的查询,提高查询和统计效率。

对应的,本说明书实施例还提供一种证券交易数据的存储装置,如图4所示,图4是本说明书实施例提供的一种证券交易数据的存储装置,应用于通过块链式账本存储数据的中心化的数据库服务提供端中,包括:

交易数据获取模401,获取证券交易平台的交易数据记录,其中,所述交易数据包括挂单成交记录和挂单未成交记录;

哈希确定模块403,确定所述交易数据的哈希值,发送所述所述哈希值至所述客户端;

数据块生成模块405,当达到预设的成块条件时,确定待写入数据块中的各交易数据记录,生成包含数据块的哈希值和数据记录的第n个数据块,具体包括:

当n=1时,初始数据块的哈希值和块高基于预设方式给定;

当n>1时,根据待写入数据块中的各数据记录和第n-1个数据块的哈希值确定第n个数据块的哈希值,生成包含第n个数据块的哈希值和各数据记录的第n个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。

进一步地,所述预设的成块条件包括:待存储的数据记录数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。

进一步地,所述预设的成块条件包括:每隔一天生成一个数据块;相应的,所述装置还包括统计模块407,针对任一数据块,统计获取该数据块中的挂单未成交记录数量。

进一步地,所述交易数据记录包含业务属性,所述业务属性包含已成交记录或者未成交记录;相应的,所述装置还包括索引写入模块409,确定交易数据记录的位置信息,针对该交易数据记录,建立该交易数据记录的业务属性与位置信息的对应关系,写入以业务属性为主键的索引。

进一步地,所述索引写入模块409,确定交易数据记录的时间戳;在以业务属性为主键的索引记录中,按照时间戳的先后顺序,将数据记录的位置信息依序写入索引记录的值。

本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图1所示的证券交易数据的存储方法。

图5示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。

处理器1010可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。

存储器1020可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。

输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。

总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图1所示的证券交易数据的存储方法。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。

上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1