CN116192499A - 一种易扩展、可追溯的数据操作记录系统、方法 - Google Patents
一种易扩展、可追溯的数据操作记录系统、方法 Download PDFInfo
- Publication number
- CN116192499A CN116192499A CN202310147280.8A CN202310147280A CN116192499A CN 116192499 A CN116192499 A CN 116192499A CN 202310147280 A CN202310147280 A CN 202310147280A CN 116192499 A CN116192499 A CN 116192499A
- Authority
- CN
- China
- Prior art keywords
- module
- blockchain
- information
- query
- server
- 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
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000013500 data storage Methods 0.000 claims abstract description 8
- 238000007726 management method Methods 0.000 claims description 153
- 230000008520 organization Effects 0.000 claims description 39
- 230000003993 interaction Effects 0.000 claims description 20
- 238000012217 deletion Methods 0.000 claims description 15
- 230000037430 deletion Effects 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 12
- 230000010354 integration Effects 0.000 claims description 12
- 238000001914 filtration Methods 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 7
- 230000006855 networking Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 238000012216 screening Methods 0.000 claims description 2
- 238000010276 construction Methods 0.000 claims 1
- 230000006378 damage Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 9
- 238000012423 maintenance Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1425—Traffic logging, e.g. anomaly detection
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0863—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/088—Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种易扩展、可追溯的数据操作记录系统、方法,基于区块链的易扩展的架构,架构包括发送客户端、查询客户端、访问服务端、区块链网络、区块链管理服务端和客户端等模块,及其之间的交互方案。本发明公开了一种易扩展、可追溯的数据操作记录系统、方法,可以在链上保存操作记录的全部内容,起到防篡改和抗毁的效果。当实时存储的数据量变大,或区块链存储效率降低,或区块链节点磁盘空间不足时,可以自动或通知管理员对区块链网络进行扩展,以满足数据存储需求。可以减少数据量的数据编码方案和相应的存储和查询方案。
Description
技术领域
本发明涉及一种易扩展、可追溯的数据操作记录系统、方法,属于数据操作记录技术领域。
背景技术
传统的软件信息系统中一般采用文件日志或者数据库操作记录来记录与跟踪用户行为,用户的操作记录一般包含着用户的重要信息,一旦出现对数据的恶意操作,则可根据用户操作记录确定责任主体。如果将操作记录保存在日志中,因为日志量大并不会长时间保存,若记录在数据库中也同样存在篡改风险。
现有的一些方法利用区块链具有去中心化,防篡改性强的特性将操作记录或操作日志写入区块链,当出现问题时可以在区块链用来进行问题回溯。然而区块链技术也存在一些问题,1、共识算法效率低:因为传统的区块链共识机制要求在多方协同的环境中达成共识,通讯复杂度较高,系统交易性能随着网络节点规模的上升而明显下降,从而导致存储效率低。2、不适合存大量数据,因为区块链结构不可篡改,所以一般也不支持删除其中的部分数据,每个对等节点都要存储一份完整的链上数据,如果交易内容数据量大,会容易导致硬盘被快速填满,并且导致传输、存储效率更低,上链速度更慢。
现有技术采用将操作记录以JSON的形式上传到区块链上,JSON格式内部包含多个键值对,都为字符串格式,数据量较大。因此通常的解决方案是将数据存储在链下,将数据的摘要(Hash)值存储在链上。但是,现有技术包括如下不足:
1、将操作记录以JSON的形式上传到区块链上,JSON格式内部包含多个键值对,都为字符串格式,数据量较大。随着时间增长硬盘很容易填满,没有给出相应解决方案。
2、没有针对区块链存储效率低的问题提出解决方案。
3、链上只存储了日志摘要数据,只能验证日志数据是否被篡改,而日志数据如果遭到的损坏则无法得知之前的操作内容。
4、操作记录或者日志过一段时间后,会失效。为了减少存储空间采用定期删除区块的方式减少数据量。而删除区块会导致区块链的防篡改性降低,因此大部分现有开源的区块链平台并不支持删除区块的方式,如果删除区块会导致平台出现问题。另外有些区块链采用默克尔树的方式,用每个区块的摘要构造默克尔树,以确保区块链没有被篡改,直接删除区块会导致这种校验方法失效。
5、没有针对区块链存储效率低的问题提出解决方案。
因此,如何将数据操作记录与区块链相结合,并解决现有技术中出现的不足是本领域技术人员急需要解决的技术问题。
发明内容
目的:为了克服现有技术中存在的不足,本发明提供一种易扩展、可追溯的数据操作记录系统、方法。
技术方案:为解决上述技术问题,本发明采用的技术方案为:
一种易扩展、可追溯的数据操作记录系统,包括:发送客户端、查询客户端、访问服务端、区块链网络、区块链管理服务端和区块链管理客户端。
所述访问服务端接收所述发送客户端所发送的操作记录,根据发送策略从所有区块链网络中选择一个区块链网络,将操作记录发送给该区块链网络进行存储;接受查询客户端所发出的查询请求,并根据查询条件选择一个或多个区块链网络进行查询,并将查得的操作记录列表按照存储的先后顺序进行合并返回;所述访问服务端根据配置的访问规则管理哪些发送客户端和查询客户端可以对其进行访问。
所述区块链管理服务端通过所述区块链管理客户端对所述区块链网络进行管理,包括但不限于安装部署、配置、维护、删除操作,并将区块链网络信息和访问凭证同步给所述访问服务端。
所述访问服务端或所述区块链管理客户端发出告警给所述区块链管理服务端,所述区块链管理服务端则根据配置,自动或通知管理员来部署新的区块链网络。
作为优选方案,数据操作记录系统中还包括存在多个访问服务端,当区块链是联盟链时,支持多个组织的合作,每个所述访问服务端对应了其中一个组织,各组织根据自己的需求定制访问策略,管理组织可被访问的信息系统列表。当区块链是私有链时,只部署一个所述访问服务端。还包括当区块链是私有链时,根据使用场景部署多个所述访问服务端。
作为优选方案,所述访问服务端包括:访问控制模块、存储模块、查询模块和区块链交互模块。
所述访问控制模块用来管理哪些信息系统可以访问访问服务端。
所述存储模块接受外部信息系统存储操作记录的请求,通过所述区块链交互模块将操作记录发送给所述区块链网络节点进行储存。
所述查询模块接受查询客户端所发出的查询请求,并根据查询条件选择一个或多个区块链网络,通过所述区块链交互模块向各网络中对应节点进行查询,并将查得的操作记录列表按照存储的先后顺序进行合并返回。
作为优选方案,所述访问控制模块,还包含可访问的用户列表,以及每个用户的权限,每个用户可以拥有一个或多个权限。还包含CA,用户向CA申请证书,CA负责给用户颁发私钥。
作为优选方案,所述用户的权限是通过将用户的公钥添加到相应的权限列表来实现。
作为优选方案,所述访问服务端的存储模块包括接收模块、策略模块、发送模块、预警模块四个子模块。
接收模块接受外部信息系统的存储请求,将消息放入缓存,可选的在消息中加入顺序标签。
发送模块从缓存中读取最先进入的操作记录数据,根据策略模块制定的发送策略从区块链网络列表选择一个可存储的区块链网络,并获取可访问的节点信息,根据节点信息调用区块链交互模块,由区块链交互模块将操作记录发送给区块链节点进行储存。
所述策略模块中的策略由管理员进行配置,所述策略包括但不限于:轮询的方式,根据配置的优先级来选择。
预警模块监控缓存区,当发现其中数据量超过阈值时,会发出告警给区块链管理服务端。
作为优选方案,所述区块链网络列表包括但不限于区块链网络ID、起始时间、结束时间和状态字段,所述区块链网络ID是区块链网络的唯一标识,起始时间和结束时间分别标识区块链网络存储的最早的数据时间和最迟的数据时间,状态字段用来表示区块链网络是否可存储。所述区块链网络的节点信息包括但不限于:节点所属的区块链网络ID、组织信息、部署服务器IP、访问端口、访问凭证信息。
作为优选方案,所述访问服务端的查询模块包括接受模块、查询模块、整合模块、返回模块四个子模块。
接受模块接受外部信息系统的查询请求。
查询模块根据查询请求中的时间段信息从全部区块链网络中选择包含该时间段数据的区块链网络列表,并根据所述区块链网络列表获取该查询模块所属的访问服务端可以访问的区块链网络的节点信息。依次将查询请求信息和列表中的区块链网络的节点信息发送给区块链交互模块,由区块链交互模块将查询请求信息发送给区块链节点进行查询。将查询后返回的结果交给整合模块进行整合。
整合模块将返回的操作记录信息列表根据时间戳排序,如果时间戳相同,且在同一个区块链网络中,则根据返回的原顺序进行排序。如果时间戳相同,在不同区块链网络中的数据,如果有打顺序标签,则根据顺序标签排序。将排序好的操作记录列表交由返回模块返回给外部信息系统。
作为优选方案,所述访问服务端的区块链交互模块管理区块链节点交互的身份凭证,即区块链网络CA颁发的私钥。将数据发送到区块链网络的节点提交交易,以及从区块链网络节点中根据查询条件查询相应的数据交易信息列表。
作为优选方案,所述区块链管理服务端包括:部署模块、删除模块、配置管理模块3个子模块,其中删除模块为可选模块。
所述部署模块向服务器上的所述区块链管理客户端发送部署的指令。
所述删除模块由管理员用来删除失效的所述区块链网络。
所述配置管理模块用来管理区块链网络的组织结构信息,以及每个组织提供的服务器信息,还包含所述区块链网络节点的访问凭证。
作为优选方案,所述部署模块发送的所述指令包括区块链网络的配置信息,以及每个节点所属的组织结构信息。所述部署模块由管理员调用部署模块提供接口进行部署,当区块链管理服务端配置为允许自动部署时,通过接受所述访问服务端和所述区块链管理客户端的告警进入部署流程。当区块链管理服务端配置为不允许自动部署时,则发告警通知管理员人工部署。所述部署模块在生成所述区块链网络的组网信息时,会根据所述配置管理模块中各组织,提供的所述服务器信息以及从所述区块链管理客户端获取的性能数据信息来综合生成,用于保证新的所述区块链网络所属服务器是满足区块链运行要求的,所述组网信息由管理员配置生成;所述组织结构信息是从所述配置管理模块中获取。
作为优选方案,所述配置管理模块管理每个组织成员当前可存储的区块链网络的节点信息,以及全部可访问的区块链网络的节点信息,并记录每个区块链节点所存储的操作记录数据对应的时间范围。当所述部署模块部署新的区块链网络后会发送消息给所述配置管理模块来更新当前可存储的区块链网络的节点信息,并且所述配置管理模块会为每个组织,通过所述区块链管理客户端向区块链网络中对应的节点申请访问凭证,并发送给区块链网络对应的访问服务端。
作为优选方案,所述区块链管理客户端运行在安装或者待安装区块链节点的服务器上,所述区块链管理客户端包括部署模块、监控模块、删除模块、配置管理模块4个子模块,其中删除模块为可选模块。
所述部署模块接受区块链管理服务端的部署模块发送的部署指令,并根据指令中的配置信息,在服务器上部署区块链网络节点。
所述监控模块定期检查所述服务器的性能指标,发现磁盘空间不足或其他性能指标不能满足要求时,生成告警信息并发送给所述区块链管理服务端。
所述删除模块接受所述区块链管理服务端的删除指令,并根据指令信息删除相应的区块链网络节点。
所述区块链管理客户端的部署模块在部署完成后还会调用配置管理模块,以部署指令中的组织信息作为身份信息,向该服务器上的区块链网络节点申请访问凭证,并将其发送给所述区块链管理服务器。
作为优选方案,属于多个所述区块链网络中的节点可以部署在同一个服务器上。
作为优选方案,所述区块链网络的数量为多个,包括当前可继续存储的区块链网络,以及因为磁盘空间已满或其他原因不能用于继续存储的区块链网络,所有的区块链网络都可以用于查询。
作为优选方案,所述查询客户端包括:编码模块、发送模块、接受模块、解码模块、加密模块、解密模块,其中加密模块和解密模块为可选模块。
所述编码模块将查询请求中的部分查询关键字进行编码,所述部分查询关键字是存储时经过编码的关键字。
可选的当使用密文进行搜索时,对编码或非编码的查询字段通过加密模块进行加密。
所述发送模块将查询关键字发送给所述访问服务端。
接受模块接受所述访问服务端返回的查询结果。
可选的解密模块对查询结果中操作记录的密文部分由进行解密。
解码模块对编码的部分进行解码,然后返回解码后的操作记录信息。
作为优选方案,所述查询客户端作为插件集成于所述外部信息系统,或者独立运行于某一服务器上通过接口接受外部信息系统的查询请求。所述服务器是部署所述外部信息系统的服务器,或者是所述访问服务端部署的服务器。
作为优选方案,所述发送客户端作为插件由所述外部信息系统集成,或者独立运行于外部信息系统所在服务器;当所述发送客户端为插件时包括,编码模块、加密模块、消息发送模块,其中加密模块为可选模块。所述外部信息系统通过调用所述发送客户端插件提供的接口将数据传给所述发送客户端,经过所述编码模块的处理将操作记录中的部分数据进行编码,可选的再通过所述加密模块对操作记录部分信息进行加密,所述加密信息是不用来做查询条件的信息,或者是作为查询条件但能够通过密文进行查询的信息。当所述发送客户端不侵入所述外部信息系统时,提供接口接收外部信息系统的消息,可选的发送客户端还包括格式化模块,所述格式化模块可以将信息系统产生的操作记录转化为所述编码模块可以处理的数据,所述格式化模块是为了外部信息系统的具体操作记录格式而定制;当所述发送客户端不侵入所述外部信息系统时,通过读取所述外部信息系统的日志文件或内存获取操作记录信息,可选的发送客户端还包括读取模块,读取模块从文件或内存中读取操作记录,并进行信息过滤,再发送给格式化模块进行格式转化,所述读取模块是为了外部信息系统的具体日志文件类型和格式而定制。
第二方面,基于第一方面所述的操作记录系统的一种易扩展、可追溯的数据操作记录方法,包括如下方法:
操作记录数据存储方法,操作记录数据查询方法,区块链网络扩展方法。
所述操作记录数据存储方法,包括如下步骤:
所述外部信息系统将操作记录数据传入,所述发送客户端对操作记录进行存储(当所述发送客户端为插件或者提供调用接口时);所述发送客户端还可以读取所述外部信息系统中的日志文件或内存来获取操作记录数据。
所述操作记录数据存储方法,包括如下步骤:
所述发送客户端对操作记录数据进行处理包括,
过滤,过滤步骤为可选操作,用于筛选需要存储的关键操作记录,由所述发送客户端中的读取模块完成。
格式化,格式化步骤为可选操作,用于将操作记录数据转化为可以编码的格式,由所述发送客户端中的格式化模块完成。
编码,将操作记录中的部分数据进行编码,用于对操作记录数据进行压缩,具体步骤如下:
将取值可以穷举的字段(如系统、操作、操作对象等)进行编码。
设某个可穷举的字段t有n个不同取值,将取值的集合定为X,现构造0到n-1这n个数的二进制编码集合Y,定义X到Y的双射函数f使得X中的任意取值x都通过f(x)得到集合Y中的一个二进制编码y。根据Y中的任意编码y,通过f的逆函数记为f-1,计算f-1(y)得到取值x。设k为满足2k≥n的最小自然数,则用k个位数来存储这n个编码。那么字段t使用k位来存储其对应的编码。还包括:实际使用时对字段取值进行预留。
加密,加密步骤为可选操作,对操作记录部分信息进行加密,所述加密信息是不用来做查询条件的信息,或者是作为查询条件但能够通过密文进行查询的信息。
所述发送客户端将处理后的操作记录发送给所属组织对应的所述访问服务端。
所述访问服务端的所述存储模块将操作记录数据存放到所述缓存中,其目的在于对使用缓存可以在突发数据量大的情况下,对数据进行缓冲。
当需要在查询时还原操作记录数据的存储顺序时,所述访问服务端在将操作记录放入缓存时对每个操作记录加入序列号作为其数据前缀,所述序列号也作为操作记录数据的一部分存储于区块链网络。
所述访问服务端的所述存储模块从缓存中取出最先放入的操作记录,依据区块链网络选择策略,从区块链网络列表中选取一个可存储的区块链网络,将操作记录消息发送给该服务端在该网络中对应的节点(通过调用节点上部署的智能合约)。
作为优选方案,所述编码方法是将可以穷举的字段进行编码,字段包括但不限于系统、操作、操作对象,并且每种类型字段的编码都用二进制表示,将各字段拼接起来生成编码,以压缩数据量。
作为优选方案,所述区块链网络选择策略可以是轮询的方式,也可以是结合存储空间和性能指标等各因素综合起来给定选择的优先顺序。
作为优选方案,所述区块链网络中对应的节点通过智能合约接受操作记录,操作记录后续会被所述区块链网络共识后存储于网络中各节点上。
作为优选方案,一种操作记录数据查询方法,包括如下步骤:
所述外部信息系统调用所述查询客户端进行操作记录查询,并将查询参数传给所述查询客户端。
所述查询客户端对所述传入的查询参数进行处理,所述查询参数中如果有存储时被编码的字段,则被编码的字段对应的查询条件的查询请求信息为,针对被编码的字段生成的所有能够匹配被编码的字段的查询索引数据,对每个查询条件都做一次查询,然后多次查询结果汇总成最终查询结果。(例如被编码字段有系统、操作、对象,在存储时这3个字段生成的编码作为一个字段存储,查询参数中包含了具体的系统和对象信息不包含操作,则生成的查询条件为针对该系统下该对象的所有操作信息对应的编码数据,具体可参考实施例中的查询示例)。
因为存储时所有被编码的字段作为一个整体进行存储,需要针对整体字段构造查询请求信息,其查询条件为针对这些字段生成的所有能够匹配这些字段的查询索引数据,编码字段查询请求信息构造方法如下:
设被编码存储的字段有n个,其中用到的查询字段为m个,记为t1,t2,…tm,对任意一个查询字段ti,i∈(1,2,…m),根据查询时该字段传入的值xi,通过存储时定义的双射函数f,计算f(xi)得到的值yi为其对应编码,m个字段一共得到m个编码。若m=n,即编码中所有字段都被查询,则将这m个编码按照存储时的排列顺序进行拼接可得到查询值。
若除了被查询字段以外另有n-m个字段,记为t1’,t2’,…tn-m’,对其中任意一个非查询字段tj’,j∈(1,2,…n-m),设该字段有kj个不同取值,根据存储时的编码方案,每个取值对应了一个编码,设该字段的编码集合为Sj’,则n-m个字段一共生成了n-m个编码集合。之前被查询的m个字段每个字段ti根据传入的查询值xi确定了一个编码值yi,yi可以构成一个单值集合{yi},记为Si,现在将这个n个集合按照对应字段拼接时的顺序排好,重新排好序的集合记为S1,S2,…Sn,然后做笛卡尔积S1×S2×…×Sn,设笛卡尔积的结果集合中有z个元素,任意一个元素记为<y1,y2,…yn>,将y1,y2,…yn进行拼接可以得到一个查询编码,一共可以得到z个查询编码。
所述查询客户端将查询条件中的所有未编码字段和针对编码字段的z个查询编码构造成查询请求信息给所述访问服务端,所述访问服务端根据其中的时间段字段在所有区块链列表中选择对应的所述区块链网络,若没有时间段信息则选择所有区块链网络,并根据所述区块链网络找到该访问服务端可访问的所述区块链网络节点信息。
所述访问服务端将所述查询信息和访问凭证发送给各所述区块链网络节点进行查询。查询条件中的所有未编码字段和针对编码字段的z个查询编码中的每一个进行组合,需要进行z次查询。
所述区块链网络节点将查询结果返回给所述访问服务端,所述访问服务端将各区块链网络上的查询结果进行合并,按时间戳进行排序。
作为优选方案,可选的当所述查询结果需要严格还原操作记录顺序时,对于时间戳相同的数据,则利用进入所述缓存时加入的序列号进行排序。
作为优选方案,所述访问服务端将查询结果列表返回给查询客户端,所述查询客户端对于每条数据需要进行处理将其还原成原数据格式,方法如下:
解密:若操作记录部分信息存储前进行过加密,需要对加密字段进行相应的解密。
解码:对操作记录中合并编码的字段,进行解码操作。设被编码的字段有n个,对任意字段t在编码时的位置和编码位数获取字段编码值y,根据编码时所定义的双射函数f的逆函数f-1,计算f-1(y)得到取值x,则x为字段t对应的值。将每个编码字段都用同样方法求得对应取值。
将各字段的名称和对应值构成的列表返回给调用端,或者直接进行展示。
一种区块链网络扩展方法,包括如下步骤:
触发区块链扩展:当所述区块链管理客户端的所述监控模块监控到磁盘不足时,发送告警给所述区块链管理服务端;或者当所述访问服务端发现缓存操作记录数据量超过阈值时,发送告警给所述区块链管理服务端。所述告警用于通知所述区块链管理服务端需要扩展新的区块链网络,可选的所述告警包括但不限于时间、告警类型、告警原因等信息。若告警原因是磁盘不足,说明当前区块链网络不适合继续存储数据,当扩展出新区块链并切换存储后,需要将其在所述区块链网络列表中的状态改为不可存储。
发送部署请求:所述区块链管理服务端根据所述配置管理模块中各组织的服务器信息,向其上部署的所述区块链管理客户端发送部署请求。
所述区块链管理客户端根据请求信息,判断当前服务器磁盘空间、性能指标是否可以部署新的区块链,并返回相应内容的响应。
所述区块链管理服务端从响应可以部署的节点中选取1个或多个节点,构造相应的部署信息,若未找到满足条件的服务器则发送告警信息给系统管理员。所述部署信息包括所述服务器所对应的组织信息,以及所要部署的所述区块链网络节点标识
所述区块链管理服务端发送部署指令给区块链管理客户端,所述部署指令中包含所述部署信息。
所述区块链管理客户端根据所述部署信息构造相应的配置文件以及部署脚本,所述配置文件和部署脚本也可以由区块链管理服务端生成,随部署指令下发,然后部署所述区块链网络节点,再在所述区块链网络节点上安装存储和查询操作记录所需的智能合约。
所述区块链管理客户端以所述区块链网络节点管理者身份代所述访问服务端向区块链网络节点注册用户并获取访问凭证,所述访问凭证用于所述访问服务端在所述区块链网络节点存储或查询数据时的身份认证。
所述区块链管理客户端将所述区块链网络节点部署成功的信息返回给区块链管理服务端,并返回所述访问凭证及部署信息。
所述区块链管理服务端收到部署成功的消息后更新所述区块链网络列表以及相关所述区块链网络节点信息,并将更新后的所述区块链网络列表以及新增的访问服务端可访问的所述区块链网络节点对应的信息和访问凭证发送给所述访问服务端。当所述告警原因是磁盘不足,说明告警信息中的所述区块链网络不适合继续存储数据,所述更新操作包括,将其在所述区块链网络列表中的状态改为不可存储。
作为优选方案,所述访问服务端收到更新消息后,更新所述区块链网络列表,并保存新增的所述区块链网络节点信息以及访问凭证。
有益效果:本发明提供的一种易扩展、可追溯的数据操作记录系统、方法,基于区块链的易扩展的架构,架构包括发送客户端、查询客户端、访问服务端、区块链网络、区块链管理服务端和客户端等模块,及其之间的交互方案。各模块的子模块可作为实施例,或可选方案。基于该架构的扩展方案,扩展方案包括区块链网络管理方案,以及扩展方法和流程。当实时存储的数据量变大,或区块链存储效率降低,或区块链节点磁盘空间不足时,可以自动或通知管理员对区块链网络进行扩展,以满足数据存储需求。可以减少数据量的数据编码方案和相应的存储和查询方案。
与现有技术相比,其优点如下:
1、提出了一种基于区块链的易扩展、可追溯的数据操作记录平台,因为区块链是去中心化的,每个对等节点存储同样的数据,具有抗毁性且防篡改性强的特性,将系统中关键操作信息记录在区块链上,当出现问题时可以用来进行问题回溯。
2、现有的区块链操作记录平台,要么存储操作记录全部文本内容,这样会导致硬盘很容易填满,要么在区块链上只存储摘要内容,而日志数据存储在链下,这样只能验证日志数据是否被篡改,而日志数据如果遭到的损坏则无法得知之前的操作内容。本方案提出了一种数据编码方案和相应的查询方案,可以在链上保存操作记录的全部内容,起到防篡改和抗毁的效果。
3、相比于现有的区块链操作记录平台,提出一套易扩展架构方案,当实时存储的数据量变大,或区块链存储效率降低,或区块链节点磁盘空间不足时,可以自动或通知管理员对区块链网络进行扩展,以满足数据存储需求。
附图说明
图1为本发明系统的总体架构示意图。
图2为发送客户端模块第一种实施例的结构示意图。
图3为发送客户端模块第二种实施例的结构示意图。
图4为发送客户端模块第三种实施例的结构示意图。
图5为查询客户端模块的结构示意图。
图6为访问服务端模块的结构示意图。
图7为区块链管理服务端的结构示意图。
图8为区块链网络扩展流程时序图。
图9为各字段编码拼接示意图。
图10为操作记录存储时序图。
图11为操作记录查询时序图。
具体实施方式
下面结合具体实施例对本发明作更进一步的说明。
如图1所示,一种易扩展、可追溯的数据操作记录系统,包括:操作记录平台,操作记录平台包含访问服务端、区块链网络、区块链管理服务端和区块链管理客户端几个部分。外部的信息系统可以通过发送客户端,将操作记录发送给访问服务端,也可以通过查询客户端从访问服务端查询符合条件的操作记录列表。
访问服务端接收所述发送客户端所发送的操作记录,根据发送策略从所有区块链网络中选择一个区块链网络,将操作记录发送给该区块链网络进行存储;也可以接受查询客户端所发出的查询请求,并根据查询条件选择一个或多个区块链网络进行查询,并将查得的操作记录列表按照存储的先后顺序进行合并返回。
访问服务端可以根据配置的访问规则管理哪些发送和查询客户端可以对其进行访问。
访问服务端可以设置为多个,当区块链是联盟链时,支持多个组织的合作,每个访问服务端对应了其中一个组织,各组织可以根据自己的需求定制访问策略,管理其可被访问的信息系统列表。当区块链是私有链时,可以只部署一个访问服务端,也可以根据使用场景部署多个访问服务端。
区块链管理服务端和区块链管理客户端用于对区块链网络进行管理,包括安装部署、维护、删除等操作。
区块链网络可以有多个,包括当前可继续存储的区块链网络,以及因为磁盘空间已满或其他原因不能用于继续存储的区块链网络,所有的区块链网络都可以用于查询。
区块链管理服务端可以通过管理员对区块链网络进行管理,包括部署新的区块链网络,删除区块链网络,配置规则用于在某些条件下自动部署新的区块链网络,其中部署、删除和一些配置操作需要委托在服务器上安装的区块链管理客户端具体实施。给区块链管理服务维护可存储的区块链网络信息,以及可查询的全部区块链网络信息,并将信息同步给各个访问服务端。当访问服务端发现接受的消息速度过快来不及存储时,会发出告警给区块链管理服务端,区块链管理服务端则根据配置,自动或通知管理员来部署新的区块链网络,以分担当前的存储压力。
区块链网络中的节点通过智能合约接受操作记录存储请求,由各共识节点达成共识,并积累到一定量后将操作记录打包成区块,并广播给各节点进行存储。不同区块链网络中的节点可以部署在同一个服务器(服务器可以是物理机也可以是云服务器)上。
区块链管理客户端部署在服务器上,其中的运维模块定期检查磁盘空间等性能数据,发现磁盘空间不足或其他性能指标不能满足要求时,通知区块链管理服务端,区块链管理服务端则根据配置,自动或通知管理员来分配新的服务器,以部署新的区块链网络。区块链管理客户端在部署完成后还会向该服务器上的区块链网络节点申请访问凭证,并将其发送给区块链管理服务器,再由区块链管理服务端发送给访问服务端用于其访问区块链网络中的节点。
实施例1:
外部信息系统通过发送客户端发送操作记录给操作记录平台,发送客户端会对操作记录进行编码,这起到了信息压缩的作用,同时比起文本数据在网络传输以及区块链上存储时也起到了一定的加密效果。为了解决区块链共识算法导致的区块链存储效率低的问题,访问服务端可以同时向多个区块链网络发送操作记录数据,并可以根据内置的消息缓存实时监控存储效率,当缓存内容过多时,发出告警给区块链管理服务端,区块链管理服务端则根据配置,自动或通知管理员来部署新的区块链网络,以缓解存储压力。
可选的,操作记录虽然记录了时间戳,但为了在查询时能还原原来的顺序所以操作记录在进入访问服务端缓存时,加入了顺序标签。
为了解决操作记录时间长后失效的问题,可以通过在区块链管理服务端配置策略,每隔一段时间生成新的区块链网络,并修改区块链网络列表,将新生成的区块链网络替换原来的可存储区块链网络作为新的可存储区块链网络,原来的区块链网络则只用来查询。当区块链网络所属的物理机器磁盘空间不足时,也可以采用类似的策略,在新的物理机上创建新的区块链网络,将原有的可存储区块链网络进行替换。
外部信息系统通过“发送客户端”发送操作记录给操作记录平台,发送客户端有3种类型:
第一发送客户端作为插件由信息系统集成,如图2所示,通过调用第一发送客户端插件提供的接口将数据传给第一发送客户端,经过编码模块的处理将操作记录进行编码,可选的,再通过加密模块对操作记录部分信息进行加密,所述部分信息是不用来做查询条件的信息,或者是可以作为查询条件但能够通过密文进行查询的信息。再交由消息发送模块发送给访问服务端。
第二发送客户端不侵入信息系统,如图3所示,信息系统通过接口发送操作记录给第二发送客户端,由第二发送客户端为信息系统定制的格式化模块将信息系统产生的操作记录转化为可用来编码的数据,再发给编码模块。后续流程和模块同第一发送客户端一致。
第三发送客户端不侵入信息系统,如图4所示,信息系统通过将操作记录写入日志文件或内存,再由定制的读取模块从日志文件或内存中读取操作记录,并进行一定的信息过滤,再发送给格式化模块进行内容转化,后续流程和模块同第二发送客户端一致。
如图5所示,外部信息系统通过查询客户端发送消息给访问服务端,查询客户端将部分查询关键字通过编码模块进行编码,所述部分查询关键字是存储时经过编码的关键字。可选的当使用密文进行搜索时,对编码后的关键字进行加密。通过发送模块将查询关键字发送给访问服务端,访问服务端返回消息后,通过接收模块获取返回消息,可选的由解密模块进行解密,再交给解码模块进行解码,然后返回解码后的操作记录信息。
如图6所示,访问服务端包括访问控制模块、存储模块、查询模块和区块链交互模块。
访问控制模块用来管理哪些信息系统可以访问访问服务端,可选的其中包含可访问的用户身份列表,以及每个用户的权限,例如存储权限、查询权限、管理权限(包括配置、管理等所有权限)等,每个用户可以拥有一个或多个权限。可选的,成员权限是通过将成员的公钥(也称为证书、签名证书或签证)添加到相应的权限列表来实现。访问控制模块包含CA(Certificate Authority),用户向CA申请证书,CA负责给用户颁发私钥。
存储模块:包括接收模块、策略模块、发送模块、预警模块四个子模块。接收子模块接受外部信息系统(需要有存储权限)的存储请求,将消息放入缓存。发送模块从缓存中读取最先进入的操作记录数据,根据策略模块制定的发送策略从所有可存储的区块链网络列表选择一个区块链网络,读取节点信息,根据节点信息调用区块链交互模块,由区块链交互模块将操作记录发送给所述区块链节点进行储存。所述策略模块中的策略可以由管理员进行配置,所述策略可以是轮询的方式,也可以是根据配置的优先级来选择。预警模块监控缓存区,当发现其中数据量超过阈值时,会发出告警给区块链管理服务端。
查询模块:查询模块包括接受模块、查询模块、整合模块、返回模块四个子模块。接受模块接受外部信息系统(需要有查询权限)的查询请求,查询模块根据查询请求中的时间段信息从全部区块链网络中选择包含该时间段数据的区块链网络列表,所述区块链网络列表中包含该服务端可以访问的区块链节点信息。所述区块链节点信息包括访问该区块链节点的IP和端口。依次将查询请求信息和列表中的区块链节点信息发送给区块链交互模块,由区块链交互模块将查询请求信息发送给所述区块链节点进行查询。将查询后返回的结果交给整合模块进行整合。整合模块将返回的操作记录信息列表根据时间戳排序,如果时间戳相同,且在同一个区块链网络中,则根据返回的原顺序进行排序,如果是不同区块链网络中的数据,如果有打顺序标签,则根据标签排序。整合模块将排序好的操作记录列表交由返回模块返回给外部信息系统。
区块链交互模块:该模块管理区块链节点交互的身份凭证,即区块链网络CA颁发的私钥。负责将数据发送到区块链网络的节点提交交易,以及从区块链网络节点中根据查询条件查询相应的数据交易信息列表。
可选的该模块为操作记录平台提供给应用的SDK模块。
如图7所示,区块链管理服务端包括部署模块、删除模块、配置管理模块3个子模块。
部署模块:该模块可以向服务器上的区块链管理客户端发送部署的指令,指令包括区块链网络的组网信息,以及每个节点所属的组织结构信息。部署模块可以由管理员调用接口进行部署,当系统配置为允许自动部署时,也可以通过接受访问服务端和区块链管理客户端的告警进入部署流程。若配置为不允许自动部署则发告警通知管理员人工部署。部署模块在生成区块链组网信息时,会根据配置管理模块中服务器信息以及从区块链管理客户端获取的性能数据信息来综合生成,保证新的区块链网络所属服务器是满足区块链运行要求的,也可以由管理员配置生成;而组织结构信息同样从配置管理模块中获取。
配置管理模块:该模块由管理员设置组织结构信息,即不同联盟成员的组织信息,由管理员或联盟组织导入每个联盟成员所使用的服务器(可以是物理机或云服务器)信息。部署模块在创建区块链网络时,将根据这两个信息(服务器信息、组织结构信息)生成区块链网络节点信息,配置管理模块管理每个联盟成员当前可存储区块链节点信息,以及全部的区块链节点信息,并记录每个区块链节点数据对应的时间范围。当部署模块部署新的区块链网络后会发送消息给配置管理模块来更新当前可存储的区块链网络信息,并且配置管理模块会代表每个组织,通过区块链管理客户端的配置模块向区块链网络申请访问许可,并发送给访问服务端。
删除模块:该模块由管理员用来删除以失效的区块链网络,通过区块链管理客户端删除已失效的区块链网络节点。
实施例2:
以区块链管理技术方案为示例,设置所有区块链网络列,如表1所示:
表1为所有区块链网络列表示例
状态0表示可以存储,1表示不能存储但能读取,2表示已失效。
查询所有状态为0的列表,可以得到可存储区块链列表,该表存于区块链管理服务端,并向访问服务端同步。
设置区块链网络信息表属性,如表2所示,
表2为区块链网络信息表示例
通过区块链节点ID和区块链网络ID可以唯一确定一个区块链节点,所属组织是该节点所属的组织信息,组织对应了访问服务端,所以还包含访问服务端ID。IP是其部署的服务器IP,表中还包含多个管理端口,该表中的记录在需要创建新的区块链网络时由区块链管理服务端生成,并生成对应的部署文件或信息发送到区块链管理客户端进行部署。可选的当区块链网络为fabric时,部署文件为shell脚本文件及其对应的用于存储配置信息的yaml或json格式文件。
实施例3:
如图8所示,一种区块链网络扩展方法,包括如下步骤:
步骤1:区块链管理客户端的监控模块监控到磁盘不足,发送告警给区块链管理服务端。
步骤2:区块链管理服务端根据配置管理模块中各组织的服务器信息,向其上部署的区块链管理客户端发送部署请求。
步骤3:区块链管理客户端确认可以部署新的区块链节点,返回请求。
步骤4:区块链管理服务端从可以部署的区块链节点中选取1个或多个节点,构造相应的部署信息。
步骤5:区块链管理服务端发送部署信息给区块链管理客户端。
步骤6:区块链管理客户端根据部署信息构造相应的配置文件,并部署区块链网络节点,并安装存储操作记录所需的智能合约。
步骤7:区块链管理客户端通过管理员身份替访问服务端向区块链节点注册用户并获取访问凭证,(如节点CA颁发的公钥和证书),用于访问服务端访问节点时的认证。
步骤8:区块链管理客户端将节点部署的详细信息返回给区块链管理服务端,并返回访问凭证。
步骤9:区块链管理服务端收到部署成功的消息后更新区块链网络信息表,当所有节点部署成功后,更新区块链网络列表。
步骤10:区块链管理服务端将区块链网络信息发给访问服务端。
步骤11:区块链管理服务端将各个组织对应的节点信息和访问凭证发给区块链管理服务端。
步骤12:访问服务端更新区块链网络和节点信息以及访问凭证。
实施例4:
将取值可以穷举的字段(如系统、操作、操作对象等)进行编码,编码方法如下:设某个可穷举的字段t有n个不同取值,将取值的集合定为X,现构造0到n-1这n个数的二进制编码集合Y,定义X到Y的双射函数f使得X中的任意取值x都可以通过f(x)得到集合Y中的一个二进制编码y。根据Y中的任意编码y,可以通过f的逆函数(记为f-1),计算f-1(y)得到取值x。设k为满足2k≥n的最小自然数,则可以用k个位数来存储这n个编码。那么字段t可以使用k位来存储其对应的编码。实际使用时也可以对字段取值进行预留。
设取值可穷举的字段有n个,对每个字段i都用上述方法进行二进制编码,每个字段所占位数为ki个,将各字段拼接起来即可生成这些字段的编码。编码所占位数为k1到kn之和,即如图9所示给出了各字段编码拼接示例。
以操作记录编码方案示例:
例如:操作记录字段包括(时间戳,系统ID,用户ID,操作行为,操作对象,数量),其中时间戳,数量不编码,用户ID可以根据具体情况进行编码,其他字段编码方案如3所示:
表3为操作记录编码方案示例
如表所示,系统字段需要2位编码,操作字段需要2位编码,操作对象字段需要4位编码,共需要8位,1字节,实际操作时也可以分配更多位作为预留。
例如:若在用户(ID1)在系统1中修改物品7的数量改为20,系统、操作、操作对象这3个字段编码后2进制表示为01010110,用16进制表示为5A,整条记录内容为:(时间:2022-12-21-09:00:01,用户:1,编码字段:5A,数量:20)。该示例中仅编码了系统、操作、操作对象字段,其他字段可以根据情况进行编码。
当区块链网络使用fabric2.x时,可将数据存放于couchDB中,查询时可以使用多个索引字段进行查询。
将5A作为这条操作记录在区块链中的一个查询索引,同理将其他所有系统中对所有物品的所有操作,都进行相应编码,并将编码对应的16进制数表示作为查询索引。
实施例5:
以编码的查询方案示例:
例1:当查询条件为系统1中对物品7的修改操作,可以通过该索引5A查找到这条记录。
例2:当查询条件为系统1中的修改操作时,将查询所有编码的物品,查询索引依次为51、52、53…5A,将所有的查询结果合并成最终结果。
例3:当查询条件为系统1中对物品3的所有操作时,添加操作对应的2进制为01000010,修改为01010010,删除为01100010,索引分别为42、52、62。将所有的查询结果合并成最终结果。
实施例6:
以操作记录存取方案示例,包括:编号标签方法、操作记录存储方法和操作记录查询方法。
编号标签方法,包括如下步骤:
连续的操作记录可能存储于多个区块链网络,可能同一个时间戳对应了多条记录。仅根据时间戳不一定能还原操作记录的生成顺序。可选的当需要在查询时还原操作记录数据的存储顺序时,在放入缓存前或放入时,对每个操作记录加入序列号,以标识操作记录的生成顺序。
用2字节short int表示序列号,从0开始标记,超过65535时再从0开始标记。当同一个时间戳内数据量远小于65536条数据则不会产生歧义。假设最大数据量为10000,当65535和0只有一个存在,按照顺序排序,若两个都存在,则将0~10000之间的数排在65535的后面。
如图10所示,操作记录存储方法,包括如下步骤:
步骤1:信息系统将数据传入发送客户端对操作记录进行存储,该步骤也可以是发送客户端读取信息系统中的操作记录。
步骤2:发送客户端对操作记录数据进行处理,包括过滤(只保留关键操作)、格式化(转化为可以处理的格式)、编码(参考数据编码方案)、加密(可选操作)。
步骤3:发送客户端将处理后的操作记录发送给所属组织对应的访问服务端。
步骤4:访问服务端将数据存放到缓存中,可选的当需要在查询时还原操作记录数据的存储顺序时,在放入缓存时对每个操作记录加入序列号,所述序列号也将存储于区块链网络。
步骤5:访问服务端从缓存中取出最先放入的操作记录,依据区块链网络选择策略,从可存储区块链网络列表中选取一个区块链网络(示例中为区块链网络1)将操作记录消息发送给该访问服务端在该区块链网络中对应的节点(通过调用节点上部署的智能合约)。
步骤6:区块链网络(示例中为区块链网络1)中对应的节点通过智能合约接受操作记录,操作记录后续会被区块链网络共识后存储于区块链网络中各节点上。
步骤7:当有多个区块链网络时,每个区块链网络如步骤3-6可同时接收操作记录消息,以提升存储效率。
如图11所示,操作记录查询方法,包括如下步骤:
步骤1:信息系统调用查询客户端进行操作记录查询,并将查询参数传给插件。
步骤2:查询客户端对查询参数进行处理,对于编码的字段,也将对应的查询参数进行编码,如实施例5中示例。
步骤3:查询客户端发送查询请求给访问服务端。
步骤4:访问服务端根据其中的时间段字段在所有区块链列表中选择对应的区块链网络(例子中匹配了区块链网络1和2),并找到可访问的节点。
步骤5:将查询信息和访问凭证发送给区块链网络1节点进行查询。
步骤6:将查询信息和访问凭证发送给区块链网络2节点进行查询。
步骤7:将各区块链网络上的查询结果进行合并,按时间戳进行排序,可选的当要严格还原操作记录顺序时,则利用序列标签进行排序,如实施例6中所示。
本发明建立一种基于区块链的易扩展、可追溯的数据操作记录平台,因为区块链是去中心化的,每个对等节点存储同样的数据,具有抗毁性且防篡改性强的特性,将系统中关键操作信息记录在区块链上,当出现问题时可以用来进行问题回溯。并且针对区块链存储效率低,以及运行时间长后占用磁盘空间大的问题,提出了一种数据编码方案和相应的查询方案,可以在链上保存操作记录的全部内容,起到防篡改和抗毁的效果。并提出一套易扩展架构方案,当实时存储的数据量变大,或区块链存储效率降低,或区块链节点磁盘空间不足时,可以自动或通知管理员对区块链网络进行扩展,以满足数据存储需求。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (15)
1.一种易扩展、可追溯的数据操作记录系统,其特征在于:包括:发送客户端、查询客户端、访问服务端、区块链网络、区块链管理服务端和区块链管理客户端;
所述访问服务端接收所述发送客户端所发送的操作记录,根据发送策略从所有区块链网络中选择一个区块链网络,将操作记录发送给该区块链网络进行存储;接受查询客户端所发出的查询请求,并根据查询条件选择一个或多个区块链网络进行查询,并将查得的操作记录列表按照存储的先后顺序进行合并返回;所述访问服务端根据配置的访问规则管理哪些发送客户端和查询客户端可以对其进行访问;
所述区块链管理服务端通过所述区块链管理客户端对所述区块链网络进行管理,并将区块链网络信息和访问凭证同步给所述访问服务端;
所述访问服务端或所述区块链管理客户端发出告警给所述区块链管理服务端,所述区块链管理服务端则根据配置,自动或通知管理员来部署新的区块链网络。
2.根据权利要求1所述的一种易扩展、可追溯的数据操作记录系统,其特征在于:数据操作记录系统中还包括存在多个访问服务端,当区块链是联盟链时,支持多个组织的合作,每个所述访问服务端对应了其中一个组织,各组织根据自己的需求定制访问策略,管理组织可被访问的信息系统列表;当区块链是私有链时,只部署一个所述访问服务端;还包括当区块链是私有链时,根据使用场景部署多个所述访问服务端。
3.根据权利要求1所述的一种易扩展、可追溯的数据操作记录系统,其特征在于:所述访问服务端包括:访问控制模块、存储模块、查询模块和区块链交互模块;
所述访问控制模块,用来管理哪些信息系统可以访问访问服务端,还包含可访问的用户列表,以及每个用户的权限,每个用户拥有一个或多个权限;还包含CA,用户向CA申请证书,CA负责给用户颁发私钥;
所述访问服务端的存储模块包括接收模块、策略模块、发送模块、预警模块四个子模块;
接收模块接受外部信息系统的存储请求,将消息放入缓存,可选的,在消息中加入顺序标签;
发送模块从缓存中读取最先进入的操作记录数据,根据策略模块制定的发送策略从区块链网络列表选择一个可存储的区块链网络,并获取可访问的节点信息,根据节点信息调用区块链交互模块,由区块链交互模块将操作记录发送给区块链节点进行储存;
所述策略模块中的策略由管理员进行配置,所述策略包括但不限于:轮询的方式,根据配置的优先级来选择;
预警模块监控缓存区,当发现其中数据量超过阈值时,会发出告警给区块链管理服务端;
所述访问服务端的查询模块包括接受模块、查询模块、整合模块、返回模块四个子模块;
接受模块接受外部信息系统的查询请求;
查询模块根据查询请求中的时间段信息从全部区块链网络中选择包含该时间段数据的区块链网络列表,并根据所述区块链网络列表获取该查询模块所属的的访问服务端可以访问的区块链网络的节点信息;依次将查询请求信息和列表中的区块链网络的节点信息发送给区块链交互模块,由区块链交互模块将查询请求信息发送给区块链节点进行查询;将查询后返回的结果交给整合模块进行整合;
整合模块将返回的操作记录信息列表根据时间戳排序,如果时间戳相同,且在同一个区块链网络中,则根据返回的原顺序进行排序;如果时间戳相同,在不同区块链网络中的数据,如果有打顺序标签,则根据顺序标签排序;将排序好的操作记录列表交由返回模块返回给外部信息系统;
所述访问服务端的区块链交互模块管理区块链节点交互的身份凭证,即区块链网络CA颁发的私钥;将数据发送到区块链网络的节点提交交易,以及从区块链网络节点中根据查询条件查询相应的数据交易信息列表。
4.根据权利要求3所述的一种易扩展、可追溯的数据操作记录系统、方法,其特征在于:所述区块链网络列表包括但不限于区块链网络ID、起始时间、结束时间和状态字段,所述区块链网络ID是区块链网络的唯一标识,起始时间和结束时间分别标识区块链网络存储的最早的数据时间和最迟的数据时间,状态字段用来表示区块链网络是否可存储;所述区块链网络的节点信息包括但不限于:节点所属的区块链网络ID、组织信息、部署服务器IP、访问端口、访问凭证信息。
5.根据权利要求1所述的一种易扩展、可追溯的数据操作记录系统,其特征在于:所述区块链管理服务端包括:部署模块、删除模块、配置管理模块3个子模块,其中删除模块为可选模块;
所述部署模块向服务器上的所述区块链管理客户端发送部署的指令;所述部署模块发送的所述指令包括但不限于区块链网络的配置信息,以及每个节点所属的组织结构信息;所述部署模块由管理员调用部署模块提供接口进行部署,当区块链管理服务端配置为允许自动部署时,通过接受所述访问服务端和所述区块链管理客户端的告警进入部署流程;当区块链管理服务端配置为不允许自动部署时,则发告警通知管理员人工部署;所述部署模块在生成所述区块链网络的组网信息时,会根据所述配置管理模块中各组织提供的所述服务器信息以及从所述区块链管理客户端获取的性能数据信息来综合生成,用于保证新的所述区块链网络所属服务器是满足区块链运行要求的,所述组网信息由管理员配置生成;所述组织结构信息是从所述配置管理模块中获取;
所述配置管理模块管理每个组织成员当前可存储的区块链网络的节点信息,以及全部可访问的区块链网络的节点信息,并记录每个区块链节点所存储的操作记录数据对应的时间范围;当所述部署模块部署新的区块链网络后会发送消息给所述配置管理模块来更新当前可存储的区块链网络的节点信息,并且所述配置管理模块会为每个组织,通过所述区块链管理客户端向区块链网络中对应的节点申请访问凭证,并发送给区块链网络对应的访问服务端;
所述删除模块由管理员用来删除失效的所述区块链网络。
6.根据权利要求1所述的一种易扩展、可追溯的数据操作记录系统,其特征在于:所述区块链管理客户端运行在安装或者待安装区块链节点的服务器上,所述区块链管理客户端包括部署模块、监控模块、删除模块、配置管理模块4个子模块,其中删除模块为可选模块;
所述部署模块接受区块链管理服务端的部署模块发送的部署指令,并根据指令中的配置信息,在服务器上部署区块链网络节点;
所述监控模块定期检查所述服务器的性能指标,发现磁盘空间不足或其他性能指标不能满足要求时,生成告警信息并发送给所述区块链管理服务端;
所述删除模块接受所述区块链管理服务端的删除指令,并根据指令信息删除相应的区块链网络节点;
所述部署模块在部署完成后还会调用配置管理模块,以部署指令中的组织信息作为身份信息,向该服务器上的区块链网络节点申请访问凭证,并将其发送给所述区块链管理服务器。
7.根据权利要求1所述的一种易扩展、可追溯的数据操作记录系统,其特征在于:所述区块链网络的数量为多个,包括当前可继续存储的区块链网络,以及因为磁盘空间已满或其他原因不能用于继续存储的区块链网络,所有的所述区块链网络都可以用于查询;属于多个所述区块链网络中的节点可以部署在同一个服务器上。
8.根据权利要求1所述的一种易扩展、可追溯的数据操作记录系统,其特征在于:所述查询客户端包括:编码模块、发送模块、接受模块、解码模块、加密模块、解密模块,其中加密模块和解密模块为可选模块;
所述编码模块将查询请求中的部分查询关键字进行编码,所述部分查询关键字是存储时经过编码的关键字;
可选的当使用密文进行搜索时,对编码或非编码查询字段通过加密模块进行加密;
所述发送模块将查询关键字发送给所述访问服务端;
接受模块接受所述访问服务端返回的查询结果;
可选的解密模块对查询结果中操作记录的密文部分由进行解密;
解码模块对编码的部分进行解码,然后返回解码后的操作记录信息。
9.根据权利要求1所述的一种易扩展、可追溯的数据操作记录系统,其特征在于:所述发送客户端为插件时包括,编码模块、加密模块、消息发送模块,其中加密模块为可选模块;
所述外部信息系统通过调用所述发送客户端插件提供的接口将数据传给所述发送客户端,经过所述编码模块的处理将操作记录中的部分数据进行编码,可选的再通过所述加密模块对操作记录部分信息进行加密,所述加密信息是不用来做查询条件的信息,或者是作为查询条件但能够通过密文进行查询的信息;
当所述发送客户端不侵入所述外部信息系统时,提供接口接收外部信息系统的消息,可选的发送客户端还包括格式化模块,所述格式化模块可以将信息系统产生的操作记录转化为所述编码模块可以处理的数据,所述格式化模块是为了外部信息系统的具体操作记录格式而定制;当所述发送客户端不侵入所述外部信息系统时,通过读取所述外部信息系统的日志文件或内存获取操作记录信息。可选的发送客户端还包括读取模块,读取模块从文件或内存中读取操作记录,并进行信息过滤,再发送给格式化模块进行格式转化,所述读取模块是为了外部信息系统的具体日志文件类型和格式而定制。
10.一种操作记录数据存储方法,其特征在于:包括如下步骤:
步骤1:发送客户端对操作记录数据进行过滤、格式化、编码和加密的处理,其中,过滤、格式化和加密为可选操作;
所述过滤用于筛选需要存储的关键操作记录,由发送客户端中的读取模块完成;
所述格式化用于将操作记录数据转化为可以编码的格式,由发送客户端中的格式化模块完成;
所述编码用于将操作记录中的部分数据进行编码,对操作记录数据进行压缩,具体步骤如下:
将取值可以穷举的字段进行编码;
设某个可穷举的字段t有n个不同取值,将取值的集合定为X,现构造0到n-1这n个数的二进制编码集合Y,定义X到Y的双射函数f使得X中的任意取值x都通过f(x)得到集合Y中的一个二进制编码y;根据Y中的任意编码y,通过f的逆函数记为f-1,计算f-1(y)得到取值x;设k为满足2k≥n的最小自然数,则用k个位数来存储这n个编码;那么字段t使用k位来存储其对应的编码;还包括:实际使用时对字段取值进行预留;
所述加密用于对操作记录部分信息进行加密,加密信息是不用来做查询条件的信息,或者是作为查询条件但能够通过密文进行查询的信息;
步骤2:发送客户端将处理后的操作记录发送给所属组织对应的访问服务端;
步骤3:访问服务端的存储模块将操作记录数据存放到缓存中;
步骤4:当需要在查询时还原操作记录数据的存储顺序时,访问服务端在将操作记录放入缓存时对每个操作记录加入序列号作为其数据前缀,所述序列号也作为操作记录数据的一部分存储于区块链网络;
步骤5:访问服务端的存储模块从缓存中取出最先放入的操作记录,依据区块链网络选择策略,从区块链网络列表中选取一个可存储的区块链网络,将操作记录消息发送给该服务端在该网络中对应的节点。
11.一种操作记录数据查询方法,其特征在于:包括如下步骤:
步骤1:外部信息系统调用查询客户端进行操作记录查询,并将查询参数传给查询客户端;
步骤2:查询客户端对传入的查询参数进行处理,所述查询参数中如果有存储时被编码的字段,针对被编码的字段构造对应的查询请求信息;编码字段查询请求信息构造步骤如下:
设被编码存储的字段有n个,其中用到的查询字段为m个,记为t1,t2,…tm,对任意一个查询字段ti,i∈(1,2,…,m),根据查询时该字段传入的值xi,通过存储时定义的双射函数f,计算f(xi)得到的值yi为其对应编码,m个字段一共得到m个编码;
若m=n,即编码中所有字段都被查询,则将这m个编码按照存储时的排列顺序进行拼接得到查询请求信息;
若除了被查询字段以外另有n-m个字段,记为t1’,t2’,…tn-m’,对其中任意一个非查询字段tj’,j∈(1,2,…,n-m),设该字段有kj个不同取值,根据存储时的编码方案,每个取值对应了一个编码,设该字段的编码集合为Sj’,则n-m个字段一共生成了n-m个编码集合;
被查询的m个字段每个字段ti根据传入的查询值xi确定了一个编码值yi,yi构成一个单值集合{yi},记为Si;
将n个编码集合按照对应字段拼接时的顺序排好,重新排好序的集合记为S1,S2,…Sn,做笛卡尔积S1×S2×…×Sn,设笛卡尔积的结果集合中有z个元素,任意一个元素记为<y1,y2,…,yn>,将y1,y2,…,yn进行拼接得到一个查询编码,一共得到z个查询编码,将z个查询编码字段与其他未被编码的查询字段一起构成查询请求信息;
步骤3:查询客户端发送查询请求信息给访问服务端,访问服务端根据其中的时间段字段在所有区块链列表中选择对应的区块链网络,若没有时间段信息则选择所有区块链网络,并根据区块链网络找到该访问服务端可访问的区块链网络节点信息;
步骤4:访问服务端将查询请求信息和访问凭证发送给各区块链网络节点进行查询;查询条件中的所有未编码字段和针对被编码字段的z个查询编码中的每一个进行组合,需要进行z次查询;
步骤5:区块链网络节点将查询结果返回给访问服务端,访问服务端将各区块链网络上的查询结果进行合并,按时间戳进行排序。
12.根据权利要求11所述的一种操作记录数据查询方法,其特征在于:还包括:
当查询结果需要还原操作记录顺序时,对于时间戳相同的数据,则利用进入缓存时加入的序列号进行排序。
13.根据权利要求11所述的一种操作记录数据查询方法,其特征在于:还包括:
访问服务端将查询结果列表返回给查询客户端,查询客户端对于每条数据需要进行处理,将其还原成原数据格式,包括如下步骤:
若操作记录部分信息存储前进行过加密,对加密字段进行相应的解密;
对操作记录中合并编码的字段,进行解码操作;设被编码的字段有n个,对任意字段t在编码时的位置和编码位数获取字段编码值y,根据编码时所定义的双射函数f的逆函数f-1,计算f-1(y)得到取值x,则x为字段t对应的值;将每个编码字段都用同样方法求得对应取值。
14.一种区块链网络扩展方法,其特征在于:包括如下步骤:
步骤1:当区块链管理客户端的监控模块监控到磁盘不足时,发送告警给区块链管理服务端;或者当访问服务端发现缓存操作记录数据量超过阈值时,发送告警给区块链管理服务端;
步骤2:区块链管理服务端根据配置管理模块中各组织的服务器信息,向服务器上部署的区块链管理客户端发送部署请求;
步骤3:区块链管理客户端根据请求信息,判断当前服务器磁盘空间、性能指标是否可以部署新的区块链,并返回相应内容的响应;
步骤4:区块链管理服务端从响应可以部署的节点中选取1个或多个节点,构造相应的部署信息,若未找到满足条件的服务器则发送告警信息给管理员;
步骤5:区块链管理服务端发送部署指令给区块链管理客户端,所述部署指令中包含所述部署信息;
步骤6:区块链管理客户端根据部署信息构造相应的配置文件以及部署脚本,或者所述配置文件和部署脚本由区块链管理服务端生成,并随部署指令下发,部署区块链网络节点,再在区块链网络节点上安装存储和查询操作记录所需的智能合约;
步骤7:区块链管理客户端以区块链网络节点管理者身份代访问服务端向区块链网络节点注册用户并获取访问凭证,所述访问凭证用于访问服务端在所述区块链网络节点存储或查询数据时的身份认证;
步骤8:区块链管理客户端将区块链网络节点部署成功的信息返回给区块链管理服务端,并返回访问凭证及部署信息;
步骤9:区块链管理服务端收到部署成功的消息后,更新区块链网络列表以及相关区块链网络节点信息,并将更新后的区块链网络列表以及新增的访问服务端可访问的区块链网络节点对应的信息和访问凭证发送给所述访问服务端。
15.根据权利要求14所述的一种区块链网络扩展方法,其特征在于:
所述告警用于通知所述区块链管理服务端需要扩展新的区块链网络,可选的所述告警包含但不限于:时间、告警类型、告警原因;若告警原因是磁盘不足,说明当前区块链网络不适合继续存储数据,当扩展出新区块链并切换存储后,需要将其在所述区块链网络列表中的状态改为不可存储;所述部署信息包括所述服务器所对应的组织信息,以及所要部署的所述区块链网络节点标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310147280.8A CN116192499A (zh) | 2023-02-21 | 2023-02-21 | 一种易扩展、可追溯的数据操作记录系统、方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310147280.8A CN116192499A (zh) | 2023-02-21 | 2023-02-21 | 一种易扩展、可追溯的数据操作记录系统、方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116192499A true CN116192499A (zh) | 2023-05-30 |
Family
ID=86448310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310147280.8A Pending CN116192499A (zh) | 2023-02-21 | 2023-02-21 | 一种易扩展、可追溯的数据操作记录系统、方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116192499A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116976898A (zh) * | 2023-09-25 | 2023-10-31 | 腾讯科技(深圳)有限公司 | 一种数据获取方法、数据可视化方法、装置及相关产品 |
-
2023
- 2023-02-21 CN CN202310147280.8A patent/CN116192499A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116976898A (zh) * | 2023-09-25 | 2023-10-31 | 腾讯科技(深圳)有限公司 | 一种数据获取方法、数据可视化方法、装置及相关产品 |
CN116976898B (zh) * | 2023-09-25 | 2024-02-23 | 腾讯科技(深圳)有限公司 | 一种数据获取方法、数据可视化方法、装置及相关产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114079660B (zh) | 一种高性能分布式存储区块数据、时间戳、跨链通信与数据协同方法 | |
CN112667749B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN102067557B (zh) | 使用本地托管高速缓存和密码散列函数来减少网络通信的方法和系统 | |
CN107220559B (zh) | 一种针对不可篡改文件的加密存储方法 | |
CN110147684B (zh) | 用于实现区块链数据隐私保护的方法及设备 | |
CN100357901C (zh) | 一种主设备和备份设备之间数据核查的方法 | |
CN110502916A (zh) | 一种基于区块链的敏感性数据处理方法与系统 | |
KR101285281B1 (ko) | 자가조직 저장매체의 보안 시스템 및 그 방법 | |
US20110107100A1 (en) | Method and system for providing secure codes for marking on items | |
AU2019223875A1 (en) | Methods, application server, block chain node and media for logistics tracking and source tracing | |
CN116192499A (zh) | 一种易扩展、可追溯的数据操作记录系统、方法 | |
CN112632129A (zh) | 一种码流数据管理方法、装置及存储介质 | |
CN109284426B (zh) | 一种基于权限等级的多数据文档分类系统 | |
CN111125094A (zh) | 基于区块链的电力数据存储系统 | |
CN115001852B (zh) | 一种网络操作系统中应用内生安全数据库存取方法和装置 | |
CN115859362A (zh) | 基于区块链侧链的数据存储系统、方法、设备及介质 | |
CN108694331A (zh) | 一种数据存储方法、装置、系统及计算机可读存储介质 | |
CN115757280A (zh) | 一种基于分布式文档存储的云文档管理系统 | |
CN114389878B (zh) | 一种区块链分片方法及区块链网络系统 | |
EP2306377A1 (en) | Method and system for providing secure codes for marking on items | |
CN104182418A (zh) | 节点元数据获取方法与装置 | |
CN101730085B (zh) | 通信录数据同步方法和系统 | |
KR100912127B1 (ko) | 메타데이터 관리 시스템 및 메타데이터 관리 방법 | |
CN114491647A (zh) | 一种基于区块链的数据检索方法和系统 | |
CN113448926A (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 |