CN109741180B - 区块链连续交易序号生成方法及装置、区块链网络节点 - Google Patents

区块链连续交易序号生成方法及装置、区块链网络节点 Download PDF

Info

Publication number
CN109741180B
CN109741180B CN201811600790.1A CN201811600790A CN109741180B CN 109741180 B CN109741180 B CN 109741180B CN 201811600790 A CN201811600790 A CN 201811600790A CN 109741180 B CN109741180 B CN 109741180B
Authority
CN
China
Prior art keywords
serial number
counter value
world state
number counter
transaction
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
Application number
CN201811600790.1A
Other languages
English (en)
Other versions
CN109741180A (zh
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN201811600790.1A priority Critical patent/CN109741180B/zh
Publication of CN109741180A publication Critical patent/CN109741180A/zh
Application granted granted Critical
Publication of CN109741180B publication Critical patent/CN109741180B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供了一种区块链连续交易序号生成方法及装置、区块链网络节点。所述方法包括:通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;比较所述交易序号计数器值与最新的世界状态序号计数器值,根据比较结果更新所述世界状态序号。本发明通过区块链网络节点统一生成不重复、连续的交易序号,而且可通过交易序号来鉴别交易来源等信息,避免了交易序号冲突降低系统效率,提高系统可用性,并提高了交易的检索、统计处理效率。

Description

区块链连续交易序号生成方法及装置、区块链网络节点
技术领域
本发明涉及区块链技术领域,尤指一种区块链连续交易序号生成方法及装置、区块链网络节点。
背景技术
随着区块链技术的逐渐成熟,区块链技术逐步应用于网络安全、医疗保健、金融服务、制造业和工业、政府事务、慈善公益、零售、房地产、交通旅游和媒体等领域。但是,在一些应用场景中,也发现区块链技术存在一些功能性缺陷,目前区块链网络中不能生成连续的交易序号。如图1所示,各个外围应用(客户端)连接到区块链网络,调用智能合约,最后将交易提交到区块链的k-v数据库(区块链的世界状态)中。k-v数据库是使用键值(Key-Value)存储数据的一种数据库,是一种NoSQL(非关系型数据库)模型,其数据按照键值对的形式进行组织、索引和存储。在不涉及过多业务关系的数据存储时,k-v数据库拥有比SQL数据库更好的读写性能。当外围应用向区块链发起交易时,区块链网络中随机一个节点会接收到请求。而交易序号都由外围应用自行生成,外围应用之间没有任何通讯机制。当外围应用将生成的交易序号提交到块链网络中,可能出现交易序号相同,则区块链网络中的世界状态将产生键值冲突。
例如,客户端1...N分别生成键值对(k,v1)...(k,vn),当v1...vn中存在两者相等时,区块链网络中将产生键值冲突,导致交易在最后阶段失败,交易失败后由外围应用重新提交一次交易请求,再重新生成新的交易序号。这种键值冲突导致失败的情况,在交易频率较低的情况下是可以接受的,但一旦区块链技术应在交易频率较高的商业场景,这种情况会导致浪费系统资源,影响系统可用性和可靠性。同时,交易序号无统一规则、不连续,对区块链交易检索、统计均带来极大的不方便(序号10001并不能表示这是第10001笔交易)。
发明内容
为了解决目前区块链中由于外围客户端产生交易序号而导致的键值冲突问题,本发明实施例提供一种区块链连续交易序号生成方法,所述方法包括:
通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;
根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;
比较所述交易序号计数器值与世界状态序号计数器值,根据比较结果更新所述世界状态序号。
可选的,在本发明一实施例中,所述根据所述序号生成请求获取世界状态序号包括:根据客户端的序号生成请求生成序号生成触发信号;根据所述序号生成触发信号获得所述世界状态序号,并根据所述世界状态序号的值确定所述世界状态序号计数器值。
可选的,在本发明一实施例中,所述根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号包括:获取节点编号及系统时间;根据所述节点编号、所述系统时间及所述世界状态序号计数器值,按照预设的生成规则确定所述交易序号。
可选的,在本发明一实施例中,所述比较所述交易序号计数器值与世界状态序号计数器值,根据比较结果更新所述世界状态序号包括:比较所述交易序号计数器值与世界状态序号计数器值,生成比较结果;当所述比较结果为所述交易序号计数器值大于所述世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号;以及当所述比较结果为所述交易序号计数器值不大于所述世界状态序号计数器值时,根据所述世界状态序号计数器值更新所述交易序号计数器值,比较更新后的交易序号计数器值与所述世界状态序号计数器值,直到更新后的交易序号计数器值大于所述世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号。
本发明实施例还提供一种序号生成装置,所述序号生成装置包括:
序号查询子模块,用于通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;
序号生成子模块,用于根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;
序号更新子模块,用于比较所述交易序号计数器值与世界状态序号计数器值,根据比较结果更新所述世界状态序号。
可选的,在本发明一实施例中,所述序号查询子模块包括:触发信号单元,用于根据客户端的序号生成请求生成序号生成触发信号;序号查询单元,用于根据所述序号生成触发信号获得所述世界状态序号,并根据所述世界状态序号的值确定所述世界状态序号计数器值。
可选的,在本发明一实施例中,所述序号生成子模块包括:获取单元,用于获取节点编号及系统时间;序号生成单元,用于根据所述节点编号、所述系统时间及所述世界状态序号计数器值,按照预设的生成规则确定所述交易序号。
可选的,在本发明一实施例中,所述序号更新子模块包括:比较单元,用于比较所述交易序号计数器值与世界状态序号计数器值,生成比较结果;更新单元,用于当所述比较结果为所述交易序号计数器值大于所述世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号;以及当所述比较结果为所述交易序号计数器值不大于所述世界状态序号计数器值时,根据所述世界状态序号计数器值更新所述交易序号计数器值,比较更新后的交易序号计数器值与所述世界状态序号计数器值,直到更新后的交易序号计数器值大于所述世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号。
可选的,在本发明一实施例中,所述序号生成模块还包括序号存储子模块,用于存储所述序号生成子模块中生成的所述交易序号。
本发明实施例还提供一种区块链网络节点,所述区块链网络节点包括区块链底层数据库及所述序号生成模块,所述区块链底层数据库用于存储世界状态序号。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;
根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;
比较所述交易序号计数器值与世界状态序号计数器值,根据比较结果更新所述世界状态序号。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;
根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;
比较所述交易序号计数器值与世界状态序号计数器值,根据比较结果更新所述世界状态序号。
本发明通过区块链网络节点统一生成不重复、连续的交易序号,而且可通过交易序号来鉴别交易来源等信息,避免了交易序号冲突降低系统效率,提高系统可用性,并提高了交易的检索、统计处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为区块链网络系统的结构示意图;
图2为本发明实施例一种区块链连续交易序号生成方法流程图;
图3为本发明一具体实施例中区块链连续交易序号串行生成方法流程图;
图4为本发明一具体实施例中区块链连续交易序号并行生成方法流程图;
图5为本发明实施例一种序号生成装置的结构示意图;
图6为本发明实施例一种区块链网络节点结构示意图;
图7为本发明一具体实施例中的序号生成装置的结构图;
图8为本发明一具体实施例中世界状态序号生成模块的结构示意图。
具体实施方式
本发明实施例提供一种区块链连续交易序号生成方法及装置、区块链网络节点。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图2所示为本发明实施例一种区块链连续交易序号生成方法流程图,图2中所示方法包括:步骤S101,通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;
步骤S102,根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;
步骤S103,比较所述交易序号计数器值与世界状态序号计数器值,根据比较结果更新所述世界状态序号。
在本实施例中,客户端发起交易并向区块链网络提交序号生成请求,根据该序号生成请求可从区块链底层数据库中查询并获取当前的世界状态序号,世界状态序号中包含有当前的世界状态序号计数器值。利用当前的世界状态序号计数器值,按照预设生成规则生成交易序号。具体的,生成规则可以为例如,节点编号、时间及当前的世界状态序号计数器值+1的顺序组合。交易序号中包含交易序号计数器值,进一步的,交易序号计数器值与当前的世界状态序号计数器值+1相等。
其中,在生成交易序号后,比较交易序号计数器值与最新的世界状态序号计数器值。最新的世界状态序号计数器值可能与上述当前的世界状态序号计数器值相等,此时的交易序号计数器值大于最新的世界状态序号计数器值,那么将最新的世界状态序号计数器值更新为交易序号计数器值。若最新的世界状态序号计数器值与交易序号计数器值相等,那么此时交易序号计数器值再+1,再次进行比较,直到交易序号计数器值大于最新的世界状态序号计数器值后,将最新的世界状态序号计数器值更新为此时的交易序号计数器值。在世界状态序号计数器值更新的同时,整个世界状态序号也就更新为交易序号。其中,世界状态序号计数器值之所以会发生变化,是由于在交易序号生成的过程中,其他区块链网络节点对世界状态序号进行了更新,导致了世界状态序号计数器值变化。
作为本发明的一个实施例,所述根据所述序号生成请求获取世界状态序号包括:根据客户端的序号生成请求生成序号生成触发信号;根据所述序号生成触发信号获得所述世界状态序号,并根据所述世界状态序号的值确定所述世界状态序号计数器值。其中,根据客户端的序号生成请求可生成序号生成触发信号,根据该触发信号可查询区块链网络中相对应的世界状态序号键值,由此可以从中获取到世界状态序号计数器值。
作为本发明的一个实施例,所述根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号包括:获取节点编号及系统时间;根据所述节点编号、所述系统时间及所述世界状态序号计数器值,按照预设的生成规则确定所述交易序号。具体的,生成规则可以为例如,交易序号为节点编号、时间及当前的世界状态序号计数器值+1的顺序组合。
作为本发明的一个实施例,所述比较所述交易序号计数器值与世界状态序号计数器值,根据比较结果更新所述世界状态序号包括:比较所述交易序号计数器值与世界状态序号计数器值,生成比较结果;当所述比较结果为所述交易序号计数器值大于所述世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号;以及当所述比较结果为所述交易序号计数器值不大于所述世界状态序号计数器值时,根据所述世界状态序号计数器值更新所述交易序号计数器值,比较更新后的交易序号计数器值与所述世界状态序号计数器值,直到更新后的交易序号计数器值大于所述世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号。
在本实施例中,在生成交易序号后,比较交易序号计数器值与最新的世界状态序号计数器值。最新的世界状态序号计数器值可能与上述当前的世界状态序号计数器值相等,此时的交易序号计数器值大于最新的世界状态序号计数器值,那么将最新的世界状态序号计数器值更新为交易序号计数器值。若最新的世界状态序号计数器值与交易序号计数器值相等,那么此时交易序号计数器值再+1,再次进行比较,直到交易序号计数器值大于最新的世界状态序号计数器值后,将最新的世界状态序号计数器值更新为此时的交易序号计数器值。在世界状态序号计数器值更新的同时,整个世界状态序号也就更新为交易序号。其中,世界状态序号计数器值之所以会发生变化,是由于在交易序号生成的过程中,其他区块链网络节点对世界状态序号进行了更新,导致了世界状态序号计数器值变化。
在本发明一具体实施例中,如图3所示为本发明一具体实施例中区块链连续交易序号串行生成方法流程图,图3中所示方法包括:步骤S201:客户端(应用)1发起一笔交易并将序号生成请求提交给区块链网络。
步骤S202:假设区块链节点1接收到来自客户端(应用)1的交易请求。
步骤S203:客户端(应用)2发起一笔交易并将序号生成请求提交给区块链网络。
步骤S204:假设区块链节点2接收到来自客户端(应用)2的交易请求。
步骤S205、S206:节点1查询区块链世界状态并获取当前最新序号,具体实施为:首先获取到当前节点中序号生成触发信号;其次查询区块链网络中世界状态键值为“序号”对应的值,如当前序号value=stub.getState(“序号”),并对value进行处理,截取出其中计数器参数n反馈给当前节点。如序号为000001201804261620300000000001,计数器n为0000000001。
步骤S207:节点1生成一个最新序号。生成的规则为:最新序号(SerialNo)=节点编号(NodeNum)+系统时间(SysDateTime)+计数器当前值n,详见表1。具体实施为:
(1)NodeNum为000000-999999范围内的某一数字,如000002表示区块链网络中的第2个节点。
(2)SysDateTime为当前系统时间,YYYYMMDDhhmmss,如,20180313153010。
(3)在区块链网络中,预先设置好计数器阀值,如,9999999999。如果获取到的计数器当前值n等于预设的计数器阀值,则将计数器最新的计数器设置为0000000000;如果获取到的计数器小于预设的计数器阀值,则将计数器最新的计数器当前值n设置为n+1。
最终生成交易序号,如0000022018031315301000000002。由于该序号的生成规则一致,且都是由同一区块链网络生成,生成前获取网络中最新的序号,确保序号生成唯一且连续。
表1
Figure GDA0002755992270000071
Figure GDA0002755992270000081
步骤S208:节点1将最新序号000001201804261620300000000002更新到区块链世界状态。具体实施步骤为:获取区块链世界状态中最新的计数器n当前值,如stub.getState(“序号”).substr(10);如果生成的交易序号中计数器与所获取的区块链世界状态中计数器值相等,则计数器计数器+1后再将生成的交易序号更新到世界状态中;否则直接将生成的交易序号更新到世界状态中。stub.putState(“序号”,“新生成的序号”)。
步骤S209、S210:节点2查询区块链世界状态并获取当前最新序号000001201804261620300000000002,具体实施方法同步骤S206。
步骤S211:节点2生成一个最新序号000002201804261620300000000003。具体实施方法同步骤S207。
步骤S212:节点2将最新序号000002201804261620300000000003更新到区块链的世界状态中。具体实施方法同步骤S208。
在本发明一具体实施例中,如图4所示为本发明一具体实施例中区块链连续交易序号并行生成方法流程图,图4中所示方法包括:步骤S301:客户端(应用)1、客户端(应用)2同时区块链网络发起交易和提交序号生成请求。
步骤S302:假设区块链节点1、节点2分别同时接受到客户端(应用)1、客户端(应用)2的交易请求。
步骤S303、S304:节点1、节点2同时查询并获取区块链当前序号000002201804261620300000000003,此时两个节点获取到的计数器当前值n:0000000003一致。具体实施方法同步骤S206。
步骤S305:节点1、节点2生成各自的序号000001201804261620300000000004、000002201804261620300000000004,此时两个节点生成的计数器当前值n:0000000004一致。具体实施方法同步骤S207。
步骤S306:假设区块链节点1先发起了世界状态序号更新操作,更新最新生成的序号000001201804261620300000000004,由于节点1生成的计数器当前值n:0000000004大于区块链世界状态中计数器当前值n:0000000003,更新成功。具体实施方法同步骤S208。
步骤S307:节点2后发起世界状态序号更新操作,更新最新生成的序号000002201804261620300000000004,由于节点2生成的计数器当前值n:0000000004不大于(小于或等于)区块链世界状态中计数器当前值n:0000000004,则此时重新设置节点2的计数器n为区块链世界状态中计数器当前值n:0000000004的值上加1,变成0000000005。然后重新生成序号000002201804261620300000000005,再更新到区块链的世界状态中,从而保证了计数器当前值n的连续性。具体实施方法同步骤S208。
通过本发明的交易序号生成方法,利用区块链网络节点统一生成不重复、连续的交易序号,而且可通过交易序号来鉴别交易来源等信息,避免了交易序号冲突降低系统效率,提高系统可用性,并提高了交易的检索、统计处理效率。
如图5所示为本发明实施例一种序号生成装置的结构示意图,图5中所示序号生成装置包括:序号查询子模块11,用于通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;
序号生成子模块12,用于根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;
序号更新子模块13,用于比较所述交易序号计数器值与世界状态序号计数器值,根据比较结果更新所述世界状态序号。
作为本发明的一个实施例,所述序号查询子模块包括:触发信号单元,用于根据客户端的序号生成请求生成序号生成触发信号;序号查询单元,用于根据所述序号生成触发信号获得所述世界状态序号,并根据所述世界状态序号的值确定所述世界状态序号计数器值。
作为本发明的一个实施例,所述序号生成子模块包括:获取单元,用于获取节点编号及系统时间;序号生成单元,用于根据所述节点编号、所述系统时间及所述世界状态序号计数器值,按照预设的生成规则确定所述交易序号。
作为本发明的一个实施例,所述序号更新子模块包括:比较单元,用于比较所述交易序号计数器值与世界状态序号计数器值,生成比较结果;更新单元,用于当所述比较结果为所述交易序号计数器值大于所述世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号;以及当所述比较结果为所述交易序号计数器值不大于所述世界状态序号计数器值时,根据所述世界状态序号计数器值更新所述交易序号计数器值,比较更新后的交易序号计数器值与所述世界状态序号计数器值,直到更新后的交易序号计数器值大于所述世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号。
作为本发明的一个实施例,所述序号生成装置还包括序号存储子模块,用于存储所述序号生成子模块中生成的所述交易序号。
如图6所示为本发明实施例一种区块链网络节点结构示意图,图中所示区块链网络节点包括区块链底层数据库及如图5所示的序号生成装置,所述区块链底层数据库用于存储世界状态序号。图6中所示的节点还包括智能合约模块、P2P通信模块、共识模块、序号生成装置、区块链底层数据库等。
其中,所述智能合约模块是负责执行操作逻辑代码,根据输入参数和预先定义的逻辑,对区块链底层数据库的合约数据进行更新,承担智能合约的执行和合约规则验证,并将最终的执行结果存储到区块链底层数据库中。其可以为操作系统中独立运行的进程,也可以为区块链节点服务器中的一段代码或指令。智能合约模块接收调用参数,执行预先定义的逻辑,在逻辑执行过程中完成对区块链底层数据库中的数据进行读写。
所述的P2P通信模块负责区块链中任一两个节点服务器之间点对点的加密安全数据交互。
所述的共识模块负责根据区块链共识算法的规则对交易进行共识,生成区块并进行持久化保存。
所述的序号生成装置2,部署在每个区块链节点(节点1...节点N)服务器上,主要负责当多个外围应用同时发起交易时,每笔交易的序号由当前节点生成,而所有节点都属同一个区块链网络,其序号生成算法统一,保证序号连续统一。具体模块详见图7。
如图7所示为本发明一具体实施例中的序号生成装置的结构图,图7中所示序号生成装置包括:世界状态序号查询模块21(序号查询子模块)、世界状态序号生成模块22(序号生成子模块)、世界状态序号存储模块23(序号存储子模块)、世界状态序号更新模块24(序号更新子模块)等。
所述的世界状态序号查询模块21,负责该节点接收到应用交易序号生成请求时,查询世界状态中最新序号,供该节点生成新的序号时参考。具体实施为:首先获取到当前节点中序号生成触发信号;其次查询区块链网络中世界状态键值为“序号”对应的值,如当前序号value=stub.getState(“序号”),并对value进行处理,截取出其中计数器参数n反馈给当前节点。
所述的世界状态序号生成模块22,负责为区块链网络中所在节点生成序号。
生成规则以及所含模块详见图8所示。
所述的世界状态序号存储模块23,负责将区块链第一次新生成的序号存储到世界状态中。如stub.putState(“序号”,“0010022018031315301000000001”)。
所述的世界状态序号更新模块24,负责将区块链后续新生成的序号更新到世界状态中。具体实施步骤为:获取区块链世界状态中最新的计数器n当前值,如stub.getState(“序号”).substr(10);如果生成的交易序号中计数器与所获取的区块链世界状态中计数器值相等,则计数器+1后再将生成的交易序号更新到世界状态中;否则直接将生成的交易序号更新到世界状态中。stub.putState(“序号”,“新生成的序号”)。
如图8所示为本发明一具体实施例中世界状态序号生成模块的结构示意图,世界状态序号生成模块22,包括节点编号获取模块221、系统时间获取模块222、最新计数器获取模块223、序号组装模块224等。
所述的节点编号获取模块221,将区块链节点IP和节点编号对应关系预先在区块链网络中设置好,获取区块链网络中当前节点IP(getIP()),从而可以得知节点编号。
所述的系统时间获取模块222,获取区块链系统时间,System.getSysDateTime(),并将其格式化成YYYYMMDDhhmmss。
所述的最新计数器获取模块223,获取序号查询子模块反馈的最新计数器当前值n。
所述的序号组装模块224,按照表1阐述的规则进行拼装,生成所需的区块链连续交易序号。生成的规则为:最新序号(SerialNo)=节点编号(NodeNum)+系统时间(SysDateTime)+计数器当前值n,详见表1。具体实施为:
(1)NodeNum为000000-999999范围内的某一数字,如000002表示区块链网络中的第2个节点。
(2)SysDateTime为当前系统时间,YYYYMMDDhhmmss,如,20180313153010。
(3)在区块链网络中,预先设置好计数器阀值,如,9999999999。如果序号查询子模块获取到的计数器当前值n等于预设的计数器阀值,则将计数器最新的计数器设置为0000000000;如果序号查询子模块获取到的计数器小于预设的计数器阀值,则将计数器最新的计数器当前值n设置为n+1。
(4)最终生成交易序号,如0000022018031315301000000001。由于该序号的生成规则一致,且都是由同一区块链网络生成,生成前获取网络中最新的序号,确保序号生成唯一且连续。
通过本发明的交易序号生成模块及区块链网络节点,利用区块链网络节点统一生成不重复、连续的交易序号,而且可通过交易序号来鉴别交易来源等信息,避免了交易序号冲突降低系统效率,提高系统可用性,并提高了交易的检索、统计处理效率。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;
根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;
比较所述交易序号计数器值与世界状态序号计数器值,根据比较结果更新所述世界状态序号。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;
根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;
比较所述交易序号计数器值与世界状态序号计数器值,根据比较结果更新所述世界状态序号。
基于与上述一种区块链连续交易序号生成方法相同的申请构思,本发明还提供了上述一种计算机设备及一种计算机可读存储介质。由于该一种计算机设备及一种计算机可读存储介质解决问题的原理与一种区块链连续交易序号生成方法相似,因此该一种计算机设备及一种计算机可读存储介质的实施可以参见一种区块链连续交易序号生成方法的实施,重复之处不再赘述。
通过本发明的计算机设备及计算机可读存储介质,利用区块链网络节点统一生成不重复、连续的交易序号,而且可通过交易序号来鉴别交易来源等信息,避免了交易序号冲突降低系统效率,提高系统可用性,并提高了交易的检索、统计处理效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,比如ROM/RAM、磁碟、光盘等。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种区块链连续交易序号生成方法,其特征在于,所述方法包括:
通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;
根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;
比较所述交易序号计数器值与最新的世界状态序号计数器值,根据比较结果更新所述世界状态序号;
其中,所述比较所述交易序号计数器值与最新的世界状态序号计数器值,根据比较结果更新所述世界状态序号包括:
比较所述交易序号计数器值与最新的世界状态序号计数器值,生成比较结果;
当所述比较结果为所述交易序号计数器值大于最新的世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号;以及
当所述比较结果为所述交易序号计数器值不大于最新的世界状态序号计数器值时,根据最新的世界状态序号计数器值更新所述交易序号计数器值,比较更新后的交易序号计数器值与最新的世界状态序号计数器值,直到更新后的交易序号计数器值大于最新的世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号。
2.根据权利要求1所述的方法,其特征在于,所述根据所述序号生成请求获取世界状态序号包括:
根据客户端的序号生成请求生成序号生成触发信号;
根据所述序号生成触发信号获得所述世界状态序号,并根据所述世界状态序号的值确定所述世界状态序号计数器值。
3.根据权利要求1所述的方法,其特征在于,所述根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号包括:
获取节点编号及系统时间;
根据所述节点编号、所述系统时间及所述世界状态序号计数器值,按照预设的生成规则确定所述交易序号。
4.一种序号生成装置,其特征在于,所述序号生成装置包括:
序号查询子模块,用于通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;
序号生成子模块,用于根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;
序号更新子模块,用于比较所述交易序号计数器值与最新的世界状态序号计数器值,根据比较结果更新所述世界状态序号;
其中,所述序号更新子模块包括:
比较单元,用于比较所述交易序号计数器值与最新的世界状态序号计数器值,生成比较结果;
更新单元,用于当所述比较结果为所述交易序号计数器值大于最新的世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号;以及当所述比较结果为所述交易序号计数器值不大于最新的世界状态序号计数器值时,根据最新的世界状态序号计数器值更新所述交易序号计数器值,比较更新后的交易序号计数器值与最新的世界状态序号计数器值,直到更新后的交易序号计数器值大于最新的世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号。
5.根据权利要求4所述的序号生成装置,其特征在于,所述序号查询子模块包括:
触发信号单元,用于根据客户端的序号生成请求生成序号生成触发信号;
序号查询单元,用于根据所述序号生成触发信号获得所述世界状态序号,并根据所述世界状态序号的值确定所述世界状态序号计数器值。
6.根据权利要求4所述的序号生成装置,其特征在于,所述序号生成子模块包括:
获取单元,用于获取节点编号及系统时间;
序号生成单元,用于根据所述节点编号、所述系统时间及所述世界状态序号计数器值,按照预设的生成规则确定所述交易序号。
7.根据权利要求4所述的序号生成装置,其特征在于,所述序号生成装置还包括序号存储子模块,用于存储所述序号生成子模块中生成的所述交易序号。
8.一种区块链网络节点,其特征在于,所述区块链网络节点包括区块链底层数据库及如权利要求4-7任一项所述的序号生成装置,所述区块链底层数据库用于存储世界状态序号。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;
根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;
比较所述交易序号计数器值与最新的世界状态序号计数器值,根据比较结果更新所述世界状态序号;
其中,所述比较所述交易序号计数器值与最新的世界状态序号计数器值,根据比较结果更新所述世界状态序号包括:
比较所述交易序号计数器值与最新的世界状态序号计数器值,生成比较结果;
当所述比较结果为所述交易序号计数器值大于最新的世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号;以及
当所述比较结果为所述交易序号计数器值不大于最新的世界状态序号计数器值时,根据最新的世界状态序号计数器值更新所述交易序号计数器值,比较更新后的交易序号计数器值与最新的世界状态序号计数器值,直到更新后的交易序号计数器值大于最新的世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
通过区块链网络获取客户端的序号生成请求,根据所述序号生成请求获取世界状态序号,所述世界状态序号中至少包括世界状态序号计数器值;
根据预设的生成规则,利用所述世界状态序号计数器值生成交易序号,所述交易序号中至少包括交易序号计数器值;
比较所述交易序号计数器值与最新的世界状态序号计数器值,根据比较结果更新所述世界状态序号;
其中,所述比较所述交易序号计数器值与最新的世界状态序号计数器值,根据比较结果更新所述世界状态序号包括:
比较所述交易序号计数器值与最新的世界状态序号计数器值,生成比较结果;
当所述比较结果为所述交易序号计数器值大于最新的世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号;以及
当所述比较结果为所述交易序号计数器值不大于最新的世界状态序号计数器值时,根据最新的世界状态序号计数器值更新所述交易序号计数器值,比较更新后的交易序号计数器值与最新的世界状态序号计数器值,直到更新后的交易序号计数器值大于最新的世界状态序号计数器值时,根据所述交易序号更新所述世界状态序号。
CN201811600790.1A 2018-12-26 2018-12-26 区块链连续交易序号生成方法及装置、区块链网络节点 Active CN109741180B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811600790.1A CN109741180B (zh) 2018-12-26 2018-12-26 区块链连续交易序号生成方法及装置、区块链网络节点

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811600790.1A CN109741180B (zh) 2018-12-26 2018-12-26 区块链连续交易序号生成方法及装置、区块链网络节点

Publications (2)

Publication Number Publication Date
CN109741180A CN109741180A (zh) 2019-05-10
CN109741180B true CN109741180B (zh) 2021-04-27

Family

ID=66361296

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811600790.1A Active CN109741180B (zh) 2018-12-26 2018-12-26 区块链连续交易序号生成方法及装置、区块链网络节点

Country Status (1)

Country Link
CN (1) CN109741180B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111126978B (zh) * 2019-12-28 2023-03-14 飞天诚信科技股份有限公司 一种区块链上快速处理事务的实现方法及装置
CN112286945A (zh) * 2020-09-21 2021-01-29 杭州趣链科技有限公司 基于pbft算法的配置变更方法、系统、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104504567A (zh) * 2014-12-23 2015-04-08 城联数据有限公司 一种小额支付卡的充值方法及装置
CN104579675A (zh) * 2014-10-15 2015-04-29 深圳市金溢科技股份有限公司 安全模块、停车场用数据读写系统及安全设置方法
CN106506638A (zh) * 2016-11-04 2017-03-15 江苏通付盾科技有限公司 区块链中的区块存储方法及装置
CN108009822A (zh) * 2018-01-02 2018-05-08 中国工商银行股份有限公司 一种云支付方法、系统及支付装置、用户终端

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104579675A (zh) * 2014-10-15 2015-04-29 深圳市金溢科技股份有限公司 安全模块、停车场用数据读写系统及安全设置方法
CN104504567A (zh) * 2014-12-23 2015-04-08 城联数据有限公司 一种小额支付卡的充值方法及装置
CN106506638A (zh) * 2016-11-04 2017-03-15 江苏通付盾科技有限公司 区块链中的区块存储方法及装置
CN108009822A (zh) * 2018-01-02 2018-05-08 中国工商银行股份有限公司 一种云支付方法、系统及支付装置、用户终端

Also Published As

Publication number Publication date
CN109741180A (zh) 2019-05-10

Similar Documents

Publication Publication Date Title
US9507875B2 (en) Symbolic hyper-graph database
CN110049087B (zh) 一种联盟链的可信度验证方法、系统、装置及设备
CN111447069B (zh) 一种基于区块链的低频访问数据处理方法
CN110880147B (zh) 一种交易处理方法、相关设备及计算机存储介质
CN109741180B (zh) 区块链连续交易序号生成方法及装置、区块链网络节点
CN111131079A (zh) 一种策略查询方法及装置
CN111083179A (zh) 物联网云平台、基于物联网云平台的设备交互方法及装置
CN116521956A (zh) 一种图数据库查询方法、装置、电子设备及存储介质
CN109145053B (zh) 数据处理方法和装置、客户端、服务器
CN111338834B (zh) 数据存储方法和装置
CN108733668B (zh) 用于查询数据的方法和装置
CN113986942B (zh) 一种基于人机对话的消息队列管理方法及装置
JP2024505105A (ja) データベースクエリ結果を検証するための方法及びそのデバイス
CN113157934A (zh) 知识图谱起源处理方法和系统、电子设备和存储介质
CN113760519B (zh) 分布式事务处理方法、装置、系统和电子设备
CN110555158A (zh) 互斥数据处理方法及系统、计算机可读存储介质
WO2021207831A1 (en) Method and systems for indexing databases on a contextual basis
CN112907198A (zh) 业务状态流转维护方法、装置及电子设备
CN112291241A (zh) 防火墙开墙方法、防火墙开墙装置及终端设备
CN114722398A (zh) 智能合约异常检测方法、区块链网络、设备及存储介质
US20240265009A1 (en) Transaction processing method and apparatus
CN114268540B (zh) 规则引擎的优化方法、装置及设备
CN112667402B (zh) 一种分布式计算SimRank单源节点相似度的方法和装置
CN110889040B (zh) 用于推送信息的方法和装置
EP4064065A1 (en) Data retention in a decentralized distributed database

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant