一种区块链合约的数据处理方法及服务器与流程

文档序号:18033964发布日期:2019-06-28 23:02阅读:209来源:国知局
本申请涉及互联网
技术领域
:,特别涉及一种区块链合约的数据处理方法及服务器。
背景技术
::随着互联网技术的不断发展,去中心化的区块链的应用越来越多,在区块链上的智能合约的数量也越来越多。目前,在区块链中存储的智能合约通常是采用webassembly(wasm)语言编译的wasm合约。每次在通过wasm虚拟机上启动wasm合约时,都需要先对wasm合约的字节码进行解析,得到解析后的文件,然后再执行解析后的文件。然而,目前,在区块链上的智能合约的数量越来越多,通过wasm虚拟机上启动wasm合约的次数也越来越多,若每次启动wasm合约都需要对wasm合约的字节码进行解析,可能会导致启动较慢,从而导致wasm合约执行效率较低。因此,目前亟需一种更加高效执行区块链wasm合约的方案。技术实现要素:本申请实施方式的目的是提供一种区块链合约的数据处理方法及服务器,能够提高执行区块链中wasm合约的效率。为实现上述目的,本申请实施方式提供一种区块链合约的数据处理方法,所述方法包括:接收客户端发来的指向目标wasm合约文件的交易请求;从内存缓存中查询所述目标wasm合约文件对应的目标待执行文件;其中,所述目标待执行文件通过对所述目标wasm合约文件进行解析处理得到;若查询到所述目标待执行文件,执行所述目标待执行文件,以进行针对所述交易请求的交易。为实现上述目的,本申请实施方式还提供一种服务器,所述服务器包括存储器和处理器,所述存储器用于存储计算机程序;所述计算机程序被所述处理器执行时,实现以下步骤:接收客户端发来的指向目标wasm合约文件的交易请求;从内存缓存中查询所述目标wasm合约文件对应的目标待执行文件;其中,所述目标待执行文件通过对所述目标wasm合约文件进行解析处理得到;若查询到所述目标待执行文件,执行所述目标待执行文件,以进行针对所述交易请求的交易。由上可见,在本申请中,可以预先将发布的wasm合约文件对应的待执行文件存储在内存缓存中,其中,所述目标待执行文件通过对所述目标wasm合约文件进行解析处理得到。那么,在接收到客户端发来的指向目标wasm合约文件的交易请求之后,便可以直接从内存缓存中查询所述目标wasm合约文件对应的目标待执行文件。若查询到所述目标待执行文件,便可以直接执行所述目标待执行文件,以进行针对所述交易请求的交易,无需再对wasm合约进行解析,从而可以提高执行区块链中wasm合约的效率。附图说明为了更清楚地说明本申请实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施方式中一种区块链合约的数据处理方法的步骤图;图2是本申请实施方式中查询待执行文件的流程图;图3是本申请实施方式中添加待执行文件的流程图;图4是本申请实施方式中删除待执行文件的流程图;图5是本申请实施方式中服务器的结构示意图;具体实施方式为了使本
技术领域
:的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都应当属于本申请保护的范围。本申请实施方式提供一种区块链合约的数据处理方法,所述区块链合约的数据处理方法可以应用于客户端和服务器的系统架构中。所述客户端例如可以是台式电脑、平板电脑、笔记本电脑、智能手机、数字助理、智能可穿戴设备、具有网络访问功能的电视机等。所述的客户端可以具有通信模块,可以与远程的服务器进行通信连接,实现与所述应用服务器的数据传输。在本实施方式中,所述服务器可以为一个具有数据运算、存储功能以及网络交互功能的电子设备;也可以为运行于该电子设备中,为数据处理、存储和网络交互提供支持的软件。在本实施方式中并不具体限定所述应用服务器的数量。所述应用服务器可以为一个服务器,还可以为几个服务器,或者,若干服务器形成的服务器集群。在本实施方式中,在实际应用中,合约发布用户可以通过客户端将wasm(webassembly)合约文件发送至区块链节点,例如所述服务器。在接收到wasm合约文件后,所述服务器可以将该合约文件存储在区块链中,并生成对应的合约文件的存储地址,接着可以将该合约文件的存储地址反馈给所述客户端,以便后续所述客户端发起指向该合约文件的交易请求时,交易请求中可以包含该合约文件的存储地址,这样,所述服务器接收到交易请求后,便可以从该存储地址中找到该合约文件。在本实施方式中,在合约发布用户通过客户端将wasm合约文件发送至所述服务器之后,所述服务器可以对该wasm合约文件进行解析处理,得到对应的待执行文件。由于通常情况下,对同一个合约解析后得到的待执行文件(module)是相同的,那么,可以预先将各个合约发布用户发布的不同的wasm合约文件对应的待执行文件存储在所述服务器的内存缓存中。这样,后续当所述客户端发来指向该wasm合约文件的交易请求之后,所述服务器便可以直接从内存缓存中查询该wasm合约文件对应的待执行文件,无需再对该合约进行解析。在本实施方式中,所述待执行文件通常包括导入接口数据(import)、导出接口数据(export)、启动或加载数据(start)、全局函数变量数据(global)、虚拟内存数据(memory)、常量数据(data)、表数据(tableelements)、内部函数数据(function)和对应的代码数据(code)等等。在进行缓存时,考虑到在运行待执行文件时,虚拟内存数据(memory)往往会出现变更,可以不对虚拟内存数据(memory)进行缓存。不仅如此,考虑到目前智能合约文件越来越多,将这些合约文件完全存储在内存缓存中,会导致内存缓存占用过大,甚至超过内存缓存的最大限制量。为了缓解内存缓存的压力,还可以预先将这些wasm合约文件对应的待执行文件存储在所述服务器的合约数据库中。这样,还可以防止在服务器启停过程中,对应的待执行文件仍然存在,无需反复解析。在本实施方式中,所述合约数据库可以是存储待执行文件的数据集。所述合约数据库可以采用mysql、oracle、db2、sybase等数据库格式中的任意一种。所述合约数据库可以部署在服务器中的存储介质上。在本实施方式中,每个wasm合约文件可以具备各自的数据标识,在所述内存缓存或所述合约数据库中,所述数据标识与待执行文件之间可以通过key-value(键值对)的形式进行存储,这样,通过提供的数据标识,便可以从所述内存缓存或所述合约数据库中获取到对应的待执行文件(module)。本申请实施方式提供一种区块链合约的数据处理方法,所述区块链合约的数据处理方法可以应用于上述的服务器中。请参阅图1,所述区块链合约的数据处理方法可以包括以下步骤。s11:接收客户端发来的指向目标wasm合约文件的交易请求。在本实施方式中,所述交易请求可以是按照预设规则进行编写的字符串。其中,所述预设规则可以是所述客户端与所述服务器之间遵循的网络通信协议。例如,所述交易请求可以是按照http协议进行编写的字符串。所述预设规则可以限定交易请求中的各个组成部分以及各个组成部分之间的排列顺序。在本实施方式中,所述交易请求指向目标wasm合约文件可以指所述交易请求中携带所述目标wasm合约文件的标识。这样,服务器接收到客户端发来的指向目标wasm合约文件的交易请求后,可以从所述交易请求中提取所述目标wasm合约文件的标识。在提取出所述目标wasm合约文件的标识后,所述服务器可以读取具备所述标识的目标wasm合约文件对应的目标待执行文件,以便后续从内存缓存或者合约数据库中查询所述目标wasm合约文件对应的目标待执行文件。在本实施方式中,所述交易请求中还可以包括针对目标交易的接口数据和参数数据。这样,在接收到客户端发来的指向目标wasm合约文件的交易请求后,若所述服务器后续从内存缓存或者合约数据库中查询到所述目标wasm合约文件对应的目标待执行文件,便可以结合从所述交易请求中读取的接口数据和参数数据,执行所述目标待执行文件,以进行针对所述交易请求的交易。s13:从内存缓存中查询所述目标wasm合约文件对应的目标待执行文件;其中,所述目标待执行文件通过对所述目标wasm合约文件进行解析处理得到。在本实施方式中,在接收到客户端发来的指向目标wasm合约文件的交易请求之后,所述服务器可以根据所述交易请求中携带所述目标wasm合约文件的标识,从内存缓存中查询所述目标wasm合约文件对应的目标待执行文件。其中,所述目标待执行文件通过对所述目标wasm合约文件进行解析处理得到。此处的解析处理可以是在合约发布用户发布合约文件或者创建该合约时的预先解析处理,并在预先解析处理之后,将解析处理后的文件存储在内存缓存中。s15:若查询到所述目标待执行文件,执行所述目标待执行文件,以进行针对所述交易请求的交易。在本实施方式中,如图2所示,若从内存缓存中可以查询到所述目标待执行文件,便可以将查询到的结果反馈至所述服务器。那么,所述服务器便可以从所述内存缓存的链表队列中读取所述目标待执行文件,从而可以执行所述目标待执行文件,以进行针对所述交易请求的交易。在一个实施方式中,考虑到从内存缓存中可能查询不到所述目标待执行文件的情况,为此,由于合约数据库的存储空间通常比较大,存储的待执行文件比较全面,那么,如图2所示,若从所述内存缓存中查询不到所述目标待执行文件,可以继续从合约数据库中查询所述目标待执行文件。若从合约数据库中查询到所述目标待执行文件,可以将所述目标待执行文件添加至所述内存缓存中,并可以将查询到的结果反馈至所述服务器,以便后续下次可以直接从内存缓存中查询到。若从合约数据库中查询不到所述目标待执行文件,也可以将查询到的结果反馈至所述服务器,以便所述服务器后续所述目标待执行文件添加至内存缓存和合约数据库中。在一个实施方式中,在实际应用中,考虑到会不断有新的wasm合约文件出现,需要将新的wasm合约文件对应的待执行文件添加至内存缓存或合约数据库中。为此,在接收到所述客户端发布的指定wasm合约文件之后,所述服务器可以先对所述指定wasm合约文件进行解析处理,得到对应的指定待执行文件。接着,如图3所示,可以判断所述内存缓存中是否存在所述指定待执行文件,若不存在,可以将所述指定待执行文件添加至所述内存缓存中。若存在,可以将旧的指定待执行文件删除,重新将所述指定待执行文件添加至所述内存缓存中。例如,通常情况下,可以按照发布时间的先后,或者读取频率的高低,将这些待执行文件从所述内存缓存的链表队列的头部依次添加存储。那么,可以将所述指定待执行文件添加至所述内存缓存的链表队列的头部。在将所述指定待执行文件添加至所述内存缓存中之后,还可以对所述指定待执行文件进行序列化处理,并可以将序列化处理后的所述指定待执行文件写入合约数据库中。接着,还可以判断所述内存缓存的缓存量是否大于或等于指定缓存量阈值。其中,所述指定缓存量阈值可以根据实际应用情况进行设定,例如可以为内存缓存的最大缓存量的70%~100%。若大于,对所述内存缓存进行释放处理,以使得所述内存缓存的缓存量小于所述指定缓存量阈值。例如,可以将所述内存缓存的链表队列的尾部的待执行文件删除,或者将发布时间比较久或者读取频率较低的待执行文件删除。在一个实施方式中,在实际应用中,考虑到可能要删除一些待执行文件,为此,如图4所示,可以针对待删除的待执行文件,判断所述内存缓存中是否存在所述待删除的待执行文件。若存在,可以从所述内存缓存中删除所述待删除的待执行文件,并从合约数据库中删除所述待删除的待执行文件。若不存在,可以从合约数据库中删除所述待删除的待执行文件。以便保持内存缓存与合约数据库中所述待删除的待执行文件均删除,防止出现不一致的异常情况。在本实施方式中,上述方法步骤中实现的功能,可以由计算机程序实现,所述计算机程序可以被存储于计算机存储介质中。具体的,所述计算机存储介质可以与处理器进行耦合,处理器从而可以读取计算机存储介质中的计算机程序。所述计算机程序被处理器执行时,可以实现以下步骤:s11:接收客户端发来的指向目标wasm合约文件的交易请求;s13:从内存缓存中查询所述目标wasm合约文件对应的目标待执行文件;其中,所述目标待执行文件通过对所述目标wasm合约文件进行解析处理得到;s15:若查询到所述目标待执行文件,执行所述目标待执行文件,以进行针对所述交易请求的交易。在一个实施方式中,所述计算机程序被处理器执行时,可以所述计算机程序被所述处理器执行时,还实现以下步骤:若从所述内存缓存中查询不到所述目标待执行文件,从合约数据库中查询所述目标待执行文件;若查询到所述目标待执行文件,将所述目标待执行文件添加至所述内存缓存中。在一个实施方式中,所述计算机程序被所述处理器执行时,还实现以下步骤:接收所述客户端发布的指定wasm合约文件;对所述指定wasm合约文件进行解析处理,得到对应的指定待执行文件;判断所述内存缓存中是否存在所述指定待执行文件,若不存在,将所述指定待执行文件添加至所述内存缓存中。在一个实施方式中,所述计算机程序被所述处理器执行时,还实现以下步骤:判断所述内存缓存的缓存量是否大于或等于指定缓存量阈值;若大于,对所述内存缓存进行释放处理,以使得所述内存缓存的缓存量小于所述指定缓存量阈值。在一个实施方式中,所述计算机程序被所述处理器执行时,还实现以下步骤:对所述指定待执行文件进行序列化处理;将序列化处理后的所述指定待执行文件写入合约数据库中。在一个实施方式中,所述计算机程序被所述处理器执行时,还实现以下步骤:针对待删除的待执行文件,判断所述内存缓存中是否存在所述待删除的待执行文件;若存在,从所述内存缓存中删除所述待删除的待执行文件,并从合约数据库中删除所述待删除的待执行文件;若不存在,从合约数据库中删除所述待删除的待执行文件。需要说明的是,上述计算机存储介质中的计算机程序所能实现的功能,均可以参照前述的应用于终端设备的方法实施实施方式,实现的技术效果也与前述方法实施方式中实现的技术效果类似,这里便不再赘述。请参阅图5,本申请还提供一种服务器。所述服务器包括存储器和处理器,所述存储器用于存储计算机程序;所述计算机程序被所述处理器执行时,实现以下步骤:s11:接收客户端发来的指向目标wasm合约文件的交易请求;s13:从内存缓存中查询所述目标wasm合约文件对应的目标待执行文件;其中,所述目标待执行文件通过对所述目标wasm合约文件进行解析处理得到;s15:若查询到所述目标待执行文件,执行所述目标待执行文件,以进行针对所述交易请求的交易。在本实施方式中,所述存储器可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方法的媒体加以存储。本实施方式所述的存储器又可以包括:利用电能方式存储信息的装置,如ram、rom等;利用磁能方式存储信息的装置,如硬盘、软盘、磁带、磁芯存储器、磁泡存储器、u盘;利用光学方式存储信息的装置,如cd或dvd。当然,还有其他方式的存储器,例如量子存储器、石墨烯存储器等等。在本实施方式中,所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式等等。在一个实施方式中,所述计算机程序被处理器执行时,可以所述计算机程序被所述处理器执行时,还实现以下步骤:若从所述内存缓存中查询不到所述目标待执行文件,从合约数据库中查询所述目标待执行文件;若查询到所述目标待执行文件,将所述目标待执行文件添加至所述内存缓存中。在一个实施方式中,所述计算机程序被所述处理器执行时,还实现以下步骤:接收所述客户端发布的指定wasm合约文件;对所述指定wasm合约文件进行解析处理,得到对应的指定待执行文件;判断所述内存缓存中是否存在所述指定待执行文件,若不存在,将所述指定待执行文件添加至所述内存缓存中。在一个实施方式中,所述计算机程序被所述处理器执行时,还实现以下步骤:判断所述内存缓存的缓存量是否大于或等于指定缓存量阈值;若大于,对所述内存缓存进行释放处理,以使得所述内存缓存的缓存量小于所述指定缓存量阈值。在一个实施方式中,所述计算机程序被所述处理器执行时,还实现以下步骤:对所述指定待执行文件进行序列化处理;将序列化处理后的所述指定待执行文件写入合约数据库中。在一个实施方式中,所述计算机程序被所述处理器执行时,还实现以下步骤:针对待删除的待执行文件,判断所述内存缓存中是否存在所述待删除的待执行文件;若存在,从所述内存缓存中删除所述待删除的待执行文件,并从合约数据库中删除所述待删除的待执行文件;若不存在,从合约数据库中删除所述待删除的待执行文件。本说明书实施方式提供的服务器,其存储器和处理器实现的具体功能,可以与本说明书中的前述实施方式相对照解释,并能够达到前述实施方式的技术效果,这里便不再赘述。由上可见,在本申请中,可以预先将发布的wasm合约文件对应的待执行文件存储在内存缓存中,其中,所述目标待执行文件通过对所述目标wasm合约文件进行解析处理得到。那么,在接收到客户端发来的指向目标wasm合约文件的交易请求之后,便可以直接从内存缓存中查询所述目标wasm合约文件对应的目标待执行文件。若查询到所述目标待执行文件,便可以直接执行所述目标待执行文件,以进行针对所述交易请求的交易,无需再对wasm合约进行解析,从而可以提高执行区块链中wasm合约的效率。在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现客户端、服务器以外,完全可以通过将方法步骤进行逻辑编程来使得客户端、服务器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种客户端、服务器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对计算机存储介质、服务器和客户端的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。虽然通过实施方式描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1