CN110503558B - 一种基于区块链系统的处理方法及装置 - Google Patents
一种基于区块链系统的处理方法及装置 Download PDFInfo
- Publication number
- CN110503558B CN110503558B CN201910806587.8A CN201910806587A CN110503558B CN 110503558 B CN110503558 B CN 110503558B CN 201910806587 A CN201910806587 A CN 201910806587A CN 110503558 B CN110503558 B CN 110503558B
- Authority
- CN
- China
- Prior art keywords
- block
- hash value
- transaction
- bloom filter
- node
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明实施例公开了一种基于区块链系统的处理方法及装置,其中方法包括:节点执行待共识的区块中的交易时,生成交易对应的多条状态数据,使用多条状态数据构建区块对应的布隆过滤器,并使用区块对应的布隆过滤器的哈希值更新区块的区块头;如此,节点在确定区块共识成功后,将区块的区块头上链,并使用区块对应的布隆过滤器和多条状态数据更新节点的预设数据库。本发明实施例中,相对于Merkle树的数据结构来说,布隆过滤器可以使用一片公共的bit数组来存储多条状态数据,因此,通过使用布隆过滤器存储交易对应的状态数据,可以较好地节省存储空间,提高查询的响应速度,从而降低区块链系统的计算开销和成本。
Description
技术领域
本发明涉及金融科技(Fintech)领域,尤其涉及一种基于区块链系统的处理方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,区块链技术也不例外,但由于金融行业的安全性、实时性要求,金融科技也对区块链技术提出了更高的要求。在区块链系统中,节点在处理区块中的交易时通常会生成交易对应的状态数据,比如针对于从账户A向账户B转账的一条转账交易,账户A的账户余额与账户B的账户余额均可以作为该转账交易中生成的状态数据;因此,在对区块链系统中的区块进行共识和/或验证时,不仅需要共识和/或验证交易数据,还需要共识和/或验证状态数据。
默克尔Merkle树是现有的较为常用的一种保存状态数据的方法,相应地,现有的区块链系统可以基于Merkle树执行区块共识和/或验证过程。举例来说,若执行某一区块中的交易生成了八条状态数据,则可以先对这八条状态数据进行两两拼接后对每个拼接的状态数据进行哈希,得到四个哈希值,然后对这四个哈希值进行两两拼接后对每个拼接的哈希值进行哈希,得到两个哈希值,最后对这两个哈希值拼接得到的哈希值进行哈希,得到Merkle树的根值,如此,这八条状态数据可以对应存储在该Merkle树中。相应地,在使用Merkle树共识或验证区块(或区块中的状态数据)时,可以根据Merkle树的根值执行逆向哈希过程,从而完成区块共识或验证过程。显然地,Merkle树的数据结构非常复杂,且在生成时需要大量的存储和计算开销,导致区块链系统的运行缓慢,成本较高。
综上,目前亟需一种基于区块链系统的处理方法,用以解决现有技术采用Merkle树存储状态数据所导致的区块链系统的计算开销大、成本高的技术问题。
发明内容
本发明实施例提供一种基于区块链系统的处理方法及装置,用以解决现有技术采用Merkle树存储状态数据所导致的区块链系统的计算开销大、成本高的技术问题。
第一方面,本发明实施例提供了一种基于区块链系统的处理方法,包括:
区块链系统中的节点执行待共识的区块中的交易,生成所述交易对应的多条状态数据,并使用所述交易对应的多条状态数据构建所述区块对应的布隆过滤器,使用所述区块对应的布隆过滤器的哈希值更新所述区块的区块头;所述交易对应的每条状态数据用于标识所述交易的参与方在所述交易的每个执行阶段的状态信息;进一步地,所述节点参与所述区块的共识过程,并在确定所述区块共识成功后,将所述区块的区块头上链,并使用所述区块对应的布隆过滤器和所述交易对应的多条状态数据更新所述节点的预设数据库。
在上述设计中,相对于Merkle树的数据结构来说,布隆过滤器可以使用一片公共的bit数组来存储多条状态数据,因此,通过使用布隆过滤器存储交易对应的状态数据,从而可以较好地节省存储空间,提高查询的响应速度,从而降低区块链系统的计算开销和成本;且,通过使用布隆过滤器执行区块的共识过程,可以保证共识结果的准确性。
在一种可能的设计中,所述节点使用所述区块对应的布隆过滤器的哈希值更新所述区块的区块头,包括:所述节点根据所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值和所述区块对应的布隆过滤器的哈希值得到所述区块的哈希值,并将所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值、所述区块对应的布隆过滤器的哈希值和所述区块的哈希值添加到所述区块的区块头中。
在上述设计中,通过使用交易的哈希值、交易的执行结果的哈希值、交易的回执的哈希值和区块对应的布隆过滤器的哈希值共同更新区块的哈希值,可以保证区块的哈希值的准确性,从而使得后续区块的共识过程和验证过程更为准确。
在一种可能的设计中,所述节点使用所述区块对应的布隆过滤器和所述交易对应的多条状态数据更新所述节点的预设数据库之后,还接收客户端发送的验证请求,所述验证请求包括所述区块的标识和状态数据的标识;所述节点根据所述区块的标识和所述状态数据的标识,从链上获取所述区块对应的区块头,并从所述预设数据库获取所述区块对应的布隆过滤器以及所述状态数据;进一步地,所述节点根据所述区块的区块头、所述区块对应的布隆过滤器和所述状态数据生成验证数据,并将所述验证数据发送给所述客户端。
在一种可能的场景中,由于轻客户端的存储空间有限、处理效率不高,因此可以仅保存区块头,如此,若轻客户端想要验证某条状态数据(比如某条转账交易是否成功,验证对应账户的余额是否准确)是否存储在某个区块中,则可以向区块链系统中的节点发送验证请求;相应地,区块链系统中的节点接收到轻客户端的验证请求后,可以将待验证的状态数据所在的区块的区块头、区块对应的布隆过滤器和待验证的状态数据同时发送给轻客户端,以使轻客户端根据这些信息准确执行验证过程;相比于现有技术将整个Merkler树发送给轻客户端的方式来说,上述设计避免占用轻客户端较多的存储空间,并可以降低轻客户端所需验证的数据量,提高验证效率。
第二方面,本发明实施例提供了一种基于区块链系统的处理方法,所述方法包括:
客户端接收所述区块链系统中的节点发送的验证数据,所述验证数据包括区块的区块头、所述区块对应的布隆过滤器和状态数据;所述状态数据为执行所述区块中的交易所生成的多条状态数据中的任一状态数据,每条状态数据用于标识所述交易的参与方在所述交易的每个执行阶段的状态信息;所述区块对应的布隆过滤器是使用所述区块中的交易对应的多条状态数据构建的;进一步地,所述客户端根据所述区块对应的布隆过滤器确定所述区块对应的布隆过滤器的第一哈希值,在确定所述第一哈希值与所述区块的区块头中所述区块对应的布隆过滤器的第二哈希值匹配后,若所述区块对应的布隆过滤器中存在所述状态数据,则确定所述状态数据验证成功。
在上述设计中,通过使用布隆过滤器存储状态数据,一方面,可以降低状态数据在节点和/或客户端中的数据存储空间,保证节点和/或客户端的正常数据处理过程,另一方面,布隆过滤器的查询响应速度相比于Merkler树来说要快速的多,因此,可以提高客户端的验证效率。
在一种可能的设计中,所述客户端接收所述区块链系统中的节点发送的验证数据之前,还向所述节点发送验证请求,所述验证请求包括所述区块的标识和所述状态数据的标识。
在上述设计中,通过客户端发送验证请求,可以保证在客户端有需要时再执行验证过程,而无需在每次执行一笔交易后即执行验证过程,从而可以降低客户端的数据处理量,满足用户的实际使用要求。
在一种可能的设计中,所述客户端若确定所述第一哈希值与所述第二哈希值不匹配,或者,若确定所述第一哈希值与所述第二哈希值匹配,且所述区块对应的布隆过滤器中不存在所述状态数据,则确定所述状态数据验证失败。
在上述设计中,通过使用节点发送的布隆过滤器对区块头中布隆过滤器的哈希值进行第一次验证,在使用布隆过滤器对状态数据进行第二次验证,可以避免节点将不对应的区块头和布隆过滤器发送给客户端,在保证节点的合法性的基础上验证状态数据,从而可以提高验证的准确性。
第三方面,本发明实施例提供了一种基于区块链系统的共识装置,所述装置包括:
处理模块,用于执行待共识的区块中的交易,生成所述交易对应的多条状态数据;所述交易对应的每条状态数据用于标识所述交易的参与方在所述交易的每个执行阶段的状态信息;
更新模块,用于使用所述交易对应的多条状态数据构建所述区块对应的布隆过滤器,并使用所述区块对应的布隆过滤器的哈希值更新所述区块的区块头;
共识模块,用于参与所述区块的共识过程,并在确定所述区块共识成功后,将所述区块的区块头上链;
所述更新模块,还用于使用所述区块对应的布隆过滤器和所述交易对应的多条状态数据更新所述节点的预设数据库。
在一种可能的设计中,所述更新模块具体用于:根据所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值和所述区块对应的布隆过滤器的哈希值得到所述区块的哈希值,并将所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值、所述区块对应的布隆过滤器的哈希值和所述区块的哈希值添加到所述区块的区块头中。
在一种可能的设计中,所述装置还包括收发模块,所述更新模块使用所述区块对应的布隆过滤器更新所述节点的预设数据库之后,所述收发模块接收客户端发送的验证请求,所述验证请求包括所述区块的标识和状态数据的标识;所述节点根据所述区块的标识和所述状态数据的标识,从链上获取所述区块对应的区块头,并从所述预设数据库获取所述区块对应的布隆过滤器以及所述状态数据;进一步地,所述收发模块根据所述区块的区块头、所述区块对应的布隆过滤器和所述状态数据生成验证数据,并将所述验证数据发送给所述客户端。
第四方面,本发明实施例提供了一种基于区块链系统的验证装置,所述装置包括:
收发模块,用于接收所述区块链系统中的节点发送的验证数据,所述验证数据包括区块的区块头、所述区块对应的布隆过滤器和状态数据;所述状态数据为执行所述区块中的交易所生成的多条状态数据中的任一状态数据,每条状态数据用于标识所述交易的参与方在所述交易的每个执行阶段的状态信息;所述区块对应的布隆过滤器是使用所述区块中的交易对应的多条状态数据构建的;
验证模块,用于根据所述区块对应的布隆过滤器确定所述区块对应的布隆过滤器的第一哈希值,在确定所述第一哈希值与所述区块的区块头中所述区块对应的布隆过滤器的第二哈希值匹配后,若所述区块对应的布隆过滤器中存在所述状态数据,则确定所述状态数据验证成功。
在一种可能的设计中,所述收发模块接收所述区块链系统中的节点发送的验证数据之前,还向所述节点发送验证请求,所述验证请求包括所述区块的标识和所述状态数据的标识。
在一种可能的设计中,所述验证模块若确定所述第一哈希值与所述第二哈希值不匹配,或者,若确定所述第一哈希值与所述第二哈希值匹配,且所述区块对应的布隆过滤器中不存在所述状态数据,则确定所述状态数据验证失败。
第五方面,本发明实施例提供了一种计算设备,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行上述第一方面~第四方面任意所述的基于区块链系统的处理方法。
第六方面,本发明实施例提供了一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行上述第一方面~第四方面任意所述的基于区块链系统的处理方法。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种区块链系统的系统架构示意图;
图2为本发明实施例提供的一种基于区块链系统的共识方法的流程示意图;
图3为本发明实施例提供的一种将状态数据写入布隆过滤器的流程示意图;
图4为本发明实施例提供的一种基于区块链系统的验证方法的流程示意图;
图5为本发明实施例提供的一种基于区块链系统的处理方法的交互示意图;
图6为本发明实施例提供的一种基于区块链系统的处理装置的结构示意图;
图7为本发明实施例提供的一种基于区块链系统的处理装置的结构示意图;
图8为本发明实施例提供的一种终端设备的结构示意图;
图9为本发明实施例提供的一种后端设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
金融科技(Fintech)技术领域通常涉及到多种交易,比如,银行的交易可以包括售卡交易、存款交易、贷款交易、保险交易、理财交易等,银行每天的交易量可以达到数千笔甚至数万笔。随着区块链技术的逐步发展,金融科技领域也可以使用区块链技术来处理交易,举例来说,若多家银行之间涉及到相关交易,则可以通过设置联盟链来同步处理相关交易,或者还可以将法院、客户等同时上链,共同维护联盟链的安全和稳定。
区块链系统可以是由多个节点组成的点对点(Peer To Peer,P2P)网络。P2P是一种运行在传输控制协议(Transmission Control Protocol,TCP)协议之上的应用层协议,在区块链系统中的节点可以彼此对等,系统中不存在中心节点,因此每个节点都可以随机地连接其它节点。在区块链系统中,每个节点内部都可以设置有预设数据库,各个节点通过预设数据库共同维护区块链系统中的公共账本,节点内部的预设数据库可以存储区块链系统中的区块数据;其中,区块数据包括区块头和区块体,区块头包括上一区块的哈希值、本区块的哈希值、本区块的块高、时间戳等信息,区块体包括交易数据,比如区块链系统中的节点对该区块进行共识的过程中处理待处理交易所生成的交易数据。
图1为本发明实施例提供的一种区块链系统的架构示意图,如图1所示,区块链系统中可以包括一个或多个节点,比如节点101、节点102、节点103与节点104,节点101~节点104中的任意两个节点可以通信连接,从而共同维护区块链系统。其中,任意两个节点可以通过有线方式连接,或者也可以通过无线方式连接,具体不作限定。
本发明实施例中,区块链系统中的节点可以具有多种功能,比如,路由功能、交易功能、区块链功能和共识功能等。具体地说,区块链系统中的节点可以把其他节点传送过来的交易数据等信息传送给更多的节点以实现节点之间的通信;或者,区块链系统中的节点可以用于支持用户进行交易;或者,区块链系统中的节点可以用于记录历史上的所有交易;或者,区块链系统中的节点可以通过验证和记录交易生成区块链中的新区块。实际应用中,路由功能是区块链系统中的每个节点必须具有的功能,而其它功能可由本领域技术人员根据实际需要进行设置。
需要说明的是,区块链系统中的一个节点可以在一台物理机(服务器)上,且一个节点具体可以是指服务器中运行的一个进程或者一系列进程。比如,区块链网络中的节点101可以为一个服务器上运行的一个进程,或者也可以为是指服务器,具体不作限定。
如图1所示,该系统架构中还可以包括客户端设备200,客户端设备200可以通过接入区块链网络与区块链系统中的任一节点连接。具体实施中,客户端设备200可以将交易发送给区块链系统中的任一节点,区块链系统中的某一节点在接收到交易后,可以将交易同步给区块链系统中的其它节点。该节点在同步交易后,还可以将交易存储在节点内部的交易池中;相应地,其它节点在接收到该节点同步的交易后,也可以将交易存储在其它节点内部的交易池中。如此,若某一节点确定处理多条交易,则可以从内部的交易池中获取多条交易,进而进行后续的交易处理及区块共识。
其中,交易可以以栈的形式存储在交易池中;如此,若某一节点确定处理多条交易,则可以从内部的交易池中获取最早入栈的多条交易进行后续的处理及共识过程。
基于图1所示意的区块链系统,图2为本发明实施例提供的一种基于区块链系统的共识方法对应的流程示意图,该方法包括:
步骤201,区块链系统中的节点执行待共识的区块中的交易,生成交易对应的多条状态数据。
具体实施中,区块链系统在执行每轮区块共识之前,可以先从区块链系统的多个节点中选择一个节点作为本轮区块共识的主节点,将其它节点作为本轮区块共识的从节点;且,区块链系统为相邻的两轮区块共识所选取的主节点可以不同。在每轮区块共识中,主节点用于打包待共识的区块并发送给从节点,具体地说,主节点可以从主节点的交易池中获取本轮区块共识中待处理的交易,从链上获取历史最大区块的块高以及历史最大区块的哈希值等信息;进一步地,主节点可以根据历史最大区块的块高设置待共识的区块的块高,并使用待共识的区块的块高、历史最大区块的哈希值和当前时间戳组装待共识的区块的区块头,使用本轮区块共识中待处理的交易组装待共识的区块的区块体,从而根据待共识的区块的区块头和待共识的区块的区块体生成待共识的区块。
进一步地,主节点可以将待共识的区块同步给区块链系统中的每个从节点,进而主节点可以执行待共识的区块中的交易,相应地,每个从节点在接收到主节点发送的待共识的区块后,也可以执行待共识的区块中的交易。本发明实施例中,针对于区块链系统中的任一节点,该节点在执行待共识的区块中的交易时,可以生成交易对应的多条状态数据,在执行完区块中的交易时,可以得到交易回执和交易结果;其中,交易对应的每条状态数据用于标识交易的参与方在所述交易的每个执行阶段的状态信息。
需要说明的是,本发明实施例不限定状态数据的初始存储形式,比如状态数据可以以数据表的形式存储在节点中,或者也可以以码(比如条形码或二维码)的形式存在节点中,或者还可以以图的形式存储在节点中,具体不作限定;其中,初始存储形式是指开始执行交易之后且执行完交易之前状态数据在节点中的存储形式,或者也可以是指节点在向其它节点发送区块共识信息之前状态数据在节点中的存储形式。
在一个示例中,每条状态数据可以由表单、键名Key和对应的值Value构成,以数据表的存储形式为例,状态数据的构成形式可以如表1所示。
表1:一种状态数据的构成形式
表单 | Key | Value |
如表1所示,表单用于指示交易对应的多条状态数据的类型,Key用于指示状态数据的标识,Value用于指示状态数据在多条状态数据的类型下所对应的值。
为了便于理解,下面以一个具体的示例进行说明:若账户A的某一条贷款交易需要先从账户A中收取500激励值的保证金至账户B,再从账户C中获取100000激励值的贷款额度转账给账户A,在执行该条贷款交易之前,账户A的账户余额为1000激励值,账户B的账户余额为10000激励值,账户C的账户余额为1000000激励值,则在表单为账户余额时,该条贷款交易对应的多条状态数据可以如表2所示:
表2:一种贷款交易对应的多条状态数据
如表2所示,在该条贷款交易中,表单可以是指账户余额表,键值Key可以是指用户账户名,对应的值Value可以是指余额。在上述示例中,该条贷款交易分别执行了收取保证金和发放贷款两个子交易,其中,收取保证金的子交易是从账户A向账户B转账500激励值,如此,在执行过程中,可以先从账户A的账户中取出500激励值,使得账户A的账户余额从1000激励值变为500激励值后,再将取出的500激励值添加到账户B中,使得账户B的账户余额从10000激励值变为10500激励值;相应地,当收取保证金的子交易成功后,启动发放贷款的子交易,发放贷款的子交易是从账户C向账户A转账100000激励值,如此,在执行过程中,可以先从账户C的账户中取出100000激励值,使得账户C的账户余额从1000000激励值变为900000激励值后,再将取出的100000激励值添加到账户A中,使得账户A的账户余额从500激励值变为100500激励值。
根据表2可知,在执行该条贷款交易的过程中,区块链系统中的节点可以依次生成四条状态数据,每条状态数据均可以包括表单、键名Key和对应的值Value。
需要说明的是,上述仅是一种示例性的简单说明,其所列举的状态数据仅是为了便于说明方案,并不构成对方案的限定;在具体实施中,状态数据也可以具有其他构成形式,不同交易类型对应的状态数据的构成形式也可以不同,具体可以由本领域技术人员根据经验进行设置,不作限定。
步骤202,节点使用交易对应的多条状态数据构建区块对应的布隆过滤器,并使用区块对应的布隆过滤器的哈希值更新区块的区块头。
具体实施中,节点构建区块对应的布隆过滤器的方式可以有多种,在一种可能的实现方式中,节点可以在开始执行区块中的交易时构建区块对应的初始布隆过滤器,区块对应的初始布隆过滤器可以为一个空的bit数组,将该bit数组的每一个bit位的值置为0;进一步地,在执行区块中的交易时,节点每生成一条状态数据即可将该条状态数据写入区块对应的初始布隆过滤器,如此,当区块中的交易执行完成后,区块对应的布隆过滤器也就构建完成了。在另一种可能的实现方式中,节点在执行区块中的交易时,可以先按照上述初始存储形式来存储交易对应的多条状态数据,当区块中的交易执行完成后,节点再构建区块对应的初始布隆过滤器,然后将交易对应的多条状态数据按照生成的顺序依次写入区块对应的初始布隆过滤器,从而得到区块对应的布隆过滤器。
图3为本发明实施例提供的一种构建区块对应的布隆过滤器的流程示意图,如图3所示,在该示例中,区块对应的初始布隆过滤器可以为具有8个bit位的bit数组,每个bit位的值置为0,如此,区块对应的初始布隆过滤器的全量数据可以为00000000。进一步地,针对于任一状态数据,节点可以先使用预设哈希算法计算该条状态数据的哈希值,然后分别使用hash1函数、hash2函数和hash3函数对该状态数据的哈希值求哈希得到3个不同的哈希值,进而可以将3个不同的哈希值对应的bit位分别置1,通过更新区块对应的初始布隆过滤器的全量数据将该状态数据写入区块对应的初始布隆过滤器,得到区块对应的布隆过滤器。其中,预设哈希算法、hash1函数、hash2函数和hash3函数可以由本领域技术人员根据经验进行设置,预设哈希算法、hash1函数、hash2函数和hash3函数可以相同,或者也可以不同,具体不作限定。
设定预设哈希算法为SHA-256哈希函数,具体实施中,可以先按照下列公式确定每条状态数据的哈希值:
Ti=SHA-256(表名i+Keyi+Valuei)
其中,Ti为第i条状态数据的哈希值,表名i为第i条状态数据的表名,Keyi为第i条状态数据的键名,Valuei为第i条状态数据对应的值。
进一步地,针对于任一状态数据,可以按照下列公式确定该条状态数据在初始布隆过滤器中对应的bit位:
biti1=hash1(Ti);
biti2=hash2(Ti);
biti3=hash3(Ti);
其中,biti1为使用hash1函数对第i条状态数据的哈希值Ti求哈希得到的值,biti2为使用hash2函数对第i条状态数据的哈希值Ti求哈希得到的值,biti3为使用hash3函数对第i条状态数据的哈希值Ti求哈希得到的值。
最后,在确定出该条状态数据在初始布隆过滤器中对应的bit位后,可以将初始布隆过滤器中对应的bit位的值置1,从而更新初始布隆过滤器的全量数据,将该条状态数据写入布隆过滤器。
参照表2和图3,下面以一个具体的示例描述区块对应的布隆过滤器的构建过程:
针对于表2中第二行~第五行所示意的四条状态数据,通过上述共识确定其哈希值分别为:
第二行状态数据的哈希值:T1=SHA-256(账户余额+账户A+500);
第三行状态数据的哈希值:T2=SHA-256(账户余额+账户B+10500);
第四行状态数据的哈希值:T3=SHA-256(账户余额+账户C+900000);
第五行状态数据的哈希值:T4=SHA-256(账户余额+账户A+100500);
针对于表2中第二行所示意的状态数据的哈希值T1,若使用hash1函数、hash2函数和hash3函数对状态数据的哈希值T1求哈希得到2、4、5,则可以将初始布隆过滤器中的第2bit位、第4bit位和第5bit位的值置1,如此,初始布隆过滤器的全量数据由00000000更新为01011000;接着,针对于表2中第三行所示意的状态数据的哈希值T2,若使用hash1函数、hash2函数和hash3函数对状态数据的哈希值T2求哈希得到3、5、6,则可以将初始布隆过滤器中的第3bit位、第5bit位和第6bit位的值置1,如此,初始布隆过滤器的全量数据由01011000更新为01111100;进一步地,针对于表2中第四行所示意的状态数据的哈希值T3,若使用hash1函数、hash2函数和hash3函数对状态数据T3求哈希得到1、3、4,则可以将初始布隆过滤器中的第1bit位、第3bit位和第4bit位的值置1,如此,初始布隆过滤器的全量数据由01111100更新为11111000;最后,针对于表2中第五行所示意的状态数据的哈希值T4,若使用hash1函数、hash2函数和hash3函数对状态数据T4求哈希得到2、6、8,则可以将初始布隆过滤器中的第2bit位、第6bit位和第8bit位的值置1,如此,初始布隆过滤器的全量数据由11111000更新为11111101。至此,区块对应的布隆过滤器构建完成,区块对应的布隆过滤器的全量数据为11111101。
需要说明的是,图3仅是一种示例性的简单说明,其所列举的布隆过滤器的长度仅是为了便于说明方案,并不构成对方案的限定;在具体实施中,布隆过滤器的长度可以大于8位,比如可以为16位或16位以上。
进一步地,当区块对应的布隆过滤器构建完成后,节点可以使用预设哈希函数对区块对应的布隆过滤器的全量数据求哈希,得到区块对应的布隆过滤器的哈希值;其中,区块对应的布隆过滤器的哈希值可以用于更新区块的区块头。举例来说,若预设哈希函数为SHA-256函数,区块对应的布隆过滤器的全量数据为11111101,则区块对应的布隆过滤器的哈希值可以为:SHA-256(11111101)。
本发明实施例中,节点使用区块对应的布隆过滤器的哈希值更新区块的区块头的方式可以有多种,在一个示例中,若区块对应的布隆过滤器构建完成,说明节点在当前时刻已执行完区块中的交易,并得到了交易回执和交易结果;如此,节点可以分别计算得到交易的哈希值、交易回执的哈希值和交易结果的哈希值,并可以根据交易的哈希值、交易结果的哈希值、交易的回执的哈希值以及区块对应的布隆过滤器的哈希值得到区块的哈希值,进而可以将交易的哈希值、交易的执行结果的哈希值、交易的回执的哈希值、区块对应的布隆过滤器的哈希值和区块的哈希值组装到区块的区块头中,并可以将区块的哈希值以及区块执行的交易数据(包括交易、交易回执、交易结果、区块对应的布隆过滤器、状态数据等)组装到区块的区块体中。
显然地,当区块中的交易执行完成后,区块的区块头中可以包含本区块的生成时间戳、本区块的块高、上一区块的哈希值、本区块的哈希值、本区块执行的交易的哈希值、本区块执行的交易的执行结果的哈希值、本区块执行的交易回执的哈希值、本区块对应的布隆过滤器的哈希值;区块的区块体中可以包括本区块的哈希值、交易、交易回执、交易结果、交易对应的状态数据以及本区块对应的布隆过滤器。
本发明实施例中,通过使用交易的哈希值、交易的执行结果的哈希值、交易的回执的哈希值和区块对应的布隆过滤器的哈希值共同更新区块的哈希值,可以保证区块的哈希值的准确性,从而使得后续区块的共识过程和验证过程更为准确。
步骤203,节点参与区块的共识过程,并在确定区块共识成功后,将区块的区块头上链,并使用区块对应的布隆过滤器和交易对应的多条状态数据更新节点的预设数据库。
本发明实施例中,区块链系统中的节点可以依次通过签名验证阶段和状态验证阶段来对区块进行共识,下面分别对这两个阶段进行介绍。
签名验证阶段
针对于区块链系统中的任一节点,该节点在执行完区块中的交易并更新区块的区块头和区块体后,可以使用该节点的私钥、区块的哈希值、区块的块高以及该节点的标识等信息生成该节点对区块的签名包,并可以将该节点对区块的签名包发送给区块链系统中的其它节点,该节点也可以等待区块链系统中的其它节点发送的其它节点对区块的签名包。由于区块链系统中的节点组成P2P网络,因此,每个节点的内存中可以存储有区块链系统中所有节点的公钥;如此,在确定任一其它节点发送的签名包到达该节点后,该节点可以先从该节点内部获取所述其它节点的公钥,并使用所述其它节点的公钥对所述其它节点的签名包进行解密,得到所述其它节点处理区块中的交易得到的区块。
进一步地,该节点可以从解析所述其它节点发送的签名包得到所述其它节点对区块的哈希值,进而可以对比该节点对区块的哈希值与所述其它节点对区块的哈希值;若该节点对区块的哈希值与所述其它节点对区块的哈希值匹配,则该节点可以接收所述其它节点发送的签名包,若该节点对区块的哈希值与所述其它节点对区块的哈希值不匹配,则该节点可以拒绝所述其它节点发送的签名包。
本发明实施例中,若该节点在超时时间内接收到的签名包的数量小于预设数量,则该节点可以认为区块共识失败,因此该节点可以通过发起视图切换启动下一轮区块共识。相应地,若该节点在超时时间内接收到的签名包的数量大于或等于预设数量,则说明该节点处理区块中的交易得到的区块与区块链系统中其它大部分节点处理区块中的交易得到的区块相同,即该节点生成的区块处于待提交状态;如此,该节点可以使用该节点的私钥、区块的哈希值、区块的块高、该节点的标识等信息生成该节点对区块的状态包,并可以将该节点对区块的状态包发送给区块链系统中的其它节点,该节点对区块的状态包用于指示该节点中的区块处于待提交状态,该节点也可以等待区块中的其它节点发送的状态包。
状态验证阶段
针对于区块链系统中的任一节点,该节点在确定任一其它节点发送的状态包到达该节点后,可以解析所述其它节点的状态包得到所述其它节点对区块的哈希值;如此,该节点可以将自己处理交易确定的区块的哈希值与所述其它节点处理交易确定的区块的哈希值进行对比,若相同,则可以接收所述其它节点发送的状态包,若不同,则可以拒绝所述其它节点发送的状态包。相应地,若该节点在超时时间内接收到的状态包的数量小于预设数量,则该节点认为区块共识失败,该节点可以通过发起视图切换启动下一轮区块共识;若该节点在超时时间内接收到的状态包的数量大于或等于预设数量,则说明该节点的区块与区块链系统中其它大部分节点的区块的状态相同,如此,该节点可以确定区块共识成功。
进一步地,在确定区块共识成功后,节点可以将区块的区块头上链,并可以使用区块对应的布隆过滤器和交易对应的多条状态数据更新节点的预设数据库。具体地说,节点可以从内存中获取区块的区块头与区块体,区块的区块头中可以包含本区块的生成时间戳、本区块的块高、上一区块的哈希值、本区块的哈希值、本区块执行的交易的哈希值、本区块执行的交易的执行结果的哈希值、本区块执行的交易回执的哈希值、本区块对应的布隆过滤器的哈希值,区块的区块体中可以包括区块的哈希值、交易、交易回执、交易结果、交易对应的状态数据以及区块对应的布隆过滤器;进一步地,节点可以将区块的区块头存储至内存设置的区块链中,并可以将区块体中的数据存储在预设数据库中。至此,本轮区块共识结束。
本发明实施例中,区块链系统中的节点在本轮区块共识结束后,还可以将执行本轮区块共识得到的区块的相关信息同步给客户端,同步区块的过程主要包括如下两种情形:
情形一:客户端为轻节点,即客户端的存储空间较少,处理能力差,无法存储区块的全量数据;在该种情形下,区块链系统中的节点可以仅同步区块的区块头给客户端,以减少区块的相关信息在客户端中占用的空间。
情形二:客户端为全节点,即客户端的存储空间较多,处理能力好,可以存储区块的全量数据;在该种情形下,区块链系统中的节点可以同步区块的全量数据(包括区块头和区块体)给客户端,以便于客户端对区块进行管理。
在上述情形二中,由于客户端中存储有区块的全量数据,因此,若需要对状态数据进行验证,客户端可以直接在内部存储的全量数据中获取与状态数据相关的信息进行验证;而在上述情形一中,由于客户端中仅存储有区块的区块头,因此,若需要对状态数据进行验证,客户端需要先从区块链系统的节点中获取与状态数据相关的信息,然后再执行验证过程。
基于上述情形一,图4为本发明实施例提供的一种基于区块链系统的验证方法对应的流程示意图,该方法包括:
步骤401,客户端接收区块链系统中的节点发送的验证数据。
此处,验证数据可以包括待验证的状态数据、待验证的状态数据所在的区块的区块头以及待验证的状态数据所在的区块对应的布隆过滤器;其中,待验证的状态数据可以为节点在执行区块中的交易时生成的多条状态数据中的任意一条状态数据,或者也可以为任意多条状态数据,具体不作限定。
举例来说,若待验证的状态数据为表2第二行所示的状态数据,该状态数据存储在区块2中,则验证数据可以包括表2第二行所示的状态数据、区块2的区块头和区块2对应的布隆过滤器的全量数据(即11111101)。
在一种可能的实现方式中,区块链系统中的节点在每执行完一轮区块共识后,可以主动将验证数据发送给客户端;如此,客户端在存储区块的区块头之前,可以先对区块中的状态数据进行验证,若确定状态数据存储在区块中,则确定状态数据验证通过,因此可以将区块的区块头存储在内存中,若确定状态数据未存储在区块中,则确定状态数据验证不通过,因此可以拒绝存储区块头,并可以报错。在该种实现方式中,通过节点主动发送验证数据给客户端,可以避免客户端存储不精确的区块头,保证区块链的准确性。
需要说明的是,上述仅是一种示例性的简单说明,并不构成对方案的限定;在具体实施中,节点可以在任意时刻向客户端发送验证数据,比如可以周期性地发送验证数据,以使客户端定时监测区块链系统中的状态数据,保证区块链的准确性。
在另一种可能的实现方式中,客户端可以在需要执行验证时向节点发送验证请求,验证请求包括区块的标识和状态数据的标识;相应地,节点接收到客户端发送的验证请求后,可以根据区块的标识从链上获取区块对应的区块头以及从预设数据库获取区块对应的布隆过滤器,并可以根据状态数据的标识从预设数据库中获取状态数据。进一步地,节点可以根据区块的区块头、区块对应的布隆过滤器以及状态数据生成验证数据,并将验证数据发送给客户端。
在该实现方式中,若状态数据的组成形式如表2所示,则状态数据的标识可以包括表单和键名。举例来说,若验证请求中区块的标识为区块2,状态数据的标识为“账户余额+账户B”,则表2中第三行所示的状态数据为待验证的状态数据,区块2对应的布隆过滤器可以为11111101,因此,节点可以根据区块2的区块头、表2中第三行所示的状态数据以及区块2对应的布隆过滤器11111101生成验证数据;其中,区块2的区块头中可以包括区块2对应的布隆过滤器的第二哈希值。
步骤402,客户端根据验证数据对待验证的状态数据进行验证。
具体实施中,客户端获取验证数据后,可以解析验证数据得到区块的区块头、区块对应的布隆过滤器以及状态数据;进一步地,客户端可以依次对验证数据进行如下两轮验证过程:
第一轮验证过程
在第一轮验证过程中,客户端可以先使用预设哈希算法对区块对应的布隆过滤器求哈希,得到第一哈希值,比如,若预设哈希算法为SHA-256函数,区块对应的布隆过滤器为11111101,则第一哈希值可以为SHA-256(11111101)。然后,客户端可以从区块的区块头中获取区块对应的布隆过滤器的第二哈希值,并对比第一哈希值与第二哈希值;其中,第二哈希值为节点在区块共识中使用预设哈希算法对区块对应的布隆过滤器求哈希得到的。
进一步地,若第一哈希值与第二哈希值不同,说明状态数据并未存储在该区块的区块体中,即区块链系统中的节点造假或者交易执行过程出错,因此,客户端认为在第一轮验证过程中状态数据未验证通过,从而可以向区块链系统的管理员报错;若第一哈希值与第二哈希值相同,则说明状态数据存储在该区块的区块体中,因此,客户端认为在第一轮验证过程中状态数据验证通过,从而可以启动第二轮验证过程。
第二轮验证过程
在第二轮验证过程中,客户端可以查询区块对应的布隆过滤器,若确定所述状态数据已写入区块对应的布隆过滤器中,则确定所述状态数据验证成功,若确定所述状态数据未写入区块对应的布隆过滤器中,则确定所述状态数据验证不成功,从而可以向区块链系统的管理员报错。其中,节点发送的状态数据可以包括表名、键名Key和对应的值Value,因此,客户端可以按照如下步骤a~步骤c确定所述状态数据是否已写入区块对应的布隆过滤器中:
步骤a,对状态数据的表名、键名Key和对应的值Value进行拼接,并使用预设哈希算法求拼接后的数据的哈希值,得到状态数据的哈希值;
步骤b,分别使用hash1函数、hash2函数和hash3函数对状态数据的哈希值进行哈希,确定状态数据在区块对应的布隆过滤器中的三个bit位;
步骤c,查询区块对应的布隆过滤器,确定步骤b中状态数据对应的三个bit位的值是否为1,若存在一个bit位的值不为1,则确定状态数据未写入区块对应的布隆过滤器中,状态数据验证失败;若三个bit位的值均为1,则确定状态数据已写入区块对应的布隆过滤器中,状态数据验证成功。
本发明实施例中,通过使用布隆过滤器存储状态数据,一方面,可以降低状态数据在节点和/或客户端中的数据存储空间,保证节点和/或客户端的正常数据处理过程,另一方面,布隆过滤器的查询响应速度相比于Merkler树来说要快速的多,因此,可以提高客户端的验证效率。
图5为本发明实施例提供的一种基于区块链系统的处理方法的整体流程图,下面结合图5对本发明实施例进行具体介绍。其中,图5中的节点可以为区块链系统中的任一节点。
步骤501,节点获取待共识的区块后,执行待共识的区块中的交易生成交易对应的多条状态数据,并根据多条状态数据构建区块对应的布隆过滤器;节点在区块的布隆过滤器构建完成后,使用预设哈希函数计算区块对应的布隆过滤器的哈希值,并使用区块对应的布隆过滤器的哈希值更新区块的区块头,基于区块的区块头与区块链系统中的其它节点进行区块共识。
步骤502,节点确定区块共识是否成功,若区块共识失败,则执行步骤503a,若区块共识成功,则执行步骤503b。
步骤503a,节点发起视图切换,以使区块链系统从各个节点中选取下一轮区块共识的主节点,并使用下一轮区块共识的主节点对区块重新共识。
步骤503b,节点将区块的区块头上链,并使用区块对应的布隆过滤器和区块中的交易对应的多条状态数据更新预设数据库。
步骤504,客户端向节点发送验证请求,验证请求中包括所述区块的标识和待验证的状态数据的标识;待验证的状态数据为执行所述区块中的交易生成的多条状态数据中的任意一条或任意多条状态数据。
步骤505,节点接收到验证请求后,根据区块的标识和待验证的状态数据的标识,从链上获取区块的区块头,并从预设数据库中获取区块对应的布隆过滤器和待验证的状态数据,进而根据区块的区块头、区块对应的布隆过滤器和待验证的状态数据生成验证数据。
步骤506,节点将验证数据发送给客户端。
步骤507,客户端接收验证数据后,解析验证数据得到区块的区块头、区块对应的布隆过滤器和待验证的状态数据,使用预设哈希函数对区块对应的布隆过滤器求哈希,得到第一哈希值,从区块的区块头中获取区块对应的布隆过滤器的第二哈希值。
步骤508,客户端确定第一哈希值与第二哈希值是否相同,若第一哈希值与第二哈希值相同,则执行步骤509a,若第一哈希值与第二哈希值不同,则执行步骤509b。
步骤509a,客户端确定待验证的状态数据是否已写入区块对应的布隆过滤器中,若是,则执行步骤510,若否,则执行步骤509b。
步骤509b,客户端确定待验证的状态数据验证成功。
步骤510,客户端确定待验证的状态数据验证失败。
本发明的上述实施例中,区块链系统中的节点执行待共识的区块中的交易,生成所述交易对应的多条状态数据,并使用所述交易对应的多条状态数据构建所述区块对应的布隆过滤器,使用所述区块对应的布隆过滤器的哈希值更新所述区块的区块头;所述交易对应的每条状态数据用于标识所述交易的参与方在所述交易的每个执行阶段的状态信息;进一步地,所述节点参与所述区块的共识过程,并在确定所述区块共识成功后,将所述区块的区块头上链,并使用所述区块对应的布隆过滤器和所述交易对应的多条状态数据更新所述节点的预设数据库。本发明实施例中,相对于Merkle树的数据结构来说,布隆过滤器可以使用一片公共的bit数组来存储多条状态数据,因此,通过使用布隆过滤器存储交易对应的状态数据,可以较好地节省存储空间,提高查询的响应速度,从而可以降低区块链系统的计算开销和成本。
针对上述方法流程,本发明实施例还提供一种基于区块链系统的处理装置,该装置的具体内容可以参照上述方法实施。
图6为本发明实施例提供的一种基于区块链系统的处理装置,所述装置包括:
处理模块601,用于执行待共识的区块中的交易,生成所述交易对应的多条状态数据;所述交易对应的每条状态数据用于标识所述交易的参与方在所述交易的每个执行阶段的状态信息;
更新模块602,用于使用所述交易对应的多条状态数据构建所述区块对应的布隆过滤器,并使用所述区块对应的布隆过滤器的哈希值更新所述区块的区块头;
共识模块603,用于参与所述区块的共识过程,并在确定所述区块共识成功后,将所述区块的区块头上链;
所述更新模块602,还用于使用所述区块对应的布隆过滤器和所述交易对应的多条状态数据更新所述节点的预设数据库。
可选地,所述更新模块602具体用于:
根据所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值和所述区块对应的布隆过滤器的哈希值得到所述区块的哈希值,并将所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值、所述区块对应的布隆过滤器的哈希值和所述区块的哈希值添加到所述区块的区块头中。
可选地,所述装置还包括收发模块604,所述更新模块603使用所述区块对应的布隆过滤器更新所述节点的预设数据库之后,所述收发模块604用于:
接收客户端发送的验证请求,所述验证请求包括所述区块的标识和状态数据的标识;所述节点根据所述区块的标识和所述状态数据的标识,从链上获取所述区块对应的区块头,并从所述预设数据库获取所述区块对应的布隆过滤器以及所述状态数据;
根据所述区块的区块头、所述区块对应的布隆过滤器和所述状态数据生成验证数据,并将所述验证数据发送给所述客户端。
图7为本发明实施例提供的一种基于区块链系统的处理装置,所述装置包括:
收发模块701,用于接收所述区块链系统中的节点发送的验证数据,所述验证数据包括区块的区块头、所述区块对应的布隆过滤器和状态数据;所述状态数据为执行所述区块中的交易所生成的多条状态数据中的任一状态数据,每条状态数据用于标识所述交易的参与方在所述交易的每个执行阶段的状态信息;所述区块对应的布隆过滤器是使用所述区块中的交易对应的多条状态数据构建的;
验证模块702,用于根据所述区块对应的布隆过滤器确定所述区块对应的布隆过滤器的第一哈希值,在确定所述第一哈希值与所述区块的区块头中所述区块对应的布隆过滤器的第二哈希值匹配后,若所述区块对应的布隆过滤器中存在所述状态数据,则确定所述状态数据验证成功。
可选地,所述收发模块701接收所述区块链系统中的节点发送的验证数据之前,还用于:
向所述节点发送验证请求,所述验证请求包括所述区块的标识和所述状态数据的标识。
可选地,所述验证模块702还用于:
若确定所述第一哈希值与所述第二哈希值不匹配,或者,若确定所述第一哈希值与所述第二哈希值匹配,且所述区块对应的布隆过滤器中不存在所述状态数据,则确定所述状态数据验证失败。
从上述内容可以看出:本发明的上述实施例中,区块链系统中的节点执行待共识的区块中的交易,生成所述交易对应的多条状态数据,并使用所述交易对应的多条状态数据构建所述区块对应的布隆过滤器,使用所述区块对应的布隆过滤器的哈希值更新所述区块的区块头;所述交易对应的每条状态数据用于标识所述交易的参与方在所述交易的每个执行阶段的状态信息;进一步地,所述节点参与所述区块的共识过程,并在确定所述区块共识成功后,将所述区块的区块头上链,并使用所述区块对应的布隆过滤器和所述交易对应的多条状态数据更新所述节点的预设数据库。本发明实施例中,相对于Merkle树的数据结构来说,布隆过滤器可以使用一片公共的bit数组来存储多条状态数据,因此,通过使用布隆过滤器存储交易对应的状态数据,可以较好地节省存储空间,提高查询的响应速度,从而可以降低区块链系统的计算开销和成本。
基于同一发明构思,本发明实施例还提供一种计算设备,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行本发明实施例任意所述的基于区块链系统的处理方法。
基于同一发明构思,本发明实施例还提供一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行本发明实施例任意所述的基于区块链系统的处理方法。
基于相同的技术构思,本发明实施例提供了一种终端设备,如图8所示,包括至少一个处理器1101,以及与至少一个处理器连接的存储器1102,本发明实施例中不限定处理器1101与存储器1102之间的具体连接介质,图8中处理器1101和存储器1102之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本发明实施例中,存储器1102存储有可被至少一个处理器1101执行的指令,至少一个处理器1101通过执行存储器1102存储的指令,可以执行前述的基于区块链系统的处理方法中所包括的步骤。
其中,处理器1101是终端设备的控制中心,可以利用各种接口和线路连接终端设备的各个部分,通过运行或执行存储在存储器1102内的指令以及调用存储在存储器1102内的数据,从而实现数据处理。可选的,处理器1101可包括一个或多个处理单元,处理器1101可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理下发指令。可以理解的是,上述调制解调处理器也可以不集成到处理器1101中。在一些实施例中,处理器1101和存储器1102可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器1101可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合基于区块链系统的处理方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器1102作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器1102可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器1102是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器1102还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于相同的技术构思,本发明实施例提供了一种后端设备,如图9所示,包括至少一个处理器1201,以及与至少一个处理器连接的存储器1202,本发明实施例中不限定处理器1201与存储器1202之间的具体连接介质,图9中处理器1201和存储器1202之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本发明实施例中,存储器1202存储有可被至少一个处理器1201执行的指令,至少一个处理器1201通过执行存储器1202存储的指令,可以执行前述的基于区块链系统的处理方法中所包括的步骤。
其中,处理器1201是后端设备的控制中心,可以利用各种接口和线路连接后端设备的各个部分,通过运行或执行存储在存储器1202内的指令以及调用存储在存储器1202内的数据,从而实现数据处理。可选的,处理器1201可包括一个或多个处理单元,处理器1201可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、应用程序等,调制解调处理器主要对接收到的指令进行解析以及对接收到的结果进行解析。可以理解的是,上述调制解调处理器也可以不集成到处理器1201中。在一些实施例中,处理器1201和存储器1202可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器1201可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合基于区块链系统的处理方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器1202作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器1202可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器1202是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器1202还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种基于区块链系统的处理方法,其特征在于,所述方法包括:
区块链系统中的节点执行待共识的区块中的交易,生成所述交易对应的多条状态数据;所述交易对应的每条状态数据用于标识所述交易的参与方在所述交易的每个执行阶段的状态信息;
所述节点使用所述交易对应的多条状态数据构建所述区块对应的布隆过滤器,并使用所述区块对应的布隆过滤器的哈希值更新所述区块的区块头;
所述节点参与所述区块的共识过程,并在确定所述区块共识成功后,将所述区块的区块头上链,并使用所述区块对应的布隆过滤器和所述交易对应的多条状态数据更新所述节点的预设数据库;
其中,所述节点使用所述区块对应的布隆过滤器的哈希值更新所述区块的区块头,包括:
所述节点根据所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值和所述区块对应的布隆过滤器的哈希值得到所述区块的哈希值,并将所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值、所述区块对应的布隆过滤器的哈希值和所述区块的哈希值添加到所述区块的区块头中。
2.根据权利要求1所述的方法,其特征在于,所述节点使用所述区块对应的布隆过滤器和所述交易对应的多条状态数据更新所述节点的预设数据库之后,还包括:
所述节点接收客户端发送的验证请求,所述验证请求包括所述区块的标识和状态数据的标识;所述节点根据所述区块的标识和所述状态数据的标识,从链上获取所述区块对应的区块头,并从所述预设数据库获取所述区块对应的布隆过滤器以及所述状态数据;
所述节点根据所述区块的区块头、所述区块对应的布隆过滤器和所述状态数据生成验证数据,并将所述验证数据发送给所述客户端。
3.一种基于区块链系统的处理方法,其特征在于,所述方法包括:
客户端接收所述区块链系统中的节点发送的验证数据,所述验证数据包括区块的区块头、所述区块对应的布隆过滤器和状态数据;所述状态数据为执行所述区块中的交易所生成的多条状态数据中的任一状态数据,每条状态数据用于标识所述交易的参与方在所述交易的每个执行阶段的状态信息;所述区块对应的布隆过滤器是使用所述区块中的交易对应的多条状态数据构建的;所述区块头包括所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值、所述区块对应的布隆过滤器的哈希值和所述区块的哈希值,所述区块的哈希值是根据所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值和所述区块对应的布隆过滤器的哈希值得到的;
所述客户端根据所述区块对应的布隆过滤器确定所述区块对应的布隆过滤器的第一哈希值,在确定所述第一哈希值与所述区块的区块头中所述区块对应的布隆过滤器的第二哈希值匹配后,若所述区块对应的布隆过滤器中存在所述状态数据,则确定所述状态数据验证成功。
4.根据权利要求3所述的方法,其特征在于,所述客户端接收所述区块链系统中的节点发送的验证数据之前,还包括:
所述客户端向所述节点发送验证请求,所述验证请求包括所述区块的标识和所述状态数据的标识。
5.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:
所述客户端若确定所述第一哈希值与所述第二哈希值不匹配,或者,若确定所述第一哈希值与所述第二哈希值匹配,且所述区块对应的布隆过滤器中不存在所述状态数据,则确定所述状态数据验证失败。
6.一种基于区块链系统的处理装置,其特征在于,所述装置包括:
处理模块,用于执行待共识的区块中的交易,生成所述交易对应的多条状态数据;所述交易对应的每条状态数据用于标识所述交易的参与方在所述交易的每个执行阶段的状态信息;
更新模块,用于使用所述交易对应的多条状态数据构建所述区块对应的布隆过滤器,并使用所述区块对应的布隆过滤器的哈希值更新所述区块的区块头;
共识模块,用于参与所述区块的共识过程,并在确定所述区块共识成功后,将所述区块的区块头上链;
所述更新模块,还用于使用所述区块对应的布隆过滤器和所述交易对应的多条状态数据更新区块链系统中的节点的预设数据库;
其中,所述更新模块具体用于:
根据所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值和所述区块对应的布隆过滤器的哈希值得到所述区块的哈希值,并将所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值、所述区块对应的布隆过滤器的哈希值和所述区块的哈希值添加到所述区块的区块头中。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括收发模块,所述更新模块使用所述区块对应的布隆过滤器更新区块链系统中的节点的预设数据库之后,所述收发模块用于:
接收客户端发送的验证请求,所述验证请求包括所述区块的标识和状态数据的标识;所述节点根据所述区块的标识和所述状态数据的标识,从链上获取所述区块对应的区块头,并从所述预设数据库获取所述区块对应的布隆过滤器以及所述状态数据;
根据所述区块的区块头、所述区块对应的布隆过滤器和所述状态数据生成验证数据,并将所述验证数据发送给所述客户端。
8.一种基于区块链系统的处理装置,其特征在于,所述装置包括:
收发模块,用于接收所述区块链系统中的节点发送的验证数据,所述验证数据包括区块的区块头、所述区块对应的布隆过滤器和状态数据;所述状态数据为执行所述区块中的交易所生成的多条状态数据中的任一状态数据,每条状态数据用于标识所述交易的参与方在所述交易的每个执行阶段的状态信息;所述区块对应的布隆过滤器是使用所述区块中的交易对应的多条状态数据构建的;所述区块头包括所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值、所述区块对应的布隆过滤器的哈希值和所述区块的哈希值,所述区块的哈希值是根据所述交易的哈希值、所述交易的执行结果的哈希值、所述交易的回执的哈希值和所述区块对应的布隆过滤器的哈希值得到的;
验证模块,用于根据所述区块对应的布隆过滤器确定所述区块对应的布隆过滤器的第一哈希值,在确定所述第一哈希值与所述区块的区块头中所述区块对应的布隆过滤器的第二哈希值匹配后,若所述区块对应的布隆过滤器中存在所述状态数据,则确定所述状态数据验证成功。
9.根据权利要求8所述的装置,其特征在于,所述收发模块接收所述区块链系统中的节点发送的验证数据之前,还用于:
向所述节点发送验证请求,所述验证请求包括所述区块的标识和所述状态数据的标识。
10.根据权利要求8或9所述的装置,其特征在于,所述验证模块还用于:
若确定所述第一哈希值与所述第二哈希值不匹配,或者,若确定所述第一哈希值与所述第二哈希值匹配,且所述区块对应的布隆过滤器中不存在所述状态数据,则确定所述状态数据验证失败。
11.一种计算设备,其特征在于,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行权利要求1~5任一权利要求所述的方法。
12.一种计算机可读存储介质,其特征在于,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行权利要求1~5任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910806587.8A CN110503558B (zh) | 2019-08-29 | 2019-08-29 | 一种基于区块链系统的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910806587.8A CN110503558B (zh) | 2019-08-29 | 2019-08-29 | 一种基于区块链系统的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110503558A CN110503558A (zh) | 2019-11-26 |
CN110503558B true CN110503558B (zh) | 2023-10-03 |
Family
ID=68590448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910806587.8A Active CN110503558B (zh) | 2019-08-29 | 2019-08-29 | 一种基于区块链系统的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110503558B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112202753A (zh) * | 2019-11-27 | 2021-01-08 | 朱培培 | 基于云平台和区块链的数据流检测方法及系统 |
CN110971393B (zh) * | 2019-11-29 | 2020-11-06 | 中南大学 | 基于区块链动态社交外包数据关键词查询验证方法及装置 |
CN111275553B (zh) * | 2020-01-20 | 2023-08-11 | 联动优势科技有限公司 | 一种区块链的数据存储方法及区块链系统 |
SG11202102371QA (en) * | 2020-04-15 | 2021-04-29 | Alipay Hangzhou Inf Tech Co Ltd | Distributed blockchain data storage under account model |
CN111630507A (zh) | 2020-04-20 | 2020-09-04 | 支付宝(杭州)信息技术有限公司 | 账户模型下的分布式区块链数据存储 |
CN111523897B (zh) * | 2020-05-06 | 2023-04-07 | 杭州复杂美科技有限公司 | 防攻击方法、设备和存储介质 |
CN111667264B (zh) * | 2020-05-08 | 2023-04-14 | 深圳启元信息服务有限公司 | 区块数据的传输方法、装置、电子设备及非易失性计算机存储介质 |
CN111581669B (zh) * | 2020-05-19 | 2023-02-24 | 郑州航空工业管理学院 | 一种可变因子调节的区块链轻量级节点隐私保护方法 |
CN111899019A (zh) * | 2020-07-28 | 2020-11-06 | 朱玮 | 一种黑名单多方交叉验证和共享的方法及系统 |
CN112286963B (zh) * | 2020-11-17 | 2023-05-26 | 北京物资学院 | 一种区块链终端数据可信查询系统及其实现方法 |
CN112712433B (zh) * | 2021-01-08 | 2023-06-20 | 支付宝实验室(新加坡)有限公司 | 一种基于区块链的数据状态管理和查询方法及区块链装置 |
CN112712366A (zh) * | 2021-01-11 | 2021-04-27 | 杭州复杂美科技有限公司 | 区块执行方法、计算机设备和存储介质 |
CN113269565B (zh) * | 2021-05-11 | 2024-01-16 | 深圳棠人科技有限公司 | 一种防重复使用识别码的防伪识别方法、装置及电子设备 |
CN112950211B (zh) * | 2021-05-14 | 2021-07-30 | 腾讯科技(深圳)有限公司 | 一种交易验重方法、装置、设备以及介质 |
CN113704182B (zh) * | 2021-06-15 | 2023-05-12 | 成都统信软件技术有限公司 | 一种数据检查方法及计算设备 |
CN114003972B (zh) * | 2021-12-30 | 2022-06-10 | 北京连琪科技有限公司 | 生成区块状态承诺和证明及验证区块状态证明的方法 |
CN114786170B (zh) * | 2022-05-09 | 2023-06-23 | 中国联合网络通信集团有限公司 | 上链数据安全处理实体切换方法、终端、usim及系统 |
CN117453662A (zh) * | 2022-07-19 | 2024-01-26 | 腾讯科技(深圳)有限公司 | 交易处理方法、装置、电子设备和计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107247773A (zh) * | 2017-06-07 | 2017-10-13 | 北京邮电大学 | 一种基于区块链的在分布式数据库中进行交易查询的方法 |
CN107657438A (zh) * | 2017-09-18 | 2018-02-02 | 联动优势科技有限公司 | 一种区块链生成方法、数据验证方法、节点及系统 |
CN108681900A (zh) * | 2018-07-18 | 2018-10-19 | 众安信息技术服务有限公司 | 轻节点验证交易的方法 |
CN108805570A (zh) * | 2018-06-01 | 2018-11-13 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及存储介质 |
WO2019160128A1 (ja) * | 2018-02-16 | 2019-08-22 | 株式会社bitFlyer Blockchain | ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018144302A1 (en) * | 2017-01-31 | 2018-08-09 | Rush Thomas Jay | Blockchain data-processing engine |
-
2019
- 2019-08-29 CN CN201910806587.8A patent/CN110503558B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107247773A (zh) * | 2017-06-07 | 2017-10-13 | 北京邮电大学 | 一种基于区块链的在分布式数据库中进行交易查询的方法 |
CN107657438A (zh) * | 2017-09-18 | 2018-02-02 | 联动优势科技有限公司 | 一种区块链生成方法、数据验证方法、节点及系统 |
WO2019160128A1 (ja) * | 2018-02-16 | 2019-08-22 | 株式会社bitFlyer Blockchain | ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード |
CN108805570A (zh) * | 2018-06-01 | 2018-11-13 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及存储介质 |
CN108681900A (zh) * | 2018-07-18 | 2018-10-19 | 众安信息技术服务有限公司 | 轻节点验证交易的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110503558A (zh) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110503558B (zh) | 一种基于区块链系统的处理方法及装置 | |
CN110517141B (zh) | 一种基于区块链系统的共识方法及装置 | |
CN110474986B (zh) | 一种基于区块链系统的共识方法、装置及系统 | |
CN113329031B (zh) | 一种区块的状态树的生成方法及装置 | |
US11663090B2 (en) | Method and system for desynchronization recovery for permissioned blockchains using bloom filters | |
US12073400B2 (en) | Method and system for an efficient consensus mechanism for permissioned blockchains using audit guarantees | |
US10671599B2 (en) | Consensus system and method | |
CN111698094B (zh) | 一种基于区块链系统的共识方法及区块链系统 | |
US20200134578A1 (en) | Blockchain consensus systems and methods involving a time parameter | |
CN113568974B (zh) | 基于区块链系统的分片共识方法、设备以及可读存储介质 | |
CN111026767B (zh) | 区块链的数据存储方法、装置及硬件设备 | |
US20230275771A1 (en) | Pre-execution of block chain transaction in parallel during block consensus | |
CN115859343A (zh) | 一种交易数据处理方法、装置以及可读存储介质 | |
CN110570311B (zh) | 区块链的共识方法、装置及设备 | |
CN113157450B (zh) | 在区块链系统中执行区块的方法及装置 | |
CN110597922A (zh) | 数据处理方法、装置、终端及存储介质 | |
WO2021184873A1 (zh) | 用于区块链网络中的数据同步的方法、装置和计算设备 | |
WO2024113956A1 (zh) | 节点选取方法、装置、第一节点、存储介质及程序产品 | |
CN114785776B (zh) | 基于区块链的清算系统以及基于区块链的清算方法 | |
CN111339089B (zh) | 一种应用于区块链的数据存储与获取方法及装置 | |
US20240111785A1 (en) | Method and apparatus of adding additional chain to blockchain, and method and apparatus of generating shard for the same | |
CN111724148B (zh) | 一种基于区块链系统的交易广播方法及节点 | |
GB2571927A (en) | Resource management system and method of operation thereof | |
WO2024153001A1 (zh) | 一种基于分层链网络的数据处理方法、装置、设备及介质 | |
CN116975121A (zh) | 布隆过滤器构建方法、装置、设备及介质 |
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 |