一种发票的存档方法、装置及计算机可读存储介质与流程

专利2022-06-29  167

本发明涉及互联网
技术领域
:,具体涉及一种发票的存档方法、服务器以及一种计算机可读存储介质。
背景技术
::随着信息的高速发展,电子发票能够与纸质发票一样,由税务局统一发放的形式给商家使用,但是,由于商家开票的习惯,有些商家开票的时候开具纸质发票,有些商家开票的时候开具电子发票,因此,当人们向公司进行报销的时候需要将两者都交给公司,财务部门的人员在保存发票的时候可以通过两种方法来对发票进行存档,一种方法是将电子发票打印出来和纸质发票一起以纸质发票的形式保存,另一种方法是将纸质发票扫描成电子文档的形式存储在公司的数据库中进行存储。由此可见,将发票以纸质的形式存档或者以电子文档的形式存储在公司内部,容易被人为篡改,使得发票存档没有意义。技术实现要素:本申请实施例提供了一种发票的存档方法、装置及计算机可读存储介质,可以防止发票存档之后被人为的篡改,以及能够为存档的发票提供查验服务,提高查验发票的效率以及查验的准确性。第一方面,本申请实施例提供了一种发票的存档方法,所述发票的存档方法包括:接收用于存储发票的存档指令,所述存档指令携带所述发票的标识;获取所述标识对应的发票的电子文件和发票信息;将所述电子文件上传至星际文件系统ipfs(interplanetaryfilesystem,ipfs),得到文件标识,所述文件标识为所述ipfs返回的所述电子文件的标识;将所述文件标识和所述发票信息上传至区块链网络。在一种可能的实现方式中,所述区块链网络包括n条区块链,所述n条区块链之间存在通信连接,所述n为大于或等于1的整数,所述将所述文件标识和所述发票信息上传至区块链网络,包括:将所述文件标识和所述发票信息上传至第一区块链,所述第一区块链为所述区块链网络中的任一区块链。在一种可能的实现方式中,所述将所述文件标识和所述发票信息上传至区块链网络之后,所述方法还包括:获取待验证发票的发票信息和电子文件;根据文件标识与发票信息的对应关系,从所述第一区块链中获取所述待验证发票的发票信息对应的文件标识;从所述ipfs中下载第一电子文件,所述第一电子文件为所述获取的文件标识对应的电子文件;根据所述第一电子文件和所述待验证发票的电子文件,对所述待验证发票进行验证。在一种可能的实现方式中,所述根据文件标识与发票信息的对应关系,从所述第一区块链中获取所述待验证发票的发票信息对应的文件标识,包括:根据所述待验证发票的发票信息确定区块高度,得到待验证区块高度;根据文件标识与发票信息的对应关系,从所述第一区块链中所述待验证区块高度对应的区块中获取所述待验证发票的发票信息对应的文件标识。在一种可能的实现方式中,所述根据所述第一电子文件和所述待验证发票的电子文件,对所述待验证发票进行验证,包括:在所述第一电子文件与所述待验证发票的电子文件的相似度大于或等于阈值的情况下,确定所述待验证发票与所述第一电子文件对应的发票的标识相同;在所述第一电子文件与所述待验证发票的电子文件的相似度小于阈值的情况下,确定所述待验证发票与所述第一电子文件对应的发票的标识不同。在一种可能的实现方式中,所述确定所述待验证发票与所述第一电子文件对应的发票的标识相同之后,所述方法还包括:根据所述第一区块链中所述待验证区块高度对应的区块的默克尔树根值,确定所述发票是否被篡改。在一种可能的实现方式中,所述方法还包括:根据所述发票信息确定区块高度;获取所述第一区块链中所述区块高度对应的区块的默克尔树根值;将所述默克尔树根值上传至第二区块链,所述第二区块链为所述区块链网络中除所述第一区块链以外的任一区块链;所述根据所述第一区块链中所述待验证区块高度对应的区块的默克尔树根值确定所述发票是否被篡改,包括:获取所述待验证区块高度对应的区块的默克尔树根值,得到待验证默克尔树根值;查询数据库中是否存储所述待验证默克尔树根值,所述数据库存储有所述第二区块链中的数据;当在数据库中查询到所述待验证默克尔树根值时,确定所述发票未被篡改。第二方面,本申请实施例提供了一种发票的存档装置,所述装置包括:接收单元,用于接收用于存储发票的存档指令,所述存档指令携带所述发票的标识;第一获取单元,用于获取所述标识对应的发票的电子文件和发票信息;第一上传单元,用于将所述电子文件上传至ipfs,得到文件标识,所述文件标识为所述ipfs返回的所述电子文件的标识;第二上传单元,用于将所述文件标识和所述发票信息上传至区块链网络。在一种可能的实现方式中,所述区块链网络包括n条区块链,所述n条区块链之间存在通信连接,所述n为大于或等于1的整数,所述第二上传单元,具体用于:将所述文件标识和所述发票信息上传至第一区块链,所述第一区块链为所述区块链网络中的任一区块链。在一种可能的实现方式中,所述将所述文件标识和所述发票信息上传至区块链网络之后,所述装置还包括:第二获取单元,用于获取待验证发票的发票信息和电子文件;第三获取单元,用于根据文件标识与发票信息的对应关系,从所述第一区块链中获取所述待验证发票的发票信息对应的文件标识;下载单元,用于从所述ipfs中下载第一电子文件,所述第一电子文件为所述获取的文件标识对应的电子文件;验证单元,用于根据所述第一电子文件和所述待验证发票的电子文件,对所述待验证发票进行验证。在一种可能的实现方式中,所述第三获取单元,具体用于:根据所述待验证发票的发票信息确定区块高度,得到待验证区块高度;根据文件标识与发票信息的对应关系,从所述第一区块链中所述待验证区块高度对应的区块中获取所述待验证发票的发票信息对应的文件标识。在一种可能的实现方式中,所述验证单元,具体用于:在所述第一电子文件与所述待验证发票的电子文件的相似度大于或等于阈值的情况下,确定所述待验证发票与所述第一电子文件对应的发票的标识相同;在所述第一电子文件与所述待验证发票的电子文件的相似度小于阈值的情况下,确定所述待验证发票与所述第一电子文件对应的发票的标识不同。在一种可能的实现方式中,所述确定所述待验证发票与所述第一电子文件对应的发票的标识相同之后,所述装置还包括:第一确定单元,用于根据所述第一区块链中所述待验证区块高度对应的区块的默克尔树根值,确定所述发票是否被篡改。在一种可能的实现方式中,所述装置还包括:第二确定单元,用于根据所述发票信息确定区块高度;第四获取单元,获取所述第一区块链中所述区块高度对应的区块的默克尔树根值;第三上传单元,用于将所述默克尔树根值上传至第二区块链,所述第二区块链为所述区块链网络中除所述第一区块链以外的任一区块链;所述根第一确定单元,具体用于:获取所述待验证区块高度对应的区块的默克尔树根值,得到待验证默克尔树根值;查询数据库中是否存储所述待验证默克尔树根值,所述数据库存储有所述第二区块链中的数据;当在数据库中查询到所述待验证默克尔树根值时,确定所述发票未被篡改。第三方面,本申请实施例提供了一种电子设备,该电子设备包括输出设备、输入设备、处理器、存储器和收发器,该输出设备、输入设备、处理器、存储器和收发器相互连接。该收发器用于接收来自该装置之外的其它装置的信息,以及向该装置之外的其它装置输出信息。该存储器用于存储支持该终端设备执行上述第一方面和/或第一方面任一种可能的实现方式提供的方法的计算机程序,该计算机程序包括程序指令,该处理器被配置用于调用上述程序指令,执行上述第一方面和/或第一方面任一种可能的实现方式所提供的方法。第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述第一方面和/或第一方面任一种可能的实现方式所提供的方法。在本申请实施例中,发票的存档可以接收用于存储发票的存档指令,所述存档指令携带所述发票的标识;获取所述标识对应的发票的电子文件和发票信息;将所述电子文件上传至ipfs,得到文件标识,所述文件标识为所述ipfs返回的所述电子文件的标识;将所述文件标识和所述发票信息上传至区块链网络。由此可见,若是直接将发票的电子文件存档在区块链上,则耗费的资源和成本较大,但是将发票的电子文件存档在星际文件系统,并且将唯一能下载该发票电子文件的哈希值上传至区块链网络中进行存档,能够既保证不被篡改也能够方便后续对发票的查验。并且由于发票对应的哈希值是上传至区块链网络的,因此,后续公司内部或者税局均可以查看到存档的信息,从而更能够保证发票没有被篡改。附图说明为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施例提供的一种发票的存档方法的系统架构图;图2是本申请实施例提供的一种发票的存档方法的流程示意图;图3a是本申请实施例提供的一种发票的存档方法的存储示意图;图3b是本申请实施例提供的一种发票的存档方法的另一存储的场景示意图;图4本申请实施例提供的一种发票的存档方法的流程示意图;图5a是本申请实施例提供的一种发票的存档方法查验的应用场景示意图;图5b是本申请实施例提供的一种发票的存档方法查验的另一应用场景示意图;图6是本申请实施例提供的一种发票的存档装置的结构示意图;图7是本申请实施例提供的电子设备的结构示意图。具体实施方式下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。为了更好地理解本申请实施例提供的一种监控方法、电子设备及计算机可读存储介质,下面先对本申请实施例使用的系统架构进行描述。请参见图1,图1是本申请提供的一种发票存档方法的系统架构示意图。如图1所示,该系统架构可以包括:ipfs以及区块链网络,其中星际文件系统中包括多个节点设备,在区块链网络中也包括多个节点设备。其中,在发票存档时,用户可以通过ipfs节点设备上传发票的电子文件至ipfs中,ipfs会将文件存储并返回一个文件标识,再将该文件标识以及从发票中提取的发票信息上传至区块链网络中。具体的,在区块链网络中可以包括两条或两条以上的区块链,该区块链节点设备可以分别上传数据至区块链网络中的任一区块链中,将文件信息和文件标识存储在第一区块链中后,可以计算当前存储的信息所在区块的默克尔树根值的哈希值,将该哈希值存储在除该区块链以外的其他链中,以便于后续查验。在发票查验时,可以从存储有文件信息和文件标识的区块链中获取到文件标识,并根据该文件标识在ipfs中下载对应的文件,将下载的文件与待验证的发票进行比对,在比对相似度大于阈值的情况下,确定待验证的发票与下载的文件对应同一张发票,即发票的标识相同,则进一步验证该发票是否被篡改,通过将查询到该发票信息和文件标识的区块的默克尔树根值的哈希值在其他区块链中查询,当查询到的情况下,确定当前发票没有被篡改,完成查验。在本申请实施例中,发票的存档可以接收用于存储发票的存档指令,上述存档指令携带上述发票的标识;获取上述标识对应的发票的电子文件和发票信息;将上述电子文件上传至ipfs,得到文件标识,上述文件标识为上述ipfs返回的上述电子文件的标识;将上述文件标识和上述发票信息上传至区块链网络。由此可见,若是直接将发票的电子文件存档在区块链上,则耗费的资源和成本较大,但是将发票的电子文件存档在星际文件系统,并且将唯一能下载该发票电子文件的哈希值上传至区块链网络中进行存档,能够既保证不被篡改也能够方便后续对发票的查验。并且由于发票对应的哈希值是上传至区块链网络的,因此,后续公司内部或者税局均可以查看到存档的信息,从而更能够保证发票没有被篡改。请参见图2,是本申请提供的一种发票的存档方法的流程示意图,如图2所示,上述方法可以包括:201、接收用于存储发票的存档指令,上述存档指令携带上述发票的标识。具体的,用户可以直接通过节点设备触发用于存储发票的存档指令,也可以通过其他终端触发用于存储发票的存档指令。则节点设备(既是ipfs的节点设备也是区块链网络中的节点设备)在接收到用于存储发票的存档指令时,该指令携带发票的标识,则节点设备可以根据该标识获取该发票的电子文件以及发票信息,其中该标识可以是发票的编号,也可以是生成的能够标识该发票的信息,也可以是从发票中提取到的能够唯一标识的信息。202、获取上述标识对应的发票的电子文件和发票信息。具体的,根据该标识获取对应的发票的电子文件以及发票信息。其中,发票的电子文件可以是用户上传的发票的扫描件,也可以是电子发票的文件。发票的电子文件的格式可以是便携式文档格式(portabledocumentformat,pdf)也可以是便携式网络图形(portablenetworkgraphics,png)等等,这里对发票的电子文件的格式不做限制。对于发票信息,可以是从发票信息中提取到的,其中可以是文字识别发票的电子文件得到的发票信息,也可以是在用户上传发票的电子文件时,一同上传的发票信息。其中,得到发票的电子文件以及发票信息后将发票的电子文件上传至ipfs。203、将上述电子文件上传至ipfs,得到文件标识。具体的,ipfs节点设备将发票的电子文件上传至ipfs中,可以一并参阅图3a,图3a是本申请实施例提供的一种发票的存档方法的存储示意图。如图3a所示,ipfs是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。内容可寻址即通过文件内容生成唯一哈希值来标识文件,而不是通过文件保存位置来标识。相同内容的文件在系统中只会存在一份,从而能够节约存储空间。在ipfs中的节点将构成一个分布式文件系统。因此发票的扫描件或者电子文件实际上是一个包含发票图像的文件,文件较大,存储在区块链上耗费的成本和资源较大,对于将整个发票文件存储在区块链上不是最优的选择,因此,本申请提出了将文件存储在ipfs中,可以节约存储在区块链上的资源,并且将ipfs返回的文件标识存储在区块链网络中,以便于后续的查验,同时也保证了存档的不可篡改性。其中,ipfs存储文件时,会经历以下几个步骤:上传的发票的电子文件进行分片,将发票的电子文件拆分成若干个等大小(如256kb,这里不做限制,其中大小可以由人为设置)的块(block),计算拆分后的每一个文件的哈希值,将计算到的哈希值进行编码处理,这里可以是base58进行编码,得到编码后的哈希值,即该文件块的文件标识。在得到该发票的电子文件包含的所有文件块的哈希之后,将这些文件块组合起来,可以是拼凑成一个数组,再计算一次哈希值,并进行编码,得到最后该发票的电子文件对应的文件标识,其中,ipfs中,当节点设备计算出当前文件的文件标识后,将该文件标识以及该文件标识下的目录结构同步至ipfs中,以便于后续的读取,这里的目录结构就是由当前的文件标识可以查询到这些文件快的哈希值,根据每一文件块的哈希值可以得到整个文件的目录结构。如图3a所示,将发票上传至ipfs后,该节点设备可以将该文件拆分成若干个256kb大小的文件块,图3a中以3个文件块为例,分别计算这三个文件块的哈希值,得到三个哈希值,其中,得到的三个哈希值是由字母和数字组成的字符串,再分别对这三个字符串进行编码(base58的编码方法)得到以“qm...”开头的文件块的文件标识,再将得到的文件标识组合成数组,计算组合后的值的哈希值,得到上传的发票文件的标识。该标识由ipfs节点设备同步在ipfs网络中,以便于每一个ipfs节点读取,并且可以进一步将该文件标识存储在区块链网络中。204、将上述文件标识和上述发票信息上传至区块链网络。具体的,请一并参阅图3b,图3b是本申请实施例提供的一种发票的存档方法的另一存储场景示意图。如图3b所示,将文件标识以及发票信息上传至区块链网络中,其中,本申请中的区块链网络是包含至少两条区块链的区块链网络,该区块链网络中的至少两条区块链中存储的内容不全相同,以两条区块链为例进行讲解,区块链节点设备将文件标识和发票信息上传至第一区块链,这里的第一区块链可以是区块链网络中的任一区块链。在上传完成之后,为了后续验证发票是否被篡改,获取该存储有文件标识和发票信息的区块对应的默克尔树根值,其中,这里的默克尔树根值不是当前区块头数据中的默克尔树根值,是根据该区块中的所有数据计算出的默克尔树根值,可以是由当前区块中存储的内容计算出的默克尔树根值,也可以是获取的与该区块的区块高度相邻(加一)的区块头数据中的默克尔树根值,将该默克尔树根值存储在第二区块链上,从而完成存储。如图3b中,在区块链a中获取确定当前存储的区块后,图3a中以根据区块体中的存储数据计算默克尔树根值为例,根据当前区块中存储的数据两两计算出默克尔树根值,将该计算出的默克尔树根值存储在第二区块链中,可选的,第二区块链也将该区块链上的数据同步至数据库中,同步的方法可以是每生成一个新的区块时,将该区块的数据存储在数据库中。具体地,计算默克尔树根值可以是根据当前区块中存储时间的先后顺序获取对应的哈希值,再两两计算出哈希值,直到最后计算出的一个哈希值就是默克尔树根值,如图3b所示,在图3b中的区块体中,以存储了四个数据为例,将存储的两个“发票信息 文件标识”的哈希值进一步计算哈希值,并与存储的“b链1区块的默克尔树根值”“b链2区块的默克尔树根值”的哈希值计算哈希值,得到两个哈希值,进一步对这两个哈希值进行计算,最终得到一个哈希值,即默克尔树根值,将该值存储在第二区块链中,可以理解的是,经过层层的运算,可以保证后续在查验发票时,确保发票不被篡改。其中,确定区块的方式可以是在将文件标识和发票信息上传至第一区块链后查询得到的,也可以是有数据库在区块链网络中每一个区块链网络在每生成一个区块后,将区块的内容同步至数据库中,并有区块的区块高度作为当前区块的标识,在获取存储的文件标识和哈希值时,可以是从数据库中进行获取的,这里对获取区块高度的方式不做限定。进一步的,本申请以区块链网络中包含两条区块链为例进行讲解的,实际上可以包含多条区块链,在区块链a中存储有上传的发票信息和文件标识以及其他链上的区块的默克尔树根值。在本申请实施例中,发票的存档可以接收用于存储发票的存档指令,上述存档指令携带上述发票的标识;获取上述标识对应的发票的电子文件和发票信息;将上述电子文件上传至ipfs,得到文件标识,上述文件标识为上述ipfs返回的上述电子文件的标识;将上述文件标识和上述发票信息上传至区块链网络。由此可见,若是直接将发票的电子文件存档在区块链上,则耗费的资源和成本较大,但是将发票的电子文件存档在星际文件系统,并且将唯一能下载该发票电子文件的哈希值上传至区块链网络中进行存档,能够既保证不被篡改也能够方便后续对发票的查验。并且由于发票对应的哈希值是上传至区块链网络的,因此,后续公司内部或者税局均可以查看到存档的信息,从而更能够保证发票没有被篡改。请参见图4,是本申请提供的一种发票的存档方法的另一流程示意图,如图4所示,上述方法可以包括:401、获取待验证发票的发票信息和电子文件。在一种可能的实现方式中,在存档完成之后,可以对发票进行验证是否被篡改。可以获取发票的发票信息以及电子文件,其中获取发票的信息和电子文件可以是将纸质的发票扫描成电子档的文件,也可以是从其他终端或者服务器获取到的电子发票的文件。其中,发票信息可以是从发票的电子文件中识别到的,例如扫描发票中的二维码获取到的,也可以是文字识别到的。402、根据文件标识与发票信息的对应关系,从上述第一区块链中获取上述待验证发票的发票信息对应的文件标识。在一种可能的实现方式中,请一并参阅图5a,图5a是本申请实施例提供的一种发票的存档方法查验的应用场景示意图,如图5a所示,可以根据待验证发票的发票信息,在第一区块链对应的数据库中查询发票信息对应的文件标识。403、从上述ipfs中下载第一电子文件,上述第一电子文件为上述获取的文件标识对应的电子文件。在一种可能的实现方式中,通过文件标识可以从ipfs中下载电子文件,该文件就是由待验证发票查询到的电子文件,其中,从ipfs中下载电子文件与存储电子文件是一个互逆的过程,根据该文件标识能够搜索到该文件标识对应的目录结构,根据该目录结构中包含的多个文件块的文件标识分别从ipfs节点中下载存储的每一个文件标识对应的文件块,将下载的文件块按照存储时组成的顺序进行拼接,即可以按照之前拼接的数组的顺序将文件块拼接好,得到需要整个文件。对于ipfs节点来说,当本地节点发出搜索请求时,它首先会从本地的存储的数据中查找请求的数据,如果没有找到,它便会向网络发出请求,找到拥有该数据的节点,一旦找到一个拥有所请求数据的节点,该节点会把数据反馈回来。然后,本地节点会把收到的文件块数据缓存一份到本地中,这样,整个网络中就相当于多了一份原数据的拷贝。当有更多的节点都请求该数据的时候,能够响应该请求的节点数就增加,请求该数据就变得更加容易。并且,而由于越来越多的节点都存有该数据,数据就变得几乎不可丢失。404、根据上述第一电子文件和上述待验证发票的电子文件,对上述待验证发票进行验证。可以理解的是,存储在公司的发票是以文件的方式进行存储的或者以纸质的方式进行存储的,当第三方(如税局、公司档案部门)想要对公司本地存储的发票进行验证是否被篡改时,可以根据发票信息与文件标识一一对应的关系从区块链网络中的区块链a中获取到当前发票信息对应的文件标识,即待验证发票的文件标识。根据待验证发票的文件标识可以从ipfs中根据获取到存档时存储的发票的电子文件,为了验证待验证的发票电子文件与下载得到的电子文件是否对应同一张发票,即发票的标识一致,对两个发票电子文件计算相似度,可以是计算两个发票中包含的文本信息的文本相似度,也可以是计算两个发票电子文件中的图像相似度,并根据预先设定的阈值判断这两个发票电子文件是否对应同一个发票标识,在相似度大于或等于阈值的情况下,则确定下载得到的电子文件与待验证的发票电子文件对应同一个发票标识,在相似度小于阈值的情况下,则确定下载得到的电子文件与待验证的发票电子文件不对应同一个发票标识。若判断出对应同一个发票标识,则进一步验证发票是否被篡改,若判断出不对应同一个发票标识则需要先找到对应同一个发票再进行下一步的验证。在一种可能的实现方式中,在判断出待验证的发票电子文件与下载得到的电子文件对应同一个标识的情况下,则可以通过获取到的文件标识和发票信息在第二区块链中验证是否被篡改,其中可以根据在第一区块链中存储该文件标识和发票信息的区块的数据计算出当前区块的默克尔树根值在第二区块链对应的数据库中进行查询,当查询到对应的默克尔树根值时,则确定该发票没有未被篡改,若查询不到对应的默克尔树根值时,则确定该发票被篡改。其中,如图5a所示,根据待验证的发票信息获取到该发票信息对应的文件标识,根据该文件标识在ipfs中查询文件,将下载的发票文件与待验证的发票进行相似度比较,当比较出的相似度大于阈值时,则确定上述待验证发票与上述下载的电子文件对应的发票的标识相同,即对应同一个发票,并根据在区块链a中存储的当前发票信息和文件标识的区块a的默克尔树根值进行验证。其中,获取区块a的默克尔树根值,可以是根据区块a中区块体存储的数据计算得到的默克尔树根值,也可以是根据在区块链a中与区块a相邻区块的区块头中获取区块a的默克尔树根值,对于区块a相邻区块是指区块a的下一个区块,即区块a的区块高度加一对于的区块。在获取到区块a的默克尔树根值后,在数据库中查询该默克尔树根值,这个数据库是区块链b对于的数据库,存储有区块链b上的全部数据。当查询到该默克尔树根值时,则确定并没有被篡改。在一种可能的实现方式中,请一并参阅图5b,图5b是本申请实施例提供的一种发票的存档方法查验的另一应用场景示意图,如图5b所示,本申请的方案可以应用在如图所示的应用程序(如即时通讯应用:微信)中,还可以应用于公众号中、应用程序中的小程序中等等,这里不做限定。以应用在微信小程序为例进行讲解,可以通过“微信发票助手”进行发票的存档以及发票的查验。如图5b所示,在微信发票助手中,可以显示用户的发票,即“我的发票”;还可以显示用户保存的发票抬头,即“我的发票抬头”,当用户点击“ 发票存档”按钮时,可以从本地获取电子发票的文件,也可以调用摄像头拍摄一张纸质发票,然后按照本申请实施例的步骤201-204进行存档,并显示在图中“我的发票”中。在存档之后,可以对发票进行查验,查验的发票也可以是从本地获取的文档,也可以是调用摄像头拍摄的一张发票的文件,然后可以从ipfs中下载的电子发票文件和当前待验证的发票文件显示在小程序的界面中进行对比显示。在本申请实施例中,发票的存档可以接收用于存储发票的存档指令,上述存档指令携带上述发票的标识;获取上述标识对应的发票的电子文件和发票信息;将上述电子文件上传至ipfs,得到文件标识,上述文件标识为上述ipfs返回的上述电子文件的标识;将上述文件标识和上述发票信息上传至区块链网络。由此可见,若是直接将发票的电子文件存档在区块链上,则耗费的资源和成本较大,但是将发票的电子文件存档在星际文件系统,并且将唯一能下载该发票电子文件的哈希值上传至区块链网络中进行存档,能够既保证不被篡改也能够方便后续对发票的查验。并且由于发票对应的哈希值是上传至区块链网络的,因此,后续公司内部或者税局均可以查看到存档的信息,从而更能够保证发票没有被篡改。请参见图6,图6是本申请实施例提供的一种发票的存档装置6000的结构示意图。本申请实施例提供的发票的存档装置6000包括:接收单元601,用于接收用于存储发票的存档指令,上述存档指令携带上述发票的标识;第一获取单元602,用于获取上述标识对应的发票的电子文件和发票信息;第一上传单元603,用于将上述电子文件上传至ipfs,得到文件标识,上述文件标识为上述ipfs返回的上述电子文件的标识;第二上传单元604,用于将上述文件标识和上述发票信息上传至区块链网络。在一种可能的实现方式中,上述区块链网络包括n条区块链,上述n条区块链之间存在通信连接,上述n为大于或等于1的整数,上述第二上传单元604,具体用于:将上述文件标识和上述发票信息上传至第一区块链,上述第一区块链为上述区块链网络中的任一区块链。在一种可能的实现方式中,上述将上述文件标识和上述发票信息上传至区块链网络之后,上述装置6000还包括:第二获取单元605,用于获取待验证发票的发票信息和电子文件;第三获取单元606,用于根据文件标识与发票信息的对应关系,从上述第一区块链中获取上述待验证发票的发票信息对应的文件标识;下载单元607,用于从上述ipfs中下载第一电子文件,上述第一电子文件为上述获取的文件标识对应的电子文件;验证单元608,用于根据上述第一电子文件和上述待验证发票的电子文件,对上述待验证发票进行验证。在一种可能的实现方式中,上述第三获取单元606,具体用于:根据上述待验证发票的发票信息确定区块高度,得到待验证区块高度;根据文件标识与发票信息的对应关系,从上述第一区块链中上述待验证区块高度对应的区块中获取上述待验证发票的发票信息对应的文件标识。在一种可能的实现方式中,上述验证单元608,具体用于:在上述第一电子文件与上述待验证发票的电子文件的相似度大于或等于阈值的情况下,确定上述待验证发票与上述第一电子文件对应的发票的标识相同;在上述第一电子文件与上述待验证发票的电子文件的相似度小于阈值的情况下,确定上述待验证发票与上述第一电子文件对应的发票的标识不同。在一种可能的实现方式中,上述确定上述待验证发票与上述第一电子文件对应的发票的标识相同之后,上述装置6000还包括:第一确定单元609,用于根据上述第一区块链中上述待验证区块高度对应的区块的默克尔树根值,确定上述发票是否被篡改。在一种可能的实现方式中,上述装置6000还包括:第二确定单元610,用于根据上述发票信息确定区块高度;第四获取单元611,获取上述第一区块链中上述区块高度对应的区块的默克尔树根值;第三上传单元612,用于将上述默克尔树根值上传至第二区块链,上述第二区块链为上述区块链网络中除上述第一区块链以外的任一区块链;上述根第一确定单元609,具体用于:获取上述待验证区块高度对应的区块的默克尔树根值,得到待验证默克尔树根值;查询数据库中是否存储上述待验证默克尔树根值,上述数据库存储有上述第二区块链中的数据;当在数据库中查询到上述待验证默克尔树根值时,确定上述发票未被篡改。有关上述接收单元601、第一获取单元602、第一上传单元603、第二上传单元604、第二获取单元605、第三获取单元606、下载单元607、验证单元608、第一确定单元609、第二确定单元610、第四获取单元611和第三上传单元612详细的描述可以直接参考上述图2至图5b所示的方法实施例中的相关描述直接得到,这里不加赘述。在本申请实施例中,发票的存档装置可以接收用于存储发票的存档指令,上述存档指令携带上述发票的标识;获取上述标识对应的发票的电子文件和发票信息;将上述电子文件上传至ipfs,得到文件标识,上述文件标识为上述ipfs返回的上述电子文件的标识;将上述文件标识和上述发票信息上传至区块链网络。由此可见,若是直接将发票的电子文件存档在区块链上,则耗费的资源和成本较大,但是将发票的电子文件存档在星际文件系统,并且将唯一能下载该发票电子文件的哈希值上传至区块链网络中进行存档,能够既保证不被篡改也能够方便后续对发票的查验。并且由于发票对应的哈希值是上传至区块链网络的,因此,后续公司内部或者税局均可以查看到存档的信息,从而更能够保证发票没有被篡改。请参阅图7,图7是本申请实施例提供的一种电子设备的结构示意图。如图7所示,该电子设备7000可以包括:一个或多个处理器701、输入设备702、输出设备703、存储器704、收发器705。上述处理器701、输入设备702、输出设备703、存储器704、收发器705通过总线连接。其中,输入设备702可以包括触控屏、键盘、麦克风等,输出设备703可以包括显示屏、音响等,收发器705用于接收和发送数据。存储器704用于存储计算机程序,该计算机程序包括程序指令,处理器701用于执行存储器704存储的程序指令,其中,处理器701被配置用于调用程序指令执行以下步骤:接收用于存储发票的存档指令,上述存档指令携带上述发票的标识;获取上述标识对应的发票的电子文件和发票信息;将上述电子文件上传至ipfs,得到文件标识,上述文件标识为上述ipfs返回的上述电子文件的标识;将上述文件标识和上述发票信息上传至区块链网络。在一种可能的实现方式中,上述区块链网络包括n条区块链,上述n条区块链之间存在通信连接,上述n为大于或等于1的整数,上述将上述文件标识和上述发票信息上传至区块链网络,包括:将上述文件标识和上述发票信息上传至第一区块链,上述第一区块链为上述区块链网络中的任一区块链。在一种可能的实现方式中,上述将上述文件标识和上述发票信息上传至区块链网络之后,上述方法还包括:获取待验证发票的发票信息和电子文件;根据文件标识与发票信息的对应关系,从上述第一区块链中获取上述待验证发票的发票信息对应的文件标识;从上述ipfs中下载第一电子文件,上述第一电子文件为上述获取的文件标识对应的电子文件;根据上述第一电子文件和上述待验证发票的电子文件,对上述待验证发票进行验证。在一种可能的实现方式中,上述根据文件标识与发票信息的对应关系,从上述第一区块链中获取上述待验证发票的发票信息对应的文件标识,包括:根据上述待验证发票的发票信息确定区块高度,得到待验证区块高度;根据文件标识与发票信息的对应关系,从上述第一区块链中上述待验证区块高度对应的区块中获取上述待验证发票的发票信息对应的文件标识。在一种可能的实现方式中,上述根据上述第一电子文件和上述待验证发票的电子文件,对上述待验证发票进行验证,包括:在上述第一电子文件与上述待验证发票的电子文件的相似度大于或等于阈值的情况下,确定上述待验证发票与上述第一电子文件对应的发票的标识相同;在上述第一电子文件与上述待验证发票的电子文件的相似度小于阈值的情况下,确定上述待验证发票与上述第一电子文件对应的发票的标识不同。在一种可能的实现方式中,上述确定上述待验证发票与上述第一电子文件对应的发票的标识相同之后,上述处理器701被配置用于调用程序指令执行以下步骤:根据上述第一区块链中上述待验证区块高度对应的区块的默克尔树根值,确定上述发票是否被篡改。在一种可能的实现方式中,上述处理器701被配置用于调用程序指令执行以下步骤:根据上述发票信息确定区块高度;获取上述第一区块链中上述区块高度对应的区块的默克尔树根值;将上述默克尔树根值上传至第二区块链,上述第二区块链为上述区块链网络中除上述第一区块链以外的任一区块链;上述根据上述第一区块链中上述待验证区块高度对应的区块的默克尔树根值确定上述发票是否被篡改,包括:获取上述待验证区块高度对应的区块的默克尔树根值,得到待验证默克尔树根值;查询数据库中是否存储上述待验证默克尔树根值,上述数据库存储有上述第二区块链中的数据;当在数据库中查询到上述待验证默克尔树根值时,确定上述发票未被篡改。应当理解,在一些可行的实施方式中,上述处理器701可以是中央处理单元(centralprocessingunit,cpu),该处理器701还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器704可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器704的一部分还可以包括非易失性随机存取存储器。具体实现中,上述电子设备7000可通过其内置的各个功能模块执行如上述图1至图5b中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。在本申请实施例中,发票存档的电子设备可以接收用于存储发票的存档指令,上述存档指令携带上述发票的标识;获取上述标识对应的发票的电子文件和发票信息;将上述电子文件上传至ipfs,得到文件标识,上述文件标识为上述ipfs返回的上述电子文件的标识;将上述文件标识和上述发票信息上传至区块链网络。由此可见,若是直接将发票的电子文件存档在区块链上,则耗费的资源和成本较大,但是将发票的电子文件存档在星际文件系统,并且将唯一能下载该发票电子文件的哈希值上传至区块链网络中进行存档,能够既保证不被篡改也能够方便后续对发票的查验。并且由于发票对应的哈希值是上传至区块链网络的,因此,后续公司内部或者税局均可以查看到存档的信息,从而更能够保证发票没有被篡改。此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的电子设备所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图2-图5b所对应实施例中对上述数据验证方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。本申请的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。当前第1页1 2 3 当前第1页1 2 3 
技术特征:

1.一种发票的存档方法,其特征在于,包括:

接收用于存储发票的存档指令,所述存档指令携带所述发票的标识;

获取所述标识对应的发票的电子文件和发票信息;

将所述电子文件上传至星际文件系统ipfs,得到文件标识,所述文件标识为所述ipfs返回的所述电子文件的标识;

将所述文件标识和所述发票信息上传至区块链网络。

2.根据权利要求1所述的方法,其特征在于,所述区块链网络包括n条区块链,所述n条区块链之间存在通信连接,所述n为大于或等于1的整数,所述将所述文件标识和所述发票信息上传至区块链网络,包括:

将所述文件标识和所述发票信息上传至第一区块链,所述第一区块链为所述区块链网络中的任一区块链。

3.根据权利要求2所述的方法,其特征在于,所述将所述文件标识和所述发票信息上传至区块链网络之后,所述方法还包括:

获取待验证发票的发票信息和电子文件;

根据文件标识与发票信息的对应关系,从所述第一区块链中获取所述待验证发票的发票信息对应的文件标识;

从所述ipfs中下载第一电子文件,所述第一电子文件为所述获取的文件标识对应的电子文件;

根据所述第一电子文件和所述待验证发票的电子文件,对所述待验证发票进行验证。

4.根据权利要求3所述的方法,其特征在于,所述根据文件标识与发票信息的对应关系,从所述第一区块链中获取所述待验证发票的发票信息对应的文件标识,包括:

根据所述待验证发票的发票信息确定区块高度,得到待验证区块高度;

根据文件标识与发票信息的对应关系,从所述第一区块链中所述待验证区块高度对应的区块中获取所述待验证发票的发票信息对应的文件标识。

5.根据权利要求4所述的方法,其特征在于,所述根据所述第一电子文件和所述待验证发票的电子文件,对所述待验证发票进行验证,包括:

在所述第一电子文件与所述待验证发票的电子文件的相似度大于或等于阈值的情况下,确定所述待验证发票与所述第一电子文件对应的发票的标识相同;

在所述第一电子文件与所述待验证发票的电子文件的相似度小于阈值的情况下,确定所述待验证发票与所述第一电子文件对应的发票的标识不同。

6.根据权利要求5所述的方法,其特征在于,所述确定所述待验证发票与所述第一电子文件对应的发票的标识相同之后,所述方法还包括:

根据所述第一区块链中所述待验证区块高度对应的区块的默克尔树根值,确定所述发票是否被篡改。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:

根据所述发票信息确定区块高度;

获取所述第一区块链中所述区块高度对应的区块的默克尔树根值;

将所述默克尔树根值上传至第二区块链,所述第二区块链为所述区块链网络中除所述第一区块链以外的任一区块链;

所述根据所述第一区块链中所述待验证区块高度对应的区块的默克尔树根值确定所述发票是否被篡改,包括:

获取所述待验证区块高度对应的区块的默克尔树根值,得到待验证默克尔树根值;

查询数据库中是否存储所述待验证默克尔树根值,所述数据库存储有所述第二区块链中的数据;

当在数据库中查询到所述待验证默克尔树根值时,确定所述发票未被篡改。

8.一种装置,其特征在于,包括:

接收单元,用于接收用于存储发票的存档指令,所述存档指令携带所述发票的标识;

第一获取单元,用于获取所述标识对应的发票的电子文件和发票信息;

第一上传单元,用于将所述电子文件上传至星际文件系统ipfs,得到文件标识,所述文件标识为所述ipfs返回的所述电子文件的标识;

第二上传单元,用于将所述文件标识和所述发票信息上传至区块链网络。

9.一种电子设备,其特征在于,包括:处理器和存储器;

所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如权利要求1-7任一项所述的方法。

10.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有一条或多条第一指令,所述一条或多条第一指令适于由处理器加载并执行如权利要求1-7任一项所述的方法。

技术总结
本申请公开了一种发票的存档方法、装置以及计算机可读存储介质,该方法包括:接收用于存储发票的存档指令,所述存档指令携带所述发票的标识;获取所述标识对应的发票的电子文件和发票信息;将所述电子文件上传至星际文件系统IPFS,得到文件标识,所述文件标识为所述IPFS返回的所述电子文件的标识;将所述文件标识和所述发票信息上传至区块链网络。采用本申请,可以防止发票存档之后被篡改,使得发票的存档有意义。

技术研发人员:戴传兵
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2020.01.09
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-23826.html

最新回复(0)