CN109241772B - 发票区块链记录方法、装置、区块链网关服务器和介质 - Google Patents
发票区块链记录方法、装置、区块链网关服务器和介质 Download PDFInfo
- Publication number
- CN109241772B CN109241772B CN201811044779.1A CN201811044779A CN109241772B CN 109241772 B CN109241772 B CN 109241772B CN 201811044779 A CN201811044779 A CN 201811044779A CN 109241772 B CN109241772 B CN 109241772B
- Authority
- CN
- China
- Prior art keywords
- invoice
- blockchain
- event
- block
- information
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6272—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database by registering files or documents with a third party
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/04—Billing or invoicing
Abstract
本公开提供了一种发票区块链记录方法、装置、区块链网关服务器和介质。该方法包括:响应于接收到发行发票事件上链请求,基于发行发票事件上链请求中包含的发票标识,在每个区块链节点中分配一个区块链设备,用于承载与该发票标识对应的子区块链;将发行发票事件上链请求中的发行发票事件信息记录在所述子区块链上;响应于接收到任何带有该发票标识的发票事件上链请求,将该发票事件上链请求中的发票事件信息,记录在所述子区块链上。本公开实施例能够在让发票信息记录到区块链的情况下减少发票信息泄露。
Description
技术领域
本公开涉及区块链领域,具体涉及一种发票区块链记录方法、装置、区块链网关服务器和介质。
背景技术
目前,区块链已经越来越多地被应用于工业生产和生活中。区块链技术具有去中心化、信息不可篡改、信任度高的优点。发票管理目前采取各个单位分头管理的模式。但实际上,如果能利用区块链技术共同监督、信任度高的优点,在区块链上记录和关联发票相关的信息,是非常不错的选择。但是,如果将所有的发票都上链,会造成所有的发票的信息都能被任何区块链节点得到,容易信息泄露。现有技术急需一种在让发票信息上链的情况下减少发票信息泄露的方案。
发明内容
本发明实施例提供了一种发票区块链记录方法、装置、区块链网关服务器和介质,可以让发票信息上区块链的情况下减少发票信息泄露。
根据本公开实施例的一方面,公开了一种发票区块链记录方法,所述方法包括:
响应于接收到发行发票事件上链请求,基于发行发票事件上链请求中包含的发票标识,在每个区块链节点中分配一个区块链设备,用于承载与该发票标识对应的子区块链;
将发行发票事件上链请求中的发行发票事件信息记录在所述子区块链上;
响应于接收到任何带有该发票标识的发票事件上链请求,将该发票事件上链请求中的发票事件信息,记录在所述子区块链上,其中,所述发票事件上链请求包括开票事件上链请求和发票报销事件上链请求,所述发票事件信息包括开票事件信息和发票报销事件信息。
根据本公开实施例的一方面,公开了一种发票区块链记录装置,所述装置包括:
分配单元,用于响应于接收到发行发票事件上链请求,基于发行发票事件上链请求中包含的发票标识,在每个区块链节点中分配一个区块链设备,用于承载与该发票标识对应的子区块链;
第一记录单元,用于将发行发票事件上链请求中的发行发票事件信息记录在所述子区块链上;
第二记录单元,用于响应于接收到任何带有该发票标识的发票事件上链请求,将该发票事件上链请求中的发票事件信息,记录在所述子区块链上,其中,所述发票事件上链请求包括开票事件上链请求和发票报销事件上链请求,所述发票事件信息包括开票事件信息和发票报销事件信息。
根据本公开实施例的一方面,公开了一种区块链网关服务器,包括:存储器,存储有计算机可读指令;处理器,读取存储器存储的计算机可读指令,以执行以上所述的方法。
根据本公开实施例的一方面,公开了一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行如上所述的方法。
本公开实施例中,考虑到开票单位开出发票时,甚至于发行单位发行该发票时,该发票可能关联的环节是固定的,例如,发票发行后涉及开票环节、报销环节等,因此,对于这一发票,需要记录发行发票信息、开票信息、发票报销信息等,涉及发票发行单位、开票单位、员工、发票报销单位等。只有发票可能关联到的这些环节会关心发票上链信息,把各个发票的信息都统一上链到一条区块链上,容易信息泄露,且无关的单位也不会关心。因此,本公开实施例将区块链分成多个子区块链存储,每个子区块链只存储特定发票标识所关联的发票上链信息。当接收到发行发票事件上链请求时,基于发票标识,分配一个子区块链,将发行发票事件信息记录在所述子区块链上。当后续接收到任何带有该发票标识的发票事件上链请求(例如开票事件上链请求、发票报销事件上链请求)时,将相关发票事件信息,也记录在所述子区块链上。因此,一条子区块链只记载利益相关方的发票上链信息,不记载其它方的发票上链信息,大大减少了发票信息泄露的可能性,而且子区块链数目可以随意扩展,达到性能无上限的目的。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。
图1A-1F示出了根据本公开一个实施例的发票区块链记录方法应用于每个发票标识对应于一条子区块链的应用场景时,从发票发行到发票报销所涉及的界面的示意图。
图2A-2F示出了根据本公开一个实施例的发票区块链记录方法应用于开票单位和发票报销单位的每个组合对应于一条子区块链的应用场景时,从发票发行到发票报销所涉及的界面的示意图。
图3A示出了根据本公开一个实施例的发票区块链记录方法应用于的体系构架图。
图3B示出了图3A所示的体系构架中发票的完整流转过程图。
图3C示出了图3A所示的体系构架中分配的承载各子区块链的区块链设备的情况。
图4示出了根据本公开一个实施例的发票区块链记录方法的流程图。
图5示出了根据本公开一个实施例的步骤410的具体流程图。
图6示出了根据本公开一个实施例的步骤430的具体流程图。
图7示出了根据本公开一个实施例的步骤430的具体流程图。
图8示出了根据本公开一个实施例的发票区块链记录装置的框图。
图9示出了根据本公开一个实施例的区块链网关服务器的硬件结构图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些示例实施方式使得本公开的描述将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多示例实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的示例实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、步骤等。在其它情况下,不详细示出或描述公知结构、方法、实现或者操作以避免喧宾夺主而使得本公开的各方面变得模糊。
附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
下面先参照图3A-3C描述一下本公开实施例所应用的体系构架、整体流程、和分配的承载各子区块链的区块链设备的情况。
图3A示出了本公开实施例所应用的一种体系架构。该体系构架包括区块链发票管理系统4、位于工商机关3的发票发行终端301、位于开票单位(申领发票单位)2的开票终端201、位于发票报销单位1的发票报销单位终端101 和员工终端102。区块链发票管理系统4包括区块链网关服务器401、区块链服务器402。区块链服务器402基于区块链技术管理各个用户(包括发票发行终端301、开票终端201、报销单位终端101和员工终端102)的电子发票。区块链网关服务器401用于提供用户与区块链发票管理系统4之间的访问服务,也可以作为本实施环境中的区块链的记账节点。
区块链发票管理系统4(具体地说,区块链服务器402)和该区块链发票管理系统4的每个用户(包括发票发行终端301、开票终端201、报销单位终端101和员工终端102)都是一个区块链节点,即记录所有上区块链记录的发票信息。区块链节点是一个泛称,大多数区块链节点具有多个区块链设备。例如,开票终端201是开票单位的终端的泛称,从该开票单位的任何一个终端发出的开票事件上链请求,都认为是该开票终端201发出的开票事件上链请求。开票终端201可以看成一个区块链节点,但内部可能有不同区块链设备403,这些区块链设备403都能发出该开票事件上链请求,也都能存储区块链中的上链信息。区块链服务器402也可以看成一个区块链节点,其内部可能有不同区块链设备403,这些区块链设备403都能存储区块链中的上链信息。在本公开实施例中,区块链分成多个子区块链,每个子区块链在每个区块链节点中都有一个对应的区块链设备403存储,且在每个区块链节点中只会在该唯一分配的区块链设备403上存储,不会在其它的区块链设备403上存储。
这一点在图3C中体现得更为明显。对于子区块链1,在区块链节点A中分配区块链设备A1来承载,在区块链节点B中分配区块链设备B1来承载,在区块链节点C中分配区块链设备C2来承载,区块链设备A1、区块链设备B1、区块链设备C2承载同样一条子区块链,也即是区块链设备A1、区块链设备 B1、区块链设备C2存储有同样一条子区块链1。对于子区块链2,在区块链节点A中分配区块链设备A3来承载,在区块链节点B中分配区块链设备B3来承载,在区块链节点C中分配区块链设备C3来承载,区块链设备A3、区块链设备B3、区块链设备C3承载同样一条子区块链。对于子区块链3,在区块链节点A中分配区块链设备A3来承载,在区块链节点B中分配区块链设备B4来承载,在区块链节点C中分配区块链设备C4来承载,区块链设备A3、区块链设备B4、区块链设备C4承载同样一条子区块链。从中可以看出,区块链设备A3既承载着子区块链2,又承载着子区块链3。也就是说,一个区块链设备可能存储多条子区块链,每条子区块链的记录由相应一个线程来执行。
由于在发票流转过程的前面过程中的发票事件信息已经记录在子区块链上,这样,在发票流转的后续过程中,就可以参考该发票事件信息,决定后续过程是否应执行。例如,如图3B所示,在发票发行时,发行机关终端301将发票作为一种资产发行,将发行发票事件信息(包括发票信息、以及发票转移信息)通过区块链网关服务器401记录在相应的子区块链上,即上链。在开票时,开票终端201向区块链网关服务器401发出开票请求。区块链网关服务器401将开票请求中携带的发票信息和发票转出方信息与子区块链上已经记录的发行发票时的发票信息、发票转移信息中的转入方信息进行核对,如一致,说明开出的发票不是虚假的,可以允许开票。同样,开票后,区块链网关服务器401将开票事件信息(包括发票信息、以及发票转移信息)记录在相应的子区块链上,即上链。在发票报销时,员工终端 102把待报销的电子发票发送到报销单位终端101。报销单位终端101向区块链网关服务器401发送发票报销请求。区块链网关服务器401将发票报销请求中携带的发票信息、发票转出方信息、发票转入方信息分别与子区块链上已经记录的开具发票时的发票信息、发票转移信息中的转出方信息和发票抬头信息进行核对,如一致,说明报销的发票不是虚假的,可以允许报销。由于各区块链节点中分配用来存储相关子区块链的区块链设备存储着相同的一条子区块链,这些区块链设备起到了共同监督作用,该子区块链上记录的任何信息不能篡改。因此,本公开实施例中,可以利用子区块链上的数据不能篡改的特性,提高了发票信息记录的安全性。同时,由于一条子区块链只记载利益相关方的发票上链信息,不记载其它方的发票上链信息,大大减少了发票信息泄露的可能性,而且子区块链数目可以随意扩展,达到性能无上限的目的。
下面结合图1A-1F、以及图2A-2F,分别描述根据本公开一个实施例的发票区块链记录方法应用于每个发票标识对应于一条子区块链的应用场景、和开票单位和发票报销单位的每个组合对应于一条子区块链的应用场景下所涉及的各界面的示意图。
如图2A所示,需要发票的单位(包括企业、事业、国家机关、社会团队)首先在工商机关申领发票。然后,工商机关向该单位发行发票,发行发票时在工商机关的发票发行系统显示的界面如图1A所示。在图1A所示的界面上,工商机关的工作人员需要填写申领发票单位、申领发票单位纳税人识别号、拟为该申领发票单位发行的发票代码、发票号码、发票的使用规则、发行机关。其中,发票代码和发票号码合在一起组成发票标识,是唯一区别该发票与其它发票不同的标志。发票代码是唯一识别发票发行的批次的标志。为申领发票单位发放的一批发票,其发票代码都是相同的。通过发票代码,可以区分发票发放的批次。发票号码是在一个批次中识别具体发票的唯一的标识。在同一批次中,不同发票的发票号码各不相同。利用发票代码加上发票号码,就可以唯一识别该发票。在发行时,发行机关一般不会只对申领发票单位发行一张发票,因此,发票号码往往会填写一个范围。使用规则是发票在开出时必须遵循的规则。例如,可以规定,每张发票的填写额度不得超过10万元,每周发票开出总额不得超过100万元,发票抬头必须是深圳市下属单位,等等。工商机关为申领发票单位定好规则后,申领发票单位在开出发票时,系统就会自动核实该发票是否符合该使用规则。例如,检查发票的填写额度是否没有超过10万元,计算该系统这一周开出的发票总额,审核该总额在该发票开出后是否没有超过100 万元,该发票的抬头是否是深圳市下属单位,等等。在填写完毕后,工商机关的工作人员点“确认”按钮,发票发行系统根据界面上填写的信息生成向申请发票单位发放的电子发票,这些电子发票自动传送到申请发票单位的发票开具系统中。同时,发票发行终端301向区块链网关服务器401 发出发行发票事件上链请求(包括发票信息和发行发票事件发票转移信息)。区块链网关服务器401在各区块链节点101、201、301、402中各自分配一个区块链设备403,用于承载该请求中的发票信息中的发票标识对应的子区块链。然后,将发票信息和发行发票事件发票转移信息记录在由这些区块链设备403的承载的子区块链上,即上链。发票转移信息包括发票的转出方信息、转入方信息、转移时间。在发行发票事件中,转出方是工商机关,如图1A所示的“深圳市工商局”,转入方是申领发票单位,如图 1A所示的“深圳市A有限责任公司”,转移时间是在点击图1A的“确认”按钮后,开始发行发票的时间,该时间是由发票发行系统自动记录的。如图1A所示,发行的发票标识为2873ERST2-100001至2873ERST2-100100(发票代码-发票号码),共100张发票。在每个区块链节点相应地分配100个区块链设备,分别承载相应的100个子区块链。将100张发票的发行发票事件信息分别记录在这100个子区块链中。
当上链后,显示如图1B所示的界面。界面指示“已将发票标识为 2873ERST2-100001至2873ERST2-100100的发行发票事件信息分别记录到与发票标识2873ERST2-100001至2873ERST2-100100各自对应的子区块链上”。
在开票时,在开票单位的发票开具系统上显示如图1C所示的界面。左侧界面的开票人、开票人纳税人识别号、发票代码、发票号码、使用规则、地址、电话、开户行及账号是发票开具系统自动填写好的,其中,可以在图1A所示的为该开票单位发放的发票号码的范围中顺序选取未发放的发票号码自动填写在左侧界面,例如按照发票号码由小到大的顺序选取。右侧界面中的信息需要开票单位的负责开票的员工开票时填写,主要有发票抬头名称、发票抬头纳税人识别号、领取人、领取人电话、地址、电话、开户行及账号、金额、用途等。填写完毕后,开票单位的员工选择“确认”按钮。发票开具系统根据界面上填写的信息开出向开票单位开出的电子发票,这些电子发票通过微信扫描等方式转移到领取人(即发票报销单位的员工)的卡包中。同时,开票终端102通过区块链网关服务器401将此次开票所涉及的开票事件信息记录在该发票标识对应的子区块链上,即上链。记录的开票事件信息包括如图1C填写的发票信息、以及开票事件发票转移信息。开票事件发票转移信息包括发票的转出方信息、转入方信息、转移时间。在开票事件中,转出方是开票单位,如图1C所示的“深圳市A有限责任公司”,转入方是员工,如图1C所示的“C”,转移时间是在点击图 1B的“确认”按钮后,开始开票的时间,该时间是由发票开具系统自动记录的。
当上链后,显示如图1C所示的界面。界面指示“已将发票标识为 2873ERST2-100004的开票事件信息记录到与发票标识2873ERST2-100004对应的子区块链上”。
当员工从自己的卡包里将电子发票取出发送到报销单位终端101报销时,在报销单位终端101的屏幕上,自动生成如图1E所示的界面。该界面展示的信息包括发票信息和发票报销事件发票转移信息。其中,发票信息是根据传到报销单位终端的电子发票上的信息自动生成的,它与图1C中的信息基本上是相同的。而发票报销事件发票转移信息则是报销单位终端的发票报销系统自动生成的。它包括转出方信息、转入方信息、转出方电话、等,其中转出方信息是按照发票信息中的领取人信息生成的,与该领取人信息一致,例如图1C中的“C”;转入方信息是按照发票信息中的发票抬头名称生成的,与抬头名称信息一致,例如图1C中的“深圳市B有限责任公司”;转出方电话是按照发票信息中的领取人电话生成的,例如图1C中的“……”。当报销单位的财务人员在图1E的界面上选择“确认”后,向区块链网关服务器401发送发票报销上链请求,将请求中含有的发票报销事件信息记录在该发票标识对应的子区块链上,即上链。记录的发票报销事件信息包括如图1E填写的发票信息、以及发票报销事件发票转移信息。开票事件发票转移信息包括发票的转出方信息、转入方信息、转出方电话。
当上链后,显示如图1F所示的界面。界面指示“已将发票标识为 2873ERST2-100004的发票报销事件信息记录到与发票标识 2873ERST2-100004对应的子区块链上”。
图1A-F示出了本公开实施例应用到每个发票标识对应于一条子区块链的应用场景时的界面。该应用场景下,一条子区块链只记载同一发票(同一标识的发票)的发票上链信息,因为同一发票的相关人最关心该发票发生了什么事情,其它发票的相关人并不关心该发票发生的事件。因此,让一条子区块链只记录同一发票标识的发票事件信息,大大减少了发票信息泄露的可能性。
上述应用场景中,仅让同一发票的相关人员(包括发票的开票单位和报销单位)知晓发票发生的相关事件。如果发票的开票单位和报销单位有大量发票往来,针对开票单位和报销单位之间往来的所有发票,设置同一个子区块链,实际上也能达到仅让发票的相关人员知晓发票发生的相关事件的目的,同时还减少了子区块链的数目,提高了区块链记录效率。因此,在图2A-F的应用场景之下,开票单位和发票报销单位的每个组合对应于一条子区块链。同一开票单位、并且是同一发票报销单位的所有发票都记录在同一区块链中。
然而,在该应用场景之下,在发票发行时,是不知道发票报销单位的,因此,只能先根据发票标识设置子区块链。当开票时,知晓了发票报销单位,而开票单位和发票报销单位的每个组合预定规定好对应于一条子区块链,该子区块链在每个区块链节点预先分配到一个区块链设备,此时可以将在发票发行时按照发票标识记录到相应子区块链的发行发票事件信息拷贝到与该开票单位和发票报销单位的组合对应的子区块链,在此基础上继续记录后续的开票事件信息、发票报销事件信息等等。
图2A-C与图1A-C基本相同,故不赘述。开票单位和发票报销单位的每个组合对应于一条子区块链的应用场景与每个发票标识对应于一条子区块链的应用场景从图2D开始有所不同。
在开票时,开票终端201向区块链网关服务器401发送开票事件上链请求,该请求中包含发票信息和开票事件发票转移信息。发票信息中如图 2C所示,开票人是深圳市绿野有限责任公司,发票抬头名称(即报销单位) 是深圳市B有限责任公司,区块链网关服务器401判断该开票单位和该报销单位的组合预先是设置了一个子区块链的,这个子区块链预先在每个区块链节点被分好一个区块链设备。因此,区块链网关服务器401将在发票发行时按照发票标识记录到相应子区块链的发行发票事件信息拷贝到与该开票单位和发票报销单位的组合对应的子区块链,并将该发票信息和开票事件发票转移信息记录到该子区块链。开票终端201显示如图2D所示的界面,指示“由于深圳市A有限责任公司-深圳市B有限责任公司存在一条预定的子区块链,已将发票标识为2873ER5T2-100004的发票的发行发票事件信息重新记录到该预定的子区块链上,并将发票标识为 2873ER5T2-100004的发票的开票事件信息也记录到该预定的子区块链上”。
图2E与图1E相同,故不赘述。
在发票报销时,发票报销终端101向区块链网关服务器401发送发票报销事件上链请求,该请求中包含发票信息和发票报销事件发票转移信息。发票信息中如图2E所示,开票人是深圳市A有限责任公司,发票抬头名称 (即报销单位)是深圳市B有限责任公司,区块链网关服务器401判断该开票单位和该报销单位的组合预先是设置了一个子区块链的,这个子区块链预先在每个区块链节点被分好一个区块链设备。因此,区块链网关服务器401将该发票信息和发票报销事件发票转移信息记录到该子区块链。发票报销终端201显示如图2F所示的界面,指示“由于深圳市A有限责任公司-深圳市B有限责任公司存在一条预定的子区块链,已将发票标识为 2873ER5T2-100004的发票的发票报销事件信息记录到该预定的子区块链上”。
如图4所示,根据本公开的一个实施例,提供了一种发票区块链记录方法。该方法是由区块链网关服务器(例如图3A中的区块链网关服务器401) 执行的。该方法包括:
步骤410、响应于接收到发行发票事件上链请求,基于发行发票事件上链请求中包含的发票标识,在每个区块链节点中分配一个区块链设备,用于承载与该发票标识对应的子区块链;
步骤420、将发行发票事件上链请求中的发行发票事件信息记录在所述子区块链上;
步骤430、响应于接收到任何带有该发票标识的发票事件上链请求,将该发票事件上链请求中的发票事件信息,记录在所述子区块链上,其中,所述发票事件上链请求包括开票事件上链请求和发票报销事件上链请求,所述发票事件信息包括开票事件信息和发票报销事件信息。
下面分别对这些步骤进行详细描述。
在步骤410中,响应于接收到的发行发票事件上链请求,基于发行发票事件上链请求中包含的发票标识,在每个区块链节点中分配一个区块链设备,用于承载与该发票标识对应的子区块链。
发行发票事件是指由工商机关向开票单位发放发票的事件。一般来说,发放发票时不是只发放一张发票,往往是成批发放,如图1A所示,一次性向同一开票单位发放发票标识为2873ERST2-100001至2873ERST2-100100 (发票代码-发票号码)的100张发票。发行发票事件上链请求是将发票发行事件中涉及的信息记录到子区块链上的请求,该信息包括发票信息和发行发票事件发票转移信息。发票信息是指发票上印有的信息,如图1A中的申领发票单位、申领发票单位纳税人识别号、发票代码、发票号码、发票的使用规则、发行机关等。发行发票事件发票转移信息包括发行发票事件中发票的转出方信息、转入方信息、转移时间。在发行发票事件中,转出方是工商机关,如图1A所示的“深圳市工商局”,转入方是申领发票单位,如图1A所示的“深圳市绿野有限责任公司”,转移时间是在点击图1A的“确认”按钮后,开始发行发票的时间,该时间是由发票发行系统自动记录的。
接收到发行发票事件上链请求后,由于上述发票信息中包含发票代码、发票号码,即发票标识,因此可以在每个区块链节点中分配一个区块链设备,用于承载与该发票标识对应的子区块链。当同时发行一批发票时,该批发票中的每个发票都具有一个发票标识。为每个发票标识(即每个发票) 在每个区块链节点中分配一个区块链设备,用于承载与该发票标识对应的子区块链。如图3C所示,为一个发票标识,在区块链节点A、B、C中分别分配一个区块链设备A1、B1、C2,用于承载该发票标识的子区块链1。
在一个实施例中,步骤410包括:基于该区块链节点中各区块链设备的未占用存储空间,分配区块链设备。
区块链设备的未占用存储空间是指区块链设备的存储器中还未被占用、仍可以用来存储的容量大小。存储器可能是由于已经存储了一些子区块链而被占用,还有可能是由于存储其它数据而被占用。区块链设备是区块链节点内的各个设备,而每个区块链节点不止具有区块链节点的功能,还有正常终端的功能,如开票终端201不仅作为区块链节点,还具有开出发票的功能,因此,区块链设备的一部分存储空间可能会存储区块链设备作为一个普通设备运行时产生的数据。
基于该区块链节点中各区块链设备的未占用存储空间分配区块链设备的一种做法是,选择未占用存储空间最大的区块链设备作为分配的区块链设备。选择未占用存储空间最大的区块链设备作为分配的区块链设备的好处是,由于其未占用存储空间最大,选择其容易均衡各区块链设备的负载。
基于该区块链节点中各区块链设备的未占用存储空间分配区块链设备的另一种做法是,从未占用存储空间超过预定未占用存储空间阈值的区块链设备中随机选取一个,作为分配的区块链设备。这样做的好处是,由于发票经常成批发行,为每个发票都会发出一个发行发票事件上链请求,这样造成可能同时需要分配很多区块链设备,作为很多子区块链的载体。如果都分到一个区块链设备中,可能一下子又造成这个区块链设备在短时间内负荷过大。从未占用存储空间超过预定未占用存储空间阈值的区块链设备中选取,保证了选出来的区块链设备即使不是剩余存储容量最大,也是比较大的,然后从中随机选取一个,保证了在多个区块链设备之间的负荷的均衡,不至于同时将许多子区块链又一下子设置到同一个区块链设备中,又造成这一区块链设备过负荷。
在一个实施例中,步骤410包括:基于该区块链节点中各区块链设备的未占用存储空间和中央处理单元CPU处理能力,分配区块链设备。
CPU处理能力是指CPU每单位时间处理的数据量。每单位时间处理的数据量越大,CPU处理能力就越大。一般来说,CPU处理能力用内核数来衡量。二核的CPU的处理能力大于一核的CPU,四核的CPU的处理能力大于二核的 CPU。该实施例的优点是,仅根据各区块链设备的未占用存储空间分配区块链设备,往往会分配给剩余存储空间大的区块链设备,但有些区块链设备虽然剩余空间大,但CPU处理能力小,导致记录和读取速度慢,因此,造成发票向子区块链记录和读取的低效率。而综合该区块链节点中各区块链设备的未占用存储空间和中央处理单元CPU处理能力来分配区块链设备,实现了均衡各区块链节点的处理负荷、以及优化记录和读取速度的良好折中。
在一个实施例中,如图5所示,所述基于该区块链节点中各区块链设备的未占用存储空间和中央处理单元CPU处理能力,分配区块链设备,具体包括:
步骤4101、基于该区块链节点中各区块链设备的未占用存储空间,确定各区块链设备的第一分数;
步骤4102、基于该区块链节点中各区块链设备的CPU处理能力,确定各区块链设备的第二分数;
步骤4103、基于第一分数和第二分数,确定各区块链设备的总分数;
步骤4104、基于各区块链设备的总分数,分配区块链设备。
下面对这些步骤详细描述。
在步骤4101,基于该区块链节点中各区块链设备的未占用存储空间,确定各区块链设备的第一分数。
在一个实施例中,可以基于预先设置的未占用存储空间与第一分数的对应关系表,确定该区块链设备的第一分数。该对应关系表的一个例子如下:
未占用存储空间 | 第一分数 |
4GB以上 | 10 |
2-4GB | 8 |
1-2GB | 6 |
0.5-1GB | 4 |
0.2-0.5GB | 2 |
0.2GB以下 | 0 |
在另一个实施例中,可以基于以下的公式确定区块链设备的第一分数:
S1=a1·M 公式1
其中,M为未占用存储空间,a1为常数,S1表示第一分数。该实施例的优点是,通过公式计算,简便易行,提高了确定第一分数的效率。
在步骤4102中,基于该区块链节点中各区块链设备的CPU处理能力,确定各区块链设备的第二分数。
在一个实施例中,可以基于预先设置的CPU处理能力与第二分数的对应关系表,确定该区块链设备的第二分数。该对应关系表的一个例子如下:
在另一个实施例中,可以基于以下的公式确定区块链设备的第二分数:
S2=a2·P 公式2
其中,P为CPU内核数,a2为常数,S2表示第二分数。该实施例的优点是,通过公式计算,简便易行,提高了确定第二分数的效率。
步骤4103、基于第一分数和第二分数,确定各区块链设备的总分数。
在一个实施例中,可以将各区块链设备的第一分数和第二分数的和,确定为各区块链设备的总分数,即:
S=S1+S2 公式3
其中,S1为第一分数,S2为第二分数,S为总分数。
或者,在另一个实施例中,也可以将各区块链设备的第一分数和第二分数的平均数,确定为各区块链设备的总分数,即:
S=0.5(S1+S2) 公式4
其中,S1为第一分数,S2为第二分数,S为总分数。
在另一个实施例中,也可以将各区块链设备的第一分数和第二分数的加权和,确定为各区块链设备的总分数,即:
S=λ1·S1+λ2·S2 公式5
其中,λ1和λ2分别是为第一分数和第二分数分配的权重,S1为第一分数,S2为第二分数,S为总分数。该实施例的优点在于,充分考虑到区块链设备的未占用存储空间、以及区块链设备的CPU处理能力,对于是否适合于作为分配的区块链设备的影响不是均等的,通过上面的加权和,能够更加客观地分配区块链设备。
在步骤4104中,基于各区块链设备的总分数,分配区块链设备。
在一个实施例中,步骤4104包括:分配总分数最高的区块链设备,用于承载与该发票标识对应的子区块链。
选择总分数最高的区块链设备,实现了均衡各区块链节点的处理负荷、以及优化记录和读取速度的良好折中。
在另一个实施例中,步骤4104包括:从总分数超过预定总分数阈值的区块链设备中随机选取一个,用于承载与该发票标识对应的子区块链。
该实施例的好处是,由于发票经常成批发行,为每个发票都会发出一个发行发票事件上链请求,这样造成可能同时需要分配很多区块链设备,作为很多子区块链的载体。如果都分到一个区块链设备中,可能一下子又造成这个区块链设备在短时间内负荷过大。从总分数超过预定总分数阈值的区块链设备中选取,保证了选出来的区块链设备不是总分数最大,也是比较大的,然后从中随机选取一个,保证了在这几个区块链设备之间的负荷的均衡,不至于同时将许多子区块链又一下子设置到同一个区块链设备中,又造成这一区块链设备过负荷。
在步骤420中,将发行发票事件上链请求中的发行发票事件信息记录在所述子区块链上。
发行发票事件信息是指发行发票事件需要上链记录的信息。该信息包括发票信息和发行发票事件发票转移信息。发票信息和发行发票事件发票转移信息的概念前文已介绍。
在该步骤中,将发行发票事件上链请求中的发行发票事件信息作为一个新的区块,记录在步骤410中分配好的区块链设备上的与发票标识对应的子区块链上。
在该实施例中,步骤420包括:在所述子区块链上记录一个区块,所述区块包括区块主体和区块头。区块主体是区块中承载要记录的数据的部分。区块头是承载该区块区别于其它区块的标志以及在必要时承载与前一区块的关联的部分,其不承载要记录的数据,仅用于区别区块。所述区块主体包括发票信息和发行发票事件发票转移信息。所述区块头包括对包括所述发票信息和发行发票事件发票转移信息的区块主体进行摘要运算得到的区块主体的摘要值。该摘要运算可以采用当前比较通用的摘要运算,例如哈希运算。由于不同区块的区块主体存放的内容不同,这样计算得到的区块主体摘要值也在不同区块之间互不相同,因此,可以用该摘要值来区分不同的区块。当需要查找子区块链上的某一区块时,根据该摘要值就可以找到该区块。
在该实施例中,该子区块链设置好后,发行发票事件信息记录在该子区块链上,成为该子区块链的第一个区块。之后,随着开票和报销事件的完成,记录后续的其它区块。
在步骤430中,响应于接收到任何带有该发票标识的发票事件上链请求,将该发票事件上链请求中的发票事件信息,记录在所述子区块链上。
发票事件是指发票流转过程中出现的每一个事件。具体地,它包括发票发行、开票、发票报销。这每一个事件作为发票流转的一个环节,都需要上链,即记录到子区块链上。发票事件上链请求就是指将这些事件发生后将事件中涉及的信息记录到子区块链上的请求。它包括发行发票事件上链请求、开票事件上链请求和发票报销事件上链请求。由于发行发票事件上链请求已经发生,因此,步骤430中接收到的发票事件上链请求是开票事件上链请求和发票报销事件上链请求中的一个。发票事件上链请求中的发票事件信息是指发票事件上链请求中需要记录到子区块链上的信息。如果发票事件上链请求是发行发票事件上链请求,发票事件信息就是发行发票事件信息,包括发票信息和发行发票事件发票转移信息。发票信息和发行发票事件发票转移信息的概念前文已介绍。如果发票事件上链请求是开票事件上链请求,发票事件信息就是开票事件信息,包括发票信息和开票事件发票转移信息。开票事件发票转移信息是开票过程中发票的转出方信息、转出方信息等。转出方信息是指开票人,转入方信息是指发票的领取人(报销单位的员工)。如果发票事件上链请求是发票报销事件上链请求,发票事件信息就是发票报销事件信息,包括发票信息和发票报销事件发票转移信息。发票报销事件发票转移信息包括发票报销过程中发票的转出方信息、转入方信息等。转出方信息是指发票领取人(员工),转入方信息是指报销单位。
在图1A-1F所示的每个发票标识对应于一条子区块链的应用场景中,在一个实施例中,步骤430包括:
如果所述发票事件上链请求是开票事件上链请求,从开票事件上链请求中获取发票标识;
在与所述发票标识对应的子区块链上增加一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和开票事件发票转移信息,所述区块头包括所述区块主体的摘要值和该子区块链上前一个区块的摘要值,所述区块主体的摘要值是对所述区块的区块主体进行摘要运算得到的摘要值,前一个区块的摘要值是对所述前一个区块的区块主体及区块头进行摘要运算得到的摘要值。
如上所述,所述开票事件上链请求包括发票信息和开票事件发票转移信息,发票信息包括如图2C所示的内容,其中包括发票标识(发票代码+ 发票号码),因此,从开票事件上链请求中可以获取发票标识。
所述区块头包括所述区块主体的摘要值和该子区块链上前一个区块的摘要值。所述区块主体的摘要值是对所述区块的区块主体进行摘要运算得到的摘要值。这里的摘要运算的概念与前文中相同,可以是例如哈希算法等。在一个实施例中,整个区块链中,可以采用同样的摘要算法,便于操作的统一性,简化处理。在另一个实施例中,可以针对每个子区块链采用不同的摘要算法。在区块链网关服务器401中,存储着子区块链标识与摘要算法对应关系表。根据子区块链的标识(例如,在每个发票标识对应于一条子区块链的应用场景中,发票标识可以看作子区块链的标识),在对应关系表中查找出对应的摘要算法,然后根据该摘要算法对区块主体进行摘要运算,得到哈希值。该区块头不仅包括所述区块的区块主体的摘要值,还包括区块链上前一个区块的摘要值。在每个发票标识对应于一条子区块链的应用场景中,前一个区块就是记录发票发行事件信息的区块。前一个区块的摘要值是对所述前一个区块的区块主体和区块头进行摘要运算得到的摘要值。这样,当前区块头中不仅包含着区分当前区块的信息(当前区块的区块主体的摘要值),还包含着子区块链上前一区块的信息(前一区块的摘要值)。这样,子区块链上前后记录的区块相互印证,无法被篡改。如果其中一个区块被篡改,其后一个区块中存放的前一区块的摘要值就会与前一区块不匹配,达到及时发现这种篡改的目的,提高了发票子区块链存储的安全性。
在图1A-1F所示的每个发票标识对应于一条子区块链的应用场景中,在一个实施例中,步骤430包括:
如果所述发票事件上链请求是发票报销事件上链请求,从发票报销事件上链请求中获取发票标识;
在与所述发票标识对应的子区块链上增加一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和发票报销事件发票转移信息,所述区块头包括所述区块的区块主体的摘要值和该子区块链上前一个区块的摘要值,所述区块的区块主体的摘要值是对所述区块的区块主体进行摘要运算得到的摘要值,前一个区块的摘要值是对所述前一个区块的区块主体及区块头进行摘要运算得到的摘要值。
如上所述,所述发票报销事件上链请求包括发票信息和发票报销事件发票转移信息,发票信息包括如图2E所示的内容,其中包括发票标识(发票代码+发票号码),因此,从发票报销事件上链请求中可以获取发票标识。
所述区块头包括所述区块的区块主体的摘要值和该子区块链上前一个区块的摘要值。所述区块的区块主体的摘要值是对所述区块的区块主体进行摘要运算得到的摘要值。这里的摘要运算的概念与前文中相同,可以是例如哈希算法等。在一个实施例中,整个区块链中,可以采用同样的摘要算法,便于操作的统一性,简化处理。在另一个实施例中,可以针对每个子区块链采用不同的摘要算法。在区块链网关服务器401中,存储着子区块链标识与摘要算法对应关系表。根据子区块链的标识(例如,在每个发票标识对应于一条子区块链的应用场景中,发票标识可以看作子区块链的标识),在对应关系表中查找出对应的摘要算法,然后根据该摘要算法对区块主体进行摘要运算,得到哈希值。该区块头不仅包括所述区块的区块主体的摘要值,还包括区块链上前一个区块的摘要值。在每个发票标识对应于一条子区块链的应用场景中,前一个区块就是记录开票事件信息的区块。前一个区块的摘要值是对所述前一个区块的区块主体进行摘要运算得到的摘要值。这样,当前区块头中不仅包含着区分当前区块的信息(当前区块的区块主体的摘要值),还包含着子区块链上前一区块的信息(前一区块的摘要值)。这样,子区块链上前后记录的区块相互印证,无法被篡改。如果其中一个区块被篡改,其后一个区块中存放的前一个区块的摘要值就会与前一区块不匹配,达到及时发现这种篡改的目的,提高了发票子区块链存储的安全性。
在图2A-2F所示的开票单位和发票报销单位的每个组合对应于一条子区块链的应用场景中,在一个实施例中,如图6所示,步骤430包括:
步骤4301、如果所述发票事件上链请求是开票事件上链请求,从所述开票事件上链请求获取开票单位名称和报销单位名称;
步骤4302、当获取的开票单位名称和报销单位名称的组合具有预先对应的子区块链时,将所述开票事件上链请求中的发票标识对应的子区块链中已记录的发行发票事件信息重新记录到所述预先对应的子区块链;
步骤4303、将该开票事件上链请求中的开票事件信息,记录到所述预先对应的子区块链。
在步骤4301中,开票事件上链请求中包括发票信息和开票事件发票转移信息,其中发票信息如图1C所示包括开票单位名称(开票人)和报销单位名称(发票抬头名称),因此,从所述开票事件上链请求可以获取开票单位名称和报销单位名称。
在一个实施例中,预先针对开票单位名称和报销单位名称的组合设置对应的子区块链,即,在每个区块链节点分配一个区块链设备,用于承载该开票单位名称和报销单位名称的组合对应的子区块链。为子区块链分配子区块链标识。然后,可以将开票单位名称和报销单位名称的组合与子区块链标识对应地存储在区块链网关服务器401处的一个对应关系表中。这样,在步骤4302中,就可以按照获取的开票单位名称和报销单位名称的组合,查找该对应关系表,看该对应关系表中是否存储有与其对应的子区块链标识。如果有,则意味着该发票标识中的所有发票相关事件都应该记录在该预先为该开票单位名称和报销单位名称的组合设置的子区块链中。也就是说,已经记录到与该发票标识对应的子区块链中的发行发票事件信息应该重新记录到为该开票单位名称和报销单位名称的组合设置的子区块链中。
具体地,在一个实施例中,步骤4302包括:
在所述预先对应的子区块链上增加一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和发行发票事件发票转移信息,所述区块头包括所述区块的区块主体的摘要值和该子区块链上前一个区块的摘要值,所述区块的区块主体的摘要值是对所述区块的区块主体进行摘要运算得到的摘要值,前一个区块的摘要值是对所述前一个区块的区块主体进行摘要运算得到的摘要值。
关于区块主体和区块头包括的内容的展开描述与上文中每个发票标识对应于一条子区块链的应用场景中描述的区块主体和区块头的内容基本一致,不再展开描述。该实施例中,虽然增加的区块记录的是某一发票的发行发票事件信息,是该发票流转的第一个环节,但是由于该子区块链是为该开票单位名称和报销单位名称的组合设置的,其前面仍然可能记录着该开票单位和报销单位之间的其它发票的发票事件信息,因此,仍然可能需要包括前一个区块的摘要值。
该实施例的好处是,由于发票发行环节无法判断该发票将来的流向,但在开票环节,开票单位和发票报销单位的信息已经清楚,本公开实施例通过拷贝所述开票事件上链请求中的发票标识对应的子区块链中已记录的发行发票事件信息,将其重新记录到与该开票单位和发票报销单位的组合对应的子区块链,从而高效地完成了该开票单位和发票报销单位之间的发票事件无遗漏地记录在该开票单位和发票报销单位之间专用的一条子区块链上的过程。
在一个实施例中,步骤4303包括:在所述预先对应的子区块链上增加一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和开票事件发票转移信息,所述区块头包括所述区块的区块主体的摘要值和该子区块链上前一个区块的摘要值,所述区块的区块主体的摘要值是对所述区块的区块主体进行摘要运算得到的摘要值,前一个区块的摘要值是对所述前一个区块的区块主体和区块头进行摘要运算得到的摘要值。
关于区块主体和区块头包括的内容的展开描述与上文中比较类似,故不赘述。该实施例的好处在于,当发现获取的开票单位名称和报销单位名称的组合具有预先对应的子区块链时,除了将相关发票的已记录的发行发票事件信息重新记录到所述预先对应的子区块链外,及时记录开票事件信息到该子区块链,避免发生与开票单位名称和报销单位名称的组合对应的子区块链中信息的缺失。
当获取的开票单位名称和报销单位名称的组合不具有预先对应的子区块链时,这时的情况与图1A-1F所示的每个发票标识对应于一条子区块链的应用场景的情况类似,由于针对该应用场景的步骤430的具体实现上文已经描述,故不赘述。
在一个实施例中,如图7所示,步骤430包括:
步骤4304、如果所述发票事件上链请求是发票报销事件上链请求,从所述发票报销事件上链请求获取开票单位名称和报销单位名称;
步骤4305、当获取的开票单位名称和报销单位名称的组合具有预先对应的子区块链时,将该发票报销事件上链请求中的发票报销事件信息,记录到所述预先对应的子区块链。
在步骤4304中,发票报销事件上链请求中包括发票信息和发票报销事件发票转移信息,其中发票信息如图1E所示包括开票单位名称(开票人) 和报销单位名称(发票抬头名称),因此,从所述发票报销事件上链请求可以获取开票单位名称和报销单位名称。
在一个实施例中,步骤4305包括:在所述预先对应的子区块链上增加一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和发票报销事件发票转移信息,所述区块头包括所述区块的区块主体的摘要值和该子区块链上前一个区块的摘要值,所述区块的摘要值是对所述区块的区块主体进行摘要运算得到的摘要值,前一个区块的摘要值是对所述前一个区块的区块主体和区块头进行摘要运算得到的摘要值。
关于区块主体和区块头包括的内容的展开描述与上文中比较类似,故不赘述。
根据本公开的一个实施例,如图8所示,还提供了一种发票区块链记录装置,所述装置包括:
分配单元510,用于响应于接收到发行发票事件上链请求,基于发行发票事件上链请求中包含的发票标识,在每个区块链节点中分配一个区块链设备,用于承载与该发票标识对应的子区块链;
第一记录单元520,用于将发行发票事件上链请求中的发行发票事件信息记录在所述子区块链上;
第二记录单元530,用于响应于接收到任何带有该发票标识的发票事件上链请求,将该发票事件上链请求中的发票事件信息,记录在所述子区块链上,其中,所述发票事件上链请求包括开票事件上链请求和发票报销事件上链请求,所述发票事件信息包括开票事件信息和发票报销事件信息。
在一个实施例中,所述分配单元510进一步用于:
基于该区块链节点中各区块链设备的未占用存储空间和中央处理单元 CPU处理能力,分配区块链设备。
在一个实施例中,所述基于该区块链节点中各区块链设备的未占用存储空间和中央处理单元CPU处理能力,分配区块链设备,具体包括:
基于该区块链节点中各区块链设备的未占用存储空间,确定各区块链设备的第一分数;
基于该区块链节点中各区块链设备的CPU处理能力,确定各区块链设备的第二分数;
基于第一分数和第二分数,确定各区块链设备的总分数;
基于各区块链设备的总分数,分配区块链设备。
在一个实施例中,所述基于第一分数和第二分数,确定各区块链设备的总分数,具体包括:
将各区块链设备的第一分数和第二分数的加权和,确定为各区块链设备的总分数。
在一个实施例中,所述基于各区块链设备的总分数,分配区块链设备,包括:分配总分数最高的区块链设备,用于承载与该发票标识对应的子区块链。
在一个实施例中,所述基于各区块链设备的总分数,分配区块链设备,包括:从总分数超过预定总分数阈值的区块链设备中随机选取一个,用于承载与该发票标识对应的子区块链。
在一个实施例中,所述发行发票事件信息包括发票信息和发行发票事件发票转移信息。第一记录单元520进一步用于:
在所述子区块链上记录一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和发行发票事件发票转移信息,所述区块头包括对所述发票信息和发行发票事件发票转移信息进行摘要运算得到的摘要值。
在一个实施例中第二记录单元530进一步用于:
如果所述发票事件上链请求是开票事件上链请求,从所述开票事件上链请求获取开票单位名称和报销单位名称;
当获取的开票单位名称和报销单位名称的组合具有预先对应的子区块链时,将所述开票事件上链请求中的发票标识对应的子区块链中已记录的发行发票事件信息重新记录到所述预先对应的子区块链;
将该开票事件上链请求中的开票事件信息,记录到所述预先对应的子区块链。
在一个实施例中,所述第二记录单元530,具体用于:
在所述预先对应的子区块链上增加一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和发行发票事件发票转移信息,所述区块头包括所述区块的区块主体摘要值和该子区块链上前一个区块的摘要值。
在一个实施例中,所述开票事件信息包括发票信息和开票事件发票转移信息。所述第二记录单元530,具体用于:
在所述预先对应的子区块链上增加一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和开票事件发票转移信息,所述区块头包括所述区块的区块主体摘要值和该子区块链上前一个区块的摘要值。
在一个实施例中,第二记录单元530进一步用于:
如果所述发票事件上链请求是发票报销事件上链请求,从所述发票报销事件上链请求获取开票单位名称和报销单位名称;
当获取的开票单位名称和报销单位名称的组合具有预先对应的子区块链时,将该发票报销事件上链请求中的发票报销事件信息,记录到所述预先对应的子区块链。
在一个实施例中,所述第二记录单元530,具体用于:
在所述预先对应的子区块链上增加一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和发票报销事件发票转移信息,所述区块头包括所述区块的区块主体摘要值和该子区块链上前一个区块的摘要值。
根据本公开实施例的发票区块链记录方法可以由图9的区块链网关服务器401实现。下面参照图9来描述根据本公开实施例的区块链网关服务器401。图9显示的区块链网关服务器401仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,区块链网关服务器401以通用计算设备的形式表现。区块链网关服务器401的组件可以包括但不限于:上述至少一个处理单元 810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820 和处理单元810)的总线830。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书上述示例性方法的描述部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图4中所示的各个步骤。
存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(ROM)8203。
存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
区块链网关服务器401也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该区块链网关服务器401交互的设备通信,和/或与使得该区块链网关服务器401 能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口850进行。并且,区块链网关服务器401还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网) 通信。如图所示,网络适配器860通过总线830与区块链网关服务器401 的其它模块通信。应当明白,尽管图中未示出,可以结合区块链网关服务器401使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM, U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行上述方法实施例部分描述的方法。
根据本公开的一个实施例,还提供了一种用于实现上述方法实施例中的方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如 Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是 CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
Claims (14)
1.一种发票区块链记录方法,其特征在于,所述方法包括:
响应于接收到发行发票事件上链请求,基于发行发票事件上链请求中包含的发票标识,在每个区块链节点中分配一个区块链设备,用于承载与该发票标识对应的子区块链;
将发行发票事件上链请求中的发行发票事件信息记录在所述子区块链上;
响应于接收到任何带有该发票标识的发票事件上链请求,将该发票事件上链请求中的发票事件信息,记录在所述子区块链上,其中,所述发票事件上链请求包括开票事件上链请求和发票报销事件上链请求,所述发票事件信息包括开票事件信息和发票报销事件信息;
其中,所述响应于接收到任何带有该发票标识的发票事件上链请求,将该发票事件上链请求中的发票事件信息,记录在所述子区块链上,具体包括:
如果所述发票事件上链请求是发票报销事件上链请求,从所述发票报销事件上链请求获取开票单位名称和报销单位名称;
当获取的开票单位名称和报销单位名称的组合具有预先对应的子区块链时,将该发票报销事件上链请求中的发票报销事件信息,记录到所述预先对应的子区块链。
2.根据权利要求1所述的方法,其特征在于,所述在每个区块链节点中分配一个区块链设备包括:
基于该区块链节点中各区块链设备的未占用存储空间和中央处理单元CPU处理能力,分配区块链设备。
3.根据权利要求2所述的方法,其特征在于,所述基于该区块链节点中各区块链设备的未占用存储空间和中央处理单元CPU处理能力,分配区块链设备,具体包括:
基于该区块链节点中各区块链设备的未占用存储空间,确定各区块链设备的第一分数;
基于该区块链节点中各区块链设备的CPU处理能力,确定各区块链设备的第二分数;
基于第一分数和第二分数,确定各区块链设备的总分数;
基于各区块链设备的总分数,分配区块链设备。
4.根据权利要求3所述的方法,其特征在于,所述基于第一分数和第二分数,确定各区块链设备的总分数,具体包括:
将各区块链设备的第一分数和第二分数的加权和,确定为各区块链设备的总分数。
5.根据权利要求3所述的方法,其特征在于,所述基于各区块链设备的总分数,分配区块链设备,包括:分配总分数最高的区块链设备,用于承载与该发票标识对应的子区块链。
6.根据权利要求3所述的方法,其特征在于,所述基于各区块链设备的总分数,分配区块链设备,包括:从总分数超过预定总分数阈值的区块链设备中随机选取一个,用于承载与该发票标识对应的子区块链。
7.根据权利要求1所述的方法,其特征在于,所述发行发票事件信息包括发票信息和发行发票事件发票转移信息,
所述将发行发票事件上链请求中的发行发票事件信息记录在所述子区块链上,包括:
在所述子区块链上记录一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和发行发票事件发票转移信息,所述区块头包括对所述发票信息和发行发票事件发票转移信息进行摘要运算得到的摘要值。
8.根据权利要求1所述的方法,其特征在于,所述响应于接收到任何带有该发票标识的发票事件上链请求,将该发票事件上链请求中的发票事件信息,记录在所述子区块链上,具体包括:
如果所述发票事件上链请求是开票事件上链请求,从所述开票事件上链请求获取开票单位名称和报销单位名称;
当获取的开票单位名称和报销单位名称的组合具有预先对应的子区块链时,将所述开票事件上链请求中的发票标识对应的子区块链中已记录的发行发票事件信息重新记录到所述预先对应的子区块链;
将该开票事件上链请求中的开票事件信息,记录到所述预先对应的子区块链。
9.根据权利要求8所述的方法,其特征在于,所述将所述开票事件上链请求中的发票标识对应的子区块链中已记录的发行发票事件信息重新记录到所述预先对应的子区块链,具体包括:
在所述预先对应的子区块链上增加一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和发行发票事件发票转移信息,所述区块头包括所述区块主体的摘要值和该子区块链上前一个区块的摘要值。
10.根据权利要求8所述的方法,其特征在于,所述开票事件信息包括发票信息和开票事件发票转移信息,
所述将该开票事件上链请求中的开票事件信息,记录到所述预先对应的子区块链,具体包括:
在所述预先对应的子区块链上增加一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和开票事件发票转移信息,所述区块头包括所述区块的区块主体的摘要值和该子区块链上前一个区块的摘要值。
11.根据权利要求1所述的方法,其特征在于,所述发票报销事件信息包括发票信息和发票报销事件发票转移信息,
所述将该发票报销事件上链请求中的发票报销事件信息,记录到所述预先对应的子区块链,具体包括:
在所述预先对应的子区块链上增加一个区块,所述区块包括区块主体和区块头,所述区块主体包括发票信息和发票报销事件发票转移信息,所述区块头包括所述区块的区块主体的摘要值和该子区块链上前一个区块的摘要值。
12.一种发票区块链记录装置,其特征在于,所述装置包括:
分配单元,用于响应于接收到发行发票事件上链请求,基于发行发票事件上链请求中包含的发票标识,在每个区块链节点中分配一个区块链设备,用于承载与该发票标识对应的子区块链;
第一记录单元,用于将发行发票事件上链请求中的发行发票事件信息记录在所述子区块链上;
第二记录单元,用于响应于接收到任何带有该发票标识的发票事件上链请求,将该发票事件上链请求中的发票事件信息,记录在所述子区块链上,其中,所述发票事件上链请求包括开票事件上链请求和发票报销事件上链请求,所述发票事件信息包括开票事件信息和发票报销事件信息;
其中,所述响应于接收到任何带有该发票标识的发票事件上链请求,将该发票事件上链请求中的发票事件信息,记录在所述子区块链上,具体包括:
如果所述发票事件上链请求是发票报销事件上链请求,从所述发票报销事件上链请求获取开票单位名称和报销单位名称;
当获取的开票单位名称和报销单位名称的组合具有预先对应的子区块链时,将该发票报销事件上链请求中的发票报销事件信息,记录到所述预先对应的子区块链。
13.一种区块链网关服务器,其特征在于,包括:
存储器,存储有计算机可读指令;
处理器,读取存储器存储的计算机可读指令,以执行权利要求1-11中的任一个所述的方法。
14.一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1-11中的任一个所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811044779.1A CN109241772B (zh) | 2018-09-07 | 2018-09-07 | 发票区块链记录方法、装置、区块链网关服务器和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811044779.1A CN109241772B (zh) | 2018-09-07 | 2018-09-07 | 发票区块链记录方法、装置、区块链网关服务器和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109241772A CN109241772A (zh) | 2019-01-18 |
CN109241772B true CN109241772B (zh) | 2023-05-16 |
Family
ID=65060703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811044779.1A Active CN109241772B (zh) | 2018-09-07 | 2018-09-07 | 发票区块链记录方法、装置、区块链网关服务器和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109241772B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110458582B (zh) * | 2019-01-29 | 2023-12-12 | 深圳市智税链科技有限公司 | 基于区块链系统的业务处理方法、装置、介质及电子设备 |
CN109902091B (zh) | 2019-02-21 | 2021-08-10 | 腾讯科技(深圳)有限公司 | 数据区块在区块链上记录的方法、领导记账节点和介质 |
CN110599276B (zh) * | 2019-08-08 | 2021-07-06 | 腾讯科技(深圳)有限公司 | 票据报销方法、装置和设备及计算机存储介质 |
CN110471932A (zh) * | 2019-08-13 | 2019-11-19 | 爱信诺征信有限公司 | 基于区块链的发票管理方法及系统 |
CN110503409B (zh) * | 2019-08-28 | 2022-02-15 | 腾讯科技(深圳)有限公司 | 信息处理的方法以及相关装置 |
CN110599267A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 电子发票开票方法、装置、计算机可读存储介质和计算机设备 |
CN110807679B (zh) * | 2019-10-16 | 2024-04-05 | 腾讯科技(深圳)有限公司 | 基于区块链的出租车发票生成方法及装置 |
CN110852816B (zh) * | 2019-11-13 | 2022-05-03 | 深圳前海星际同辉科技有限公司 | 基于区块链的自动开具发票方法、终端设备及存储介质 |
CN111210288A (zh) * | 2019-12-26 | 2020-05-29 | 大象慧云信息技术有限公司 | 基于税控服务器的发票批量开具作业优化调度方法及系统 |
CN113127559B (zh) * | 2019-12-31 | 2024-02-09 | 航天信息股份有限公司 | 一种财税区块链的账本建立方法、装置及计算机设备 |
CN112163870B (zh) * | 2020-09-30 | 2023-12-05 | 中国联合网络通信集团有限公司 | 基于区块链的信息管理方法、解析节点及复工平台 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106952094A (zh) * | 2017-03-10 | 2017-07-14 | 腾讯科技(深圳)有限公司 | 电子票据管理方法及装置 |
CN107368259A (zh) * | 2017-05-25 | 2017-11-21 | 阿里巴巴集团控股有限公司 | 一种向区块链系统中写入业务数据的方法和装置 |
CN107451874A (zh) * | 2017-07-27 | 2017-12-08 | 武汉天喻信息产业股份有限公司 | 基于区块链的电子发票综合处理方法及系统 |
CN107464106A (zh) * | 2017-07-25 | 2017-12-12 | 北京果仁宝科技有限公司 | 区块链主链与侧链间交易的方法及系统 |
CN107832139A (zh) * | 2017-09-26 | 2018-03-23 | 上海点融信息科技有限责任公司 | 用于管理区块链节点的计算资源的方法、设备和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101799343B1 (ko) * | 2016-05-16 | 2017-11-22 | 주식회사 코인플러그 | 인증 정보의 사용 방법, 파기 방법 및 이를 지원하는 블록체인기반 인증 정보 관리 서버 |
-
2018
- 2018-09-07 CN CN201811044779.1A patent/CN109241772B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106952094A (zh) * | 2017-03-10 | 2017-07-14 | 腾讯科技(深圳)有限公司 | 电子票据管理方法及装置 |
CN107368259A (zh) * | 2017-05-25 | 2017-11-21 | 阿里巴巴集团控股有限公司 | 一种向区块链系统中写入业务数据的方法和装置 |
CN107464106A (zh) * | 2017-07-25 | 2017-12-12 | 北京果仁宝科技有限公司 | 区块链主链与侧链间交易的方法及系统 |
CN107451874A (zh) * | 2017-07-27 | 2017-12-08 | 武汉天喻信息产业股份有限公司 | 基于区块链的电子发票综合处理方法及系统 |
CN107832139A (zh) * | 2017-09-26 | 2018-03-23 | 上海点融信息科技有限责任公司 | 用于管理区块链节点的计算资源的方法、设备和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109241772A (zh) | 2019-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241772B (zh) | 发票区块链记录方法、装置、区块链网关服务器和介质 | |
CN108595157B (zh) | 区块链数据的处理方法、装置、设备和存储介质 | |
CN110297689A (zh) | 智能合约执行方法、装置、设备及介质 | |
CN109285069B (zh) | 资源转移方法、装置及服务器 | |
CN109152061A (zh) | 通道调配方法、装置、服务器及存储介质 | |
CN112559635B (zh) | 以太坊联盟链节点的业务处理方法、装置、设备及介质 | |
CN111245642A (zh) | 一种获取多系统之间的依赖关系的方法、装置和电子设备 | |
CN103294556A (zh) | 用于主机系统准入控制的方法和系统 | |
CN109993417A (zh) | 一种业务状态标识添加方法、装置及存储介质 | |
CN112381453A (zh) | 信息处理方法、装置、电子设备和介质 | |
CN112350438A (zh) | 一种电量管理的方法、装置、设备及存储介质 | |
CN109544392B (zh) | 用于保险订单处理的方法、系统、设备以及介质 | |
CN111242754B (zh) | 账户数据更新方法、装置及电子设备 | |
CN110245014B (zh) | 数据处理方法和装置 | |
CN114070847B (zh) | 服务器的限流方法、装置、设备及存储介质 | |
CN204425400U (zh) | 应用服务器系统 | |
CN110070383B (zh) | 基于大数据分析的异常用户识别方法及装置 | |
CN116886626A (zh) | 一种业务数据限流方法、装置、计算机设备及存储介质 | |
CN111176588B (zh) | 业务单据出单方法、装置、介质及电子设备 | |
CN109542904A (zh) | 业务数据处理方法、装置、服务器和介质 | |
CN115460265A (zh) | 接口调用方法、装置、设备及介质 | |
CN110662188A (zh) | 计费方法和系统 | |
JP2024509629A (ja) | 量子車型部品基礎データベースの作成方法、装置、電子機器及び記憶媒体 | |
CN114217790A (zh) | 接口编排调度方法、装置、电子设备及介质 | |
CN114186976A (zh) | 工作流程流转方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190128 Address after: 518000 Tencent Building 2401, Maling Community Science and Technology Center, Yuehai Street, Nanshan District, Shenzhen City, Guangdong Province Applicant after: SHENZHEN ZHISHUILIAN TECHNOLOGY Co.,Ltd. Address before: 518000 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 Floors Applicant before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |