合约数据处理方法、装置、计算机可读存储介质和计算机设备转让专利
申请号 : CN201910853888.6
文献号 : CN110569264B
文献日 : 2021-04-09
发明人 : 李茂材 , 刘区城 , 王宗友 , 孔利 , 蓝虎 , 杨常青 , 时一防 , 周开班 , 朱耿良 , 陈秋平 , 张劲松 , 刘攀
申请人 : 腾讯科技(深圳)有限公司
摘要 :
权利要求 :
1.一种合约数据处理方法,包括:获取各个待处理交易对应的智能合约方法;
获取目标块,基于合约缓存创建所述目标块对应的块缓存,基于所述块缓存创建与各个所述待处理交易对应的初始交易缓存;块缓存用于缓存所有待处理交易对应的交易结果,各个所述待处理交易对应的初始交易缓存用于缓存执行对应的智能合约方法产生的交易结果;在各个所述初始交易缓存中并行执行对应的智能合约方法,得到各个待处理交易对应的交易结果,根据各个待处理交易对应的交易结果更新各个待处理交易对应的初始交易缓存得到各个所述待处理交易对应的更新交易缓存;
按交易顺序和各个所述待处理交易对应的更新交易缓存的类型依次将各个所述更新交易缓存合并至所述块缓存;所述更新交易缓存的类型包括更新交易读缓存和更新交易写缓存;
当当前待合并更新交易缓存与所述块缓存中的历史已合并交易缓存数据无资源冲突时,将所述当前待合并更新交易缓存合并至所述块缓存中;当当前待合并更新交易缓存与所述块缓存中的历史已合并交易缓存数据存在资源冲突时,则基于所述块缓存重新执行所述当前待合并更新交易缓存对应的智能合约方法,将执行结果对应的交易缓存合并至所述块缓存;其中,当当前待合并更新交易缓存与所述块缓存中的历史已合并交易缓存数据存在交集时,判定当前待合并更新交易缓存与所述块缓存中的历史已合并交易缓存数据存在资源冲突;
当当前待合并更新交易缓存对应的智能合约方法被执行的次数达到预设次数时所对应的执行结果与所述块缓存存在资源冲突时,丢弃所述当前待合并更新交易缓存;
直到各个待处理交易对应的更新交易缓存合并完成,得到目标块缓存;
根据所述目标块缓存生成更新块。
2.根据权利要求1所述的方法,其特征在于,所述基于合约缓存创建所述目标块对应的块缓存,创建与各个所述待处理交易对应的初始交易缓存,包括:基于合约缓存为所述目标块创建对应的块读缓存和块写缓存;
基于所述块读缓存和所述块写缓存为各个所述待处理交易创建对应的初始交易读缓存和初始交易写缓存。
3.根据权利要求2所述的方法,其特征在于,所述在各个所述初始交易缓存中并行执行对应的智能合约方法,得到各个所述待处理交易对应的更新交易缓存,包括:在各个所述待处理交易对应的初始交易读缓存中并行执行对应的智能合约方法,得到各个所述待处理交易对应的更新交易读缓存;
在各个所述待处理交易对应的初始交易写缓存中并行执行对应的智能合约方法,得到各个所述待处理交易对应的更新交易写缓存。
4.根据权利要求3所述的方法,其特征在于,所述按交易顺序依次将各个所述更新交易缓存合并至所述块缓存,包括:
获取各个所述待处理交易对应的交易顺序;
根据所述交易顺序依次将各个所述待处理交易对应的更新交易写缓存合并至所述块写缓存中。
5.根据权利要求1所述的方法,其特征在于,所述当前待合并更新交易缓存为当前更新交易写缓存或当前更新交易读缓存,所述初始交易缓存包括初始交易读缓存和初始交易写缓存,所述当前更新交易写缓存是当前待处理交易在当前初始交易写缓存中执行对应的智能合约方法得到的,所述当前更新交易读缓存是所述当前待处理交易在当前初始交易读缓存中执行对应的智能合约方法得到的,所述块缓存包括块读缓存和块写缓存;
所述当当前待合并更新交易缓存与所述块缓存中的历史已合并交易缓存数据存在资源冲突时,包括:
当所述当前待合并更新交易缓存为当前更新交易写缓存时,获取所述块写缓存中的历史已合并交易缓存数据,所述历史已合并交易缓存数据是已处理交易对应的更新交易写缓存,待处理交易对应的更新交易缓存合并至所述块缓存后更新为已处理交易;
当所述当前更新交易写缓存与至少一个所述历史已合并交易缓存数据存在交集时,则确定所述当前待合并更新交易缓存与所述块缓存中的历史已合并交易缓存数据存在资源冲突。
6.根据权利要求5所述的方法,其特征在于,所述当所述当前更新交易写缓存与至少一个所述历史已合并交易缓存数据存在交集时,包括:获取所述当前更新交易写缓存对应的当前交易写键值对,所述当前交易写键值对包括当前键和对应的当前值;
获取所述历史已合并交易缓存数据对应的历史交易写键值对,所述历史交易写键值对包括历史键和对应的历史值;
当各个所述历史键中存在至少一个与所述当前键相同的目标历史键时,则确定所述当前更新交易写缓存与至少一个所述历史已合并交易缓存数据存在交集。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:获取所述当前待处理交易对应的当前更新交易读缓存,将所述当前更新交易读缓存作为所述待合并更新交易缓存;
当所述当前更新交易读缓存与至少一个所述历史已合并交易缓存数据存在交集时,则确定所述当前待合并更新交易缓存与所述块缓存中的历史已合并交易缓存数据存在资源冲突。
8.根据权利要求7所述的方法,其特征在于,所述当所述当前更新交易读缓存与至少一个所述历史已合并交易缓存数据存在交集时,包括:获取所述当前更新交易读缓存对应的当前交易读键值对,所述当前交易读键值对包括当前键和对应的当前值;
获取所述历史已合并交易缓存数据对应的历史交易写键值对,所述历史交易写键值对包括历史键和对应的历史值;
当各个所述历史键中存在至少一个与所述当前键相同的目标历史键时,则确定所述当前更新交易读缓存与至少一个所述历史已合并交易缓存数据存在交集。
9.一种合约数据处理装置,其特征在于,所述装置包括:智能合约方法获取模块,用于获取各个待处理交易对应的智能合约方法;
缓存空间创建模块,用于获取目标块,基于合约缓存创建所述目标块对应的块缓存,基于所述块缓存创建与各个所述待处理交易对应的初始交易缓存;块缓存用于缓存所有待处理交易对应的交易结果,各个所述待处理交易对应的初始交易缓存用于缓存执行对应的智能合约方法产生的交易结果;初始交易缓存更新模块,用于在各个所述初始交易缓存中并行执行对应的智能合约方法,得到各个待处理交易对应的交易结果,根据各个待处理交易对应的交易结果更新各个待处理交易对应的初始交易缓存得到各个所述待处理交易对应的更新交易缓存;
更新交易缓存合并模块,用于按交易顺序和各个所述待处理交易对应的更新交易缓存的类型依次将各个所述更新交易缓存合并至所述块缓存;所述更新交易缓存的类型包括更新交易读缓存和更新交易写缓存;资源冲突检测模块,用于当当前待合并更新交易缓存与所述块缓存中的历史已合并交易缓存数据无资源冲突时,将所述当前待合并更新交易缓存合并至所述块缓存中;
所述资源冲突检测模块还用于当当前待合并更新交易缓存与所述块缓存中的历史已合并交易缓存数据存在资源冲突时,则基于所述块缓存重新执行所述当前待合并更新交易缓存对应的智能合约方法,将执行结果对应的交易缓存合并至所述块缓存;当当前待合并更新交易缓存对应的智能合约方法被执行的次数达到预设次数时所对应的执行结果与所述块缓存存在资源冲突时,丢弃所述当前待合并更新交易缓存;直到各个待处理交易对应的更新交易缓存合并完成,得到目标块缓存;
其中,当当前待合并更新交易缓存与所述块缓存中的历史已合并交易缓存数据存在交集时,判定当前待合并更新交易缓存与所述块缓存中的历史已合并交易缓存数据存在资源冲突;
目标块缓存合并模块,用于根据所述目标块缓存生成更新块。
10.根据权利要求9所述的装置,其特征在于,所述缓存空间创建模块包括:块子缓存创建单元,用于基于合约缓存为所述目标块创建对应的块读缓存和块写缓存;
交易子缓存创建单元,用于基于所述块读缓存和所述块写缓存为各个所述待处理交易创建对应的初始交易读缓存和初始交易写缓存。
11.根据权利要求10所述的装置,其特征在于,所述初始交易缓存更新模块包括:初始交易读缓存执行单元,用于在各个所述待处理交易对应的初始交易读缓存中并行执行对应的智能合约方法,得到各个所述待处理交易对应的更新交易读缓存;
初始交易写缓存执行单元,用于在各个所述待处理交易对应的初始交易写缓存中并行执行对应的智能合约方法,得到各个所述待处理交易对应的更新交易写缓存。
12.根据权利要求11所述的装置,其特征在于,所述更新交易缓存合并模块包括:交易顺序确定单元,用于获取各个所述待处理交易对应的交易顺序;
更新交易写缓存合并单元,用于根据所述交易顺序依次将各个所述待处理交易对应的更新交易写缓存合并至所述块写缓存中。
13.根据权利要求9所述的装置,其特征在于,所述当前待合并更新交易缓存为当前更新交易写缓存或当前更新交易读缓存,所述初始交易缓存包括初始交易读缓存和初始交易写缓存,所述当前更新交易写缓存是当前待处理交易在当前初始交易写缓存中执行对应的智能合约方法得到的,所述当前更新交易读缓存是所述当前待处理交易在当前初始交易读缓存中执行对应的智能合约方法得到的,所述块缓存包括块读缓存和块写缓存;
所述装置还用于:
当所述待合并更新交易缓存为当前更新交易写缓存时,获取所述块写缓存中的历史已合并交易缓存数据,所述历史已合并交易缓存数据是已处理交易对应的更新交易写缓存,所述待处理交易对应的更新交易缓存合并至所述块缓存后更新为所述已处理交易;
当所述当前更新交易写缓存与至少一个所述历史已合并交易缓存数据存在交集时,则确定所述当前待合并更新交易缓存与所述块缓存中的历史已合并交易缓存数据存在资源冲突。
14.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至8中任一项所述方法的步骤。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至8中任一项所述方法的步骤。
说明书 :
合约数据处理方法、装置、计算机可读存储介质和计算机设备
通过引用结合在本申请中。
技术领域
背景技术
可信交易,这些交易可追踪且不可逆转。然而,目前只能按照待处理交易的交易顺序依次执
行对应的智能合约方法,若短时间内出现请求量较大的业务场景,则目前智能合约方法的
串行方法容易造成智能合约方法的执行效率低下。
发明内容
交易缓存对应的智能合约方法,将执行结果对应的交易缓存合并至块缓存;
缓存执行当前待合并更新交易缓存对应的智能合约方法,将执行结果对应的交易缓存合并
至块缓存;
交易缓存对应的智能合约方法,将执行结果对应的交易缓存合并至块缓存;
交易缓存对应的智能合约方法,将执行结果对应的交易缓存合并至块缓存;
与各个待处理交易对应的初始交易缓存,在各个初始交易缓存中并行执行对应的智能合约
方法,得到各个待处理交易对应的更新交易缓存,按交易顺序依次将各个更新交易缓存合
并至块缓存,当当前待合并更新交易缓存与块缓存中的历史已合并交易缓存数据无资源冲
突时,将当前待合并更新交易缓存合并至块缓存中,当当前待合并更新交易缓存与块缓存
中的历史已合并交易缓存数据存在资源冲突时,则基于块缓存重新创建对应的中间交易缓
存,在中间交易缓存执行当前待合并更新交易缓存对应的智能合约方法,将执行结果对应
的交易缓存合并至块缓存,直到各个待处理交易对应的更新交易缓存合并至块缓存中得到
目标块缓存,根据目标块缓存生成更新块。
并行执行对应的智能合约方法,提高了智能合约方法的执行效率。进一步地,在各自的初始
交易中并行执行对应的智能合约方法得到对应的更新交易缓存,再按照交易顺序依次将各
个更新交易缓存合并至块缓存中,在合并过程中,通过检测当前待处理交易对应的当前待
合并更新交易缓存与块缓存中历史合并交易缓存数据是否存在资源冲突,当不存在资源冲
突时,将各个待处理交易对应的更新交易缓存合并至块缓存中得到目标块缓存,最后根据
目标块缓存生成更新块,合并过程中是否存在资源冲突的检测不需要通过分析智能合约方
法的字节码才能检测出来,提高了合约冲突检测的全面性和准确性。
附图说明
具体实施方式
不用于限定本申请。
服务器120通过网络连接。终端110具体可以是台式终端或移动终端,移动终端具体可以手
机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是至少一
个服务器组成的服务器集群来实现。其中,服务器120为一个节点,节点中保存有一条完整
的区块链,区块链包括至少一个区块。
对应的块缓存,创建与各个待处理交易对应的初始交易缓存,在各个初始交易缓存中并行
执行对应的智能合约方法,得到各个待处理交易对应的更新交易缓存,按交易顺序依次将
各个更新交易缓存合并至块缓存,当当前待合并更新交易缓存与块缓存中的历史已合并交
易缓存数据无资源冲突时,将当前待合并更新交易缓存合并至块缓存中,当当前待合并更
新交易缓存与块缓存中的历史已合并交易缓存数据存在资源冲突时,则基于块缓存重新创
建对应的中间交易缓存,在中间交易缓存执行当前待合并更新交易缓存对应的智能合约方
法,将执行结果对应的交易缓存合并至块缓存,直到各个待处理交易对应的更新交易缓存
合并至块缓存中得到目标块缓存,根据目标块缓存生成更新块。
以该方法应用于上述图1中的服务器120来举例说明。参照图2,该合约数据处理方法具体包
括如下步骤:
包括至少一个待处理交易,待处理交易为等待处理的交易。其中,这里的待处理交易存在对
应智能合约方法,存在对应的智能合约方法的待处理交易可创建对应的初始交易缓存,而
不存在对应的智能合约方法的待处理交易无需创建对应的初始交易缓存。
时区块链作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数
据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一
个区块。而智能合约是区块链被称之为“去中心化的”重要原因,它允许不需要第三方的情
况下,执行可追溯、不可逆转和安全的交易。
包括至少一个变量以及对应的合约方法,这里的智能合约方法是指智能合约中的合约方
法。
约方法,将变量对应的合约方法作为对应的待处理交易对应的智能合约方法。
存所有待处理交易对应的交易结果的,而初始交易缓存是用来缓存各个待处理交易执行对
应的智能合约方法产生的交易结果的。各个待处理交易在执行对应的智能合约方法时,智
能合约方法所带来的改动都会缓存至对应的初始交易缓存中,而各个待处理交易执行对应
的智能合约方法产生的交易结果都可合并至块缓存中。即,块缓存中暂时保存了所有待处
理交易对应的交易结果。
对应的初始交易缓存。这里的合约缓存是指用来保存各个待处理交易对应的智能合约方法
的,各个待处理交易从数据库中获取对应的智能合约方法后,将获取到的智能合约方法统
一放入合约缓存保存。其中,合约缓存包括合约读缓存和合约写缓存,合约读缓存用来记录
智能合约方法的读访问情况,合约写缓存用来记录智能合约方法的写访问情况。
存和写缓存。其中,待处理交易在对应的初始交易缓存对应的读缓存和写缓存分别执行对
应的智能合约方法,分别得到初始交易缓存的读缓存对应的交易结果,和初始交易缓存的
写缓存对应的交易结果,最后将初始交易缓存的读缓存对应的交易结果合并至块缓存对应
的读缓存中,将初始交易缓存的写缓存对应的交易结果合并至块缓存对应的写缓存中。
个待处理交易对应的初始交易缓存中执行对应的智能合约方法,从而得到各个待处理交易
对应的更新交易缓存。即,智能合约是一套以数字形式定义的承诺,在获取到各个待处理交
易对应的智能合约方法后,需要各个待处理交易根据对应的智能合约方法所规定的协议执
行,因此得到各个待处理交易对应的交易结果,根据交易结果更新初始交易缓存,即将交易
结果保存至更新交易缓存中。这里的交易结果是各个待处理交易在对应的交易缓存中执行
对应的智能合约方法,智能合约方法所带来的改动结果都可作为对应的交易结果。
存中执行对应的智能合约方法。
时间的交易时间确定交易顺序,这里的交易时间是指各个待处理交易对应的交易时间点。
而交易顺序是指各个待处理交易之间的交易次序,可根据各个待处理交易对应的交易时间
确定各个待处理交易对应的交易顺序。具体地,根据交易请求可直接获取各个待处理交易
对应的交易顺序。
结果,也就是说,块缓存中包括了更新交易缓存中的各个待处理交易对应的交易结果。
写缓存分别执行对应的智能合约方法,分别得到初始交易缓存的读缓存对应的交易结果,
和初始交易缓存的写缓存对应的交易结果,再根据交易结果更新初始交易缓存,得到更新
交易缓存。
易缓存的写缓存对应的交易结果合并至块缓存对应的写缓存中,即根据交易顺序依次将各
个待处理交易对应的更新交易缓存合并至块缓存中。
易与块缓存中的已合并交易缓存数据存在竞争关系,只有当前待处理交易与块缓存中的已
合并交易缓存数据无竞争关系时,则将当前待合并更新交易缓存合并至块缓存中。
果所在的待合并更新交易缓存,具体可以是将当前待处理交易对应的更新交易缓存作为待
合并更新交易缓存,由于各个待处理交易对应的更新交易缓存暂时保存了对应的交易结
果,即将更新交易缓存合并至块缓存中就是将各个待处理交易对应的交易结果合并至块缓
存中,成功将交易结果合并至块缓存的待处理交易更新为已处理交易,即块缓存中暂时保
存了已处理交易的所有交易结果,即历史已合并交易缓存数据。这里的已处理交易是指待
处理交易对应的更新交易缓存成功合并至块缓存更新之后的处理交易,即已经成功将对应
的更新交易缓存合并至块缓存的处理交易。
更新交易缓存与块缓存中历史已合并交易缓存数据无资源冲突时,将当前待合并更新交易
缓存合并至块缓存中,即在合并过程中,当前待处理交易对应的智能合约方法与已处理交
易对应的智能合约方法之间部存在冲突,即当前待处理交易与已处理交易存在资源竞争关
系。
存在资源冲突,无法将当前待合并更新缓存合并至块缓存中,需要基于块缓存重新创建对
应的中间交易缓存,在中间交易缓存执行当前待合并更新交易缓存对应的智能合约方法,
将执行结果对应的交易缓存合并至块缓存,直到各个待处理交易对应的更新交易缓存合并
至块缓存中得到目标块缓存。
合并更新交易缓存对应的智能合约方法,将执行结果对应的交易缓存合并至块缓存。
能合约方法存在竞争关系,因此目前无法将当前待合并更新交合并至块缓存中。为了解决
此问题,需要基于块缓存重新创建对应的中间交易缓存,在中间交易缓存执行当前待合并
更新交易缓存对应的智能合约方法,将执行结果对应的交易缓存合并至块缓存。
据存在竞争关系,可以再重新基于块缓存重新创建对应的中间交易缓存,在中间交易缓存
执行当前待合并更新交易缓存对应的智能合约方法,直至执行结果与历史已合并交易缓存
数据不存在资源冲突,则将执行结果对应的交易缓存合并至块缓存中。其中,可以根据实际
应用设置预设次数,当达到预设次数时,执行结果还是无法与历史已合并交易缓存数据存
在资源冲突,则可将当前待处理交易丢弃。
交易缓存存在资源冲突时,则基于块缓存重新创建对应的中间交易缓存,在中间交易缓存
执行当前待合并更新交易缓存对应的智能合约方法,直至当前待处理交易与块缓存中历史
已合并交易缓存不存在资源冲突,将执行结果对应的交易缓存合并至块缓存。以此方式,将
各个待处理交易对应的更新交易缓存都合并至块缓存中的目标块缓存中,也就是说,目标
块缓存中的所有历史已合并交易缓存数据都不存在竞争关系和无资源冲突。
各个初始交易缓存中并行执行对应的智能合约方法,得到各个待处理交易对应的更新交易
缓存,按交易顺序依次将各个更新交易缓存合并至块缓存,当当前待合并更新交易缓存与
块缓存中的历史已合并交易缓存数据无资源冲突时,将当前待合并更新交易缓存合并至块
缓存中,当当前待合并更新交易缓存与块缓存中的历史已合并交易缓存数据存在资源冲突
时,则基于块缓存重新创建对应的中间交易缓存,在中间交易缓存执行当前待合并更新交
易缓存对应的智能合约方法,将执行结果对应的交易缓存合并至块缓存,直到各个待处理
交易对应的更新交易缓存合并至块缓存中得到目标块缓存,根据目标块缓存生成更新块。
并行执行对应的智能合约方法,提高了智能合约方法的执行效率。进一步地,在各自的初始
交易中并行执行对应的智能合约方法得到对应的更新交易缓存,再按照交易顺序依次将各
个更新交易缓存合并至块缓存中,在合并过程中,通过检测当前待处理交易对应的当前待
合并更新交易缓存与块缓存中历史合并交易缓存数据是否存在资源冲突,当不存在资源冲
突时,将各个待处理交易对应的更新交易缓存合并至块缓存中得到目标块缓存,最后根据
目标块缓存生成更新块,合并过程中是否存在资源冲突的检测不需要通过分析智能合约方
法的字节码才能检测出来,提高了合约冲突检测的全面性和准确性。
于块读缓存和块写缓存为各个待处理交易创建对应的初始交易读缓存和初始交易写缓存。
存保存。而块缓存是用来缓存所有待处理交易对应的交易结果的,而初始交易缓存是用来
缓存各个待处理交易执行对应的智能合约方法产生的交易信息。各个待处理交易在执行对
应的智能合约方法时,智能合约方法所带来的改动都会缓存至对应的初始交易缓存中,从
而得到更新交易缓存,而各个待处理交易执行对应的智能合约方法产生的交易结果都可合
并至块缓存中。即,块缓存中暂时保存了所有待处理交易对应的交易结果。
存和初始交易写缓存。其中,待处理交易在对应的初始交易缓存对应的初始交易读缓存和
初始交易写缓存分别执行对应的智能合约方法,分别得到初始交易缓存的初始交易读缓存
对应的交易结果,和初始交易缓存的初始交易写缓存对应的交易结果,根据初始交易读缓
存对应的交易结果更新初始交易读缓存,得到更新交易读缓存,同样地根据初始交易写缓
存对应的交易结果更新初始交易写缓存得到更新交易写缓存。
存中。
缓存和块写缓存,即块缓存中包括块读缓存和块写缓存。进一步地,基于块读缓存和块写缓
存为各个待处理交易创建对应的初始交易读缓存和初始交易写缓存,即各个待处理交易存
在对应的初始交易读缓存和初始交易写缓存。
处理交易的写访问情况,各个待处理交易可在初始交易缓存中执行对应的智能合约方法,
从而得到更新交易缓存。
读缓存结果,将交易读缓存结果保存至更新交易读缓存。同样地,在各个待处理交易对应的
交易写缓存中并行执行对应的智能合约方法,得到各个待处理交易对应的交易写缓存结
果,将交易写缓存结果保存至更新交易写缓存中。即,交易读缓存和交易写缓存都用来执行
对应的执行合约,暂时保存对应的执行结果。
时间的交易时间确定交易顺序,这里的交易时间是指各个待处理交易对应的交易时间点。
具体地,服务器(节点)直接获取各个待处理交易对应的交易顺序。
存中,即块写缓存为所有待处理交易对应的交易写缓存结果的并集。
存。具体地,按照交易顺序,将交易1读缓存提交至块读缓存中,将交易1写缓存提交至块写
缓存中。之后,再将交易2读缓存提交至块读缓存中,将交易2写缓存提交至块写缓存中。
易写缓存是当前待处理交易在当前初始交易写缓存中执行对应的智能合约方法得到的,当
前更新交易读缓存是当前待处理交易在当前初始交易读缓存中执行对应的智能合约方法
得到的,块缓存包括块读缓存和块写缓存,当当前待合并更新交易缓存与块缓存中的历史
已合并交易缓存数据存在资源冲突时,包括:
待处理交易对应的更新交易缓存合并至块缓存后更新为已处理交易。
交易在当前更新交易写缓存中执行对应的智能合约方法得到的,当前交易读缓存是当前待
处理交易在当前更新交易读缓存中执行对应的智能合约方法得到的,块缓存包括块读缓存
和块写缓存,各个待处理交易对应的更新交易读缓存合并至块读缓存中,各个待处理交易
对应的交易写缓存合并至块写缓存中。
易在更新交易写缓存执行对应的智能合约方法得到的当前更新交易写缓存作为待合并更
新交易缓存。获取块写缓存中的历史已合并交易缓存数据,历史已合并交易缓存数据是已
处理交易对应的更新交易写缓存,待处理交易对应的更新交易缓存合并至块缓存后更新为
已处理交易。
突。即,如果待处理交易存在冲突则不会将交易写缓存结果提交至块写缓存中的,因此块写
缓存中的已处理交易之间都不存在任何冲突。
突。
行过程中,当前待处理交易必须等待所有已处理交易对应的交易完成后才能开始,即当前
待处理交易与已处理交易不能并行,则确定当前待处理交易对应的智能合约方法与已处理
交易对应的智能合约方法存在冲突。
易为交易4,块写缓存中包括交易1、交易2、交易3对应的交易写缓存结果,组成块写缓存中
的历史交易写缓存结果集合。如图6A所示,当前待处理交易对应的当前交易写缓存结果与
块写缓存中的至少一个历史交易写缓存结果存在交集,则确定当前待处理交易对应的智能
合约方法与已处理交易对应的智能合约方法存在冲突,即当前待处理交易必须等待所有已
处理交易对应的交易完成后交易才能开始。
应的值,当按下相应的键时,就会输出相应的结果。因此,可通过更新交易写缓存对应的键
值对检测智能合约方法之间是否存在冲突。
对应的历史交易写键值对,历史交易写键值对包括历史键和对应的历史值。
一存储槽,所以在实际智能合约方法执行过程中,当前待处理交易必须等待所有已处理交
易对应的交易完成后才能开始,即当前待处理交易与已处理交易不能并行,则确定当前更
新交易写缓存与至少一个历史已合并交易缓存数据存在交集。
代表值value,交易2的交易写缓存结果:2=2以及交易3的交易写缓存结果3=3,当前待处
理交易为交易4对应的交易写缓存结果:3=4,4=4,因此可见,交易4的交易写缓存结果中
key为3与块缓存中的历史交易写缓存结果中key为3的值并不相同,则确定当前待处理交易
与前面的已处理交易存在冲突,需要等前面的所有已处理交易对应的交易完成后才能开
始。
突。
更新交易写缓存结果,这里更新交易写缓存结果是指已处理交易在对应的更新交易写缓存
执行对应的智能合约得到的。
突。即,如果待处理交易存在冲突则不会将交易写缓存结果提交至块写缓存中的,因此块写
缓存中的前向待处理之间都不存在任何冲突。
更新交易读缓存作为待合并更新交易缓存,当当前更新交易读缓存与至少一个历史已合并
交易缓存数据存在交集时,则确定当前待处理交易对应的智能合约方法与已处理交易对应
的智能合约方法存在冲突。
相应的值,当按下相应的键时,就会输出相应的结果。因此,可通过更新交易读缓存对应的
键值对检测智能合约方法之间是否存在冲突。
对应的历史交易写键值对,历史交易写键值对包括历史键和对应的历史值。
能会有不同的情况,为了保持各个服务器之间的一致性,统一悲观地认为当前待处理交易
读取了旧数据,即当前待处理交易必须等待所有已处理交易对应的交易完成后才能开始,
所以当前待处理交易与已处理交易不能并行,则确定当前更新交易读缓存与至少一个历史
已合并交易缓存数据存在交集。
代表值value,交易2的交易写缓存结果:2=2以及交易3的交易写缓存结果3=3,当前待处
理交易3对应的交易读缓存结果:3=0,4=4,因此可见,交易4的交易读缓存结果中存在与
块缓存中的历史键相同的目标历史键,即key=3,因此不管key=3对应的值是否相同,都可
确定当前待处理交易与前面的已处理交易存在冲突,需要等前面的所有已处理交易对应的
交易完成后才能开始。
新交易缓存对应的智能合约方法,将执行结果对应的交易缓存合并至块缓存。
处理交易在当前初始交易写缓存中执行对应的智能合约方法得到的,当前更新交易读缓存
是当前待处理交易在当前初始交易读缓存中执行对应的智能合约方法得到的,块缓存包括
块读缓存和块写缓存,
处理交易对应的更新交易缓存合并至块缓存后更新为已处理交易。
交集时,则确定当前待合并更新交易缓存与块缓存中的历史已合并交易缓存数据存在资源
冲突。
旧数据),则基于已合并的块缓存(新数据)重新执行这个合约,之后再进行合并。
执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少
一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时
刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依
次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替
地执行。
交易缓存执行当前待合并更新交易缓存对应的智能合约方法,将执行结果对应的交易缓存
合并至块缓存。
当前待处理交易在当前初始交易写缓存中执行对应的智能合约方法得到的,当前更新交易
读缓存是当前待处理交易在当前初始交易读缓存中执行对应的智能合约方法得到的,块缓
存包括块读缓存和块写缓存,合约数据处理装置1100还用于当待合并更新交易缓存为当前
更新交易写缓存时,获取块写缓存中的历史已合并交易缓存数据,历史已合并交易缓存数
据是已处理交易对应的更新交易写缓存,待处理交易对应的更新交易缓存合并至块缓存后
更新为已处理交易,当当前更新交易写缓存与至少一个历史已合并交易缓存数据存在交集
时,则确定当前待合并更新交易缓存与块缓存中的历史已合并交易缓存数据存在资源冲
突。
缓存数据对应的历史交易写键值对,历史交易写键值对包括历史键和对应的历史值,当各
个历史键中存在至少一个与当前键相同的目标历史键时,则确定当前更新交易写缓存与至
少一个历史已合并交易缓存数据存在交集。
存与至少一个历史已合并交易缓存数据存在交集时,则确定当前待合并更新交易缓存与块
缓存中的历史已合并交易缓存数据存在资源冲突。
缓存数据对应的历史交易写键值对,历史交易写键值对包括历史键和对应的历史值,当各
个历史键中存在至少一个与当前键相同的目标历史键时,则确定当前更新交易读缓存与至
少一个历史已合并交易缓存数据存在交集。
处理器、存储器、网络接口、输入装置。其中,存储器包括非易失性存储介质和内存储器。该
计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序
被处理器执行时,可使得处理器实现合约数据处理方法。该内存储器中也可储存有计算机
程序,该计算机程序被处理器执行时,可使得处理器执行合约数据处理方法。计算机设备的
输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球
或触控板,还可以是外接的键盘、触控板或鼠标等。
备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
成该合约数据处理装置的各个程序模块,比如,图11所示的交易请求接收模块、智能合约方
法获取模块、缓存空间创建模块、初始交易缓存更新模块、更新交易缓存合并模块、资源冲
突检测模块和目标块缓存合并模块。各个程序模块构成的计算机程序使得处理器执行本说
明书中描述的本申请各个实施例的合约数据处理方法中的步骤。
智能合约方法获取模块执行根据交易请求获取各个待处理交易对应的智能合约方法。计算
机设备可通过缓存空间创建模块执行创建目标块对应的块缓存,创建与各个待处理交易对
应的初始交易缓存。计算机设备可通过初始交易缓存更新模块执行在各个初始交易缓存中
并行执行对应的智能合约方法,得到各个待处理交易对应的更新交易缓存。计算机设备可
通过更新交易缓存合并模块执行按交易顺序依次将各个更新交易缓存合并至块缓存。计算
机设备可通过资源冲突检测模块执行当当前待合并更新交易缓存与块缓存中的历史已合
并交易缓存数据无资源冲突时,将当前待合并更新交易缓存合并至块缓存中。计算机设备
可通过资源冲突检测模块还执行当当前待合并更新交易缓存与块缓存中的历史已合并交
易缓存数据存在资源冲突时,则基于块缓存重新创建对应的中间交易缓存,在中间交易缓
存执行当前待合并更新交易缓存对应的智能合约方法,将执行结果对应的交易缓存合并至
块缓存。计算机设备可通过资源冲突检测模块还执行直到各个待处理交易对应的更新交易
缓存合并至块缓存中得到目标块缓存。计算机设备可通过目标块缓存合并模块执行根据目
标块缓存生成更新块。
处合约数据处理方法的步骤可以是上述各个实施例的合约数据处理方法中的步骤。
法的步骤可以是上述各个实施例的合约数据处理方法中的步骤。
存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供
的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性
和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编
程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器
(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM
(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM
(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直
接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
盾,都应当认为是本说明书记载的范围。
来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保
护范围。因此,本申请专利的保护范围应以所附权利要求为准。