CN117370463A - 基于区块链的数据存证方法、装置及存储介质 - Google Patents

基于区块链的数据存证方法、装置及存储介质 Download PDF

Info

Publication number
CN117370463A
CN117370463A CN202311398968.XA CN202311398968A CN117370463A CN 117370463 A CN117370463 A CN 117370463A CN 202311398968 A CN202311398968 A CN 202311398968A CN 117370463 A CN117370463 A CN 117370463A
Authority
CN
China
Prior art keywords
data
verification
zero knowledge
zero
certification
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
CN202311398968.XA
Other languages
English (en)
Inventor
雷俊
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
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
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311398968.XA priority Critical patent/CN117370463A/zh
Publication of CN117370463A publication Critical patent/CN117370463A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本公开提供了一种基于区块链的数据存证方法、装置及存储介质。方法通过接收存证上链请求,存证上链请求包括存证数据的零知识证明数据;对零知识证明数据进行零知识校验,得到零知识校验结果;当零知识校验结果指示对零知识证明数据的零知识校验合格时,基于零知识证明数据生成区块数据;将区块数据发送给区块链网络中的验证节点进行验证,并接收验证节点返回的验证结果;当验证结果指示区块数据验证合格时,将区块数据添加到区块链中。该方法可以避免存证数据的明文上链存储,进而可以提升存证数据的安全性。

Description

基于区块链的数据存证方法、装置及存储介质
技术领域
本公开涉及区块链技术领域,特别是涉及一种基于区块链的数据存证方法、装置及存储介质。
背景技术
存证可以理解为证据保全,是为了预防可能产生的纠纷,而提前固定证据并将其存储在安全、稳定载体中的一种行为。存证的对象多事电子数据证据,通常存证的载体是具有高度安全防护的终端,例如特定的服务器。近年来,区块链技术发展迅速,而区块链具有两大核心特点:数据难以篡改和去中心化;这两个特点保证了区块链中记录的数据更加真实可靠,安全性更高。该特性恰好匹配了数据存证对存储环境安全性的极高要求,因而使得基于区块链的存证技术得到极大的发展。
基于区块链的存证技术的应用场景十分广泛,涉及金融、教育、科技以及出版等多个领域。然而,目前基于区块链的存证技术,仍然存在着一定的安全问题,导致存证数据的安全性无法得到保障。
发明内容
本公开实施例提供了一种基于区块链的数据存证方法、装置、存储介质及计算机设备,该方法可以提升存证数据的安全性。
根据本公开的一方面,提供了一种基于区块链的数据存证方法,包括:
接收存证上链请求,所述存证上链请求包括存证数据的零知识证明数据;
对所述零知识证明数据进行零知识校验,得到零知识校验结果;
当所述零知识校验结果指示对所述零知识证明数据的零知识校验合格时,基于所述零知识证明数据生成区块数据;
将所述区块数据发送给区块链网络中的验证节点进行验证,并接收验证节点返回的验证结果;
当所述验证结果指示所述区块数据验证合格时,将所述区块数据添加到区块链中。
根据本公开的一方面,提供了一种基于区块链的数据存证装置,包括:
接收单元,用于接收存证上链请求,所述存证上链请求包括存证数据的零知识证明数据;
校验单元,用于对所述零知识证明数据进行零知识校验,得到零知识校验结果;
生成单元,用于当所述零知识校验结果指示对所述零知识证明数据的零知识校验合格时,基于所述零知识证明数据生成区块数据;
验证单元,用于将所述区块数据发送给区块链网络中的验证节点进行验证,并接收验证节点返回的验证结果;
添加单元,用于当所述验证结果指示所述区块数据验证合格时,将所述区块数据添加到区块链中。
可选地,在一些实施例中,所述基于区块链的数据存证装置还包括零知识证明生成单元,所述零知识证明生成单元,包括:
第一获取子单元,用于获取存证数据;
第一生成子单元,用于生成所述存证数据的可信时间戳以及哈希字符串;
处理子单元,用于对所述存证数据、所述可信时间戳以及所述哈希字符串进行零知识处理,得到零知识证明数据。
可选地,在一些实施例中,所述处理子单元,包括:
第一获取模块,用于获取零知识证明生成算法;
处理模块,用于基于所述零知识证明生成算法对所述存证数据、所述可信时间戳以及所述哈希字符串进行零知识处理,得到零知识证明数据。
可选地,在一些实施例中,本公开提供的基于区块链的数据存证装置,还包括:
第二获取子单元,用于获取所述存证数据的来源信息,并确定所述来源信息对应的存证应用账号信息;
发送子单元,用于向所述存证应用账号信息对应的存证应用客户端发送所述存证标签数据,以使得所述存证应用客户端对应的对象基于所述存证标签数据对所述存证数据进行验证。
可选地,在一些实施例中,存证上链请求中还包括请求对象的身份信息,所述校验单元,包括:
第一校验子单元,用于对所述身份信息进行身份校验,得到身份校验结果;
第二校验子单元,用于当所述身份校验结果为校验合格时,对所述零知识证明数据进行零知识校验,得到零知识校验结果。
可选地,在一些实施例中,所述第一校验子单元,包括:
识别模块,用于基于所述身份信息对所述请求对象的存证权限进行识别;
第一确定模块,用于当识别到所述请求对象具有预设存证权限时,确定身份校验结果为校验合格;
第二确定模块,用于当识别到所述请求对象不具有预设存证权限时,确定身份校验结果为校验不合格。
可选地,在一些实施例中,所述第二校验子单元,包括:
第二获取模块,用于获取零知识校验算法;
校验模块,用于基于所述零知识校验算法对所述零知识证明数据进行零知识校验,得到零知识校验结果。
可选地,在一些实施例中,所述校验模块,包括:
第一确定子模块,用于当校验确定所述零知识证明数据有效时,确定零知识校验结果为校验合格;
第二确定子模块,用于当校验确定所述零知识证明数据无效时,确定零知识校验结果为校验不合格。
可选地,在一些实施例中,所述存证上链请求中还包括请求标签信息与存证标签信息,所述基于区块链的数据存证装置,还包括:
第二生成子单元,用于基于所述请求标签信息与所述存证标签信息生成状态键值对;
存储子单元,用于将所述状态键值对存储至状态数据库中。
可选地,本公开提供的基于区块链的数据存证装置还包括存证数据校验单元,所述存证数据校验单元包括:
接收子单元,用于接收所述存证数据的校验请求,所述校验请求中包含目标存证标签信息;
确定子单元,用于根据所述目标存证标签信息在所述状态数据库中确定目标状态键值对,并基于所述目标状态键值对确定目标请求标签信息;
第三获取子单元,用于当检测到存证合约中存在所述目标存证标签信息以及所述目标请求标签信息时,在区块链中获取所述目标存证标签信息对应的目标零知识证明数据;
输出子单元,用于当检测到所述目标零知识证明数据有效时,输出校验成功的校验结果。
可选地,在一些实施例中,所述第三获取子单元,包括:
第三确定模块,用于根据所述目标存证请求标签在所述区块链中确定目标区块;
第三获取模块,用于在所述目标区块对应的区块数据中获取目标零知识证明数据。
根据本公开的一方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的基于区块链的数据存证方法。
根据本公开的一方面,提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的基于区块链的数据存证方法。
根据本公开的一方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被计算机设备的处理器读取并执行,使得该计算机设备执行如上所述的基于区块链的数据存证方法。
本公开实施例中,通过接收存证上链请求,存证上链请求包括存证数据的零知识证明数据;对零知识证明数据进行零知识校验,得到零知识校验结果;当零知识校验结果指示对零知识证明数据的零知识校验合格时,基于零知识证明数据生成区块数据;将区块数据发送给区块链网络中的验证节点进行验证,并接收验证节点返回的验证结果;当验证结果指示区块数据验证合格时,将区块数据添加到区块链中。
以此,本公开提供的基于区块链的数据存证方法,在将存证数据在区块链上进行上链存储时,只将存证数据对应的零知识证明数据进行上链存储,避免了存证数据的明文上链。如此,可以避免链上数据的公开导致存证数据的明文泄露,进而大大提升了存证数据的安全性。
本公开的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本公开技术方案的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开的技术方案,并不构成对本公开技术方案的限制。
图1是根据本公开的实施例的基于区块链的数据存证方法应用的系统构架图;
图2A是数据共享系统的结构示意图;
图2B是区块数据的结构示意图;
图2C是区块生成流程示意图;
图3是本公开提供的基于区块链的数据存证方法的流程示意图;
图4为本公开中生成存证数据的零知识证明数据的过程示意图;
图5是本公开中存证数据的零知识证明上链的过程示意图;
图6是本公开中对存证数据进行存证校验的流程示意图;
图7为本公开提供的基于区块链的数据存证方法的另一流程示意图;
图8为本公开提供的基于区块链的存证方法的整体架构示意图;
图9为本公开实施例提供的基于区块链的数据存证装置的结构示意图;
图10是实施根据本公开的一个实施例的各方法的终端结构图;
图11是实施根据本公开的一个实施例的各方法的服务器结构图。
具体实施方式
为了使本公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本公开,并不用于限定本公开。
对本公开实施例进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释:
零知识证明(Zero Knowledge Proof,ZKP):在一个系统中,一方(证明者)向另一方(检验者)证明某个命题的正确,但是在这个过程中,除了该命题为真之外,不会泄露任何其他的信息,既证明了命题,又可以保护隐私。
存证:即保存证据,或者保存数据,多用于电子证据方面。电子数据存证是将电子数据证据信息保存在安全稳定的数据库中,以便在需要时予以调用,同时它还采用了特定的技术以便能将这种过程通过数据予以记录,来证明特定时间的电子数据的状态,也可来证明电子数据在存储后并未被篡改。具体可以应用在知识产权证明、电子票据以及电子档案证明等领域中。其中,基于区块链的存证是存证的方式之一。
区块链(Blockchain):区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营检测等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营检测模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、检测网络情况、检测节点设备健康状态等。
相关技术中,在基于区块链的存证系统中,当接收到对象发送的存证数据后,会先将存证数据计算出一个哈希字符串,然后将哈希字符串和一些备注信息结合在一起上链。然而,这些备注信息中往往会存在一些例如对象信息、存证数据的关键字信息等较为隐私的个人数据;但上链存储的链上数据是完全透明的,而且会存储在链上的所有节点上,如此便有可能存在信息泄露的风险,导致存证数据的安全性不足。此外,存证系统在对存证数据进行存证时,还会通过时间戳服务器生成存证数据的可信时间戳,在存证数据上链时,会将前述哈希字符串、备注信息、可信时间戳以及存证系统生成的存证ID(身份标识符)一起上链存储。而备注信息和可信时间戳的数据量较大,会占用较大的内存空间,而区块链中的存储空间有限,区块数据较大会导致区块链中能够存储的区块链降低,进而导致区块链中能存储的交易量下降。为在一定程度上解决上述存证方法存在的数据安全问题以及存储空间占用量大的问题,本公开提供一种基于区块链的数据存证方法,以期能够提升存证数据的安全性,以及在一定程度上提升区块链的可处理交易量。
本公开实施例应用的系统体系构架及场景说明
图1是根据本公开的实施例的基于区块链的数据存证方法所应用的系统构架图。它包括终端140、互联网130、网关120、服务器110以及区块链网络150等。
终端140具体可以为装载存证应用客户端的终端,包括桌面电脑、膝上型电脑、PDA(个人数字助理)、手机、车载终端、家庭影院终端、专用终端、智能语音交互设备、智能家电、飞行器等多种形式。另外,它可以是单台设备,也可以是多台设备组成的集合。终端140可以以有线或无线的方式与互联网130进行通信,交换数据。
服务器110具体可以为存证应用对应的服务器,用于对存证应用客户端发送的存证请求进行响应和相应的数据处理。服务器110是指能对终端140提供某些服务的计算机系统。相对于普通终端140来说,服务器110在稳定性、安全性、性能等方面都要求更高。服务器110可以是网络平台中的一台高性能计算机、多台高性能计算机的集群、一台高性能计算机中划出的一部分(例如虚拟机)、多台高性能计算机中划出的一部分(例如虚拟机)的组合等。
网关120又称网间连接器、协议转换器。网关在传输层上实现网络互连,是一种充当转换作用的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。同时,网关也可以提供过滤和安全功能。终端140向服务器110发送的消息要通过网关120发送到相应的服务器110。服务器110向终端140发送的消息也要通过网关120发送到相应的终端140。
区块链网络150具体可以为对存证数据进行存储的分布式账本。具体地,区块链网络150可以为图2A所示的数据共享系统100。数据共享系统100中包含了多个节点101,多个节点101可以是指数据共享系统中的各个客户端。其中,节点101可以为终端也可以为服务器。每个节点101在进行正常工作时可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享系统中的任意节点接收到输入信息时,数据共享系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。
对于数据共享系统中的每个节点,均具有与其对应的节点标识,而且数据共享系统中的每个节点均可以存储有数据共享系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至数据共享系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明。
表1节点标识示意表
数据共享系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图2B,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图2C,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享系统中其他节点的节点标识,将新生成的区块分别发送给其所在的数据共享系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
本公开实施例的基于区块链的数据存证方法具体可以在数据共享系统100中的节点101中实现。例如,当终端140接收到对象输入的存证数据和存证触发操作时,便可以基于接收到的存证数据生成存证请求经互联网130和网关120发送到服务器110中。服务器110在接收到存证请求和存证数据后,便可以生成存证数据对应的存证ID、哈希字符串以及可信时间戳。在本公开实施例中,服务器110还可以生成存证数据的零知识证明数据。然后,服务器110向数据共享系统100中任一或任意多个节点101发送包含存证数据的零知识证明数据的存证上链请求,节点101接收到存证上链请求后,对其中的零知识证明数据进行零知识校验,得到零知识校验结果;当零知识校验结果指示对零知识证明数据的零知识校验合格时,基于零知识证明数据生成区块数据。然后,节点101将区块数据发送给共享系统100中的其他节点101进行验证,并接收验证节点返回的验证结果。当验证结果指示区块数据验证合格时,节点101便可以将区块数据添加到区块链中实现存证数据的零知识证明数据的上链存储。
本公开实施例可以应用在多种场景下,例如在知识产权领域中将作品进行存证的场景、在金融领域中将对象的贷款信息进行存证的场景、在个人信息保护领域中将个人档案进行存证的场景、在司法领域中将案件证据进行存证的场景等。
本公开实施例的总体说明
根据本公开的一个实施例,提供了一种基于区块链的数据存证方法。该方法可以用于前述在知识产权领域中将作品进行存证的场景、在金融领域中将对象的贷款信息进行存证的场景、在个人信息保护领域中将个人档案进行存证的场景、在司法领域中将案件证据进行存证的场景,还可以应用于其他的数据存证场景。
如图3所示,为本公开提供的基于区块链的数据存证方法的一个流程示意图。该方法可以应用于数据存证装置,该数据存证装置可以集成在计算机设备中,计算机设备具体可以为数据库或数据仓库对应的服务器。该基于区块链的数据存证方法可以包括:
步骤310,接收存证上链请求。
相关技术中,在基于区块链的存证系统中,存证服务器将对存证数据生成哈希字符串和可信时间戳,然后将哈希字符串、可信时间戳、存证数据相关的备注数据以及对该存证行为生成的存证ID都作为存证数据上传到区块链中进行存证。在将这些数据进行上链存储后,存证应用会向对象发送存证ID,在后续的任意时间,对象都可以使用存证ID来链上验证存证数据的有效性。由于链上数据的公开透明的特性,使得上链的数据均完全公开,而上链的数据中包含的一些备注数据中会包含存证数据的相关信息,例如关键字信息、对象身份信息等较为隐私且敏感的信息,这些信息的公开会导致存证对象的信息泄露,进而影响对象的信息安全以及存证数据的数据安全。例如,当通过备注信息了解到链上存储的存证数据为某个特殊对象的存证数据;而区块链存储的数据也并非完全的安全,仍然可以通过控制一半以上的节点的方式来控制区块链并进一步对区块链中存储的数据进行篡改;进而通过采用上述方法来篡改该特殊对象的存证数据,最终影响存证数据的安全。对此,本公开实施例提供了一种对存证数据进行零知识处理,并将存证数据的零知识证明进行上链,避免存证数据明文上链的方法,该方法可以大大提升存证数据的安全性。下面对该方法进行详细介绍。
其中,在本公开实施例中,可以先接收存证上链请求,该存证上链请求具体可以为存证系统的存证服务器(或存证终端,下同,不再赘述)向区块链中的节点发送的存证上链请求,该请求的目的是将存证数据上链存储。在存证上链请求中,包含了存证数据的零知识证明数据,此外存证上链请求中还可以包括存证ID以及存证服务器的签名。
其中,在一些实施例中,存证数据的零知识证明数据可以通过如下方式生成:
获取存证数据;
生成存证数据的可信时间戳以及哈希字符串;
对存证数据、可信时间戳以及哈希字符串进行零知识处理,得到零知识证明数据。
其中,在本公开实施例中,存证数据的零知识证明数据为依附在存证上链请求中,由存证服务器发送给区块链节点,因此本公开中存证数据的零知识证明数据具体可以在存证服务器中生成。具体地,存证服务器可以先获取存证数据,此处存证数据具体可以为对象输入的需要进行存证的数据,也可以为由存证终端发送给存证服务器的需要进行存证的数据。存证数据具体可以为某个具有知识产权的作品,例如一篇文章、一幅画像或者一个设计稿等;也可以为某个对象在某银行的贷款合同或者某两个自然人之间的借条;也可以为某个对象的身份档案信息等。
在获取到存证数据后,可以生成存证数据的可信时间戳。其中,可信时间戳具体可以为由时间戳服务器生成的。具体地,可信时间戳可以是由联合新人时间戳服务中心根据国际时间戳标准签发的,能证明数据电文(各种电子文件和电子数据)在一个时间点是已经存在的、完整的、可验证的并具备法律效力的电子凭证。其核心服务技术是通过将对象电子数据的哈希值和权威时间源绑定提供司法待证实时信息和客观存证功能。可信时间戳主要用于电子文件防篡改和事后依赖,确定电子文件产生的准确时间,是电子数据存证过程中的重要依据。在一些实施例中,在生成存证数据对应的可信时间戳后,还可以进一步对该可信时间戳进行加密,得到加密的可信时间戳。
此外,存证服务器在接收到对象发送的存证请求以及存证数据后,还会为该存证请求生成一个存证标签数据,该存证标签数据具体可以为存证ID。以及,存证服务器会对接收到的存证数据进行哈希计算,得到存证数据的哈希字符串。其中,哈希运算的主要作用是用于进行数据加密,将任何一串数据输入到哈希加密算法中将得到一个256为的哈希值(散列值)。其特点是,相同的数据输入将得到相同的结果,输入数据只要稍有变化则将得到一个前叉万别的结果,且结果无法事先预知。具体来说,哈希算法就是将数据打乱混合,压缩成摘要,使得数据量变小。
在生成了存证数据对应的可信时间戳、存证ID以及哈希字符串后,本公开实施例中并非像现有技术那样直接将可信时间戳、存证ID、哈希字符串以及存证数据(或备注信息)进行上链存储,而是对可信时间戳、哈希字符串以及存证数据进行零知识计算,得到存证数据对应的零知识证明数据,然后将存证数据对应的零知识证明数据进行上链存储。其中,零知识证明是指能够在不披露生命本身分情况下,验证声明有效性的一种方法。通过该方法,一方(证明着)可以向另一方(验证者)证明某事是真实的,除了证实特定声明之外,不会透露任何信息。如此,通过将存证数据的零知识证明数据进行上链存储,可以避免存证数据的明文数据在链上公开。而且,当需要对存证数据进行验证时,只需要通过对链上存储的零知识证明数据进行验证有效性,便可以证实存证数据是否真实上链存储了。
此外,在相关技术中,为了保证上链数据的真实性和可靠性,在对存证数据进行上链存储时,需要将存证数据的哈希字符串和加密可信时间戳一同进行上链存储,而哈希字符串和加密的可信时间戳都会占据一定的内存空间,尤其是可信时间戳会占据较大的内存空间。而区块链作为分布式的数据库,其中的存储空间有限,如果每个区块中包含的数据量较大,会导致区块链能处理的交易数量大大下降,进而降低了区块链的交易处理能力。对此,在本公开实施例中,在计算存证数据的零知识证明数据时,可以同时对存证数据、哈希字符串以及可信时间戳进行零知识计算,得到零知识证明数据。然后,仅将零知识证明数据上链存储即可,该方法可以大大降低链上存储的数据量,进而可以提升区块链的交易处理能力。
其中,在一些实施例中,对存证数据、可信时间戳以及哈希字符串进行零知识处理,得到零知识证明数据,包括:
获取零知识证明生成算法;
基于零知识证明生成算法对存证数据、可信时间戳以及哈希字符串进行零知识处理,得到零知识证明数据。
其中,零知识证明具体可以分为交互式零知识证明和非交互式零知识证明,但是交互式零知识证明的用途有限,因为交互式零知识证明需要证明着和验证者双方同时在线进行反复的交互。即使验证者相信证明者是诚实的,该证明也无法用于独立验证。为了解决该问题,相关技术人员提出了非交互式零知识证明,非交互式零知识证明只需要参与者(证明者和验证者)之间进行一轮沟通即可,证明者将秘密信息输入到一个特殊算法中,然后计算出一个零知识证明,这个证明会被发送给验证者,验证者使用另一个算法来检验证明者是否知道秘密信息。
在本公开实施例中,具体可以采用非交互式零知识证明来实现。具体地,存证服务器可以先获取零知识证明生成算法,然后,基于获取到的零知识证明生成算法来对存证数据、可信时间戳以及哈希字符串进行零知识处理,得到存证数据对应的零知识证明数据。其中,零知识证明生成算法具体可以采用零知识简洁非交互式知识论(Zero-KnowledgeSuccinct Non-Interactive Argument of Knowledge,ZK-SNARK)或者零知识可扩容透明知识论证(Zero-Knowledge Scalable Transparent Argument of Knowledge,ZK-STARK)中的任意一种。其中,零知识简洁非交互式知识论需要初始化公共参数,这个参数不能泄露。但ZK-SNARK生成的证明相对比较小,验证的代价小;零知识可扩容透明知识论证不需要公共参数的生成,但是生成的证明较大,验证的代价大。在本公开实施例中,为了进一步降低区块链中内存占用以及提升存证校验的效率,具体可以采用零知识简洁非交互式知识论来进行零知识证明数据的生成。
在一些实施例中,基于零知识证明生成算法对存证数据、可信时间戳以及哈希字符串进行零知识处理,得到零知识证明数据之后,还包括:
获取存证数据的来源信息,并确定来源信息对应的存证应用账号信息;
向存证应用账号信息对应的存证应用客户端发送存证标签数据,以使得存证应用客户端对应的对象基于存证标签数据对存证数据进行验证。
在本公开实施例中,存证服务器在生成存证数据的零知识证明数据后,可以将存证数据的零知识证明数据和存证ID发送给区块链中的节点进行上链存储,同时存证服务器还可以将存证ID发送给发起该存证数据的存证的对象,以便该对象或其他对象后续可以采用该存证ID对存证数据进行校验。
具体地,可以先获取存证数据的来源信息,并确定来源信息对应的存证应用账号信息。即可以获取向存证服务器发送该存证请求以及存证数据的存证应用客户端中登录的对象的账号信息。存证服务器在生成存证ID后,便可以将该存证ID发送给上述存证应用账号信息对应的存证应用客户端。或者,在一些实施例中,在生成存证ID后,存证服务器也可以先不向对应的存证应用客户端发送存证ID,当确认存证数据对应的零知识证明数据已经上链存储后,再向存证应用账号信息对应的存证应用客户端发送存证ID。
如图4所示,为本公开中生成存证数据的零知识证明数据的过程示意图。如图所示,存证服务器410中包含了存证应用接口411、存证数据处理模块412以及零知识生成模块413。当存证服务器410接收到存证请求时,存证应用接口411提取出其中的存证数据并发送给存证数据处理模块进行处理,同时向时间戳服务器420发送时间戳生成请求。时间戳服务器420生成可信时间戳并将可信时间戳发送给存证数据处理模块412。存证数据处理模块412对存证数据进行哈希处理得到哈希字符串,并结合存证请求中输入的备注数据确定存证数据的备注信息。然后存证数据处理模块412将生成的哈希字符串、备注信息以及时间戳服务器420生成的可信时间戳(可加密)发送给零知识生成模块413。零知识生成模块413调用零知识生成算法对接收到的数据进行零知识处理,得到存证数据的零知识证明数据。
步骤320,对零知识证明数据进行零知识校验,得到零知识校验结果。
在接收到包含存证数据的零知识证明数据以及存证ID的存证上链请求后,需要先对存证上链请求中的零知识证明数据进行零知识校验,以确认零知识证明数据的有效性。当校验确认了零知识证明数据有效后,才将存证数据的零知识证明数据进行上链存储。
在一些实施例中,存证上链请求中还包括请求对象的身份信息,对零知识证明数据进行零知识校验,得到零知识校验结果,包括:
对身份信息进行身份校验,得到身份校验结果;
当身份校验结果为校验合格时,对零知识证明数据进行零知识校验,得到零知识校验结果。
在本公开实施例中,存证上链请求中不仅包含了存证数据的零知识证明数据,还可以包括存证ID以及请求对象的身份信息,此处请求对象的身份信息具体可以为请求对象的签名数据。在本实施例中,在对存证上链请求中包含的零知识证明数据进行校验之前,可以先对发起存证上链请求的对象的身份信息进行身份校验,当身份校验合格时,再对零知识证明数据进行零知识校验,得到零知识校验结果。其中,此处的存证上链请求可以理解为在区块链中发起的一笔交易,而存证上链请求的发起者,即前述存证服务器可以理解为发起这笔交易的对象。在对交易进行处理之前,需要先对交易发起的对象进行鉴权,以确保交易发起的对象具有交易发起的权限。若对交易发起的对象进行鉴权失败,则无法完成存证数据的上链,进而导致数据存证失败。具体地,由于存证上链请求中也包含了交易发起对象的签名数据,对交易发起对象进行鉴权具体可以对该签名数据进行校验,得到交易发起对象的身份校验结果。
在一些实施例中,对身份信息进行身份校验,得到身份校验结果,包括:
基于身份信息对请求对象的存证权限进行识别;
当识别到请求对象具有预设存证权限时,确定身份校验结果为校验合格;
当识别到请求对象不具有预设存证权限时,确定身份校验结果为校验不合格。
其中,在本公开实施例中,在基于存证上链请求发起对象的身份信息进行身份校验时,具体可以为根据对象的签名来校验该对象是否具有预设的存证权限。例如,在一些实施例中,并非所有用于电子数据存证的存证应用都可以将存证数据进行上链存储,只有一些取得公证资质的存证应用才可以用于进行电子数据的存证,如此可以保证链上存证证据的真实性。
具体地,可以设置具有预设存证权限的请求对象白名单,只有根据请求对象的签名数据进行鉴权确定请求对象是属于该请求对象白名单中是,才可以确定对请求对象进行身份校验的结果为合格,否则确定请求对象不具有预设存证权限,进而确定对该请求对象的身份校验结果为校验不合格。
在一些实施例中,对零知识证明数据进行零知识校验,得到零知识校验结果,包括:
获取零知识校验算法;
基于零知识校验算法对零知识证明数据进行零知识校验,得到零知识校验结果。
在本公开实施例中,对存证数据的零知识证明数据的校验,具体可以通过零知识校验算法来实现。如前述介绍,非交互式零知识证明方法中证明者可以采用一定的算法对秘密信息计算出一个零知识证明,然后验证者可以使用另一个算法来检验证明者是否知道秘密信息。在本实施例中,可以获取前述零知识证明生成算法对应的零知识校验算法,然后根据该零知识校验算法对零知识证明数据进行零知识校验,得到零知识校验结果。
在一些实施例中,基于零知识校验算法对零知识证明数据进行零知识校验,得到零知识校验结果,包括:
当校验确定零知识证明数据有效时,确定零知识校验结果为校验合格;
当校验确定零知识证明数据无效时,确定零知识校验结果为校验不合格。
在本公开实施例中,采用零知识校验算法对存证数据的零知识证明数据进行校验,其目的就是校验存证数据的零知识证明数据是否有效,即是否能通过采用该算法来对存证数据的零知识证明数据进行校验来确定证明者知道该存证数据。只有在该校验过程中确定存证数据的零知识证明数据有效,才可以确保后续在对存证数据进行链上校验时,只需校验链上存储的存证数据的零知识证明数据是否有效便可以实现存证数据的链上校验。无需对存证数据的原文数据进行校验。
因此,当校验确定零知识证明数据有效时,确定零知识校验结果为校验合格;当校验确定零知识证明数据无效时,可以确定零知识校验结果为校验不合格。当零知识校验结果为校验合格时,才可以进一步将存证数据的零知识证明数据进行上链存储;否则,则返回上链失败的通知给存证服务器以及存证应用的客户端。
步骤330,当零知识校验结果指示对零知识证明数据的零知识校验合格时,基于零知识证明数据生成区块数据。
当对存证数据的零知识证明数据进行零知识校验的零知识校验结果为零知识校验合格时,便可以确定将该零知识证明数据上链存储后,对象可以基于对该零知识证明数据的校验来确定存证数据是否真实上链存证。此时,便可以基于存证数据的零知识证明数据生成相应的区块数据。
其中,与区块链网络对其他交易数据的处理类似,在本公开实施例中,基于存证数据的零知识证明数据生成相应的区块数据,具体也可以为由区块链中的多个验证节点争夺记账权,然后由得到记账权的节点作为记账节点来根据存证数据的零知识证明数据生成相应的区块数据。其中,在该区块数据的区块主体中不再包含存证数据的备注信息等可能会泄露存证数据的隐私的明文数据,而是存储了存证数据的零知识证明。
步骤340,将区块数据发送给区块链网络中的验证节点进行验证,并接收验证节点返回的验证结果。
其中,当区块链网络中的记账节点将根据存证数据的零知识生成了相应的区块数据后,便可以将生成的区块数据发送给区块链网络中的验证节点进行验证。在本公开实施例中,区块链网络中的每个验证节点中都可以具有对存证数据的零知识证明数据进行校验的零知识校验模块,用于对区块数据中的存证数据的零知识证明数据进行校验,并根据校验结果确定对区块数据的验证结果。
验证节点在对区块数据进行验证得到验证结果后,可以进一步将验证结果返回给记账节点,以使得区块链网络根据验证结果判定是否验证通过。
步骤350,当验证结果指示区块数据验证合格时,将区块数据添加到区块链中。
当验证节点返回的验证结果指示区块数据验证合格,则此时便可以将区块数据添加到区块链中,实现存证数据的零知识证明数据的上链,同时记账节点把上链存储的区块数据共享到区块链中所有其他节点中进行存储。当验证节点返回的验证结果指示区块数据验证不合格时,此时便可以根据区块链的共识机制重新选定记账节点以重新进行零知识证明校验、区块的生成以及共识验证等过程,直至验证结果指示验证合格。
在一些实施例中,存证上链请求中还包括请求标签信息与存证标签信息,方法还包括:
基于请求标签信息与存证标签信息生成状态键值对;
将状态键值对存储至状态数据库中。
如前所述,存证上链请求中除了包括存证数据的零知识证明数据外,还包括了存证ID以及存证上链请求发起对象的签名信息。在本公开实施例中,存证上链请求中还可以包括请求标签信息,此处请求标签信息具体可以为存证上链请求这笔交易的交易ID。
在相关技术中,在将存证数据的哈希字符串、可信时间戳、存证ID以及备注信息进行上链存储的同时,还会将存证数据的哈希字符串、可信时间戳、存证ID以及备注信息上传到区块链的状态数据库中进行存储,其中区块链的状态数据库中记载了区块链的世界状态信息。然而,状态数据库中的存储空间十分有限,如果每次进行数据存证都要在状态数据库中存储大量的数据,会导致状态数据库的存储压力十分巨大。在本公开实施例中,在生成存证数据的零知识证明数据并将零知识证明数据上链存储的同时,只需生成存证ID和交易ID的状态键值对(key-value),然后将生成的状态键值对存储至状态数据库中即可。当需要对存证数据进行校验时,通过输入的存证ID,可以在状态数据库中确定与存证ID对应的交易ID,进而可以准确定位到相应的区块。如此,可以大大降低状态数据库中的数据存储压力。进而可以提升区块链网络运行的稳定性。在一些实施例中,交易ID也可以为区块链网络根据存证上链请求生成。
如图5所示,为本公开中存证数据的零知识证明上链的过程示意图。如图所示,当区块链网络150接收到包含零知识证明数据、签名信息以及存证ID的存证上链请求时,采用鉴权合约510先对签名信息进行鉴权校验;当鉴权校验合格时,再采用零知识验证合约520对存证数据的零知识证明数据进行验证;当对零知识证明数据验证合格时,将由存证ID和交易ID生成的状态键值对存储至状态数据库530中,以及将零知识证明数据存储至区块链中。
在一些实施例中,本公开中存证数据的校验过程可以包括如下步骤:
接收存证数据的校验请求,校验请求中包含目标存证标签信息;
根据目标存证标签信息在状态数据库中确定目标状态键值对,并基于目标状态键值对确定目标请求标签信息;
当检测到存证合约中存在目标存证标签信息以及目标请求标签信息时,在区块链中获取目标存证标签信息对应的目标零知识证明数据;
当检测到目标零知识证明数据有效时,输出校验成功的校验结果。
其中,在将存证数据的零知识证明数据进行上链存储后,在任意时刻,任意拥有对应的存证ID的对象都可以对链上存储的存证数据进行校验。具体地,可以接收存证数据的校验请求,校验请求中包含目标存证标签信息,即存证ID信息。在一些实施例中,校验请求中也可以包含链ID、交易ID或者存证合约地址中的任意一项。其中,此处的存证合约可以是包含前述鉴权合约和零知识证明合约的用于处理存证事务的合约。当接收到的校验请求中包含的是存证ID时,则可以在状态数据库中查找到与该存证ID对应的状态键值对,进而根据该状态键值对确定交易ID。然后,可以在存证合约中检测是否存在上述存证ID和交易ID。当存证合约中不存在上述存证ID和交易ID,则判定存证验证失败。当存在上述存证ID和交易ID时,则在区块链网络中获取输入的存证ID对应的目标零知识证明数据,如果无法获取到目标零知识证明数据,则存证验证失败。如果获取到了目标零知识证明数据,则进一步对目标零知识证明数据的有效性进行校验,若校验失败则存证验证失败;若校验成功,则存证验证成功,并输出校验成功的校验结果。
其中,在一些实施例中,在区块链中获取目标存证标签信息对应的目标零知识证明数据,包括:
根据目标存证请求标签在区块链中确定目标区块;
在目标区块对应的区块数据中获取目标零知识证明数据。
在本公开实施例中,在区块链网络中确定输入的存证ID对应的目标零知识证明数据,具体可以采用与输入的存证ID对应的交易ID来定位到目标区块。然后,在目标区块的区块数据中获取到目标零知识证明数据。
如图6所示,为本公开中对存证数据进行存证校验的流程示意图。
综上,采用本公开提供的基于区块链的数据存证方法,通过接收存证上链请求,存证上链请求包括存证数据的零知识证明数据;对零知识证明数据进行零知识校验,得到零知识校验结果;当零知识校验结果指示对零知识证明数据的零知识校验合格时,基于零知识证明数据生成区块数据;将区块数据发送给区块链网络中的验证节点进行验证,并接收验证节点返回的验证结果;当验证结果指示区块数据验证合格时,将区块数据添加到区块链中。
以此,本公开提供的基于区块链的数据存证方法,在将存证数据在区块链上进行上链存储时,只将存证数据对应的零知识证明数据进行上链存储,避免了存证数据的明文上链。如此,可以避免链上数据的公开导致存证数据的明文泄露,进而大大提升了存证数据的安全性。此外,由于该方法仅将存证数据对应的零知识证明数据进行上链存储,相对于相关技术中将存证数据的哈希字符串、可信时间戳以及备注信息等大量数据进行上链存储,可以大大节约链上的存储空间,进而可以提升区块链的交易处理能力。
本公开实施例结合具体应用场景的详细说明
如图7所示,为本公开提供的基于区块链的数据存证方法的另一流程示意图,该方法将从整体上对本公开提供的基于区块链的数据存证方法进行详细介绍。方法具体包括如下步骤:
步骤701,存证应用的使用对象基于终端上装载的存证应用客户端发起对存证数据的存证请求。
其中,在本公开实施例中,具体可以提供一种基于区块链的存证应用程序。在该存证应用程序对应的整体系统中,可以包括装载存证应用的客户端的终端,存证应用程序的服务器,以及存储存证数据的区块链网络。
本公开实施例中,存证应用的使用对象具体可以为某个银行在存证应用程序上注册的账号的操作人员,该操作人员的电脑上可以装载存证应用程序的客户端。该操作人员可以在电脑上基于存证应用程序的客户端发起对存证数据的存证请求,例如可以发起某个客户的贷款的电子证据在存证应用程序上的存证请求。
步骤702,存证应用的服务器基于存证请求向时间戳服务器发起时间戳生成请求,并接收时间戳服务器返回的可信时间戳。
当上述操作人员在存证应用程序客户端中发起存证请求,并提交了相关的电子证据后。存证应用的后台,即存证应用的服务器便接收到对该电子证据的存证请求。此时存证应用的服务器可以基于接收到的存证请求向时间戳服务器发起时间戳生成请求,时间戳服务器在接收到该时间戳生成请求后,便可以生成当前时刻的可信时间戳,并将该可信时间戳返回给存证应用的服务器。
步骤703,存证应用的服务器接收存证请求,并对存证数据进行哈希处理,得到哈希字符串。
此外,存证应用的服务器接收到存证请求,会对存证请求中包含的存证数据进行哈希处理,得到存证数据的哈希字符串。哈希处理的目的是生成存证数据的摘要,哈希处理其实就是一种加密算法,目的是为了保证区块链中的数据安全。
步骤704,存证应用服务器生成存证请求对应的存证ID。
进一步地,存证应用服务器还会根据该存证请求生成对应的存证ID,该存证ID会在数据上链时保存至区块链的状态数据中。此外,该存证ID还将会在存证数据上链存储完成后发送给存证请求发起的对象进行保存,以便该对象在后续任何时刻根据该存证ID发起存证校验。
步骤705,存证应用服务器对哈希字符串、可信时间戳以及存证数据的备注信息生成零知识证明。
在本公开实施例中,在生成了存证数据的哈希字符串、可信时间戳后,并非像相关技术中将这些数据结合存证数据的备注信息发送到区块链中进行上链存储,因为该方法不仅存在明文数据上链产生的隐私泄露的风险,而且会因大量数据上链导致区块链中存储空间被过度占用的问题。在区块链中,存储空间有限,而存证业务数据存储的数据量比较大的业务。而区块链与其他系统不同,底层数据存储难以扩容和优化,所以需要尽可能减少需要上链的数据。此外,当存证业务量较大时,区块链中存储的数据量会急剧增加,增加到一定量级就需要对状态数据库和磁盘进行升级,这样会消耗更多的资源,而且数据过大也会影响区块链的稳定性。
因此,在本公开实施例中,在生成了存证数据的哈希字符串、可信时间戳后,可以进一步对存证数据的哈希字符串、可信时间戳以及相关的备注信息进行零知识处理,得到存证数据的零知识证明。
步骤706,存证应用服务器向区块链网络发起存证上链请求。
在生成了存证数据的零知识证明后,便可以将存证数据的零知识证明进行上链存储。具体地,存证应用服务器可以向存储存证数据的区块链网络发起存证上链请求。在存证上链请求中,不仅包含了需要上链存储的零知识证明,还可以包括存证ID以及存证应用服务器的签名信息。
步骤707,区块链网络中的节点对存证上链请求中的签名信息进行鉴权。
区块链网络中的节点接收到存证应用服务器发起的存证上链请求,将该存证上链请求作为一个区块链网络中的交易,确定该交易对应的交易ID。然后,为了保证上链数据的安全性和可靠性,区块链网络中的节点会先对存证上链请求中的签名信息进行鉴权。具体地,可以采用区块链网络中的节点中存证合约中的鉴权合约来对签名信息进行鉴权。如此,可以检测存证应用服务器是否具有存证权限,也可以确保存证数据的可靠性,避免将不可靠的电子证据上链存储。
具体地,对签名信息进行鉴权具体可以包括如下步骤:验证交易发起对象是否在链上注册;验证交易发起对象是否完成实名以及验证交易的签名是否属于当前对象等。
步骤708,当对签名信息鉴权合格时,区块链网络中的节点对零知识证明进行校验。
当对签名信息鉴权的结果确定鉴权合格后,区块链网络中的节点可以进一步对存证上链请求中的零知识证明进行校验。具体地,在本公开实施例中,在存证合约中还可以设置有零知识验证合约,可以采用该零知识验证合约来对存证上链请求中的零知识证明进行校验,得到零知识证明的校验结果。具体地,零知识验证合约中可以存储有零知识验证算法,可以调用该零知识验证算法来对零知识证明进行验证,得到验证结果。
其中,在验证零知识证明是否有效之前,还可以先验证零知识证明是否符合格式要求等。
步骤709,当零知识证明校验合格时,区块链网络中的节点将零知识证明存储至区块链中。
当零知识验证合约对零知识证明进行校验的验证结果为校验合格时,区块链网络中的节点可以进一步将零知识证明存储至区块链中。具体地,区块链网络中的节点可以将零知识证明作为交易数据生成区块数据,并将生成的区块数据存储至区块链中。
步骤710,区块链网络中的节点根据交易ID和存证ID生成状态键值对,并将状态键值对存储至状态数据库中。
在相关技术中,在进行数据存证时,需要将存证上链的哈希字符串、可信时间戳以及备注信息等数据均在状态数据库中进行存储,这会导致状态数据库的存储空间占用过多,影响区块链的稳定。而在本公开实施例中,仅需根据交易ID和存证ID生成状态键值对,然后将状态键值对存储至状态数据库中。如此可以大大降低存储至状态数据库中的数据,提升区块链的稳定性。
步骤711,当接收到存证校验请求时,区块链网络中的节点检测存证合约中是否存证校验请求中的存证ID及对应的交易ID。
将存证数据的零知识证明进行上链存储后,在之后的任意时间都可以接收对于存证数据的链上存证校验。通过验证的结果来判断是否在链上存在一个完整的电子证据存储。具体地,可以向链上存证合约提交一次存证校验请求。存证合约的输入包括但不限于如下参数:链ID,唯一代表一条具体的区块链;EvID(存证ID):需要验证的存证的唯一ID;TxID(交易ID):用来唯一标识这笔存证交易,可以和EvID配合使用,定位到一笔存证交易;EvAddress:存证合约地址,之前用户发起的存证操作,都会在这个合约中存储。校验时,也是在这个合约中获取存证的数据。
具体地,当接收到存证校验请求时,区块链网络中的节点可以检测存证合约中是否存在存证校验请求中携带的存证ID。若存证合约中不存在存证校验请求中携带的存证ID,则直接结束存证校验流程并输出存证校验失败。若存证合约中存在存证校验请求中携带的存证ID,则可以进一步检测存证合约中是否存在对应的交易ID,如果存在,则进入下一步,否则输出存证校验失败。
步骤712,当存证合约中存在存证ID及对应的交易ID时,区块链网络中的节点检测对应的区块中是否存在零知识证明。
当存证合约中存在存证ID和交易ID时,则可以在状态数据库中找到对应的存证ID和交易ID,并定位到存证在区块中存储的数据,并检测存储的数据中是否存在零知识证明。若存在,则进入下一步,否则直接输出存证校验失败。
步骤713,当对应的区块中存在零知识证明时,区块链网络中的节点检测零知识证明是否有效,当有效时,区块链网络中的节点输出校验合格。
当定位到的区块中存在零知识证明,则可以进一步采用零知识验证合约对零知识证明进行验证。如果验证不通过,则输出存证校验失败,如果验证通过,则返回验证结果,提示对象验证成功。
如图8所示,为本公开提供的基于区块链的存证方法的整体架构示意图。如图所示,当对象发起存证时,由存证应用接口接收存证请求,并将存证数据经存证数据处理模块生成哈希字符串及提取备注信息。同时时间戳服务器可以生成相应的可信时间戳。然后,通过零知识生成模块对可信时间戳和哈希字符串以及备注信息生成零知识证明。并将零知识证明经链上存证合约进行上链,在上链存储时,需经零知识验证合约对零知识证明进行验证,验证通过后方可通过存证合约上链存储。在对链上存证的存证数据进行存证校验时,通过经存证合约来验证是否存在对应的存证ID和交易ID,当存在时,在区块链上找到对应的区块并提取出零知识证明,然后采用零知识验证合约进行验证,当验证合格时即可证明区块链上存在一个完整的存证数据。
本公开实施例的装置和设备描述
可以理解的是,虽然上述各个流程图中的各个步骤按照箭头的表征依次显示,但是这些步骤并不是必然按照箭头表征的顺序依次执行。除非本实施例中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时间执行完成,而是可以在不同的时间执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
需要说明的是,在本公开的各个具体实施方式中,当涉及到需要根据目标对象属性信息或属性信息集合等与目标对象特性相关的数据进行相关处理时,都会先获得目标对象的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关地区的相关法律法规和标准。此外,当本申请实施例需要获取目标对象属性信息时,会通过弹窗或者跳转到确认页面等方式获得目标对象的单独许可或者单独同意,在明确获得目标对象的单独许可或者单独同意之后,再获取用于使本申请实施例能够正常运行的必要的目标对象相关数据。
图9为本公开实施例提供的基于区块链的数据存证装置900的结构示意图。该基于区块链的数据存证装置900包括:
接收单元910,用于接收存证上链请求,存证上链请求包括存证数据的零知识证明数据;
校验单元920,用于对零知识证明数据进行零知识校验,得到零知识校验结果;
生成单元930,用于当零知识校验结果指示对零知识证明数据的零知识校验合格时,基于零知识证明数据生成区块数据;
验证单元940,用于将区块数据发送给区块链网络中的验证节点进行验证,并接收验证节点返回的验证结果;
添加单元950,用于当验证结果指示区块数据验证合格时,将区块数据添加到区块链中。
可选地,在一些实施例中,基于区块链的数据存证装置还包括零知识证明生成单元,零知识证明生成单元,包括:
第一获取子单元,用于获取存证数据;
第一生成子单元,用于生成存证数据的可信时间戳以及哈希字符串;
处理子单元,用于对存证数据、可信时间戳以及哈希字符串进行零知识处理,得到零知识证明数据。
可选地,在一些实施例中,处理子单元,包括:
第一获取模块,用于获取零知识证明生成算法;
处理模块,用于基于零知识证明生成算法对存证数据、可信时间戳以及哈希字符串进行零知识处理,得到零知识证明数据。
可选地,在一些实施例中,本公开提供的基于区块链的数据存证装置,还包括:
第二获取子单元,用于获取存证数据的来源信息,并确定来源信息对应的存证应用账号信息;
发送子单元,用于向存证应用账号信息对应的存证应用客户端发送存证标签数据,以使得存证应用客户端对应的对象基于存证标签数据对存证数据进行验证。
可选地,在一些实施例中,存证上链请求中还包括请求对象的身份信息,校验单元,包括:
第一校验子单元,用于对身份信息进行身份校验,得到身份校验结果;
第二校验子单元,用于当身份校验结果为校验合格时,对零知识证明数据进行零知识校验,得到零知识校验结果。
可选地,在一些实施例中,第一校验子单元,包括:
识别模块,用于基于身份信息对请求对象的存证权限进行识别;
第一确定模块,用于当识别到请求对象具有预设存证权限时,确定身份校验结果为校验合格;
第二确定模块,用于当识别到请求对象不具有预设存证权限时,确定身份校验结果为校验不合格。
可选地,在一些实施例中,第二校验子单元,包括:
第二获取模块,用于获取零知识校验算法;
校验模块,用于基于零知识校验算法对零知识证明数据进行零知识校验,得到零知识校验结果。
可选地,在一些实施例中,校验模块,包括:
第一确定子模块,用于当校验确定零知识证明数据有效时,确定零知识校验结果为校验合格;
第二确定子模块,用于当校验确定零知识证明数据无效时,确定零知识校验结果为校验不合格。
可选地,在一些实施例中,存证上链请求中还包括请求标签信息与存证标签信息,基于区块链的数据存证装置,还包括:
第二生成子单元,用于基于请求标签信息与存证标签信息生成状态键值对;
存储子单元,用于将状态键值对存储至状态数据库中。
可选地,本公开提供的基于区块链的数据存证装置还包括存证数据校验单元,存证数据校验单元包括:
接收子单元,用于接收存证数据的校验请求,校验请求中包含目标存证标签信息;
确定子单元,用于根据目标存证标签信息在状态数据库中确定目标状态键值对,并基于目标状态键值对确定目标请求标签信息;
第三获取子单元,用于当检测到存证合约中存在目标存证标签信息以及目标请求标签信息时,在区块链中获取目标存证标签信息对应的目标零知识证明数据;
输出子单元,用于当检测到目标零知识证明数据有效时,输出校验成功的校验结果。
可选地,在一些实施例中,第三获取子单元,包括:
第三确定模块,用于根据目标存证请求标签在区块链中确定目标区块;
第三获取模块,用于在目标区块对应的区块数据中获取目标零知识证明数据。
参照图10,图10为实现本公开实施例的基于区块链的数据存证方法的终端140的部分的结构框图,该终端140包括:射频(Radio Frequency,简称RF)电路1010、存储器1010、输入单元1030、显示单元1040、传感器1050、音频电路1060、无线保真(wireless fidelity,简称WiFi)模块1070、处理器1080、以及电源1090等部件。本领域技术人员可以理解,图10示出的终端140结构并不构成对手机或电脑的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
RF电路1010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1080处理;另外,将设计上行的数据发送给基站。
存储器1010可用于存储软件程序以及模块,处理器1080通过运行存储在存储器1010的软件程序以及模块,从而执行终端的各种功能应用以及数据存证。
输入单元1030可用于接收输入的数字或字符信息,以及产生与终端的设置以及功能控制有关的键信号输入。具体地,输入单元1030可包括触控面板1031以及其他输入装置1032。
显示单元1040可用于显示输入的信息或提供的信息以及终端的各种菜单。显示单元1040可包括显示面板1041。
音频电路1060、扬声器1061,传声器1062可提供音频接口。
在本实施例中,该终端140所包括的处理器1080可以执行前面实施例的基于区块链的数据存证方法。
本公开实施例的终端140包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。本发明实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
图11为实施本公开实施例的基于区块链的数据存证方法的服务器110的部分的结构框图。服务器110可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,简称CPU)1122(例如,一个或一个以上处理器)和存储装置1132,一个或一个以上存储应用程序1142或数据1144的存储介质1130(例如一个或一个以上海量存储装置)。其中,存储装置1132和存储介质1130可以是短暂存储或持久存储。存储在存储介质1130的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器110中的一系列指令操作。更进一步地,中央处理器1122可以设置为与存储介质1130通信,在服务器110上执行存储介质1130中的一系列指令操作。
服务器110还可以包括一个或一个以上电源1126,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1158,和/或,一个或一个以上操作系统1141,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
服务器110中的中央处理器1122可以用于执行本公开实施例的基于区块链的数据存证方法。
本公开实施例还提供一种存储介质,存储介质用于存储程序代码,程序代码用于执行前述各个实施例的基于区块链的数据存证方法。
本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序。计算机设备的处理器读取该计算机程序并执行,使得该计算机设备执行实现上述的基于区块链的数据存证方法。
本公开的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“包含”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或装置不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或装置固有的其它步骤或单元。
应当理解,在本公开中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
应了解,在本公开实施例的描述中,多个(或多项)的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
还应了解,本公开实施例提供的各种实施方式可以任意进行组合,以实现不同的技术效果。
以上是对本公开的实施方式的具体说明,但本公开并不局限于上述实施方式,熟悉本领域的技术人员在不违背本公开精神的条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本公开权利要求所限定的范围内。

Claims (15)

1.一种基于区块链的数据存证方法,其特征在于,所述方法包括:
接收存证上链请求,所述存证上链请求包括存证数据的零知识证明数据;
对所述零知识证明数据进行零知识校验,得到零知识校验结果;
当所述零知识校验结果指示对所述零知识证明数据的零知识校验合格时,基于所述零知识证明数据生成区块数据;
将所述区块数据发送给区块链网络中的验证节点进行验证,并接收验证节点返回的验证结果;
当所述验证结果指示所述区块数据验证合格时,将所述区块数据添加到区块链中。
2.根据权利要求1所述的方法,其特征在于,所述存证数据的零知识证明数据通过如下方法生成:
获取存证数据;
生成所述存证数据的哈希字符串以及可信时间戳;
对所述存证数据、所述哈希字符串以及所述可信时间戳进行零知识处理,得到零知识证明数据。
3.根据权利要求2所述的方法,其特征在于,所述对所述存证数据、所述可信时间戳以及所述哈希字符串进行零知识处理,得到零知识证明数据,包括:
获取零知识证明生成算法;
基于所述零知识证明生成算法对所述存证数据、所述可信时间戳以及所述哈希字符串进行零知识处理,得到零知识证明数据。
4.根据权利要求3所述的方法,其特征在于,所述基于所述零知识证明生成算法对所述存证数据、所述可信时间戳以及所述哈希字符串进行零知识处理,得到零知识证明数据之后,还包括:
获取所述存证数据的来源信息,并确定所述来源信息对应的存证应用账号信息;
向所述存证应用账号信息对应的存证应用客户端发送所述存证标签数据,以使得所述存证应用客户端对应的对象基于所述存证标签数据对所述存证数据进行验证。
5.根据权利要求1所述的方法,其特征在于,所述存证上链请求中还包括请求对象的身份信息,所述对所述零知识证明数据进行零知识校验,得到零知识校验结果,包括:
对所述身份信息进行身份校验,得到身份校验结果;
当所述身份校验结果为校验合格时,对所述零知识证明数据进行零知识校验,得到零知识校验结果。
6.根据权利要求5所述的方法,其特征在于,所述对所述身份信息进行身份校验,得到身份校验结果,包括:
基于所述身份信息对所述请求对象的存证权限进行识别;
当识别到所述请求对象具有预设存证权限时,确定身份校验结果为校验合格;
当识别到所述请求对象不具有预设存证权限时,确定身份校验结果为校验不合格。
7.根据权利要求5所述的方法,其特征在于,所述对所述零知识证明数据进行零知识校验,得到零知识校验结果,包括:
获取零知识校验算法;
基于所述零知识校验算法对所述零知识证明数据进行零知识校验,得到零知识校验结果。
8.根据权利要求7所述的方法,其特征在于,所述基于所述零知识校验算法对所述零知识证明数据进行零知识校验,得到零知识校验结果,包括:
当校验确定所述零知识证明数据有效时,确定零知识校验结果为校验合格;
当校验确定所述零知识证明数据无效时,确定零知识校验结果为校验不合格。
9.根据权利要求1所述的方法,其特征在于,所述存证上链请求中还包括请求标签信息与存证标签信息,所述方法还包括:
基于所述请求标签信息与所述存证标签信息生成状态键值对;
将所述状态键值对存储至状态数据库中。
10.根据权利要求9所述的方法,其特征在于,所述存证数据的校验过程包括如下步骤:
接收所述存证数据的校验请求,所述校验请求中包含目标存证标签信息;
根据所述目标存证标签信息在所述状态数据库中确定目标状态键值对,并基于所述目标状态键值对确定目标请求标签信息;
当检测到存证合约中存在所述目标存证标签信息以及所述目标请求标签信息时,在区块链中获取所述目标存证标签信息对应的目标零知识证明数据;
当检测到所述目标零知识证明数据有效时,输出校验成功的校验结果。
11.根据权利要求10所述的方法,其特征在于,所述在区块链中获取所述目标存证标签信息对应的目标零知识证明数据,包括:
根据所述目标存证请求标签在所述区块链中确定目标区块;
在所述目标区块对应的区块数据中获取目标零知识证明数据。
12.一种基于区块链的数据存证装置,其特征在于,所述装置包括:
接收单元,用于接收存证上链请求,所述存证上链请求包括存证数据的零知识证明数据;
校验单元,用于对所述零知识证明数据进行零知识校验,得到零知识校验结果;
生成单元,用于当所述零知识校验结果指示对所述零知识证明数据的零知识校验合格时,基于所述零知识证明数据生成区块数据;
验证单元,用于将所述区块数据发送给区块链网络中的验证节点进行验证,并接收验证节点返回的验证结果;
添加单元,用于当所述验证结果指示所述区块数据验证合格时,将所述区块数据添加到区块链中。
13.一种存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现根据权利要求1至11任意一项所述的基于区块链的数据存证方法。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现根据权利要求1至11任意一项所述的基于区块链的数据存证方法。
15.一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被计算机设备的处理器读取并执行,使得该计算机设备执行根据权利要求1至11任意一项所述的基于区块链的数据存证方法。
CN202311398968.XA 2023-10-25 2023-10-25 基于区块链的数据存证方法、装置及存储介质 Pending CN117370463A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311398968.XA CN117370463A (zh) 2023-10-25 2023-10-25 基于区块链的数据存证方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311398968.XA CN117370463A (zh) 2023-10-25 2023-10-25 基于区块链的数据存证方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN117370463A true CN117370463A (zh) 2024-01-09

Family

ID=89397977

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311398968.XA Pending CN117370463A (zh) 2023-10-25 2023-10-25 基于区块链的数据存证方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN117370463A (zh)

Similar Documents

Publication Publication Date Title
CN112446785B (zh) 跨链交易方法、系统、装置、设备和存储介质
CN110879903B (zh) 证据存储方法、证据验证方法及装置、设备和介质
CN111970129B (zh) 一种基于区块链的数据处理方法、设备以及可读存储介质
KR101937220B1 (ko) 키 관리가 필요없는 블록체인을 기반한 전자서명 또는 메시지 인증 코드를 생성 및 검증 방법
CN111163182B (zh) 基于区块链的设备注册方法、装置、电子设备和存储介质
US20190165947A1 (en) Signatures for near field communications
CN109861996B (zh) 基于区块链的关系证明方法、装置、设备及存储介质
CN112287034A (zh) 一种数据同步方法、设备以及计算机可读存储介质
CN111367923A (zh) 数据处理方法、装置、节点设备及存储介质
CN110647583B (zh) 一种区块链构建方法、装置、终端及介质
CN113129008B (zh) 数据处理方法、装置、计算机可读介质及电子设备
CN111339141A (zh) 一种数据传输的方法、区块链节点设备以及介质
CN113132363B (zh) 一种前后端安全验证方法及设备
CN111597537B (zh) 基于区块链网络的证书签发方法、相关设备及介质
US20220311617A1 (en) Cryptographic signing of a data item
CN117370463A (zh) 基于区块链的数据存证方法、装置及存储介质
CN117040766B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
KR102486585B1 (ko) 네트워크를 통한 사용자 자격 검증 방법 및 이에 사용되는 서비스 제공 서버
CN117032727B (zh) 基于区块链的文件编译方法、装置、设备、介质及产品
CN101527631B (zh) 基于单向杂凑函数的记录系统与方法
CN117097478A (zh) 基于区块链的数据处理方法、装置及相关设备
CN117914558A (zh) 物联网设备可信控制方法、系统、电子设备及存储介质
CN117375849A (zh) 基于区块链的应用访问方法、装置、计算机、介质及产品
CN117372016A (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN116468439A (zh) 数据管理方法、装置、设备、存储介质及计算机程序产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication