CN111340470B - 区块链交易处理方法、节点及合约容器 - Google Patents
区块链交易处理方法、节点及合约容器 Download PDFInfo
- Publication number
- CN111340470B CN111340470B CN202010111657.0A CN202010111657A CN111340470B CN 111340470 B CN111340470 B CN 111340470B CN 202010111657 A CN202010111657 A CN 202010111657A CN 111340470 B CN111340470 B CN 111340470B
- Authority
- CN
- China
- Prior art keywords
- contract
- transaction
- data
- block chain
- container
- 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
Images
Classifications
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/085—Payment architectures involving remote charge determination or related payment systems
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供的区块链交易处理方法、节点及合约容器,通过在合约容器中设置缓存,并将区块链状态数据以键值对形式存储在合约容器中,进而把热点数据的<键,值>保存到内存,使智能合约执行过程中需要取或存数据时,合约容器不需要多次与区块链节点进行网络交互,对于热点数据只需要直接对内存进行读或写,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的;同时,以合约唯一标识对数据进行划分,使每个合约容器只缓存该合约相关的数据,避免出现同一份数据在多个合约容器内冗余缓存造成更新同步延迟和数据读脏的情况,解决合约容器间缓存数据的一致性问题。
Description
技术领域
本发明涉及区块链技术领域,具体涉及区块链交易处理方法、节点及合约容器。
背景技术
区块链是一种分布式账本技术,结合了共识算法、密码学、分布式存储等不同领域的计算机技术,具有去中心化、不可篡改、可溯源等特性。其中智能合约技术的使用,使区块链具备图灵完备的特性,以执行各种复杂的业务逻辑。目前,为了避免智能合约逻辑中的错误对区块链节点主进程造成影响,和避免智能合约非法访问区块链节点的资源,区块链节点主要使用容器以沙盒的方式执行智能合约。区块链中的每个节点都为会每个智能合约实例启动一个容器,然后把智能合约的逻辑放到容器中执行。该容器可以是跟区块链节点同一物理设备上启动,也可以是在远端的物理设备上启动。在智能合约执行过程中需要读取区块链的状态数据时,合约容器会通过调用所属区块链节点的查询数据接口,由所属区块链节点查询状态数据并把查询结果返回给合约容器。相同地,在智能合约执行过程中需要更新区块链的状态数据时,会通过调用所属区块链节点的更新数据接口,由所属区块链节点更新状态数据并把更新结果返回给合约容器。区块链节点与合约容器使用<键,值>的数据格式进行交互,主要使用基于RPC(Remote Procedure Call,远程过程调用)等网络协议的网络调用,是比较耗时的操作。
如图1所示的一种传统合约容器执行区块链智能合约的流程图,当某个区块链节点接收到交易请求时,会把该交易请求封装成交易,然后把该交易广播到其他区块链节点,并与其他区块链节点进行共识,共识通过后每个区块链节点会各自执行该交易中调用的智能合约。最后每个区块链节点各自从合约容器执行智能合约的执行结果,并把执行结果进行持久化处理。智能合约执行过程中需要多次查询数据和更新数据时,合约容器会进行多次跟区块链节点之间的网络调用,对区块链的性能造成较大负面影响。特别是当多个交易中存在区块链状态数据时,区块链节点和合约容器之间会对相同的<键,值>数据进行取和存而进行多次网络调用,对网络资源的使用造成较大的浪费。
因此,需要一种减少区块链节点和合约容器之间网络调用次数的执行智能合约的方式,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的。一种可能的方法是在合约容器内设置数据缓存,一个交易的合约逻辑执行期间,对数据的存取优先在数据缓存中进行,如果数据缓存中不存在目标数据,再通过RPC对区块链节点调用进行数据存取。
但是,每个区块链节点会根据智能合约的部署情况,为每个智能合约实例启动一个对应的合约容器,当区块链网络内存在多个智能合约时,每个区块链节点均启动多个合约容器。若每个合约容器均维护数据缓存,会出现同一份数据在多个合约容器均有缓存的情况,此时若某个合约容器对缓存数据进行更新,而另一个合约容器对该数据进行读取,会出现读脏数据的问题。
发明内容
针对现有技术中的问题,本发明提供一种区块链交易处理方法、节点及合约容器,能够解决合约容器间缓存数据的一致性问题,当区块链网络内存在多个智能合约时,不会出现读脏数据的问题。
为解决上述技术问题,本发明提供以下技术方案:
第一方面,本发明提供一种区块链交易处理方法,所述区块链中合约容器的缓存存储有以键值对集合成的区块链状态数据,每个合约容器对应一个合约唯一标识,所述区块链交易处理方法包括:
与其他节点一同对区块链中的交易进行共识处理;所述交易通过交易唯一标识,以及包括于交易请求中的调用参数组装形成,所述调用参数包括调用的合约唯一标识,所述交易唯一标识通过对交易请求内容进行信息摘要操作得到;
与其他节点一同确定自身管理的合约容器是否对应所述合约唯一标识,若是则将达成共识的交易的调用参数发送至自身管理的合约容器,以使所述合约容器根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,所述合约容器根据所述合约唯一标识以及设定索引,调用自身缓存中的区块链状态数据;所述设定索引包括键值对的对应关系。
在优选的实施例中,还包括:
接收交易请求;
对所述交易请求的内容进行信息摘要操作,生成交易唯一标识;
将所述交易唯一标识、合约唯一标识以及调用参数组装成交易,广播到区块链的其他节点。
在优选的实施例中,在进行共识处理之前,还包括:
接收一节点广播的交易。
在优选的实施例中,还包括:
以键值对的形式存储交易结果数据以及区块链状态数据,并生成合约唯一标识与存储的键值对的对应关系索引。
第二方面,本发明实施例提供一种区块链交易处理方法,包括:
接收调用参数;所述调用参数包括于交易请求中,并且包括一合约唯一标识;
判断所述合约唯一标识是否与其自身对应的合约唯一标识一致;
若一致,则根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,根据设定索引,调用自身缓存中的区块链状态数据;所述区块链状态数据以键值对形式被存储,所述设定索引包括键值对的对应关系。
在优选的实施例中,所述根据设定索引,调用自身缓存中的区块链状态数据,包括:
根据所述键值对的对应关系,通过搜索键查询对应的值,若能够查询,则调用对应的值;
否则从对应的节点中调用所述区块链状态数据,并生成一键值对的对应关系保存在所述设定索引中。
在优选的实施例中,还包括:
判断缓存的数据量是否小于设定缓存上限;
若否,执行迭代操作,查询预设的数据热度队列中的热度低于设定阈值的数据所对应的键值对,减少查询得到的键值对的权重,并删除缓存中权重低于设定值的键值对,直至缓存的数据量小于设定缓存上限。
第三方面,本发明实施例提供一种区块链中的节点,所述区块链中合约容器的缓存存储有以键值对集合成的区块链状态数据,每个合约容器对应一个合约唯一标识,所述节点包括:
共识处理模块,与其他节点一同对区块链中的交易进行共识处理;所述交易通过交易唯一标识,以及包括于交易请求中的调用参数组装形成,所述调用参数包括调用的合约唯一标识,所述交易唯一标识通过对交易请求内容进行信息摘要操作得到;
调用参数发送模块,与其他节点一同确定自身管理的合约容器是否对应所述合约唯一标识,若是则将达成共识的交易的调用参数发送至自身管理的合约容器,以使所述合约容器根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,所述合约容器根据所述合约唯一标识以及设定索引,调用自身缓存中的区块链状态数据;所述设定索引包括键值对的对应关系。
在优选的实施例中,还包括:
交易请求接收模块,接收交易请求;
交易唯一标识生成模块,对所述交易请求的内容进行信息摘要操作,生成交易唯一标识;
交易广播模块,将所述交易唯一标识、合约唯一标识以及调用参数组装成交易,广播到区块链的其他节点。
在优选的实施例中,还包括:
交易接收模块,接收一节点广播的交易。
在优选的实施例中,还包括:
键值对存储模块,以键值对的形式存储交易结果数据以及区块链状态数据,并生成合约唯一标识与存储的键值对的对应关系索引。
第四方面,本发明实施例提供一种区块链中的合约容器,包括:
调用参数接收模块,接收调用参数;所述调用参数包括于交易请求中,并且包括一合约唯一标识;
合约唯一标识判断模块,判断所述合约唯一标识是否与其自身对应的合约唯一标识一致;
智能合约执行模块,若一致,则根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,根据设定索引,调用自身缓存中的区块链状态数据;所述区块链状态数据以键值对形式被存储,所述设定索引包括键值对的对应关系。
在优选的实施例中,所述智能合约执行模块,包括:
值查询单元,根据所述键值对的对应关系,通过搜索键查询对应的值,若能够查询,则调用对应的值;
键值对对应关系生成单元,否则从对应的节点中调用所述区块链状态数据,并生成一键值对的对应关系保存在所述设定索引中。
在优选的实施例中,还包括:
缓存上限判断模块,判断缓存的数据量是否小于设定缓存上限;
迭代更新模块,若否,执行迭代操作,查询预设的数据热度队列中的热度低于设定阈值的数据所对应的键值对,减少查询得到的键值对的权重,并删除缓存中权重低于设定值的键值对,直至缓存的数据量小于设定缓存上限。
第五方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的区块链交易处理方法。
第六方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的区块链交易处理方法。
由上述技术方案可知,本发明提供的区块链交易处理方法、节点及合约容器,通过在合约容器中设置缓存,并将区块链状态数据以键值对形式存储在合约容器中,进而把热点数据的<键,值>保存到内存,使智能合约执行过程中需要取或存数据时,合约容器不需要多次与区块链节点进行网络交互,对于热点数据只需要直接对内存进行读或写,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的;同时,以合约唯一标识对数据进行划分,使每个合约容器只缓存该合约相关的数据,避免出现同一份数据在多个合约容器内冗余缓存造成更新同步延迟和数据读脏的情况,解决合约容器间缓存数据的一致性问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出一种传统合约容器执行区块链智能合约的流程图
图2示出本发明实施例中一种基于数据缓存的高性能区块链处理系统的网络结构图
图3示出本发明实施例中数据缓存存储示意图。
图4示出本发明实施例中区块链交易处理方法流程示意图之一。
图5示出本发明实施例中区块链交易处理方法流程示意图之一。
图6示出本发明实施例中一种基于数据缓存的高性能区块链处理流程图
图7示出本发明实施例中一种基于数据缓存的合约查询数据处理流程图
图8示出本发明实施例中一种基于数据缓存的合约更新数据处理流程图
图9示出本发明实施例中一种清理数据缓存的处理流程图
图10示出本发明应用实例中区块链中的节点结构示意图。
图11示出本发明应用实例中区块链中的合约容器的结构示意图。
图12示出本发明实施例中的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到目前每个区块链节点会根据智能合约的部署情况,为每个智能合约实例启动一个对应的合约容器,当区块链网络内存在多个智能合约时,每个区块链节点均启动多个合约容器。若每个合约容器均维护数据缓存,会出现同一份数据在多个合约容器均有缓存的情况,此时若某个合约容器对缓存数据进行更新,而另一个合约容器对该数据进行读取,会出现读脏数据的问题。本发明提供一种区块链交易处理方法、节点及合约容器,通过在合约容器中设置缓存,并将区块链状态数据以键值对形式存储在合约容器中,进而把热点数据的<键,值>保存到内存,使智能合约执行过程中需要取或存数据时,合约容器不需要多次与区块链节点进行网络交互,对于热点数据只需要直接对内存进行读或写,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的;同时,以合约唯一标识对数据进行划分,使每个合约容器只缓存该合约相关的数据,避免出现同一份数据在多个合约容器内冗余缓存造成更新同步延迟和数据读脏的情况,解决合约容器间缓存数据的一致性问题。
在本发明的一个或多个实施例中,如图2所示,一种区块链系统,其包括各区块链节点以及对应每个节点管理的合约容器,本发明中所述区块链中合约容器的缓存存储有以键值对集合成的区块链状态数据,每个合约容器对应一个合约唯一标识,并且可以理解的是,每个合约容器包括一个智能合约,当多个交易进行时,每个交易共识通过后需要执行一种智能合约,也即通过其中一个合约容器来执行其中的智能合约。
此外,可以理解的是,在区块链网络中所述的交易并非特指资金交易,而是广义的数据交互,“交易”本身为区块链技术所特定的词汇,本发明对此不作赘述。
进一步可以理解的是,区块链网络中的“节点”实质上是处于区块链网络中的各服务器、装置等。
在一个或多个实施例中,所述“区块链节点1”是指对区块链交易进行接收、广播、共识、执行和存储的网络节点,一般是各区块链成员的可信服务器、工作站等,负责把用户的请求封装成交易再广播到其他区块链节点,或者根据区块链共识算法的规则对其他区块链节点广播的交易按顺序打包成区块并进行共识。对于共识通过的区块,会把区块里的每个交易按顺序交由合约容器2进行智能合约的执行处理,最后根据处理的结果生成区块并进行持久化保存。区块链节点1还提供查询数据接口和更新数据接口,给合约容器2在执行智能合约过程中需要取或存数据时进行网络调用,对区块链状态数据进行读或写,并把结果返回给合约容器2。
所述“合约容器2”是指负责执行具体智能合约逻辑的节点,内部以启动容器的方式运行,执行具体的智能合约代码,以进行业务的逻辑处理。如图3,通过在合约容器2设置数据缓存,把热点数据的<键,值>保存到内存,使智能合约执行过程中需要取或存数据时,合约容器2不需要多次与区块链节点1进行网络交互,对于热点数据只需要直接对内存进行读或写,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的。另外,通过设置数据缓存上限和每次清理数据量,使在合约容器2缓存的数据量达到数据缓存上限时,会对一部份大小为每次清理数据量的最近未被智能合约访问过的数据进行清理,使合约容器2中的数据缓存所占用的内存保持在合理的大小范围内,保证系统和硬件资源的合理使用,保障智能合约的稳定运行。
可以理解的是,各个节点以及合约容器之间可以使用任何合适的网络协议进行通信,包括在本发明提交日尚未开发出的网络协议。所述网络协议例如可以包括TCP/IP协议、UDP/IP协议、HTTP协议、HTTPS协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的RPC协议(Remote Procedure Call Protocol,远程过程调用协议)、REST协议(Representational State Transfer,表述性状态转移协议)等。
在本发明的一个或多个实施例中,如图4所示的一种区块链交易处理方法,其执行主体为区块链网络中的节点,并且需要特别指出的是,该节点可以是接收交易请求,并广播交易的“主节点”,也可以是接收“主节点”广播的交易的“备节点”,在实际应用中,任何一个接收到交易请求的节点都可以认作主节点,而在区块链网络中,主节点和备节点是去中心化的。
如图4所示,该区块链交易处理方法包括:
S11:与其他节点一同对区块链中的交易进行共识处理;所述交易通过交易唯一标识,以及包括于交易请求中的调用参数组装形成,所述调用参数包括调用的合约唯一标识,所述交易唯一标识通过对交易请求内容进行信息摘要操作得到。
S12:与其他节点一同确定自身管理的合约容器是否对应所述合约唯一标识,若是则将达成共识的交易的调用参数发送至自身管理的合约容器,以使所述合约容器根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,所述合约容器根据所述合约唯一标识以及设定索引,调用自身缓存中的区块链状态数据;所述设定索引包括键值对的对应关系。
可以理解,本方法中智能合约执行过程中需要取或存数据时,由于设置了缓存,缓存中存储了热度数据,因此合约容器不需要多次与区块链节点进行网络交互,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的;此外,更为重要的是,以合约唯一标识对数据进行划分,使每个合约容器只缓存该合约相关的数据,避免出现同一份数据在多个合约容器内冗余缓存造成更新同步延迟和数据读脏的情况,解决合约容器间缓存数据的一致性问题。
进一步可以理解的是,本发明中的区块链状态数据以键值对的形式存储在缓存中,在具体实施时对区块链数据以<合约唯一标识,键,值>进行数据建模,以<合约唯一标识,键>为粒度对数据进行划分。键值对的形式为:<键,值>,通过检索键,可以查找到对应的值。该技术可以通过键值数据库来实现,在此不做赘述。
下面具体对主节点和备节点进行说明,如若上述方法是主节点实施,则可以知晓的是,其还包括如下步骤:
S011:接收交易请求;
S012:对所述交易请求的内容进行信息摘要操作,生成交易唯一标识;
S013:将所述交易唯一标识、合约唯一标识以及调用参数组装成交易,广播到区块链的其他节点。
具体而言,信息摘要操作是把原信息用HASH函数加密成摘要,然后提取出交易唯一标识,也即交易唯一标识是唯一确定交易本身的标识。相同的道理,合约唯一标识是唯一确定智能合约的标识,换句话说,即与合约容器一一对应的标识。
上述方法仅对于一个交易请求而言,可以理解,当交易请求为多个时,按序实施上述步骤即可。
当节点是备节点时,上述方法还包括:在进行共识处理之前,接收一节点广播的交易。备节点仅需要接收主节点广播的交易,然后进行上述步骤S11和步骤S12。
可以理解,本发明提供的区块链交易处理方法,通过在合约容器中设置缓存,并将区块链状态数据以键值对形式存储在合约容器中,进而把热点数据的<键,值>保存到内存,使智能合约执行过程中需要取或存数据时,合约容器不需要多次与区块链节点进行网络交互,对于热点数据只需要直接对内存进行读或写,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的;同时,以合约唯一标识对数据进行划分,使每个合约容器只缓存该合约相关的数据,避免出现同一份数据在多个合约容器内冗余缓存造成更新同步延迟和数据读脏的情况,解决合约容器间缓存数据的一致性问题。
在本发明的一个或多个实施例中,进一步提供执行主体是合约容器的区块链交易处理方法,如图5所示,包括:
S21:接收调用参数;所述调用参数包括于交易请求中,并且包括一合约唯一标识;
S22:判断所述合约唯一标识是否与其自身对应的合约唯一标识一致;
S23:若一致,则根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,根据设定索引,调用自身缓存中的区块链状态数据;所述区块链状态数据以键值对形式被存储,所述设定索引包括键值对的对应关系。
在一些优选的实施例中,为了使得合约容器可以不断更新缓存的热数据,本方法还包括:
S021:根据所述键值对的对应关系,通过搜索键查询对应的值,若能够查询,则调用对应的值;
S022:否则从对应的节点中调用所述区块链状态数据,并生成一键值对的对应关系保存在所述设定索引中。
可以理解,对于一个合约容器,其合约唯一标识是唯一的,因此其内的所有键值对都共用一个合约唯一标识,缓存的区块链状态数据以<合约唯一标识,键,值>形式进行组织,其中<合约唯一标识,键>为查询或更新数据的索引,可以根据<合约唯一标识,键>获取对应的<值>,也可以根据<合约唯一标识,键,值>更新该<合约唯一标识,键>对应的<值>。
此外,在一些优选的实施例中,可以根据缓存的上限来清理相对“较冷”的数据,该实施例中,上述方法进一步包括:
S023:判断缓存的数据量是否小于设定缓存上限;
S024:若否,执行迭代操作,查询预设的数据热度队列中的热度低于设定阈值的数据所对应的键值对,减少查询得到的键值对的权重,并删除缓存中权重低于设定值的键值对,直至缓存的数据量小于设定缓存上限。
本实施例中,预设热度队列是根据调用次数确定,当数据调用次数较多,则热度较高,反之亦然。热度队列首先筛选出相对较冷的数据,然后从该些较冷的数据中剔除数据。
举例而言,假设设定值为0,则当数据量超过缓存上限需要清理时,上述较冷数据的键值对权重减1,然后判断每个键值对的权重是否小于0,将小于0的键值对删除,这样使得冷数据不断被剔除,缓存可以合理应用。
从上述描述可知,本方法通过在合约容器中设置缓存,并将区块链状态数据以键值对形式存储在合约容器中,进而把热点数据的<键,值>保存到内存,使智能合约执行过程中需要取或存数据时,合约容器不需要多次与区块链节点进行网络交互,对于热点数据只需要直接对内存进行读或写,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的;同时,以合约唯一标识对数据进行划分,使每个合约容器只缓存该合约相关的数据,避免出现同一份数据在多个合约容器内冗余缓存造成更新同步延迟和数据读脏的情况,解决合约容器间缓存数据的一致性问题。
下面结合具体场景对本发明进行说明。
基于数据缓存的高性能区块链处理
如图6示出一种基于数据缓存的高性能区块链处理流程图,步骤如下:
步骤S101:某个区块链节点1接收用户发给节点的交易请求,交易请求的内容包含调用合约唯一标识、调用参数等数据,根据交易请求内容进行信息摘要操作得到交易唯一标识,把交易唯一标识马上返回给用户,然后把交易唯一标识、调用合约唯一标识、调用参数等数据组装成交易,并进行后续处理。
步骤S102:某个区块链节点1把该交易广播到区块链内其他区块链节点1,其他区块链节点1会接收到该广播的交易。所以区块链节点1进行后续处理。
步骤S103:所有区块链节点1根据业务规则对交易的合法性进行判断,在合法性验证通过后,与其他区块链节点1根据既定的共识算法对交易按顺序打包成区块并进行共识,这里的共识算法可以是POW、POS、DPOS、PBFT等。
步骤S104:每个区块链节点1把共识通过的区块中的每个交易按顺序串行地,根据交易中的调用合约唯一标识,通过与本节点所管理的合约容器2建立的RPC连接,把调用参数发送给对应的合约容器2进行后续处理。
步骤S105:合约容器2接收到调用参数后,执行具体的智能合约代码,以进行业务的逻辑处理。在智能合约执行过程中,会需要取或存区块链状态数据,此时会调用接口进行操作。先判断调用参数中的合约唯一标识是否为本合约容器2的合约唯一标识。如果不是,则对本合约容器2所属的区块链节点1进行网络调用,进行数据查询或数据更新的操作,并把结果返回给合约容器2以进行后续的智能合约执行处理。如果是,则调用接口进行数据查询或数据更新的操作。智能合约执行过程中需要取或存数据时,合约容器2不需要多次与区块链节点1进行网络交互,对于热点数据只需要直接对内存进行读或写,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的。本次交易执行智能合约所有更新过的数据的<键>和对应的<值>会被记录到当前更新映射中。
步骤S106:合约容器2在每个交易调用的智能合约执行完成后,如果本次交易执行成功,则把本合约容器2的合约唯一标识和本次交易调用智能合约所有更新过的数据的<键,值>作为执行结果,返回到区块链节点1进行后续处理,然后会把当前更新映射清空。如果本次交易执行失败,则直接把当前更新映射清空。
步骤S107:每个区块链节点1接收智能合约的执行结果。
步骤S108:每个区块链节点1持久化智能合约执行过程中更新过的数据集合,即根据执行结果中的<合约唯一标识,键>更新对应的<值>。并且把每个执行完的区块持久化保存,并增加区块链账本的高度。
基于数据缓存的合约查询数据处理
如图7示出一种基于数据缓存的合约查询数据处理流程图,步骤如下:
步骤S201:合约容器2在执行智能合约的过程中需要查询区块链状态数据时,根据需要查询的数据的合约唯一标识与<键>作为参数,进行以下处理。
步骤S202:合约容器2判断调用参数中的合约唯一标识是否为本合约容器2的合约唯一标识。如果不是,则跳到步骤S205进行后续处理,如果是,则继续以下步骤。
步骤S203:合约容器2按<键>查询当前更新映射获取对应的<值>,如果查询得到,则跳到步骤S213进行后续处理,如果查询不到,则继续以下步骤。
步骤S204:合约容器2按<键>查询键值对的对应关系获取对应的<值>和权重,如果查询得到,则跳到步骤S211进行后续处理,如果查询不到,则继续以下步骤。
步骤S205:合约容器2以需要查询的数据的合约唯一标识与<键>作为参数,对本节点所属的区块链节点1的查询数据接口发起网络调用。
步骤S206:区块链节点1接收到调用请求后,根据<合约唯一标识,键>查询获取对应的<值>,把<合约唯一标识,键,值>作为查询结果返回给合约容器2。
步骤S207:合约容器2接收到查询结果后,判断查询结果中的合约唯一标识是否为本合约容器2的合约唯一标识。如果不是,则跳到步骤S213进行后续处理,如果是,则继续以下步骤。
步骤S208:合约容器2把查询结果中的<键,值>增加到键值对的对应关系232,权重初始化为0。
步骤S209:合约容器2累加缓存数据量,累加值为查询结果中的<值>所占用内存的字节数量。
步骤S210:合约容器2根据需要对键值对的对应关系进行清理操作,详细清理步骤由本发明的图9说明。
步骤S211:合约容器2把本次查询的<键>的指针插入数据热度队列的尾部。
步骤S212:合约容器2累加键值对的对应关系中本次查询的<键>对应的权重,加1。
步骤S213:合约容器2根据查询结果的<值>进行后续的智能合约处理。
基于数据缓存的合约更新数据处理
如图8所示,具体包括:
步骤S301:合约容器2在执行智能合约的过程中需要更新区块链状态数据时,根据需要更新的数据的合约唯一标识与<键,值>作为参数,进行以下处理。
步骤S302:合约容器2判断调用参数中的合约唯一标识是否为本合约容器2的合约唯一标识。如果是,则跳到步骤S306进行后续处理,如果不是,则继续以下步骤。
步骤S303:合约容器2以需要更新的数据的合约唯一标识与<键,值>作为参数,对本节点所属的区块链节点1的更新数据接口发起网络调用。
步骤S304:区块链节点1接收到调用请求后,通过调用接口,根据<合约唯一标识,键,值>更新该<合约唯一标识,键>对应的<值>,然后把更新结果返回给合约容器2。
步骤S305:合约容器2接收到更新结果后,跳到步骤S313进行后续处理。
步骤S306:合约容器2按需要更新的数据的<键>更新当前更新映射233中对应的<值>。
步骤S307:合约容器2根据更新结果进行后续的智能合约处理。
清理数据缓存处理
如图9示出一种清理数据缓存的处理流程图,步骤如下:
步骤S401:合约容器2判断累加缓存数据量是否已经大于容量控制模块25设置的数据缓存上限。如果是,则跳到步骤S409进行后续处理,如果不是,则继续以下步骤。
步骤S402:合约容器2初始化当前清理数据量为0。
步骤S403:合约容器2弹出数据热度队列的头部第一个元素作为指针。
步骤S404:合约容器2根据上述指针指向的<键>扣减键值对的对应关系232对应的权重,减1。
步骤S405:合约容器2判断上述权重在扣减后是否为0,如果不是,则跳到步骤S403继续处理,如果是,则继续以下步骤。
步骤S406:合约容器2删除键值对的对应关系中的上述<键>及对应的<值>和权重。
步骤S407:合约容器2累加当前清理数据量,累加值为上述<值>所占用内存的字节数量。
步骤S408:合约容器2判断当前清理数据量是否不小于设置的每次清理数据量,如果不是,则跳到步骤S403继续处理,如果是,则继续以下步骤。
步骤S409:合约容器2结束清理流程。
从上述场景可以知晓,本发明提供了一种基于数据缓存的高性能区块链处理系统和方法,具有以下效果与优点:
1、通过在合约容器设置数据缓存,把热点数据的<键,值>保存到内存,使智能合约执行过程中需要取或存数据时,合约容器不需要多次与区块链节点进行网络交互,对于热点数据只需要直接对内存进行读或写,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的。
2、通过设置数据缓存上限和每次清理数据量,使在合约容器缓存的数据量达到数据缓存上限时,会对一部份大小为每次清理数据量的最近未被智能合约访问过的数据进行清理,使合约容器中的数据缓存所占用的内存保持在合理的大小范围内,保证系统和硬件资源的合理使用,保障智能合约的稳定运行。
3、以合约唯一标识对数据进行划分,使每个合约容器只缓存该合约相关的数据,避免出现同一份数据在多个合约容器内冗余缓存造成更新同步延迟和数据读脏的情况,解决合约容器间缓存数据的一致性问题。
基于相同的发明构思,本发明实施例进一步提供一种区块链中的节点,如图10所示,一种区块链中的节点,所述区块链中合约容器的缓存存储有以键值对集合成的区块链状态数据,每个合约容器对应一个合约唯一标识,所述节点包括:
共识处理模块11,与其他节点一同对区块链中的交易进行共识处理;所述交易通过交易唯一标识,以及包括于交易请求中的调用参数组装形成,所述调用参数包括调用的合约唯一标识,所述交易唯一标识通过对交易请求内容进行信息摘要操作得到;
调用参数发送模块12,与其他节点一同确定自身管理的合约容器是否对应所述合约唯一标识,若是则将达成共识的交易的调用参数发送至自身管理的合约容器,以使所述合约容器根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,所述合约容器根据所述合约唯一标识以及设定索引,调用自身缓存中的区块链状态数据;所述设定索引包括键值对的对应关系。
在优选的实施例中,还包括:
交易请求接收模块,接收交易请求;
交易唯一标识生成模块,对所述交易请求的内容进行信息摘要操作,生成交易唯一标识;
交易广播模块,将所述交易唯一标识、合约唯一标识以及调用参数组装成交易,广播到区块链的其他节点。
在优选的实施例中,还包括:
交易接收模块,接收一节点广播的交易。
在优选的实施例中,还包括:
键值对存储模块,以键值对的形式存储交易结果数据以及区块链状态数据,并生成合约唯一标识与存储的键值对的对应关系索引。
进一步的,基于相同的发明构思,本发明实施例还提供一种区块链中的合约容器,如图11所示,包括:
调用参数接收模块21,接收调用参数;所述调用参数包括于交易请求中,并且包括一合约唯一标识;
合约唯一标识判断模块22,判断所述合约唯一标识是否与其自身对应的合约唯一标识一致;
智能合约执行模块23,若一致,则根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,根据设定索引,调用自身缓存中的区块链状态数据;所述区块链状态数据以键值对形式被存储,所述设定索引包括键值对的对应关系。
在优选的实施例中,所述智能合约执行模块,包括:
值查询单元,根据所述键值对的对应关系,通过搜索键查询对应的值,若能够查询,则调用对应的值;
键值对对应关系生成单元,否则从对应的节点中调用所述区块链状态数据,并生成一键值对的对应关系保存在所述设定索引中。
在优选的实施例中,还包括:
缓存上限判断模块,判断缓存的数据量是否小于设定缓存上限;
迭代更新模块,若否,执行迭代操作,查询预设的数据热度队列中的热度低于设定阈值的数据所对应的键值对,减少查询得到的键值对的权重,并删除缓存中权重低于设定值的键值对,直至缓存的数据量小于设定缓存上限。
基于与本发明上述方法实施例中相同的理由,本发明提供的区块链中的节点及合约容器,通过在合约容器中设置缓存,并将区块链状态数据以键值对形式存储在合约容器中,进而把热点数据的<键,值>保存到内存,使智能合约执行过程中需要取或存数据时,合约容器不需要多次与区块链节点进行网络交互,对于热点数据只需要直接对内存进行读或写,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的;同时,以合约唯一标识对数据进行划分,使每个合约容器只缓存该合约相关的数据,避免出现同一份数据在多个合约容器内冗余缓存造成更新同步延迟和数据读脏的情况,解决合约容器间缓存数据的一致性问题。
从硬件层面来说,为了解决合约容器间缓存数据的一致性问题,本发明提供一种用于实现所述区块链交易处理方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:
处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现服务器、装置、分布式消息中间件集群装置、各类数据库以及用户终端等相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例中的区块链交易处理方法的实施例,以及,区块链交易处理装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。
图12为本发明实施例的电子设备9600的系统构成的示意框图。如图12所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图12是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
一实施例中,区块链交易处理功能可以被集成到中央处理器9100中。例如,中央处理器9100可以被配置为进行如下控制:
S11:与其他节点一同对区块链中的交易进行共识处理;所述交易通过交易唯一标识,以及包括于交易请求中的调用参数组装形成,所述调用参数包括调用的合约唯一标识,所述交易唯一标识通过对交易请求内容进行信息摘要操作得到。
S12:与其他节点一同确定自身管理的合约容器是否对应所述合约唯一标识,若是则将达成共识的交易的调用参数发送至自身管理的合约容器,以使所述合约容器根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,所述合约容器根据所述合约唯一标识以及设定索引,调用自身缓存中的区块链状态数据;所述设定索引包括键值对的对应关系。
从上述描述可知,本发明的实施例提供的电子设备,通过在合约容器中设置缓存,并将区块链状态数据以键值对形式存储在合约容器中,进而把热点数据的<键,值>保存到内存,使智能合约执行过程中需要取或存数据时,合约容器不需要多次与区块链节点进行网络交互,对于热点数据只需要直接对内存进行读或写,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的;同时,以合约唯一标识对数据进行划分,使每个合约容器只缓存该合约相关的数据,避免出现同一份数据在多个合约容器内冗余缓存造成更新同步延迟和数据读脏的情况,解决合约容器间缓存数据的一致性问题。
在另一个实施方式中,区块链交易处理装置可以与中央处理器9100分开配置,例如可以将区块链交易处理配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现区块链交易处理功能。
如图12所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图12中所示的所有部件;此外,电子设备9600还可以包括图12中没有示出的部件,可以参考现有技术。
如图12所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。
其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。
输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。
存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。
本发明的实施例还提供能够实现上述实施例中的区块链交易处理方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中区块链交易处理方法的全部步骤。
从上述描述可知,本发明的实施例提供的计算机可读存储介质,通过在合约容器中设置缓存,并将区块链状态数据以键值对形式存储在合约容器中,进而把热点数据的<键,值>保存到内存,使智能合约执行过程中需要取或存数据时,合约容器不需要多次与区块链节点进行网络交互,对于热点数据只需要直接对内存进行读或写,提高区块链中交易执行智能合约的执行速度,以达到提高区块链性能的目的;同时,以合约唯一标识对数据进行划分,使每个合约容器只缓存该合约相关的数据,避免出现同一份数据在多个合约容器内冗余缓存造成更新同步延迟和数据读脏的情况,解决合约容器间缓存数据的一致性问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (16)
1.一种区块链交易处理方法,其特征在于,所述区块链中合约容器的缓存存储有以键值对集合成的区块链状态数据,每个合约容器对应一个合约唯一标识,所述区块链交易处理方法包括:
与其他节点一同对区块链中的交易进行共识处理;所述交易通过交易唯一标识,以及包括于交易请求中的调用参数组装形成,所述调用参数包括调用的合约唯一标识,所述交易唯一标识通过对交易请求内容进行信息摘要操作得到;
与其他节点一同确定自身管理的合约容器是否对应所述合约唯一标识,若是则将达成共识的交易的调用参数发送至自身管理的合约容器,以使所述合约容器根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,所述合约容器根据所述合约唯一标识以及设定索引,调用自身缓存中的区块链状态数据;所述设定索引包括键值对的对应关系。
2.根据权利要求1所述的区块链交易处理方法,其特征在于,还包括:
接收交易请求;
对所述交易请求的内容进行信息摘要操作,生成交易唯一标识;
将所述交易唯一标识、合约唯一标识以及调用参数组装成交易,广播到区块链的其他节点。
3.根据权利要求1所述的区块链交易处理方法,其特征在于,在进行共识处理之前,还包括:
接收一节点广播的交易。
4.根据权利要求1所述的区块链交易处理方法,其特征在于,还包括:
以键值对的形式存储交易结果数据以及区块链状态数据,并生成合约唯一标识与存储的键值对的对应关系索引。
5.一种区块链交易处理方法,其特征在于,包括:
接收调用参数;所述调用参数包括于交易请求中,并且包括一合约唯一标识;
判断所述合约唯一标识是否与其自身对应的合约唯一标识一致;
若一致,则根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,根据设定索引,调用自身缓存中的区块链状态数据;所述区块链状态数据以键值对形式被存储,所述设定索引包括键值对的对应关系。
6.根据权利要求5所述的区块链交易处理方法,其特征在于,所述根据设定索引,调用自身缓存中的区块链状态数据,包括:
根据所述键值对的对应关系,通过搜索键查询对应的值,若能够查询,则调用对应的值;
否则从对应的节点中调用所述区块链状态数据,并生成一键值对的对应关系保存在所述设定索引中。
7.根据权利要求6所述的区块链交易处理方法,其特征在于,还包括:
判断缓存的数据量是否小于设定缓存上限;
若否,执行迭代操作,查询预设的数据热度队列中的热度低于设定阈值的数据所对应的键值对,减少查询得到的键值对的权重,并删除缓存中权重低于设定值的键值对,直至缓存的数据量小于设定缓存上限。
8.一种区块链中的节点,其特征在于,所述区块链中合约容器的缓存存储有以键值对集合成的区块链状态数据,每个合约容器对应一个合约唯一标识,所述节点包括:
共识处理模块,与其他节点一同对区块链中的交易进行共识处理;所述交易通过交易唯一标识,以及包括于交易请求中的调用参数组装形成,所述调用参数包括调用的合约唯一标识,所述交易唯一标识通过对交易请求内容进行信息摘要操作得到;
调用参数发送模块,与其他节点一同确定自身管理的合约容器是否对应所述合约唯一标识,若是则将达成共识的交易的调用参数发送至自身管理的合约容器,以使所述合约容器根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,所述合约容器根据所述合约唯一标识以及设定索引,调用自身缓存中的区块链状态数据;所述设定索引包括键值对的对应关系。
9.根据权利要求8所述的节点,其特征在于,还包括:
交易请求接收模块,接收交易请求;
交易唯一标识生成模块,对所述交易请求的内容进行信息摘要操作,生成交易唯一标识;
交易广播模块,将所述交易唯一标识、合约唯一标识以及调用参数组装成交易,广播到区块链的其他节点。
10.根据权利要求8所述的节点,其特征在于,还包括:
交易接收模块,接收一节点广播的交易。
11.根据权利要求8所述的节点,其特征在于,还包括:
键值对存储模块,以键值对的形式存储交易结果数据以及区块链状态数据,并生成合约唯一标识与存储的键值对的对应关系索引。
12.一种区块链中的合约容器,其特征在于,包括:
调用参数接收模块,接收调用参数;所述调用参数包括于交易请求中,并且包括一合约唯一标识;
合约唯一标识判断模块,判断所述合约唯一标识是否与其自身对应的合约唯一标识一致;
智能合约执行模块,若一致,则根据所述调用参数执行智能合约;其中,在所述智能合约被执行过程中,根据设定索引,调用自身缓存中的区块链状态数据;所述区块链状态数据以键值对形式被存储,所述设定索引包括键值对的对应关系。
13.根据权利要求12所述的合约容器,其特征在于,所述智能合约执行模块,包括:
值查询单元,根据所述键值对的对应关系,通过搜索键查询对应的值,若能够查询,则调用对应的值;
键值对对应关系生成单元,否则从对应的节点中调用所述区块链状态数据,并生成一键值对的对应关系保存在所述设定索引中。
14.根据权利要求13所述的合约容器,其特征在于,还包括:
缓存上限判断模块,判断缓存的数据量是否小于设定缓存上限;
迭代更新模块,若否,执行迭代操作,查询预设的数据热度队列中的热度低于设定阈值的数据所对应的键值对,减少查询得到的键值对的权重,并删除缓存中权重低于设定值的键值对,直至缓存的数据量小于设定缓存上限。
15.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7任一项所述的区块链交易处理方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7任一项所述的区块链交易处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010111657.0A CN111340470B (zh) | 2020-02-24 | 2020-02-24 | 区块链交易处理方法、节点及合约容器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010111657.0A CN111340470B (zh) | 2020-02-24 | 2020-02-24 | 区块链交易处理方法、节点及合约容器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111340470A CN111340470A (zh) | 2020-06-26 |
CN111340470B true CN111340470B (zh) | 2023-04-18 |
Family
ID=71183582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010111657.0A Active CN111340470B (zh) | 2020-02-24 | 2020-02-24 | 区块链交易处理方法、节点及合约容器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111340470B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111917865B (zh) * | 2020-07-29 | 2022-09-20 | 成都质数斯达克科技有限公司 | 区块链网络系统、网关以及组网方法 |
CN112330453B (zh) * | 2020-11-23 | 2024-05-10 | 杭州趣链科技有限公司 | 基于区块链的智能合约调用方法、装置、设备和存储介质 |
CN112559635B (zh) * | 2020-12-23 | 2023-06-16 | 网易(杭州)网络有限公司 | 以太坊联盟链节点的业务处理方法、装置、设备及介质 |
CN112612807B (zh) * | 2020-12-31 | 2022-07-05 | 浙江融象数科控股有限公司 | 分布式事务数据一致性系统设计方法 |
CN113094396B (zh) * | 2021-01-18 | 2022-07-26 | 腾讯科技(深圳)有限公司 | 基于节点内存的数据处理方法、装置、设备以及介质 |
CN113010115B (zh) * | 2021-03-18 | 2022-11-22 | 腾讯科技(深圳)有限公司 | 区块链节点中的数据处理方法及相关设备 |
CN112883067A (zh) * | 2021-04-30 | 2021-06-01 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN113327167B (zh) * | 2021-06-24 | 2024-03-22 | 深圳前海微众银行股份有限公司 | 一种区块链数据处理方法 |
CN113360252B (zh) * | 2021-08-11 | 2021-11-23 | 北京微芯感知科技有限公司 | 基于容器的加速智能合约执行方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108572986A (zh) * | 2017-03-13 | 2018-09-25 | 华为软件技术有限公司 | 一种数据更新的方法及节点设备 |
CN108874372A (zh) * | 2018-06-20 | 2018-11-23 | 北京连琪科技有限公司 | 一种基于Scala的区块链合约实现方法及系统 |
CN110390525A (zh) * | 2019-07-31 | 2019-10-29 | 中国工商银行股份有限公司 | 区块链世界状态的直接访问方法及区块链节点 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10528551B2 (en) * | 2017-09-29 | 2020-01-07 | Oracle International Corporation | System and method for providing a representational state transfer proxy service for a blockchain cloud service |
US11227457B2 (en) * | 2017-12-02 | 2022-01-18 | International Business Machines Corporation | Blockchain managed storage |
CN108898390B (zh) * | 2018-06-27 | 2021-01-12 | 创新先进技术有限公司 | 基于区块链的智能合约调用方法及装置、电子设备 |
-
2020
- 2020-02-24 CN CN202010111657.0A patent/CN111340470B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108572986A (zh) * | 2017-03-13 | 2018-09-25 | 华为软件技术有限公司 | 一种数据更新的方法及节点设备 |
CN108874372A (zh) * | 2018-06-20 | 2018-11-23 | 北京连琪科技有限公司 | 一种基于Scala的区块链合约实现方法及系统 |
CN110390525A (zh) * | 2019-07-31 | 2019-10-29 | 中国工商银行股份有限公司 | 区块链世界状态的直接访问方法及区块链节点 |
Also Published As
Publication number | Publication date |
---|---|
CN111340470A (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111340470B (zh) | 区块链交易处理方法、节点及合约容器 | |
CN113094396B (zh) | 基于节点内存的数据处理方法、装置、设备以及介质 | |
CN110830581B (zh) | 提升区块链响应速度的方法、区块链应用系统及相关设备 | |
CN102682037A (zh) | 一种数据获取方法、系统及装置 | |
US8903972B2 (en) | Method and apparatus for sharing contents using information of group change in content oriented network environment | |
US20120278448A1 (en) | Method and System for Accessing Microblog, and Method and System for Sending Pictures on Microblog Website | |
CN106326499B (zh) | 一种数据处理方法及装置 | |
US9628567B2 (en) | Methods and systems for efficient discovery of devices in a peer-to-peer network | |
CN112565334B (zh) | 物联网设备的接入方法、装置及mqtt网关 | |
CN105095313A (zh) | 一种数据访问方法和设备 | |
CN112767110A (zh) | 大数据分散上链方法及系统 | |
CN112711612A (zh) | 数据处理方法、装置和存储介质及电子装置 | |
CN113077259A (zh) | 基于区块链的存证方法、装置及电子设备 | |
CN112256772A (zh) | 数据服务方法、装置以及可读存储介质 | |
CN101673217B (zh) | 一种实现远端程序调用的方法和系统 | |
CN109947718A (zh) | 一种数据存储方法、存储平台及存储装置 | |
CN112396511A (zh) | 分布式风控变量数据处理方法、装置及系统 | |
CN116233254A (zh) | 业务切流方法、装置、计算机设备和存储介质 | |
CN104378396B (zh) | 数据管理装置及方法 | |
CN111767118B (zh) | 基于分布式文件系统的容器存储空间处理方法及装置 | |
CN101819589B (zh) | 一种控制文件输入输出缓存的方法及装置 | |
CN111090530B (zh) | 一种分布式跨进程间通信总线系统 | |
CN115794876A (zh) | 针对业务数据包的分片处理方法、装置、设备及存储介质 | |
CN101287096A (zh) | 实现标识转换的卡及转换方法 | |
CN112035557B (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 |