存储验票记录的方法、验票终端及系统

文档序号:1243770 发布日期:2020-08-18 浏览:19次 >En<

阅读说明:本技术 存储验票记录的方法、验票终端及系统 (Method for storing ticket checking record, ticket checking terminal and system ) 是由 朱晨 于 2019-02-11 设计创作,主要内容包括:本发明公开了一种存储验票记录的方法、验票终端及系统,该方法包括:建立与其他验票终端间的通信连接,形成验票组;获取所述验票组对入场票进行验票产生的验票记录;与所述其他验票终端共同对所述验票记录进行分布式记账,以更新本地数据库。(The invention discloses a method for storing ticket checking records, a ticket checking terminal and a system, wherein the method comprises the following steps: establishing communication connection with other ticket checking terminals to form a ticket checking group; obtaining ticket checking records generated by ticket checking of the ticket checking group on the admission tickets; and carrying out distributed accounting on the ticket checking record together with the other ticket checking terminals so as to update a local database.)

存储验票记录的方法、验票终端及系统

技术领域

本发明涉及数据处理技术领域,更具体的,涉及一种存储验票记录的方法,一种验票终端,以及一种验票系统。

背景技术

在开展活动项目时,例如演唱会、体育赛事等,为了保证观众都能够凭票入场,需要在现场设置多个验票终端同时进行现场验票,以保证数千人可以有序地快速入场。目前,通过多个验票终端进行现场验票的方式包括有公网验票、局域网验票和单机验票。

公网验票是将现场的每一台验票终端均与云端服务器通过公共外网建立无线连接,每一台验票终端均将对入场票进行验票产生的验票记录保存至云端服务器中,进行验票记录的集中式存储。

局域网验票是为场馆配置本地服务器,每一台验票终端均通过局域网与本地服务器建立连接,且每一台验票终端均将对入场票进行验票产生的验票记录保存至本地服务器中,同样是进行验票记录的集中式存储。

单机验票是每一台验票终端独立完成验票操作,每一台验票终端均无法获得由其他验票终端进行验票所产生并保存的验票记录,因此,单机验票存在多次入场的问题。

相对于单机验票,虽然在公网验票和局域网验票中,每一验票终端均可以通过连接服务器获得所有的验票记录,但是,由于现有的公网验票和局域网验票均采用集中式的单节点存储结构,这样,一旦云端服务器或者是本地服务器出现单点故障,例如被攻击,将发生验票记录丢失、服务器不可用等状况,严重影响现场验票的正常进行,因此,非常有必要提供一种新的存储验票记录的方案,以提高由多个验票终端组成的验票系统对于单点故障的应对能力,保障现场验票的有序进行。

发明内容

本发明的一个目的是提供一种存储验票记录的新的技术方案。

根据本发明的第一方面,提供了一种存储验票记录的方法,其包括:

建立与其他验票终端间的通信连接,形成验票组;

获取所述验票组对入场票进行验票产生的验票记录;

与所述其他验票终端共同对所述验票记录进行分布式记账,以更新本地数据库。

可选地,所述与所述其他验票终端共同对所述验票记录进行分布式记账的步骤,包括:

在所述验票组中选举一验票终端作为执行终端,其中,所述执行终端为有权利针对所述验票记录创建对应的存储区块的验票终端;

与所述其他验票终端共同对所述执行终端针对所述验票记录创建的存储区块进行分布式记账。

可选地,所述方法还包括:

在所述验票终端是所述执行终端的情况下,针对所述验票记录创建对应的存储区块,并将所述存储区块同步至所述其他验票终端;

在所述验票终端不是所述执行终端的情况下,获取所述执行终端同步的对应所述验票记录的存储区块。

可选地,所述针对所述验票记录创建对应的存储区块的步骤,包括:

获取上一验票记录的存储区块的特征信息;

获取作为所述执行终端的权利信息;

根据所述特征信息、所述权利信息和所述验票记录,创建对应所述验票记录的存储区块。

可选地,所述在所述验票组中选举一验票终端作为执行终端的步骤,包括:

与所述其他验票终端共同计算各自的选举码;

选举最先获得满足设定条件的选举码的验票终端,作为所述执行终端。

可选地,所述与所述其他验票终端共同计算各自的选举码的步骤,包括:

获取各自的种子池,其中,所述验票组中每一验票终端的种子池互不相同;

在各自的种子池中挑选种子计算各自的选举码。

可选地,所述选举最先获得满足设定条件的选举码的验票终端,作为所述执行终端的步骤,包括:

在所述验票终端最先获得满足设定条件的选举码的情况下,确定自身为执行终端,并将选举结果通知所述其他验票终端;

在所述其他验票终端最先获得满足设定条件的选举码的情况下,根据所述其他验票终端的通知停止继续计算选举码,并将发出所述通知的其他验票终端作为所述执行终端。

可选地,所述与所述其他验票终端共同对所述验票记录进行分布式记账,以更新本地数据库的步骤,包括:

在本地数据库中,按照链状数据结构,将所述验票记录链接至上一验票记录,以更新所述本地数据库。

可选地,所述方法还包括:

响应于进行验票初始化的触发,执行初始化所述本地数据库的操作。

可选地,每一验票记录存储在对应的存储区块中,所述将所述验票记录链接至上一验票记录的步骤,包括:将存储所述验票记录的存储区块链接至存储上一验票记录的上一存储区块,其中,第一个存储区块链接至创世区块;所述执行初始化所述本地数据库的操作的步骤,包括:

检测是否具有创建所述创世区块的权限;

在具有所述权限的情况下,创建并保存所述创世区块,并将所述创世区块同步至所述其他验票终端;

在不具有所述权限的情况下,获取并保存具有所述权限的其他验票终端提供所述创世区块。

可选地,所述建立与其他验票终端间的通信连接的步骤,包括:

建立与其他验票终端间的短距离通信连接。

可选地,所述方法还包括:

响应于查询所述验票记录的请求,从所述本地数据库中获取所述验票记录;

提供获取到的所述验票记录。

可选地,所述方法还包括:

监测设定的校准事件;

在发生所述校准事件的情况下,比较所述本地数据库与其他验票终端的本地数据库是否一致;

根据比较结果校准所述本地数据库。

可选地,所述方法还包括:

获取所述入场票的信息;

根据所述入场票的信息,检测所述本地数据库是否具有对应所述信息的验票记录;

在具有对应所述信息的验票记录的情况下,进行已进行验票的提示;

在不具有对应所述信息的验票记录的情况下,对所述入场票进行验票以产生所述验票记录。

可选地,所述方法还包括:

提供设置所述校准事件的设置入口;

获取通过所述设置入口输入的校准事件;

更新所述设定的校准事件为所述输入的校准事件。

根据本发明的第二方面,还提供一种验票终端,包括:存储器和处理器,所述存储器用于存储指令,所述指令用于控制所述处理器进行操作以执行根据本发明的第一方面中任一项所述的存储验票记录的方法。

根据本发明的第三方面,还提供一种验票系统,包括多个本发明第二方面所述的验票终端,多个所述验票终端之间建立通信连接形成验票组。

本发明的一个有益效果在于,根据本发明实施例的方法、验票终端及验票系统,一方面,其可以将多个验票终端之间建立通信连接以形成验票组,提升了多个验票终端之间通信连接的可靠性,降低了验票现场的安全风险。另一方面,当该验票组中任意验票终端对入场票进行验票而产生验票记录时,验票组中的每一验票终端均将共同对该验票记录进行分布式记账,以更新各自的本地数据库,这样,由于每一个验票终端的本地数据库中均保存有现场的所有验票记录,验票组内的所有验票终端是均等的,并不存在中心节点,进而大大降低了对某一特定节点的依赖,从而,可以提高存储验票记录的安全性,提高验票系统对于单节点故障的应对能力,有利于保障现场验票的可靠进行,而且,一旦将验票记录进行分布式记账,更新本地数据库之后,该验票记录就会被永久保存,单个节点对本地数据库的修改也是无效的,从而提高保存验票记录的稳定性和可靠性。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。

图1是根据本发明实施例的场馆的配置结构示意图;

图2a是显示可用于实现本发明实施例的验票系统的硬件配置的原理框图;

图2b是显示可用于实现本发明另一实施例的验票系统的硬件配置的原理框图;

图3是根据本发明实施例的验票终端的硬件结构示意图;

图4是根据本发明实施例的存储验票记录的方法的流程示意图;

图5是根据本发明另一实施例的存储验票记录的方法的流程示意图;

图6是根据本发明第三实施例的存储验票记录的方法的流程示意图;

图7是根据本发明一个例子的存储验票记录的方法的流程图;

图8a~图8f是根据本发明实施例的验票终端的交互示意图;

图9是根据本发明另一例子的存储验票记录的方法的流程图;

图10、11是根据本发明例子中的链式数据结构的示意图;

图12是根据本发明另一实施例的验票终端的硬件结构示意图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

<系统实施例>

图1、图2a和图2b是根据本发明实施例的验票系统100的配置结构示意图。

参照图1所示,在开展活动项目时,例如演唱会、体育赛事等,为了保证观众都能够凭票入场,需要在场馆设置多个验票终端同时进行现场验票,以保证数千人可以有序地快速入场。在此,验票终端可以是固定验票终端,例如闸机,也可以是便携式的移动验票终端,例如PDA等,在图1所示场馆中配置的多个验票终端可以是相同类型的验票终端,例如是固定验票终端或者是移动验票终端,也可以包括不同类型的验票终端,例如包括固定验票终端和移动验票终端。

参照图1所示的场馆示意图,该场馆具有三个入口,分别为第一入口、第二入口以及第三入口,在演出开始前,观众可以从这三个入口入场,因此,运营人员需要在每一入口配置至少一个验票终端,以在每一入口处,通过验票终端对入场观众提供的入场票进行验票,验票通过,则允许观众进入场馆就座,验票不通过,则禁止观众进入场馆。

参见图1、图2a和图2b,对于一活动项目,运营人员为该场馆配置了四个验票终端1000,分别为验票终端1000A、验票终端1000B、验票终端1000C和验票终端1000D,四个验票终端1000相互间建立通信连接形成验票组,验票组中的任意验票终端1000可以通过相互间的通信连接,获得由其他验票终端1000验票所产生的验票记录,这样,验票组中的每一验票终端1000便可对验票组通过验票产生的每一验票记录进行分布式记账,进而实现对所有验票记录的多节点的分布式存储,提高了对单节点故障的应对能力,保证现场验票顺利、可靠地进行,例如,某一验票终端保存的验票记录部分或者全部丢失,其他验票终端仍保存有完整的验票记录,进而降低了对某一个特定节点的依赖性。

分布式记账在业内有多种方式来实现,包括但不限于按照链状数据结构对验票记录进行分布式记账,以通过在验票记录之间建立索引关联,方便查找验票记录,并有效防止删除、篡改验票记录。例如,可以按照链状数据结构,将验票组经由验票产生的每一验票记录,以顺序相连的方式组合成链状数据文件(链表),参见图11所示,这可以是将每一验票记录保存在对应存储区块的区块体中,并在对应存储区块的区块头中保存前一区块的特征信息,该特征信息例如是前一区块的哈希值,这样便可以将保存每一验票记录的存储区块以顺序相连的方式链接在一起,形成该链状数据文件,根据分布式记账的特点,每一验票终端1000均保存一份该链状数据文件。在该场景中,由于四个验票终端1000位于同一场馆中,因此,可以基于局域网2000建立各个验票终端1000之间的通信连接,以提高网络连接的稳定性。

参见图1,四个验票终端1000的分布例如是,第一入口配置有验票终端1000A,第二入口配置有验票终端1000B,以及第三入口配置有验票终端1000C和验票终端1000D。该例子中,验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D可以在同一局域网内形成验票组,当验票终端1000A对入场票进行验票产生验票记录时,可以是由产生该验票记录的验票终端1000A在该验票组内广播该验票记录,以使得验票终端1000B、验票终端1000C以及验票终端1000D均获得该验票记录,也可以是由验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D之间相互传播该验票记录,例如可以是验票终端1000A将验票记录发送至验票终端1000B,在由验票终端1000B将该验票记录发送至验票终端1000C或者验票终端1000D,直至验票组内的验票终端1000B、验票终端1000C以及验票终端1000D均接收到该验票记录,并由验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D共同对该验票记录进行分布式记账,以供每一验票终端1000将该验票记录保存至各自的本地数据库中。

在本实施例中,验票系统100具有的验票终端1000的数量可以根据实际场景确定,在此不做任何限定。

在另一个实施例中,参照图2b所示,为了扩展验票终端1000存储数据的能力,验票系统100还可以包括为每一验票终端1000配置的相应的数据存储中心3000,该数据存储中心例如可以是存储服务器,例如,可以是如图2b所示,为验票终端1000A配置数据存储中心3000A,为验票终端1000B配置数据存储中心3000B,为验票终端1000C配置数据存储中心3000C,以及,为验票终端1000D配置数据存储中心3000D,这样,每一验票终端1000可以是如图2a所示将本地数据库保存至自身的存储器中,也可以是如图2b所示将本地数据库保存至对应的数据存储中心中。

验票终端1000可以是任意的具有验票功能的电子设备,例如是闸机、扫描枪、PDA(Personal Digital Assistant,手持终端)、手机、平板电脑、掌上电脑、可穿戴设备等,在此不做限定。

在一个实施例中,验票终端1000可以如图3所示,包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。

处理器1100可以是中央处理器、移动版处理器等处理器。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等。通信装置1400例如能够进行有线或无线通信,通信装置1400可以包括短距离通信装置,例如是基于Hilink协议、WiFi(IEEE 802.11协议)、Mesh、蓝牙、ZigBee、Thread、Z-Wave、NFC、UWB、LiFi等短距离无线通信协议进行短距离无线通信的任意装置,通信装置1400也可以包括远程通信装置,例如是进行WLAN、GPRS、2G/3G/4G/5G远程通信的任意装置。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘等。用户可以通过扬声器1700和麦克风1800输入/输出语音信息。

尽管在图3中示出了验票终端1000的多个装置,但是,本发明可以仅涉及其中的部分装置,例如,验票终端1000只涉及通信装置1400、存储器1200和处理器1100。

该实施例中,验票终端1000的存储器1200用于存储指令,该指令用于控制处理器1100进行操作以至少执行根据本发明任意实施例的存储验票记录的方法。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。

<方法实施例>

图4是根据本发明实施例的存储验票记录的方法的流程示意图,该方法由验票系统100中的任意一个验票终端1000实施,本实施例的存储验票记录的方法可以包括如下步骤:

步骤S2100,任一验票终端1000建立与其他验票终端1000间的通信连接,形成验票组。

根据该步骤S2100,验票系统中的每一验票终端均建立与其他验票终端1000间的通信连接,进而形成验票组。例如,参照图1所示,验票终端2000A为执行本实施例存储验票记录的方法的主体,在此,可以是通过本地局域网建立验票终端1000A、验票终端1000B和验票终端1000C之间的通信连接,形成验票组。

在一个例子中,局域网可以采用有线局域网,即,多个验票终端1000之间采用有线通信方式,有线通信方式可以进一步提高多个验票终端1000的通信连接的稳定性,进而提高验票系统100的可靠性。

在一个例子中,局域网也可以采用无线局域网,验票人员使用无线的验票终端1000,可以使得验票操作更为灵活,在需要开通更多的验票通道时,验票人员也更容易携带验票终端1000移动。这种方式兼顾了验票系统100的可靠性和灵活性。

在该实施例中,该步骤S2100中任一验票终端1000建立与其他验票终端1000间的通信连接可以进一步包括:任一验票终端1000建立与其他验票终端1000间的短距离通信连接。

例如可以是基于Hilink协议、WiFi(IEEE 802.11协议)、Mesh、蓝牙、ZigBee、Thread、Z-Wave、NFC、UWB、LiFi等短距离无线通信协议建立一验票终端1000与其他验票终端1000间的短距离通信连接。

该例子通过在任一验票终端1000与其他验票终端1000间建立短距离通信连接,可以使得验票操作更为灵活,同时提高了通信连接的可靠性和稳定性。

步骤S2200,任一验票终端1000获取验票组对入场票进行验票产生的验票记录。

入场票中至少包括有票单号、名称、场次、开场时间、座位号等信息,该票单号用以将不同的入场票进行区分。

在本实施例中,验票组中的任意一个验票终端1000在对入场票进行验票之后,会产生验票记录,即,该验票记录为对入场票进行验票所产生的记录。

在一个例子中,该验票记录中可以包括有入场票的信息,例如票单号、名称、场次、开场时间、座位号等信息。

在一个例子中,该验票记录中还可以包括有验票时间和验票终端1000的唯一标志码,该唯一标志码用以表明对该入场票执行验票操作的验票终端1000,该唯一标志码可以是验票终端1000的序列号。该验票记录中还可以包括对入场票进行验票所产生的其他记录,在此不做限定。

在一个例子中,可以是由产生该验票记录的验票终端1000在验票组内广播该验票记录,以使得验票组内的其他验票终端1000接收该验票记录。

参照图1,仍以验票终端1000A为执行本实施例存储验票记录的方法的主体,验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D形成验票组为例,当验票终端1000A对入场票进行验票产生验票记录时,由产生该验票记录的验票终端1000A在验票组内广播该验票记录,以使得验票终端1000B、验票终端1000C以及验票终端1000D接收该验票记录。

在一个例子中,也可以是由产生该验票记录的验票终端1000将该验票记录发送至验票组内的任意一个其他验票终端1000,在由接收到该验票记录的其他验票终端1000将该验票记录发送至验票组内的任意一个未接收到该验票记录的其他验票终端1000,即,可以是通过验票组内的验票终端1000之间相互传播该验票记录,以使得验票组内的每一个验票终端1000均获得该验票记录。

参照图1,仍以验票终端1000A为执行本实施例存储验票记录的方法的主体,验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D形成验票组为例,当验票终端1000A对入场票进行验票产生验票记录时,将自身产生的验票记录发送至验票组内的验票终端1000B,并由验票终端1000B将验票记录发送至验票终端1000C,再由验票终端1000C将验票记录发送至验票终端1000D,以使得验票组内的每一个验票终端1000均获得该验票记录。

步骤S2300,任一验票终端1000与其他验票终端1000共同对验票记录进行分布式记账,以更新本地数据库。

分布式记账技术是分布在多个节点上的数据库,每个节点都复制并保存有一个账本,且每个节点都可以进行独立更新,分布式记账技术的特征是账本不由任何中央节点维护,账本的更新是由每个节点独立构建和记录的,在此,可以是将验票组内的每一个验票终端1000作为验票组内的一个节点。

在一个实施例中,该步骤S2300中一验票终端1000与其他验票终端1000共同对验票记录进行分布式记账可以进一步包括如下步骤S2310~S2320:

步骤S2310,在验票组中选举一验票终端1000作为执行终端。

执行终端为有权利针对验票记录创建对应的存储区块的验票终端,这里,执行终端针对验票记录创建对应的存储区块,可以理解为是,执行终端将验票记录以存储区块的形式保存到执行终端的本地数据库中,以更新执行终端的本地数据库。

针对验票记录创建对应的存储区块的执行终端,可以是验票组内的任意一个验票终端1000,也可以是验票组内的任意两个验票终端1000,甚至更多,在此不做限定。在执行终端是验票组内的两个以上验票终端1000,即,同一个时间戳存在两个以上验票终端1000针对验票记录创建对应的存储区块的情况下,可以根据现有技术中的硬分叉技术和软分叉技术进行处理,在此不做详细赘述。

步骤S2320,与其他验票终端1000共同对执行终端针对验票记录创建的存储区块进行分布式记账。

在本实施例中,任一验票终端1000与其他验票终端1000共同对执行终端针对验票记录创建的存储区块进行分布式记账,即每一个验票终端1000均可以保存针对验票记录创建的存储区块,从而实现验票记录的分布式管理。

在一个例子中,在该验票终端1000是执行终端的情况下,该验票终端1000针对验票记录创建对应的存储区块,并将存储区块同步至其他验票终端1000,供其他验票终端1000将该存储区块保存至其他验票终端1000的本地数据库,以更新其他验票终端1000的本地数据库,即每一个验票终端1000的本地数据库中均保存有该验票记录,从而实现该验票终端1000与其他验票终端1000共同对该验票终端1000针对验票记录创建的存储区块的分布式记账。

在一个例子中,在该验票终端1000不是执行终端的情况下,获取执行终端同步的对应验票记录的存储区块,以更新本地数据库。

参照图1,仍以验票终端1000A为执行本实施例存储验票记录的方法的主体,验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D形成验票组为例,当验票终端1000A不是执行终端,且验票终端1000B是执行终端的情况下,验票终端1000B针对验票记录创建对应的存储区块,验票终端1000A、验票终端1000C以及验票终端1000D获取验票终端1000B同步的针对验票记录的存储区块,以使得验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D更新本地数据库。

根据本实施例的方法,一方面,其可以将多个验票终端之间建立通信连接以形成验票组,提升了多个验票终端之间通信连接的可靠性,降低了验票现场的安全风险。另一方面,当该验票组中任意验票终端对入场票进行验票而产生验票记录时,验票组中的每一验票终端均将共同对该验票记录进行分布式记账,以更新各自的本地数据库,这样,由于每一个验票终端的本地数据库中均保存有现场的所有验票记录,进而大大降低了对某一特定节点的依赖,从而,可以提高存储验票记录的安全性,提高验票系统对于单点故障的应对能力,有利于保障现场验票的可靠进行。

对于以上分布式记账,业内有多种方式实现,本方案发明人经过调查,选择了一种按照链状数据结构对验票记录进行分布式记账的方式。该种方式的优点在于方便查找验票记录,并有效防止删除、篡改验票记录。因此,在一个实施例中,上述步骤S2300中一验票终端1000与其他验票终端1000共同对验票记录进行分布式记账,以更新本地数据库可以进一步包括:任一验票终端1000在本地数据库中,按照链状数据结构,将验票记录链接至上一验票记录,以更新该本地数据库。

在本实施例中,对于每一验票终端1000,由于保存在本地数据库中的所有验票记录是按照链状数据结构进行存储,即,后一验票记录链接至上一验票记录以得到链状数据文件,从而,在获得一个新的验票记录后,验票组中的每一验票终端1000均可以在各自的本地数据库中,将新的验票记录链接至上一验票记录,以更新各自的本地数据库。

根据本发明该实施例,验票组内的每一验票终端1000获得新的验票记录后,可以在各自的本地数据库中,按照链状数据结构,将新的验票记录链接至前一验票记录,以更新各自的本地数据库,在此,由于新的验票记录是链接至前一验票记录,从而,可以提高查询验票记录的效率,并降低黄牛通过破坏验票终端存储的验票记录以带人进场的可能性。

在按照链状数据结构,将验票组经由验票产生的每一验票记录,以顺序相连的方式相链接以形成链状数据文件的实施中,可以是将每一验票记录保存在对应的存储区块中,并将对应的存储区块链接至上一存储区块,参见图11所示,这可以将验票记录1保存在对应的存储区块block1的区块体中,及将验票记录2保存在对应的存储区块block2的区块体中,并在存储区块block2的区块头中保存存储区块block1的特征信息,该特征信息包括但不限于是存储区块block1的哈希值,这样,便可以将存储区块block2链接至存储区块block1,依次类推,便可将保存每一验票记录的存储区块以顺序相连的方式链接在一起,形成链状数据文件。

如上步骤S2310中所述,在一个实施例中,每一存储区块可以由验票组中选举出的执行终端创建,在该实施例中,验票组经由验票每产生一个新的验票记录,验票组中的所有验票终端就会共同选举出执行终端,以由选举出的该执行终端创建对应该新的验票记录的存储区块,其中,验票组中的所有验票终端可以基于预设的相同算法参与该选举。因此,在一个实施例中,以上步骤S2310中在验票组中选举一验票终端1000作为执行终端可以进一步包括如下步骤S2311~S2312:

步骤S2311,任一验票终端1000与其他验票终端1000共同计算各自的选举码。

根据该步骤S2311,验票组内的所有验票终端1000均基于相同的算法计算各自的选举码,以选举最先获得满足设定条件的选举码的验票终端1000为执行终端。

在本实施例中,该步骤S2311中一验票终端1000与其他验票终端1000共同计算各自的选举码的步骤可以进一步包括如下步骤S2311-1~S2311-2:

步骤S2311-1,验票终端1000获取各自的种子池。

验票组中每一验票终端1000的种子池互不相同,同一验票终端1000的种子池中包括的种子也互不相同。

在一个例子中,可以是为验票组设置初始值和步长,以根据该初始值和步长确定每一验票终端1000的种子池。

例如,该步长可以是一个预设的固定数值,验票组内的所有验票终端1000均以该固定数值为基础确定自身的种子池。例如,初始值为1,步长为9999,可以是验票终端1000A的种子池中包括的种子为:1-10000中的每一个自然数,验票终端1000B的种子池中包括的种子为:10001-20000中的每一个自然数,验票终端1000C的种子池中包括的种子为:20001-30000中的每一个自然数,验票终端1000D的种子池中包括的种子为:30001-40000中的每一个自然数。

又例如,也可以为验票组内的每一个验票终端1000设置各自对应的步长,对应不同验票终端1000的步长可以相同,也可以不同。

在一个例子中,也可以是利用随机函数生成器为验票组内的每一验票终端1000随机生成各自对应的种子池,每一验票终端1000的种子池中的任意一个种子可以是任意字母和数字的组合,只要确保随机生成的每一验票终端1000的种子池互不相同,且同一验票终端1000的种子池中包括的种子互不相同即可。

步骤S2311-2,验票终端1000在各自的种子池中挑选种子计算各自的选举码。

在一个例子中,可以是验票组内的验票终端1000均同时在各自的种子池中挑选种子计算各自的选举码。

在一个例子中,也可以是验票组内的验票终端1000在获得验票记录之后,立即在自身的种子池中挑选种子计算自身的选举码。

以上述步骤S2311-1确定的验票终端1000A的种子池中包括的种子为:1-10000中的每一个自然数为例,在未接收到验票终端1000B、验票终端1000C或者验票终端1000D发送的通知,或者是自身未计算出满足设定条件的选举码的情况下,验票终端1000A会依次挑选1-10000中的每一个自然数,以计算每一自然数对应的选举码,直至自身计算出满足设定条件的选举码,或者是接收到验票终端1000B、验票终端1000C或者验票终端1000D发送的通知时,停止计算。

根据以上步骤S2311-1~S2311-2的例子,其为验票组内的每一验票终端1000设置各自对应的种子池,且验票组内的每一验票终端1000的种子池互不相同,每一验票终端1000均是在各自的种子池中挑选种子计算各自的选举码,从而避免不同的验票终端1000利用相同的种子计算自身的选举码,提高选举执行终端的速度。

步骤S2312,验票终端1000选举最先获得满足设定条件的选举码的验票终端1000,作为执行终端。

在本实施例中,由于执行终端为有权利针对验票记录创建对应的存储区块的验票终端1000,从而,在选举出执行终端之后,该执行终端便可针对验票记录创建对应的存储区块,以使得验票组内的所有验票终端1000共同对该存储区块进行分布式记账。

满足设定条件的选举码可以是选举码的设定位数满足设定规律的选举码。例如可以是前n位均为相同的数字,例如可以是选举码的前2位均为1,也可以是选举码的前3位均为0,还可以是选举码的前5位均为0等等,在此不做限定。

在本实施例中,该步骤S2312中选举最先获得满足设定条件的选举码的验票终端1000,作为执行终端的步骤可以进一步包括如下步骤S2312-1~S2312-2:

步骤S2312-1,任一验票终端1000在自身最先获得满足设定条件的选举码的情况下,确定自身为执行终端,并将选举结果通知其他验票终端1000。

仍以验票终端1000A为执行本发明存储验票记录的方法的主体,验票组内的其他验票终端1000分别为验票终端1000B、验票终端1000C以及验票终端1000D为例,当验票终端1000A最先获得满足设定条件的选举码的情况下,验票终端1000A确定自身为执行终端,并将选举结果通知验票终端1000B、验票终端1000C以及验票终端1000D。

步骤S2312-2,任一验票终端1000在其他验票终端1000最先获得满足设定条件的选举码的情况下,根据其他验票终端1000的通知停止继续计算选举码,并将其他验票终端1000作为执行终端。

仍以验票终端1000A为执行本发明存储验票记录的方法的主体,验票组内的其他验票终端1000分别为验票终端1000B、验票终端1000C以及验票终端1000D为例,当验票终端1000B最先获得满足设定条件的选举码的情况下,向验票终端1000A、验票终端1000C以及验票终端1000D发送停止计算选举码的通知,在此,验票终端1000A根据验票终端1000B发送的通知停止继续计算选举码,并确定验票终端1000B作为执行终端。

根据本发明该实施例,其提供了一种选举执行终端的方法,即规定了一个竞争方案,验票组内的所有验票终端1000为了能够成为针对验票记录创建对应的存储区块的执行终端,会使用该竞争方案参与竞争计算,即验票组内的所有验票终端1000共同计算各自的选举码,选举最先获得满足设定条件的选举码的验票终端1000,作为执行终端,从而,可以提高选举执行终端的效率和准确性,进而提高针对验票记录创建对应的存储区块的效率。

在一个实施例中,参与选举的算法除了有以上种子参与之外,还可以被设置为需要创建上一区块的执行终端的权利信息(也即工作证明)参与,以加强对验票终端身份的核实,以更为有效地避免非法终端参与选举。在该实施例中,除了在每一存储区块的区块头中保存上一区块的特征信息以实现链接之外,还可以在每一存储区块的区块头中保存创建该存储区块的权利信息,以供验票组中的所有验票终端基于该算法选举创建下一存储区块的执行终端使用。这样,为了在产生验票记录1后,验票组的所有验票终端能够基于该算法选举出创建存储区块block1的执行终端,仍然参见图11,可以在进行验票的初始化阶段创建一个创世区块block0,其中,该创世区块block0不具有验票记录,但存储有初始化设置的创建该创世区块block0的权利信息,其中,该初始设置的权利信息可以是预设的固定值,也可以是一个随机数。

另外,仍然参见图11,在由选举出的执行终端创建存储区块block1时,该执行终端将在存储区块block1的区块头中保存创世区块block0的特征信息,以将存储区块block1链接至创世区块block0,以使得该创世区块block0成为链状数据文件的起始区块。

以上创建创世区块block0可以在执行初始化本地数据库的过程中完成,因此,在一个实施例中,本发明存储验票记录的方法还可以进一步包括:任一验票终端1000响应于进行验票初始化的触发,执行初始化本地数据库的操作。

本实施例中,上述执行初始化本地数据库的步骤可以进一步包括如下步骤S3100~S3300:

步骤S3100,任一验票终端1000检测是否具有创建形成链状数据结构的创世区块的权限。

本实施例中,设置检测是否具有创建创世区块的权限的步骤,有利于在验票组的所有验票终端中,通过对权限的赋值灵活地配置由哪一验票终端创建该创世区块。例如,任一验票终端1000的权限被赋值为“1”时,表明该验票终端1000具有创建该创世区块的权限,而权限被赋值为“0”时,则表明该验票终端1000不具有初始化该创世区块的权限。

例如,对权限的赋值可以通过验票终端的按键等输入装置进行。

在另外的实施例中,也可以是直接指定由验票组内的一个特定的验票终端1000创建创世区块,在此不做限定。

步骤S3200,任一验票终端1000在具有权限的情况下,创建并保存该创世区块,并将创世区块同步至其他验票终端1000。

创世区块为在形成链状数据结构中最早创建的区块。

仍以验票终端1000A为执行本发明存储验票记录的方法的主体,验票组内的其他验票终端1000分别为验票终端1000B、验票终端1000C以及验票终端1000D为例,当根据以上步骤S3100检测到验票组内的验票终端1000A具有创建创世区块的权限,验票终端1000A便可根据该步骤S3200创建并保存区块链的创世区块,同时将创世区块同步至验票终端1000B、验票终端1000C以及验票终端1000D。

步骤S3300,任一验票终端1000在不具有权限的情况下,获取并保存具有权限的其他验票终端1000提供的创世区块。

仍以验票终端1000A为执行本发明存储验票记录的方法的主体,验票组内的其他验票终端1000分别为验票终端1000B、验票终端1000C以及验票终端1000D为例,当根据以上步骤S3100检测到验票组内的验票终端1000A不具有创建创世区块的权限,而验票组内的验票终端1000B具有创建该创世区块的权限,则验票终端1000A便可根据该步骤S3300获取并保存验票终端1000B提供的创世区块。

根据本发明该实施例,任一验票终端1000能够检测自身是否具有创建创世区块的权限,并在自身具有权限的情况下,创建并保存区块链的创世区块,在自身不具有权限的情况下,可以保存具有权限的其他验票终端1000提供的创世区块,而不需要自身去创建创世区块,从而使得各验票终端1000在进行初始化操作时保持一致性,并可以通过对权限的赋值决定相应的验票终端是否具有该权限,提高了验票组对于初始化操作的灵活性。

在一个实施例中,上述针对验票记录创建对应的存储区块的步骤可以进一步包括如下步骤S2321~S2323:

步骤S2321,任一验票终端1000获取上一验票记录的存储区块的特征信息。

参见图10、图11所示,存储区块的区块格式可以包括区块头和区块体,其中,区块头中包括有区块的头信息,该头信息至少包括上一存储区块的哈希值、本存储区块的哈希值、创建本存储区块的时间戳。区块体则承载所保存的验票记录。在此,存储区块至少具有区块头,根据存储区块的作用可以具有区块体,也可以不具有区块体,例如,创世区块不具有区块体。

上一验票记录的存储区块的特征信息至少可以为上一验票记录的存储区块的哈希值,上一验票记录的存储区块的特征信息可以存储在区块头中。

步骤S2322,任一验票终端1000获取作为执行终端的权利信息。

执行终端的权利信息用以表明作为执行终端的验票终端1000为有权利针对验票记录创建对应的存储区块的信息,执行终端的权利信息例如可以是执行终端获得的满足设定条件的选举码,也可以是计算得到该选举码的种子,在此,该权利信息也可以称之为是一种工作证明。

步骤S2323,任一验票终端1000根据特征信息、权利信息和验票记录,创建对应的存储区块。

该步骤S2323中,参见图10所示,该验票终端1000可以将特征信息和权利信息可以存储在区块头中,并将验票记录存储在区块体中,以创建对应验票记录的存储区块。

在本实施例中,根据以上步骤S2200获得验票记录,根据以上步骤S2321获得上一验票记录的存储区块的特征信息,根据以上步骤S2322获得执行终端的权利信息之后,便可对验票记录、上一验票记录的存储区块的特征信息以及执行终端的权利信息进行哈希处理,获得一验票终端1000对应的哈希值,以创建对应的存储区块。

在本实施例中,可以利用加密哈希函数对验票记录、上一验票记录的存储区块的特征信息以及执行终端的权利信息进行哈希处理,以获得一验票终端1000对应的哈希值。

加密哈希函数可以是能够实现哈希处理的任意函数,例如但不限于是SHA256算法、MD5消息摘要算法和PBKDF2算法等。

根据本发明该实施例,其可以通过上一验票记录的特征信息、执行终端的权利信息以及验票记录,便可创建针对验票记录的唯一存储区块,从而,一方面可以提高创建存储区块的准确性和效率,另一方面,由于创建出的存储区块中保存有上一存储区块的特征信息,便可根据该特征信息将最新创建出的存储区块保存至一验票终端1000的本地数据库中,以实现对本地数据库的快速更新和查找,同时降低本地数据库被攻击的可能性。

在一个实施例中,如图5所示,本发明存储验票记录的方法还可以包括如下步骤S4100~S4300:

步骤S4100,任一验票终端1000监测设定的校准事件。

在本实施例中,一验票终端1000可以设置至少一个校准事件,该至少一个校准事件可以包括:当前校准时间到时;启动重启操作;以及,验票终端1000在断开与其他验票终端1000之间的通信连接后,重新恢复该通信连接中的任意一项或者多项。

在一个例子中,对于当前校准时间到时的校准事件,可以是设置校准时间窗口的长度,以结合前一个校准时间确定当前校准时间。

例如,该校准时间窗口的长度可以是预设的固定数值,在该例子中,可以为验票组内的所有验票终端1000均设置该固定数值。

该固定数值可以根据验票组内的验票终端1000的数量进行设定,验票终端1000的数量越多,校准时间窗口的长度可以越大,验票终端1000的数量越少,校准时间窗口的长度可以越小。

又例如,也可以为验票组内的每一个验票终端1000设置各自对应的校准时间窗口的长度,对应不同的验票终端1000,校准时间窗口的长度可以相同,也可以不同。

步骤S4200,该验票终端1000在发生校准事件的情况下,比较本地数据库与其他验票终端1000的本地数据库是否一致。

在本实施例中,在发生任一校准事件时,一验票终端1000便可以响应于该校准事件,比较本地数据库与其他验票终端1000的本地数据库是否一致。

仍以验票终端1000A为执行本实施例存储数据的方法的主体,验票组内的其他验票终端1000分别为验票终端1000B、验票终端1000C以及验票终端1000D为例。

例如,校准时间窗口为Y,前一个校准时间为X,则计算出的下一个校准时间为X+Y,则在校准时间X+Y到达时,验票终端1000A比较本地数据库与验票终端1000B、验票终端1000C以及验票终端1000D的本地数据库是否一致。

又例如,验票终端1000A在执行重启操作重新开机后,比较本地数据库与验票终端1000B、验票终端1000C以及验票终端1000D的本地数据库是否一致。

还例如,验票终端1000A在重新恢复与其他验票终端1000间的通信连接后,比较本地数据库与验票终端1000B、验票终端1000C以及验票终端1000D的本地数据库是否一致。

步骤S4300,该验票终端1000根据比较结果校准本地数据库。

在本实施例中,一验票终端1000可以根据比较结果校准本地数据库,以使得和其他验票终端1000的本地数据库保持一致。

根据本发明该实施例,其可以在设定的校准事件被触发时,比较保存在一验票终端1000的本地数据库和其他验票终端1000的本地数据库是否一致,并在不一致的情况下校准一验票终端1000的本地数据库,以保证一验票终端1000的本地数据库和其他验票终端1000的本地数据库的一致性,提高保存验票记录的安全性,并使得任一验票终端在被攻击而导致数据部分丢失或者全部丢失后,仍可以通过该实施例继续进行验票,有效提高每一验票终端抵抗攻击的能力。

在一个实施例中,本发明存储验票记录的方法还可以进一步包括如下步骤S5100~S5300:

步骤S5100,任一验票终端1000提供设置校准事件的设置入口。

该设置入口可以是输入框、下拉列表、语音输入等,例如,操作人员可以通过输入框输入“校准时间窗口为5分钟”;又例如,操作人员可以通过下拉列表选择“校准时间窗口为5分钟”;又例如,操作人员可以语音输入“校准时间窗口为5分钟”。

步骤S5200,该验票终端1000获取通过设置入口输入的校准事件。

例如,输入的校准事件可以为“校准时间窗口的长度为5分钟”。

步骤S5300,该验票终端1000更新设定的校准事件为输入的校准事件。

在本实施例中,如果当前的设定的校准事件为“校准时间窗口的长度为3分钟”,则该验票终端1000可以将“校准时间窗口的长度为3分钟”更新为“校准时间窗口的长度为5分钟”。

根据本发明该实施例,其可以提供人机交互接口,以支持操作人员根据当前的实际需要设置所需要的校准事件,实现定制化设计。

在一个实施例中,本发明存储验票记录的方法还可以包括如下步骤S6100~S6200:

步骤S6100,任一验票终端1000响应于查询验票记录的请求,从本地数据库中获取验票记录。

在本实施例中,例如可以是验票人员在任一验票终端1000中实施的对验票记录的查询操作,该验票终端1000响应于验票人员实施的对验票记录的查询请求,从本地数据库中获取验票记录。验票人员实施的对验票记录的查询操作例如可以是验票人员在一验票终端1000的操作界面上实施输入操作输入所要查询的验票记录。

步骤S6200,该验票终端1000提供获取到的验票记录。

在一个例子中,可以是将获取到的验票记录显示在一验票终端1000的显示界面中。

例如,可以是在接收到验票人员实施的查询请求之后,直接将验票记录的全部信息显示在一验票终端1000的整个显示界面中。

又例如,也可以是在接收到验票人员实施的查询请求之后,以消息通知的形式将获取到的验票记录显示到一验票终端1000的消息通知框内,该消息通知框内可以仅显示查询到的验票记录的第一行信息,以在点击该第一行信息之后,跳转显示至验票记录的全部信息;也可以是直接显示验票记录的全部信息。

在一个例子中,也可以是通过语音播报的方式播放获取到的验票记录,在此并不限定验票记录的具体提供方式。

根据本发明该实施例,其在接收到验票人员查询验票记录的请求时,可以直接从本地数据库中获取验票记录,从而,可以提高查询验票记录的效率。

在一个实施例中,根据图6所示,本发明存储验票记录的方法还可以进一步包括如下步骤S7100~S7400:

步骤S7100,任一验票终端1000获取入场票的信息。

入场票的信息至少可以包括有票单号、名称、场次、开场时间、座位号等信息,该票单号用以将不同的入场票进行区分。

在本实施例中,该验票终端1000为对入场票进行验票产生验票记录的验票终端1000。

步骤S7200,该验票终端1000根据入场票的信息,检测本地数据库是否具有对应信息的验票记录。

在本实施例中,如果验票终端1000对入场票进行验票,则会产生验票记录,由于该验票记录中同样保存有对应入场票的票单号,至少可以根据入场票的票单号检测本地数据库中是否具有该票单号的验票记录。

步骤S7300,该验票终端1000在具有对应信息的验票记录的情况下,进行已进行验票的提示。

在本实施例中,如果一验票终端1000在具有对应票单号的验票记录的情况下,则可以进行已进行验票的提示。

本实施例中,可以采用任意的提示方式进行已进行验票的提示,例如可以是采用语音播报的形式,也可以是直接在一验票终端1000的显示界面中显示“已验票”,只要是根据约定能够区分已验票和未验票即可,在此不做限定。

步骤S7400,该验票终端1000在不具有对应信息的验票记录的情况下,对入场票进行验票以产生验票记录。

在本实施例中,如果一验票终端1000在不具有对应入场票的票单号的验票记录的情况下,则可以对入场票进行验票以产生验票记录,并继续执行以上步骤S2300中与其他验票终端1000共同对验票记录进行分布式记账,以更新本地数据库的操作。

根据本发明该实施例,其可以根据入场票的信息检测本地数据库是否具有对应信息的验票记录,并在具有对应信息的验票记录的情况下,进行已进行验票的提示,从而,解决了单机验票可以多次入场的问题。

<例子1>

图7为根据本发明一个例子的验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D之间的交互过程的示意性流程图。本例子中,各验票终端基于区块链的网络架构对验票记录进行分布式记账。

根据图1、图7、图8a-图8f和图10所示,本例子中,各验票终端之间的交互过程可以包括如下步骤:

步骤S8110,验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D基于局域网建立通信连接,形成验票组。

参照图8a,验票组中至少包括有验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D,验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D之间可以相互访问。

该步骤S8110中,通信连接例如可以是蓝牙连接。

任何一个验票终端1000可以通过安装实现本例子方法的应用,并加入该局域网来加入该验票组,以使得加入该验票组中的每一验票终端1000都能够在进行现场验票时,根据本例子的方法与其他验票终端1000一起对验票产生的验票记录进行分布式记账。另外,任何一个验票终端1000也可以通过退出该局域网,或者在该局域网中隐身而在从验票组中退出。

在一个例子中,可以设置验票组中的每一验票终端1000对任一验票终端1000的加入消息进行分布式记账。同理,也可以设置验票组中的每一验票终端1000对任一验票终端1000的退出消息进行分布式记账。

步骤S8120,验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D响应于进行验票初始化的触发,检测自身是否具有初始化区块链的权限,即,创建创世区块的权限,其中,验票终端1000A检测到自身具有该权限,因此,验票终端1000A创建并保存区块链的创世区块。

该步骤S8120中,参见图10所示,该创世区块block0包括区块头,其中,区块头中至少包括创世区块的哈希值,及创建创世区块的时间戳等。在此,由于创建创世区块block0时,验票组内并没有验票记录产生,且创世区块block0是区块链中最早创建的区块,因此,创世区块block0的区块头中并没有前一存储区块的哈希值,且创世区块block0不具有区块体。

该步骤S8120中,参照图8b,验票终端1000A检测到自身具有初始化区块链的权限,则创建并保存区块链的创世区块block0。

步骤S8130,验票终端1000A将创世区块同步至验票终端1000B、验票终端1000C以及验票终端1000D。

参照图8c,验票终端1000A将创世区块block0同步至验票终端1000B、验票终端1000C以及验票终端1000D,验票终端1000B、验票终端1000C以及验票终端1000D均保存该创世区块block0。

步骤S8140,验票终端1000A对入场票进行验票产生验票记录。

步骤S8150,验票终端1000A广播该验票记录,以使得验票终端1000B、验票终端1000C以及验票终端1000D获得该验票记录。

根据该步骤S8150,也可以是由验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D之间相互传播该验票记录,以确保该四个验票终端均成功获得该验票记录。

步骤S8160,验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D获取各自的种子池,并在各自的种子池中挑选种子计算各自的选举码。

该步骤S8160中,每一验票终端1000对应的种子池,也即为各自的挖矿范围。

步骤S8170,验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D选举最先获得满足设定条件的选举码的验票终端1000B作为执行终端。

例如,可以是规定一个竞争函数用于计算选举码,该竞争函数的自变量包括创建上一存储区块的工作证明和计算选举码挑选的种子,因变量即为该选举码,其中,创建上一存储区块的工作证明可以为创建上一存储区块的验票终端挑选出的用以获得满足设定条件的选举码的种子。这样,当验票记录产生时,验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D分别将挑选出的种子代入竞争函数中以获得各自的选举码,并由最先计算出满足设定条件的选举码的验票终端创建存储区块,参照图8d,当验票记录产生时,可以是验票组内的验票终端1000A在对应的种子池:1-10000中挑选种子,验票终端1000B在对应的种子池:10001-20000中挑选种子,验票终端1000C在对应的种子池:20001-30000中挑选种子以及验票终端1000D在对应的种子池:30001-40000中挑选种子,并将挑选出的当前种子,以及,创建上一存储区块的工作证明代入竞争函数,计算对应当前种子的选举码,该选举过程直至有一个验票终端挑选出合适的种子,以获得满足设定条件的选举码结束,该设定条件例如是选举码的hash值的前2位均为“1”,而该合适的种子即可作为由选举出的验票终端创建当前存储区块的工作证明,并将该工作证明存储在所创建的当前存储区块中。

例如,验票组中的各验票终端1000可以基于共识机制规定一个如下的挖矿算法,即,新的存储区块的工作证明y和前一个存储区块的工作证明x的和的hash值的前2位都是"1",则挖矿成功,即选举成功:

guess=(str(x)+str(y)).encode()

guess_hash=hashlib.sha256(guess).hexdigest()

if guess_hash[:4]=="11":return y

else y=y+1

以上挖矿算法中,每一验票终端1000在竞争作为新的存储区块的执行终端时,每一验票终端1000在各自的种子池中挑选期望作为新的存储区块的工作证明的种子y,guess函数与guess_hash函数均为参与竞争的竞争函数,guess函数用于计算种子y和前一个存储区块的工作证明x的和,guess_hash函数用于计算guess函数的函数值的hash值,guess_hash函数的函数值即为选举码,在guess_hash函数的函数值满足前2位都是"1"的设定条件时,则挖矿成功,返回新的存储区块的工作证明即为y,此时,最先挖矿成功的验票终端1000即成为创建新的存储区块的执行终端;如果该种子y未使得选举码满足该条件,则设置种子y=y+1继续挖矿,直至有一个验票终端1000首先获得满足设定条件的选举码为止。

当验票终端1000B在图8d的计算过程中利用上述竞争函数最先计算出满足设定条件的选举码时,验票终端1000B便获得针对验票记录创建对应的存储区块的权利,则参照图8e,由验票终端1000B创建对应验票记录的存储区块block1,并依据该存储区块block1中保存的前一存储区块的哈希值,查找本地区块链中的该前一存储区块,由于存储区块block1中保存的前一存储区块的哈希值为创世区块block0的哈希值,因此,根据创世区块block0的哈希值将存储区块block1链接至本地的创世区块block0,即创世区块block0和存储区块block1顺序相连,以更新本地区块链。

步骤S8180,验票终端1000B创建对应验票记录的存储区块,并在本地数据库中,将存储区块链接至上一存储区块,以更新保存在本地的区块链。

参见图10所示,每一存储区块包括区块头和区块体,其中,区块头中至少包括前一存储区块的哈希值、本存储区块的哈希值、及创建本存储区块的时间戳等,区块体中承载所保存的验票记录。例如,该例子中的该存储区块为图10中的存储区块block1,则对应的前一存储区块是创世区块block0,其区块头中至少包括创世区块block0的哈希值,而其区块体中存储的验票记录1即为验票终端1000A在步骤S8140产生的验票记录,这样,便将存储区块block1链接至创世区块block0,形成如图10所示的链表。

步骤S8190,验票终端1000B将对应验票记录的存储区块同步至验票终端1000A、验票终端1000C以及验票终端1000D。

参照图8f,验票终端1000A、验票终端1000C以及验票终端1000D接收验票终端1000B同步的存储区块block1,根据创世区块block0的哈希值将存储区块block1链接至本地的创世区块block0,即创世区块block0和存储区块block1顺序相连,以更新各自的本地区块链,至此,验票组中的每一验票终端的本地数据库均保存有如图10所示的相同链表。

进一步地,参见图11所示,在验票组经由验票产生验票记录2时,按照以上步骤S8160和步骤S8160选举出用于创建对应验票记录2的存储区块block2的执行终端,在执行终端创建了存储区块block2后,其中,存储区块block2的区块头包括存储区块block1的哈希值及该执行终端的工作证明,每一验票终端均在各自的本地数据库将存储区块block2链接至存储区块block1,至此,验票组中的每一验票终端的本地数据库均保存有如图11所示的相同链表。依次类推,由验票组中每一验票终端完成对每一验票记录的分布式记账。

本例子1是以验票终端1000A对入场票进行验票产生了一个验票记录为例,说明了验票组中的所有验票终端对该验票记录进行分布式记账的一种可选的实施方案,在此,对于后续产生的其他验票记录,可以参照以上步骤S8150~S8190创建针对其他验票记录的存储区块,以使得验票终端1000A、验票终端1000B、验票终端1000C以及验票终端1000D共同对其他验票记录进行分布式记账,在此不再赘述。

本例子中,由于区块链本身是分布式的,某一个存储区块的数据丢失,不影响整个区块链的数据完整性,这可以减少对某一个特定节点的依赖性,进而解决了局域网验票中过于依赖本地服务器的问题,保障现场验票在出现单节点故障时仍能够有序进行而不受影响。另外,基于区块链架构的安全性,可以大大降低黄牛通过攻击服务器而带人进场的可能性,进而保证验票的有效性。再者,在该种网络架构下,由于每一验票终端均保存有完整的验票记录,因此,每一验票终端通过查询本地数据库就可以得到所有的验票记录,这为解决单机验票存在的多次入场问题提供了技术支持。最后,在该种网络架构下,每一存储区块均保存有前一存储区块的特征信息(前一存储区块的哈希值),这样就将创建的各个存储区块有序地连接起来,有利于实现验票记录的快速查找,进而能够在基于本地数据库查询每一入场票是否已经完成验票以解决多次入场问题的应用场景中,仍能达到现场运营对验票速度的要求,保证观众能够持票快速入场。

<例子2>

在例子1的基础上,例子2以验票终端1000A为例,说明解决单机验票中存在的多次入场问题的一种实施步骤,参照图9所示,可以包括:

步骤S9110,验票终端1000A获取入场票的信息。

步骤S9120,验票终端1000A根据入场票的信息,检测本地区块链是否具有对应信息的验票记录。

步骤S9130,验票终端1000A在具有对应信息的验票记录的情况下,进行已进行验票的提示,并禁止携带该入场票的观众入场。

步骤S9140,验票终端1000A在不具有对应信息的验票记录的情况下,对入场票进行验票以产生验票记录,同时允许携带该入场票的观众入场。

在执行步骤S9140之后,验票终端1000A可以继续执行例子1中的步骤S8150~S8190与验票终端1000B、验票终端1000C以及验票终端1000D共同对验票记录进行分布式记账,以更新本地区块链的步骤。

<验票终端实施例>

在本实施例中,还提供一种验票终端1000,其还可以是如图1或者图2a、图2b所示的验票终端1000A、验票终端1000B、验票终端1000C或者验票终端1000D中的任意一个。

参照图12,该验票终端1000可以包括一个或者多个存储器1100,以及一个或者多个处理器1200,该存储器1100用于存储可执行的指令;该处理器1200用于在指令的控制下执行根据本发明任意实施例的存储验票记录的方法。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

31页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于蓝牙ETC、OBU的停车信息采集收费系统及其停车信息采集收费方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!