一种区块链智能合约运用方法和装置与流程

文档序号:31624717发布日期:2022-09-24 00:17阅读:305来源:国知局
一种区块链智能合约运用方法和装置与流程

1.本说明书涉及计算机软件技术领域,尤其涉及一种区块链智能合约运用方法、装置、电子设备和存储介质。


背景技术:

2.基于区块链的智能合约因其具有去中心化、自治化、可观察、可验证、可信息共享等优势,在众多领域中有广泛的应用。然而,单线程串行的智能合约,具有执行资源受限特点及区块链本身tps、qps的限制执行,智能合约模型愈发成为系统的性能瓶颈,如何高效地并发执行智能合约交易进而提升系统性能成为现如今区块链技术落地的一大挑战。由于区块链环境中拜占庭节点的存在,智能合约交易的执行与传统数据库有着很大的区别,故传统的数据库并发控制协议不能直接应用到智能合约交易的执行中。因此,在实际的智能合约运行中,存在调用合约的交易无法上链、交易被拒绝、交易响应时间过长的问题。因此,提高区块链智能合约运用性能是需要解决的技术问题。


技术实现要素:

3.本说明书实施例的目的是针对上述问题,提供一种区块链智能合约运用方法、装置、电子设备和存储介质。
4.为解决上述技术问题,本说明书实施例是这样实现的:
5.第一方面,提出了一种区块链智能合约运用方法,初始化用于区块链智能合约运用管理的任务队列和任务调度器,所述任务队列用于存放运用所述智能合约进行相应类型交易的交易任务,所述任务调度器用于获取所述任务队列中交易任务的当前状态并提交相应交易任务至所述区块链执行;包括:
6.打包所述智能合约所需数据构成所述交易任务,以及更新所述交易任务的状态为初始状态后提交至所述任务队列;
7.所述任务调度器定期扫描所述任务队列中当前状态为初始状态的所述交易任务并提交至所述区块链,以及更新所述交易任务的状态为执行中状态;
8.所述任务调度器定期扫描所述任务队列中当前状态为执行中状态的所述交易任务,根据所述交易任务对应事件触发状态更新所述交易任务的状态。
9.第二方面,提出了一种区块链智能合约运用装置,包括:
10.第一模块,用于对管理区块链智能合约运用的任务队列和任务调度器进行初始化,所述任务队列用于存放运用所述智能合约进行相应类型交易的交易任务,所述任务调度器用于获取所述任务队列中交易任务的当前状态并提交相应交易任务至所述区块链执行;
11.第二模块,用于打包所述智能合约所需数据构成所述交易任务,以及更新将所述交易任务的状态更新为初始状态后提交至所述任务队列;
12.第三模块,用于所述任务调度器定期扫描所述任务队列中当前状态为初始状态的
所述交易任务并提交至所述区块链,以及更新所述交易任务的状态为执行中状态;
13.第四模块,用于所述任务调度器定期扫描所述任务队列中当前状态为执行中状态的所述交易任务,根据所述交易任务对应事件触发状态更新所述交易任务的状态。
14.第三方面,提出了一种电子设备,包括:处理器;以及
15.被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行第一方面所述的方法。
16.第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行第一方面所述的方法。
17.本说明书可以达到至少以下技术效果:
18.本发明通过将部署、调用智能合约抽象为同等交易任务,并将任务执行流程解耦,在客户端并发量大等极端情况下,将交易任务队列化,突破了智能合约单线程执行,执行受资源限制,以及区块链本身性能的瓶颈,有效缓解了极端情况下区块链应用崩溃的问题;同时,必要时将智能合约数据进行分片处理,提高了调用智能合约响应效率。
附图说明
19.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
20.图1为本说明书实施例提供的区块链智能合约运用方法示意图之一。
21.图2为本说明书实施例提供的区块链智能合约运用方法示意图之二。
22.图3为本说明书实施例提供的区块链智能合约运用方法示意图之三。
23.图4为本说明书实施例提供的区块链智能合约运用装置示意图之一。
24.图5为本说明书实施例提供的区块链智能合约运用装置示意图之二。
25.图6为本说明书的一个实施例提供的电子设备的结构示意图。
具体实施方式
26.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
27.下面通过具体的实例对本说明书所涉及的一种区块链智能合约运用方案进行详述。
28.关键术语
29.区块链技术:是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。从本质
上讲,它是一个共享数据库,存储于其中的数据或信息,具有不可伪造、全程留痕、可以追溯、公开透明、集体维护”等特征。基于这些特征,区块链技术奠定了坚实的信任基础,创造了可靠的合作机制,具有广阔的运用前景。按照准入机制分类,区块链分为公有链、联盟链和私有链。
30.智能合约:运行在区块链系统内的程序,具有按设定逻辑自动执行、执行结果不可窜改的特性。然而单线程串行的智能合约执行模型愈发成为系统的性能瓶颈,如何高效地并发执行智能合约交易进而提升系统性能成为现如今区块链技术落地的一大挑战。由于区块链环境中拜占庭节点的存在,智能合约交易的执行与传统数据库有着很大的区别,故传统的数据库并发控制协议不能直接应用到智能合约交易的执行中。
31.tps:transactions per second,事务数每秒,衡量软件系统单位时间内处理事务能力的指标。
32.qps:queries per second,查询数每秒,衡量软件系统单位时间内处理查询能力的指标。
33.队列:是一种先进先出(first in first out)的线性表,简称fifo。在队列一端即对尾插入,在队列另一端即队头删除。队列的特点包括:(1)队列的插入操作称为入队,表的取出操作称为出队;(2)队列的存储结构分为顺序存储或链式存储,顺序存储称为顺序队,链式存储称为链队。以循环顺序队列更常见;(3)队列分为两种:双向队列和单向队列;单向队列只能在一端删除数据,另一端插入数据;双向队列两端都可以进行插入数据和删除数据操作。
34.实施例一
35.本发明的目的是进一步提高区块链中智能合约的运用性能。随着区块链的广泛应用,特别是以太坊中智能合约所具有的去中心化、自治化、可观察、可验证、可信息共享等技术优势,其应用越来越收到关注,主要体现在越来越多的应用交易采用智能合约形式完成。但是,由于其单线程执行,执行有资源限制的特点及区块链本身tps、qps等性能指标的限制,在实际的智能合约运行中,存在调用合约的交易无法上链、交易被拒绝抑或交易响应时间过长的问题。因此,为了提高智能合约的运用性能,针对这一问题,本发明的方案将智能合约相关事务交易任务化,即部署合约、调用合约事务处理方法、查询合约数据等具体交易进行排队,即引入队列机制,按照先进先出的顺序执行,可以有效减缓部署合约、调用合约的性能压力。同时,面对较大数据量的情况,可通过部署多个合约,即将数据分片来降低响应时间,增加合约处理效率。
36.为此,本发明实施例将任务的执行流程解耦为提交、执行、确认三个阶段。任务根据其执行阶段,依次为初始状态,执行中状态、成功状态、超时状态、失败状态。对应于本发明实施例的方法如图1所示,包括:
37.步骤101:初始化用于区块链智能合约运用管理的任务队列和任务调度器,所述任务队列用于存放运用所述智能合约进行相应类型交易的交易任务,所述任务调度器用于获取所述任务队列中交易任务的当前状态并提交相应交易任务至所述区块链执行。可选地,所述智能合约进行相应类型交易至少包括部署和/或调用所述智能合约的相应方法。
38.步骤102:打包所述智能合约所需数据构成所述交易任务,以及更新所述交易任务的状态为初始状态后提交至所述任务队列。
39.具体地,对于提交阶段,将所有任务分类,并将后续执行、确认阶段必要的数据打包在一起,提交至同一队列中,任务提交后为初始状态。
40.步骤103:所述任务调度器定期扫描所述任务队列中当前状态为初始状态的所述交易任务并提交至所述区块链,以及更新所述交易任务的状态为执行中状态,可选地,所述交易任务并提交至所述区块链后保留交易哈希副本,以根据所述交易哈希副本查询所述交易任务对应事件触发状态。
41.具体地,对于执行阶段,系统任务调度器会定期扫描队列中初始状态的任务,按照先进先出的顺序,依次将任务打包,提交交易至区块链执行,并保留交易hash。任务执行后为执行中状态。
42.步骤104:所述任务调度器定期扫描所述任务队列中当前状态为执行中状态的所述交易任务,根据所述交易任务对应事件触发状态更新所述交易任务的状态。可选地,根据所述交易任务对应事件触发状态更新所述交易任务的状态,包括:
43.步骤211:若所述交易任务对应事件被触发,则更新所述交易任务状态为成功状态;
44.步骤212:若所述交易任务对应事件因消耗资源过多被拒绝执行,则更新所述交易任务状态为失败状态;
45.步骤213:若在阈值时长内,未查询到所述交易任务对应事件触发状态,则更新所述交易任务状态为超时状态。
46.具体地,对于确认阶段,系统任务调度器会定期扫描执行中的任务,并根据交易hash查询回执中,部署合约、调用合约的相应事件是否触发。若相应事件触发,则更新任务状态为成功状态,若交易由于消耗资源过多被拒绝,则更新任务状态为失败状态。若在阈值时间内,没有查询到相应事件触发,则更新任务状态为超时状态。
47.本实施例提出一种区块链共识方法的另一种实现方案如图3所示,还包括:
48.步骤105:,当所述智能合约存储的数据量超过阈值,由用户重新部署所述智能合约以及按照重新部署的所述智能合约地址调用相应方法。
49.步骤106:当调用所述智能合约的查询方法时,返回该智能合约存储于不同地址的全部数据查询结果。
50.具体地,对于数据分片本实施例方案会存储每个合约的数据量,客户端调用合约修改数据时,若该合约数量超过阈值,则通知客户端重新部署该合约,调用合约存储数据的方法会调用新的合约,调用合约查询的方法会调用所有该合约的副本统一返回结果值,以此类推。
51.本实施例以erc721智能合约铸造nft为实施例来进行说明。首先,客户端携带参数,调用智能合约发起铸造请求,若该合约数据量超过5000,通知客户端重新部署合约,并存储新的合约地址;打包后续流程所需数据,并将初始状态任务提交至队列中;任务调度器定时扫描队列中初始状态的任务,将该任务构造为调用erc721合约铸造方法的交易,获取合约地址,发送交易至区块链,保存交易hash,并更新该任务状态为执行中状态。任务调度器定时扫描队列中执行中状态的任务,根据交易hash查询回执日志中是否有铸造方法的事件,若有,则更新状态为成功状态,通知客户端铸造成功,若该交易被拒绝,通知客户端铸造失败,若在阈值时间内,查询回执日志中没有相应事件,通知客户端铸造超时。具体技术方
案层面,基于java语言实现,任务调度器使用scheduledthreadpoolexecutor工具类实现,队列使用mysql实现,智能合约使用solidty语言开发。
52.[0053][0054]
应理解,凡是能实现本发明实施例的软件开发语言、任务调度器、队列以及智能合约开发语言,均可实现本发明实施例的方法及功能。
[0055]
实施例二
[0056]
图4为本说明书的一个实施例提供的区块链智能合约运用装置400的结构示意图。请参考图4,在一种实施方式中区块链智能合约运用装置,其特征在于,包括:
[0057]
第一模块401,用于对管理区块链智能合约运用的任务队列和任务调度器进行初始化,所述任务队列用于存放运用所述智能合约进行相应类型交易的交易任务,所述任务调度器用于获取所述任务队列中交易任务的当前状态并提交相应交易任务至所述区块链执行。
[0058]
第二模块402,用于打包所述智能合约所需数据构成所述交易任务,以及更新将所述交易任务的状态更新为初始状态后提交至所述任务队列。
[0059]
第三模块403,用于所述任务调度器定期扫描所述任务队列中当前状态为初始状态的所述交易任务并提交至所述区块链,以及更新所述交易任务的状态为执行中状态。
[0060]
第四模块404,用于所述任务调度器定期扫描所述任务队列中当前状态为执行中状态的所述交易任务,根据所述交易任务对应事件触发状态更新所述交易任务的状态。
[0061]
本实施例提出一种区块链智能合约运用装置另一种实现方案如图5所示,还包括:
[0062]
第五模块405,用于当所述智能合约存储的数据量超过阈值时由用户重新部署所述智能合约,以及按照重新部署的所述智能合约地址调用相应方法。
[0063]
第六模块406,用于当调用所述智能合约的查询方法时,返回该智能合约存储于不同地址的全部数据查询结果。
[0064]
应理解,本说明书实施例的区块链智能合约运用装置还可执行图1至图3中区块链智能合约运用装置(或设备)执行的方法,并实现区块链智能合约运用装置(或设备)在图1至图3所示实例的功能,在此不再赘述。同时,本说明书实施例的区块链智能合约运用装置也可以具体为软件开发工具中的工具包作为载体形式。同理,本说明书实施例的区块链智能合约运用工具包可执行图1至图3中区块链智能合约运用方法,并实现区块链智能合约运用方法在图1至图3所示实例的功能。
[0065]
实施例三
[0066]
图6是本说明书的一个实施例电子设备的结构示意图。请参考图6,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-access memory,ram),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
[0067]
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0068]
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
[0069]
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成共享资源访问控制装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
[0070]
初始化用于区块链智能合约运用管理的任务队列和任务调度器,所述任务队列用于存放运用所述智能合约进行相应类型交易的交易任务,所述任务调度器用于获取所述任务队列中交易任务的当前状态并提交相应交易任务至所述区块链执行;包括:
[0071]
打包所述智能合约所需数据构成所述交易任务,以及更新所述交易任务的状态为初始状态后提交至所述任务队列;
[0072]
所述任务调度器定期扫描所述任务队列中当前状态为初始状态的所述交易任务并提交至所述区块链,以及更新所述交易任务的状态为执行中状态;
[0073]
所述任务调度器定期扫描所述任务队列中当前状态为执行中状态的所述交易任务,根据所述交易任务对应事件触发状态更新所述交易任务的状态。
[0074]
上述如本说明书图1至图3所示实施例揭示的一种区块链智能合约运用方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0075]
当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0076]
实施例四
[0077]
本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1至图3所示实施例的方法,并具体用于执行以下方法:
[0078]
初始化用于区块链智能合约运用管理的任务队列和任务调度器,所述任务队列用于存放运用所述智能合约进行相应类型交易的交易任务,所述任务调度器用于获取所述任务队列中交易任务的当前状态并提交相应交易任务至所述区块链执行;包括:
[0079]
打包所述智能合约所需数据构成所述交易任务,以及更新所述交易任务的状态为初始状态后提交至所述任务队列;
[0080]
所述任务调度器定期扫描所述任务队列中当前状态为初始状态的所述交易任务并提交至所述区块链,以及更新所述交易任务的状态为执行中状态;
[0081]
所述任务调度器定期扫描所述任务队列中当前状态为执行中状态的所述交易任务,根据所述交易任务对应事件触发状态更新所述交易任务的状态。
[0082]
总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。
[0083]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,
或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子数据载体设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0084]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0085]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0086]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1