本发明涉及区块链信息技术领域,更具体地,涉及一种在区块链上的数据处理方法及装置。
背景技术:
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。区块链是比特币的底层技术,像一个数据库账本,记载所有的交易记录。该系统的特点是有很多个分处与世界各地的节点,每个节点都会维护一套相同的数据库。这就导致了恶意篡改数据及其困难,数据丢失极为罕见,从而实现了一个公平透明,解决信任危机的平台。
用户在对区块链节点进行读操作和写操作时,会让区块链节点访问承压,由于区块链节点对读操作和写操作是不区分的,即同一区块链节点可能同时接收读操作和写操作,造成该时间区块链节点的用户访问量过高,而过高的访问量会让区块链崩溃,影响区块链的访问效率。因此,需要提供一种可行的方案以提升区块链的访问效率。
以上技术仅供参考,并不一定理解为现有技术。
技术实现要素:
针对现有技术的缺陷,本发明的目的在于解决如何提升区块链的访问效率的技术问题。
为实现上述目的,第一方面,本发明提供一种在区块链上的数据处理方法,包括以下步骤:
第一区块链节点接收用户发送的查询数据请求,并针对所述查询数据请求查询对应的数据;
第二区块链节点接收用户发送的写数据请求,并针对所述写数据请求写入对应的数据;所述第一区块链节点和第二区块链节点为不同的区块链节点。
可以理解的是,第一区块链节点和第二区块链节点分别代表两种不同功能的区块链节点,第一区块链节点代表代表处理查询数据请求的区块链节点,也可称为查询区块链节点,第二区块链节点代表处理写数据请求的区块链节点,也可称为写区块链节点。具体地,查询数据请求即为读操作请求。
在一个可选的实施例中,所述第一区块链节点接收用户发送的查询数据请求,并针对所述查询数据请求查询对应的数据,具体包括如下步骤:
所述第一区块链节点接收所述查询数据请求,所述查询数据请求携带待查询数据对应的用户id或数据id;
所述第一区块链节点遍历区块,查询对应用户id或数据id对应的数据,并将查询到的数据发送给用户。
在一个可选的实施例中,所述第一区块链节点接收用户发送的查询数据请求,并针对所述查询数据请求查询对应的数据,具体包括如下步骤:
所述第一区块链节点接收所述查询数据请求,所述查询数据请求携带待查询数据对应的用户id或数据id;
所述第一区块链节点查询内存中的前赘树,以查询对应用户id或数据id对应的数据,并将查询到的数据发送给用户;所述区块链中的数据存储在内存中的前赘树结构中。
在一个可选的实施例中,所述第二区块链节点接收用户发送的写数据请求,并针对所述写数据请求写入对应的数据,具体包括如下步骤:
所述第二区块链节点接收所述写数据请求,所述写数据请求携带写请求对应的用户id或数据id、待写入数据以及用户公钥;所述待写入数据通过用户的私钥签名;
所述第二区块链节点通过所述用户公钥验证所述待写入的数据,当验证成功时,对所述待写入数据进行共识后按照对应的用户id或数据id打包上链。
具体而言,当第二区块链节点接收到待写入数据时,可以构建一个包含该待写入数据和其交易信息的哈希的交易,并将构建的交易广播至区块链网络,使得各节点后续基于共识机制,将该交易存入自身的区块链,如此,就实现了待写入数据的多方存证。其中,当交易仅包含待写入数据的哈希时,由于待写入数据的哈希己经被发布至区块链,因此,倘若写入后的数据被篡改,篡改后的数据的哈希就会与区块链中己发布的哈希不一致,因此,待写入数据被发布至区块链,就相当于待写入数据被多方存证。还需要说明的是,当交易仅包含待写入数据的哈希时,区块链存证平台一般会将待写入数据另行存储于数据仓库(非区块链),例如ram。
需要说明的是,在本说明书说描述的交易,是指用户通过区块链的客户端创建,并需要最终发布至区块链的分布式数据库中的一笔数据。
在一个可选的实施例中,所述第二区块链节点对所述待写入的数据进行共识后打包上链,具体包括如下步骤:
若所述待写入数据的数据量大于一个区块的存储阈值,则第二区块链节点将所述待写入的数据分成多个小于所述存储阈值的分片数据;
所述第二区块链节点对所述多个分片数据进行共识,并将共识后的数据分别存储到所述第二区块链节点的多个区块中。
具体地,第二区块链节点将多个分片数据中的第一个分片数据存储到当前节点;第二区块链节点通过可验证随机函数vrf的方式随机选择当前第二区块链节点之外的其他第二区块链节点,由其他第二区块链节点存储所述多个分片数据中除第一个分片数据以外的数据。
第二方面,本发明提供一种在区块链上的数据处理装置,包括:
第一区块链节点,用于接收用户发送的查询数据请求,并针对所述查询数据请求查询对应的数据;
第二区块链节点,用于接收用户发送的写数据请求,并针对所述写数据请求写入对应的数据;所述第一区块链节点和第二区块链节点为不同的区块链节点。
在一个可选的实施例中,所述第一区块链节点接收所述查询数据请求,所述查询数据请求携带待查询数据对应的用户id或数据id;以及遍历区块,查询对应用户id或数据id对应的数据,并将查询到的数据发送给用户。
在一个可选的实施例中,所述第一区块链节点接收所述查询数据请求,所述查询数据请求携带待查询数据对应的用户id或数据id;以及查询内存中的前赘树,以查询对应用户id或数据id对应的数据,并将查询到的数据发送给用户;所述区块链中的数据存储在内存中的前赘树结构中。
在一个可选的实施例中,所述第二区块链节点接收所述写数据请求,所述写数据请求携带写请求对应的用户id或数据id、待写入数据以及用户公钥;所述待写入数据通过用户的私钥签名;所述第二区块链节点通过所述用户公钥验证所述待写入的数据,当验证成功时,对所述待写入数据进行共识后按照对应的用户id或数据id打包上链。
第三方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的在区块链上的数据处理方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
本发明提供一种在区块链上的数据处理方法及装置,通过不同的区块链节点分别执行用户的查询操作请求和写操作请求,以将对区块链的读操作和写操作分开,通过查询区块链节点和写区块链节点分别承担读请求和写请求对区块链的访问承压,提高区块链可以承受的访问量,提高了对区块链的访问效率,提升用户体验。
本发明提供一种在区块链上的数据处理方法及装置,利用区块链节点的分布式存储特征,实现了对占用较大资源的待写入数据的分片存储。当在一个写区块链节点的多个区块实现待写入数据的分片存储时,实现同一个区块链节点的分片存储,使得各个分片数据可以同时进行存储,加快写请求数据的上链速度,进一步提高了对区块链的访问效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
图1为本发明提供的在区块链上的数据处理方法的流程图;
图2为本发明提供的在区块链上的数据处理装置的架构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
图1为本发明提供的在区块链上的数据处理方法的流程图;如图1所示,包括如下步骤:
s101,第一区块链节点接收用户发送的查询数据请求,并针对所述查询数据请求查询对应的数据;
s102,第二区块链节点接收用户发送的写数据请求,并针对所述写数据请求写入对应的数据;所述第一区块链节点和第二区块链节点为不同的区块链节点。
可以理解的是,第一区块链节点和第二区块链节点分别代表两种不同功能的区块链节点,第一区块链节点代表查询区块链节点,第二区块链节点代表写区块链节点。
在一个可选的实施例中,所述第一区块链节点接收用户发送的查询数据请求,并针对所述查询数据请求查询对应的数据,具体包括如下步骤:
所述第一区块链节点接收所述查询数据请求,所述查询数据请求携带待查询数据对应的用户id或数据id;
所述第一区块链节点遍历区块,查询对应用户id或数据id对应的数据,并将查询到的数据发送给用户。
在一个可选的实施例中,所述第一区块链节点接收用户发送的查询数据请求,并针对所述查询数据请求查询对应的数据,具体包括如下步骤:
所述第一区块链节点接收所述查询数据请求,所述查询数据请求携带待查询数据对应的用户id或数据id;
所述第一区块链节点查询内存中的前赘树,以查询对应用户id或数据id对应的数据,并将查询到的数据发送给用户;所述区块链中的数据存储在内存中的前赘树结构中。
在一个可选的实施例中,所述第二区块链节点接收用户发送的写数据请求,并针对所述写数据请求写入对应的数据,具体包括如下步骤:
所述第二区块链节点接收所述写数据请求,所述写数据请求携带写请求对应的用户id或数据id、待写入数据以及用户公钥;所述待写入数据通过用户的私钥签名;
所述第二区块链节点通过所述用户公钥验证所述待写入的数据,当验证成功时,对所述待写入数据进行共识后按照对应的用户id或数据id打包上链。
具体而言,当第二区块链节点接收到待写入数据时,可以构建一个包含该待写入数据和其交易信息的哈希的交易,并将构建的交易广播至区块链网络,使得各节点后续基于共识机制,将该交易存入自身的区块链,如此,就实现了待写入数据的多方存证。其中,当交易仅包含待写入数据的哈希时,由于待写入数据的哈希己经被发布至区块链,因此,倘若写入后的数据被篡改,篡改后的数据的哈希就会与区块链中己发布的哈希不一致,因此,待写入数据被发布至区块链,就相当于待写入数据被多方存证。还需要说明的是,当交易仅包含待写入数据的哈希时,区块链存证平台一般会将待写入数据另行存储于数据仓库(非区块链),例如ram。
需要说明的是,在本说明书说描述的交易,是指用户通过区块链的客户端创建,并需要最终发布至区块链的分布式数据库中的一笔数据。
在一个可选的实施例中,所述第二区块链节点对所述待写入的数据进行共识后打包上链,具体包括如下步骤:
若所述待写入数据的数据量大于一个区块的存储阈值,则第二区块链节点将所述待写入的数据分成多个小于所述存储阈值的分片数据;
所述第二区块链节点对所述多个分片数据进行共识,并将共识后的数据分别存储到所述第二区块链节点的多个区块中。
具体地,第二区块链节点将多个分片数据中的第一个分片数据存储到当前节点;第二区块链节点通过可验证随机函数vrf的方式随机选择当前第二区块链节点之外的其他第二区块链节点,由其他第二区块链节点存储所述多个分片数据中除第一个分片数据以外的数据。
图2为本发明提供的在区块链上的数据处理装置的架构图,如图2所示,该装置包括:第一区块链节点210和第二区块链节点220。
第一区块链节点210用于接收用户发送的查询数据请求,并针对所述查询数据请求查询对应的数据;
第二区块链节点220用于接收用户发送的写数据请求,并针对所述写数据请求写入对应的数据;所述第一区块链节点和第二区块链节点为不同的区块链节点。
在一个可选的实施例中,所述第一区块链节点210接收所述查询数据请求,所述查询数据请求携带待查询数据对应的用户id或数据id;以及遍历区块,查询对应用户id或数据id对应的数据,并将查询到的数据发送给用户。
在一个可选的实施例中,所述第一区块链节点210接收所述查询数据请求,所述查询数据请求携带待查询数据对应的用户id或数据id;以及查询内存中的前赘树,以查询对应用户id或数据id对应的数据,并将查询到的数据发送给用户;所述区块链中的数据存储在内存中的前赘树结构中。
在一个可选的实施例中,所述第二区块链节点220接收所述写数据请求,所述写数据请求携带写请求对应的用户id或数据id、待写入数据以及用户公钥;所述待写入数据通过用户的私钥签名;所述第二区块链节点通过所述用户公钥验证所述待写入的数据,当验证成功时,对所述待写入数据进行共识后按照对应的用户id或数据id打包上链。
图2中各种区块链节点涉及的处理过程可参见前述图1所示的具体方法实施例,在此不做赘述。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令处理器完成,程序可以存储于计算机可读存储介质中,存储介质是非短暂性(non-transitory)介质,例如随机存取存储器,只读存储器,快闪存储器,硬盘,固态硬盘,磁带(magnetictape),软盘(floppydisk),光盘(opticaldisc)及其任意组合。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。