CN110555700A - 区块链智能合约执行方法、装置、计算机可读存储介质 - Google Patents
区块链智能合约执行方法、装置、计算机可读存储介质 Download PDFInfo
- Publication number
- CN110555700A CN110555700A CN201910832634.6A CN201910832634A CN110555700A CN 110555700 A CN110555700 A CN 110555700A CN 201910832634 A CN201910832634 A CN 201910832634A CN 110555700 A CN110555700 A CN 110555700A
- Authority
- CN
- China
- Prior art keywords
- contract
- intelligent
- intelligent contract
- calls
- calling
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 286
- 238000004590 computer program Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 230000035515 penetration Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- 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/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Development Economics (AREA)
- Computational Linguistics (AREA)
- Technology Law (AREA)
- Marketing (AREA)
- Economics (AREA)
- Software Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种区块链智能合约执行方法、装置、计算机可读存储介质和计算机设备,所述方法包括:获取区块内的智能合约,以及所述智能合约调用的合约方法;确定标记为可并行的合约方法;根据所述智能合约调用的合约方法,对所述智能合约的调用进行分组,得到多个合约组;其中,将连续调用同一个可并行的合约方法的所述智能合约的调用划分为一个合约组;串行执行各所述合约组,其中,所述合约组内任意两个涉及数据不同的智能合约的调用并行执行。本申请提供的方案可以提高执行效率。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及一种区块链智能合约执行方法、装置、计算机可读存储介质和计算机设备。
背景技术
区块链技术也被称之为分布式账本技术,是一种由若干台计算设备共同参与和维护的新型技术。随着区块链技术的发展,以及区块链技术具有去中心化、公开透明以及不易篡改等特性,使得区块链技术广泛的应用在众多的领域。因此,区块链所承载的业务功能越来越丰富,区块链节点所要处理的业务的数量也在逐渐增加。
为了维持区块链网络中事务请求的处理秩序,区块链网络通常依据不同的智能合约来限制处理方式。目前,由于智能合约与智能合约之间的调用关系相互交错,因此现有主流智能合约处理技术通常都是根据事务请求的次序顺序执行事务请求中的智能合约,从而大大限制了智能合约的执行效率,导致执行效率下降。
发明内容
基于此,有必要针对执行效率下降的技术问题,提供一种区块链智能合约执行方法、装置、计算机可读存储介质和计算机设备。
一种区块链智能合约执行方法,包括:
获取区块内的智能合约,以及所述智能合约调用的合约方法;
确定标记为可并行的合约方法;
根据所述智能合约调用的合约方法,对所述智能合约的调用进行分组,得到多个合约组;其中,将连续调用同一个可并行的合约方法的所述智能合约的调用划分为一个合约组;
串行执行各所述合约组,其中,所述合约组内任意两个涉及数据不同的智能合约的调用并行执行。
在其中一个实施例中,根据所述智能合约调用的合约方法,对所述智能合约的调用进行分组,得到多个合约组,包括:
将连续调用同一个可并行的合约方法的所述智能合约的调用划分为一个合约组;
将调用未标记为可并行的合约方法的所述智能合约的调用分别单独划分为一个合约组;
将未连续调用同一个可并行的合约方法的所述智能合约的调用分别单独划分为一个合约组。
在其中一个实施例中,所述方法还包括:
接收并行注册请求,所述并行注册请求携带有待注册合约方法;
当确定所述待注册合约方法符合可并行规则时,将所述待注册合约方法标记为可并行的合约方法。
在其中一个实施例中,所述串行执行各所述合约组,包括:
当所述合约组内只包括一个智能合约的调用时,执行所述智能合约的调用;
当所述合约组内包括多个智能合约的调用时,构造与各所述智能合约的调用对应的有向图;
基于所述有向图中各顶点的入度,执行各所述智能合约的调用。
在其中一个实施例中,所述构造与各所述智能合约的调用对应的有向图,包括:
将各所述智能合约的调用的涉及数据作为有向图的顶点;
根据各所述涉及数据,确定存在交集的智能合约的调用;
基于所述智能合约的调用在所述区块内的次序,将任意两个存在交集的智能合约的调用对应的顶点进行有向连接,得到有向图,其中,次序优先的智能合约的调用对应的顶点指向另一个智能合约的调用对应的顶点。
在其中一个实施例中,所述根据各所述涉及数据,确定存在交集的智能合约的调用,包括:
当一个智能合约的调用与另一个智能合约的调用不存在相同的涉及数据时,确定两个智能合约的调用不存在交集;
当一个智能合约的调用与另一个智能合约的调用存在任意一个相同的涉及数据时,确定两个智能合约的调用存在交集。
在其中一个实施例中,所述基于所述有向图中各顶点的入度,执行各所述智能合约的调用,包括:
遍历所述有向图内的顶点,确定所述有向图内入度为0的顶点;
将所述入度为0的顶点对应的智能合约的调用并行执行;
当所述并行执行完成后,将所述入度为0的顶点的对端顶点的入度下调,并返回遍历所述有向图内的顶点,确定所述有向图内入度为0的顶点的步骤,直至所述有向图内顶点对应的智能合约的调用均执行完成。
一种区块链智能合约执行装置,所述装置包括:
获取模块,用于获取区块内的智能合约,以及所述智能合约调用的合约方法;
确定模块,用于确定标记为可并行的合约方法;
分组模块,用于根据所述智能合约调用的合约方法,对所述智能合约的调用进行分组,得到多个合约组;其中,将连续调用同一个可并行的合约方法的所述智能合约的调用划分为一个合约组;
执行模块,用于串行执行各所述合约组,其中,所述合约组内任意两个涉及数据不同的智能合约的调用并行执行。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述任一项所述区块链智能合约执行方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述任一项所述区块链智能合约执行方法的步骤。
上述区块链智能合约执行方法、装置、计算机可读存储介质和计算机设备,通过已经标记为可并行的合约方法对智能合约的调用进行分组,从而将连续调用同一个可并行的合约方法的智能合约的调用划分为到一个合约组中,进而在串行执行合约组,且进一步将合约组中智能合约涉及数据不同的智能合约的调用并行执行,以此提高了区块链内智能合约的调用并行的可能性,加快了出块的速度,从而提高了执行效率。
附图说明
图1为一个实施例中区块链智能合约执行方法的应用环境图;
图2为一个实施例中区块链智能合约执行方法的流程示意图;
图3为一个实施例中合约组的示意图;
图4为一个实施例中基于有向图中各顶点的入度,执行各智能合约的调用步骤的流程示意图;
图5为一个实施例中标记可并行合约方法步骤的流程示意图;
图6为另一个实施例中合约组的示意图;
图7为一个实施例中有向图的示意图;
图8为一个实施例中区块链智能合约执行装置的结构框图;
图9为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中区块链智能合约执行方法的应用环境图。参照图1,该区块链智能合约执行方法可以应用于区块链网络中,区块链网络包括多个区块链节点110,区块链节点110包括提供智能合约运行环境的合约虚拟机,通过合约虚拟机可以执行智能合约调用的合约方法。区块链节点110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。区块链节点110还可以用独立的服务器或者是多个服务器组成的服务器集群来实现。其中,区块链节点110中的合约虚拟机获取区块内的智能合约,以及智能合约调用的合约方法之后,确定标记为可并行的合约方法;根据智能合约调用的合约方法,对智能合约的调用进行分组,得到多个合约组;其中,将连续调用同一个可并行的合约方法的智能合约的调用划分为一个合约组;串行执行各合约组,其中,合约组内任意两个涉及数据不同的智能合约的调用并行执行。
如图2所示,在一个实施例中,提供了一种区块链智能合约执行方法。本实施例主要以该方法应用于上述图1中的区块链节点来举例说明。参照图2,该区块链智能合约执行方法具体包括如下步骤:
S202,获取区块内的智能合约,以及智能合约调用的合约方法。
其中,智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,能够用于存储数据、修改数据、查询数据以及多方交易等处理。智能合约包含变量和合约方法,变量用于存储数据,合约方法用于获取或修改数据。合约方法可以理解为是一种逻辑方法,即智能合约的逻辑实现部分。
区块是组成区块链的结构,区块链是按照时间顺序将一个个包含数据的区块以顺序相连的方式组合成的一种链式数据结构。简单来说,区块链可以理解成一个分布式存储数据库,而区块即是存储数据的单元。区块包括区块主体和区块头,区块主体主要存储的是这个区块的详细数据,比如智能合约、交易数据等。而区块头里面存储着区块的头信息,主要由三部分元数据组成,首先是区块哈希值,可以用来将该区块与前一区块连接。其次是默克尔树的树根,可以有效地验证区块中所有交易的数据结构。最后是元数据,包括难度、随机数和时间戳等。
具体地,当智能合约编写完成之后,用户预先将编写好的智能合约上传至对应的区块链节点中。当区块链节点接收到用户发送的调用时,通过部署在区块链节点中的合约虚拟机根据调用从存储智能合约的区块中获取用户所调用的智能合约,以及获取该智能合约所调用的合约方法。
另外,应当理解,不同的智能合约能够调用不同的合约方法,也能够调用相同的合约方法。比如,智能合约1和智能合约2均可以调用合约方法1或合约方法2,也可以由智能合约1调用合约方法1和合约方法2中的任意一个,而智能合约2调用另一个。例如,智能合约1调用方法1、智能合约2调用合约方法2,或智能合约1调用合约方法2、智能合约2调用合约方法1。且同一个智能合约能够被多个不同的用户调用。
S204,确定标记为可并行的合约方法。
其中,并行是指可以同时执行,可并行的合约方法可以理解为,该合约方法能够与其他可并行的合约方法同时执行。而未标记为可并行的合约方法即为不可并行的合约方法,即不能与其他的合约方法同时执行。
具体地,可并行的合约方法预先通过可并行注册后,存储在对应的可并行列表中,也就是说,可并行列表中存储的合约方法均是可并行的合约方法。因此,可以通过判断智能合约所调用的合约方法是否存在于可并行列表里来确定该合约方法是否为可并行的合约方法。当区块内智能合约所调用的合约方法属于并行列表中的合约方法时,确定该合约方法是可并行的合约方法。反之,当区块内智能合约所调用的合约方法不属于可并行列表中的合约方法时,确定该合约方法是不可并行的合约方法。
S206,根据智能合约调用的合约方法,对智能合约的调用进行分组,得到多个合约组;其中,将连续调用同一个可并行的合约方法的智能合约的调用划分为一个合约组。
具体地,当从智能合约所调用的合约方法中确定了可并行的合约方法和不可并行的合约方法之后,将调用不可并行的合约方法的智能合约的调用分别单独划分为一个合约组。例如,若区块内有两个智能合约的调用所调用的合约方法是不可并行的合约方法,则将这两个智能合约的调用分别单独划分为一个合约组,即能够得到两个合约组,且这两个合约组中分别只有这两个智能合约的调用中的一个。
而当智能合约所调用的合约方法为可并行的合约方法时,则需要进一步确定这个可并行的合约方法是否有被智能合约的调用连续调用。当该合约方法有被智能合约的调用连续调用时,将连续调用该合约方法的智能合约的调用划分到一个合约组中。例如,若区块内有两个智能合约在区块内的次序是连续的,且这两个智能合约的调用都调用了这个可并行的合约方法。也就是说,这两个智能合约的调用连续且调用了同一个可并行的合约方法,则将这两个智能合约的调用划分到一个合约组中,得到一个合约组,且这个合约组内包含这两个智能合约的调用。而若这两个智能合约在区块内的次序不是连续的,即使这两个智能合约的调用是调用了同一个可并行的合约方法,也应当将这两个智能合约的调用分别单独进行合约组的划分。也就是能够得到两个合约组,这两个合约组中分别包含这两个连续的智能合约的调用中的一个。
例如,假设获取到八个智能合约的调用,这八个调用分别调用的智能合约,以及各智能合约所调用的合约方法情况如下表1所示:
表1:智能合约的调用以及智能合约所调用的合约方法
调用 | 智能合约 | 合约方法 |
调用1 | 智能合约1 | 合约方法1 |
调用2 | 智能合约1 | 合约方法1 |
调用3 | 智能合约1 | 合约方法1 |
调用4 | 智能合约1 | 合约方法2 |
调用5 | 智能合约1 | 合约方法2 |
调用6 | 智能合约1 | 合约方法1 |
调用7 | 智能合约1 | 合约方法1 |
调用8 | 智能合约2 | 合约方法2 |
其中,标记为可并行的合约方法是合约方法1,即合约方法1为可并行的合约方法。未标记为可并行的合约方法是合约方法2,即合约方法2为不可并行的合约方法。如图3所示,提供一种合约组的示意图。参考图3,当根据表1进行分组时,由于合约方法2为不可并行的合约方法,即合约方法2对应的智能合约的调用应分别单独划分为一个合约组,也就是调用智能合约1的调用4为一个合约组、调用智能合约1的调用5为一个合约组、调用智能合约2的调用8为一个合约组,一共三个合约组。而合约方法1为可并行的合约方法,即需要进一步确认合约方法1是否有被智能合约的调用连续调用,当有连续调用时,将连续调用合约方法1的智能合约的调用划分为一个合约组,否则将合约方法1对应的智能合约的调用单独划分为一个合约组。即,由于调用智能合约的调用1、调用智能合约的调用2以及调用智能合约的调用3是连续的,且调用1、调用2和调用3所调用的合约方法均是可并行的合约方法1,则满足划分到一个合约组的条件。因此,调用1、调用2以及调用3划分到一个合约组中。同理,调用智能合约1的调用6和调用智能合约1的调用7可以划分到为一个合约组。
另外,即使对智能合约的调用进行分组之后,合约组的执行顺序也应当与其所包含的智能合约的调用的次序相同。例如,以表1为例,可确定这八个调用的次序为“调用1-调用2-调用3-调用4-调用5-调用6-调用7-调用8”。即,合约分组之后,均调用智能合约1的调用1、调用2和调用3所在的合约组为合约组1,即串行执行时第一个被执行的合约组。而调用智能合约1的调用4的次序在调用3之后,因此,调用智能合约1的调用4所在的合约组为合约组2,即串行执行时第二个被执行的合约组。其他合约组3、合约组4以及合约组5确定方式相同,在此不在赘述。应当理解,由于进行分组时,只有连续调用同一个可并行的合约方法的智能合约的调用才能被划分到一个合约组。因此,一个合约组中的各智能合约的调用的次序一定会同时在另一个合约组内各智能合约的调用的次序之前,或者同时在另一个合约组内各智能合约的调用的次序之后。
S208,串行执行各合约组,其中,合约组内任意两个涉及数据不同的智能合约的调用并行执行。
其中,串行执行与并行执行相反,是指一个一个依次执行。串行执行合约组即依次执行各合约组。可以理解为,一个合约组执行完成之后才能执行下一个合约组。执行智能合约的调用即是执行该调用对应智能合约所调用的合约方法。而涉及数据是指智能合约的调用所涉及到的键,可以理解为智能合约调用的合约方法所要获取或者处理的数据,比如,若该智能合约的调用是用于修改用户的姓名和年龄,涉及数据即为姓名和年龄,也就是说,涉及的键包括姓名和年龄。而若该智能合约的调用是用于进行交易,涉及数据即可能为交易双方的账户,键即包括交易的转出方和转入方。
然而,应当理解的是,确定涉及数据是否相同时,除了考虑键本身是否相同之外还应当考虑键的属性是否相同。只有当键本身以及键的属性均相同时,才能表示涉及数据相同。例如,合约方法1和合约方法2均是用于修改姓名和年龄,但是合约方法1是用于修改用户1的姓名和年龄,而合约方法2是用于修改用户2的姓名和年龄。也就是说,虽然合约方法1和合约方法2涉及均是姓名和年龄,但是合约方法1和合约方法2所涉及姓名和年龄的属性(姓名和年龄对应的用户)是不同的。即合约方法1和合约方法2执行时不会产生冲突关系,因此合约方法1和合约方法是不存在交集关系的。也就是说,合约方法1和合约方法2可以并行执行。
具体地,对智能合约的调用进行分组得到多个合约组之后,根据各合约组的执行顺序从第一个合约组开始执行,直到最后一个合约组执行完成。执行合约组即为执行该合约组内各智能合约的调用所调用的合约方法,同样按照各智能合约的调用次序依次执行,从而完成合约组的执行。而当合约组内存在涉及数据不同的多个智能合约的调用时,可将涉及数据不同的智能合约的调用并行执行。也就是说,当合约组内其中一个智能合约的调用所涉及的键与另一个智能合约的调用所涉及的键都不相同的时,即表示这两个智能合约的调用可以同时执行。
在一个实施例中,串行执行各合约组,包括:当合约组内只包括一个智能合约的调用时,执行智能合约的调用;当合约组内包括多个智能合约的调用时,构造与各智能合约的调用对应的有向图;基于有向图中各顶点的入度,执行各智能合约的调用。
其中,图一般用于表示物件与物件之间的关系,是图论的基本研究对象。一张图由一些小圆点(称为顶点或结点)和连接这些圆点的直线或曲线(称为边)组成。给图的每条边规定一个方向,得到的图即为有向图。在本实施例中,有向图可以理解为是用于确定各智能合约调用的合约方法的执行顺序的图。顶点的入度即为有向图中各顶点被指向的次数,比如,任意一个顶点被三个顶点指向,则该顶点的入度为3。而顶点没有被其他顶点指向时,则表示该顶点的入度为0。
具体地,当执行合约组时,首先确定该合约组内是否包括多个智能合约的调用。当合约组内只包括一个智能合约的调用时,直接执行该智能合约的调用,即执行该调用对应智能合约所调用的合约方法,完成执行。而当组内包括多个智能合约的调用时,根据各调用的涉及数据构造对应的有向图,根据构造的有向图中各顶点的入度,执行合约组内多个智能合约的调用。即,将各智能合约的涉及数据作为有向图的顶点,根据各智能合约的调用之间涉及数据确定需要连线的顶点。并且,根据各智能合约的调用的次序确定连线的方向,从而能够得到每个顶点的入度。由于不同的顶点表示不同的智能合约的调用,因此顶点的入度可视为智能合约的调用的入度,将入度为0的智能合约的调用所调用的合约方法并行执行。在本实施例中,通过构造有向图执行合约组内的智能合约的调用,能够提高组内合约方法并行执行的可能性,从而提高执行的效率。
在一个实施例中,构造与各智能合约对应的有向图,包括:将各智能合约的调用的涉及数据作为有向图的顶点;根据各涉及数据,确定存在交集的智能合约的调用;基于智能合约的调用在区块内的次序,将任意两个存在交集的智能合约的调用对应的顶点进行有向连接,得到有向图,其中,次序优先的智能合约的调用对应的顶点指向另一个智能合约的调用对应的顶点。
其中,存在交集是指一个智能合约的调用与另一个智能合约的调用存在任意一个相同的涉及数据(涉及的键),则表示这两个智能合约的调用存在交集。例如,一个智能合约的调用涉及的键包括用户A的姓名和性别,另一个智能合约的调用涉及的键包括用户A的姓名和年龄。由于这两个智能合约的调用涉及的键均包括用户A的姓名,则表示这两个智能合约的调用存在交集。
具体地,首先将智能合约的调用的涉及数据作为有向图的顶点,每个顶点表示不同的智能合约的调用。由此可得,有向图的顶点的数量等于合约组内智能合约的调用的数量。然后,确定两个顶点之间是否需要进行连线。即根据涉及数据确定两个智能合约的调用是否存在交集关系。当一个智能合约的调用与另一个智能合约的调用不存在任何相同的涉及数据时,确定这两个智能合约的调用不存在交集。也就是说,一个智能合约的调用所涉及的所有键以及所有键的属性与另一个智能合约的调用所涉及的所有键以及所有键的属性均不相同,或者,虽然所涉及的键相同但所有键的属性不同时,都可以确定这两个智能合约的调用不存在交集关系。而当一个智能合约的调用与另一个智能合约的调用存在任意一个相同的涉及数据时,确定这两个智能合约的调用存在交集。也就是说,一个智能合约的调用所涉及的键以及该键的属性与另一个智能合约的调用所涉及的键以及键的属性之间,存在任意一个键以及键的属性相同的情况,则可以确定这两个智能合约的调用存在交集。
当根据涉及数据确定两个智能合约的调用存在交集关系时,则表示这两个智能合约的调用对应的两个顶点需要连线。而当根据涉及数据确定两个智能合约的调用不存在交集关系时,则表示这两个智能合约的调用对应的两个顶点之间不需要连线。确定需要连线的两个顶点之后,对这两个顶点进行连线,从而得到有向图的边。并且,根据这两个顶点对应的智能合约的调用在区块内的次序确定连线的方向,次序优先的智能合约的调用对应的顶点应当指向另一个智能合约的调用对应的顶点。例如,智能合约的调用1和智能合约的调用2存在交集关系,且智能合约的调用1的次序在智能合约的调用2之前,也就是调用1优先调用2,则智能合约的调用1对应的顶点指向智能合约的调用2对应的顶点。
如图4所示,在一个实施例中,基于有向图中各顶点的入度,执行各智能合约的调用,包括以下步骤:
S402,遍历有向图内的顶点,确定有向图内入度为0的顶点。
S404,将入度为0的顶点对应的智能合约的调用并行执行。
具体地,当得到有向图之后,通过遍历该有向图内的顶点,确定有向图内入度为0的顶点。可以理解为,有向图中任意一个顶点的入度根据该顶点被其他顶点所指向的次数确定。例如,当遍历确定任意一个顶点被其他三个顶点指向,则该顶点的入度为3。当有向图中各顶点的入度确定之后,并行执行入度为0的顶点对应的智能合约的调用。即,将入度为0的智能合约的调用所对应的合约方法同时放入合约执行线程池中执行。也就是说,同一时刻入度为0的智能合约的调用是同时执行的,从而实现了多个合约方法的并行执行。
S406,当并行执行完成后,将入度为0的顶点的对端顶点的入度下调,并返回确定有向图内入度为0的顶点的步骤,直至有向图内顶点对应的智能合约调用的合约方法均执行完成。
具体地,当一个顶点对应的智能合约调用的合约方法执行之后,将该顶点对应的对端顶点的入度进行调整,即下调对端顶点的入度。对端顶点是指该顶点所指向的顶点,也就是被该顶点指向的顶点。下调对端顶点的入度可以理解为将已经执行的顶点的对端顶点的入度减去1。然后,由于对端顶点的入度被调整了,因此需要重新确定入度为0的顶点,即返回步骤S402遍历有向图内的顶点,确定有向图当前入度为0的顶点,并且再次执行入度为0的顶点对应的智能合约调用的合约方法,直至有向图中所有顶点对应智能合约调用的合约方法执行完成。
上述区块链智能合约执行方法,通过已经标记为可并行的合约方法对智能合约的调用进行分组,从而将连续调用同一个可并行的合约方法的智能合约的调用划分为到一个合约组中,进而在串行执行合约组,且进一步将合约组中涉及数据不同的智能合约的调用并行执行,以此提高了区块链内智能合约的调用并行的可能性,加快了出块的速度,从而提高了执行效率。
如图5所示,在一个实施例中,区块链智能合约执行方法还包括标记可并行的合约方法的步骤,具体包括以下步骤:
S502,接收并行注册请求,并行注册请求携带有待注册合约方法。
其中,并行注册请求是用于指示对合约方法进行并行注册的指令,即用于检测合约方法是否能够并行的指令。待注册合约方法即当前需要进行并行注册的合约。
具体地,当合约编写人员编写好可并行的合约方法之后,向合约虚拟机下发并行注册请求,并将该合约方法通过并行注册请求一并发送到合约虚拟机中。合约编写人员可以根据区块链提供的预编译合约中的可并行规则编写可并行的合约方法。
S504,当确定待注册合约方法符合可并行规则时,将待注册合约标记为可并行的合约方法。
其中,可并行规则即为用于检测合约方法是否能够并行的规则,也就是说,需要并行的合约方法应当要符合可并行规则。
具体地,当接收到并行注册请求之后,调用预先配置好的可并行规则,基于该可并行规则检测待注册合约方法是否可以并行。当确定待注册合约方法符合可并行规则时,即待注册合约方法能够并行,将待注册合约标记为可并行的合约方法。标记可以是为合约方法添加相应的标签,基于添加的标签表示该合约方法为可并行的合约方法。或者可以是将该合约方法存储至对应的可并行列表中。也就是说,当合约虚拟机确定智能合约调用的合约方法是否为可并行的合约方法时,可以通过获取该合约方法的标签确定,也可以判断该合约方法是否存在于可并行列表中确定。而当确定待注册合约方法不符合可并行规则时,即该待注册合约方法不能够并行。可并行规则具体包括以下四条:①不调用其他智能合约,即待注册合约方法不能调用其他的智能合约。②不调用合约内的其他方法,即待注册合约方法不能调用其他的合约方法。③合约方法内改变的全局变量都是由合约调用的参数来确定。④设置变量值的方法是简单的赋值(例如,a=b),而不是根据条件进行赋值(例如,if(x==true,a=b)),即不能根据条件来设置变量值。也就是说,只要待注册合约方法同时满足上述4个条件时,才能注册标记为可并行的合约方法。
在本实施例中,通过预先对编写的合约方法进行可并行注册,当进行分组时即可快速确定可并行和不可并行的合约方法,从而加快分组的速度,提高处理效率。另外,可以将预编译合约中的规则与可并行规则保持一致,即当编写人员需要可并行的合约方法时,能够根据预编译合约预先编写满足可并行规则的合约方法,从而提高注册可并行的合约方法的成功率。
在一个实施例中,以智能合约的调用是交易,且涉及的键为交易双方账户为例对区块链智能合约执行方法进行详细解释说明。
具体地,当接收到用户的交易之后,从区块内获取交易对应的智能合约以及智能合约调用的合约方法,为调用该智能合约的交易进行分组。将连续调用同一个可并行的合约方法的交易划分到一个合约中,将未连续调用同一个可并行的合约方法的交易分别单独划分为一个合约组,以及将调用不可并行的合约方法的交易分别单独划分为一个合约组。例如,假设本实施例六个交易对应的智能合约以及智能合约调用的合约方法情况如下表2所示:
表2:交易调用的智能合约以及智能合约所调用的合约方法
如图6所示,提供一种根据表2进行合约分组得到的合约组的示意图。参考图6,由于交易1和交易2连续,且交易1和交易2对应的智能合约1均调用可并行的合约方法1,因此交易1和交易2划分为一个合约组。同理,交易4和交易5为一个合约组。交易3和交易6对应的合约方法为不可并行的合约方法2,即交易2为单独的一个合约组、交易6为一个单独的合约组。并且,根据各交易的次序确定合约组的串行顺序。
确定串行的合约组之后,根据串行顺序串行执行各个合约组。若被执行的合约组中只包括一个交易,则直接执行该交易调用的合约方法完成对应的交易。若被执行的合约组中包括多个交易,则构造交易对应的有向图。
如图7所示,提供一种有向图的示意图。由于本实施例中智能合约用于处理交易,则交易涉及的键为交易双方的账户,分别包括转出方和转入方。因此将该交易的转出方和转入方作为有向图的顶点,然后根据转出方和转入方之间的交集关系确定顶点的连线,以及根据该交易在区块内的交易次序确定连线的方向。参考图7,假设合约组内一共有六个调用智能合约的交易,且这六个交易所涉及到的转出方和转入方分别为“A1,A2”→“A3,A4”→“A5,A6”→“A1,A4”→“A5,A3”→“A5,A4”。其中,A1、A2、A3、A4、A5表示转出方和转入方,比如,“A1,A2”中,A1为转出方,A2为转入方,或A1为转入方,A2为转出方。应当理解,A1-A5中任意一个根据不同的交易可同时作为转出方或转入方。即,当构造这六个交易对应的有向图时,确定所要构造的有向图的顶点一共有六个,分别为“A1,A2”、“A3,A4”、“A5,A6”、“A1,A4”、“A5,A3”、“A5,A4”。然后,根据转出方和转入方确定存在交集关系的顶点。以“A1,A2”、“A1,A4”和“A3,A4”为例进行说明,由于“A1,A2”与“A1,A4”存在相同的账户A1,则确定“A1,A2”与“A1,A4”存在交集关系,需要将“A1,A2”与“A1,A4”连线。并且,“A1,A2”对应的交易的次序优先“A1,A4”对应的交易的次序,则“A1,A2”与“A1,A4”连线的方向是“A1,A2”指向“A1,A4”。而“A1,A2”与“A3,A4”之间的转出方和转入方均不相同,则表示“A1,A2”与“A3,A4”不存在相同的账户,即不存在交集关系,对应的顶点不需要进行连线。其他顶点的连线同理可得,在此不在赘述。通过构造交易对应的有向图,能够准确得知各交易的交集关系,从而便于决定合约组内各交易的执行方式。
当构造得到对应的有向图之后,根据有向图中各顶点的入度执行交易对应智能合约调用的合约方法。首先,通过对图7进行遍历,确定图7中入度为0的顶点。参考图7,由于“A1,A2”、“A3,A4”、“A5,A6”没有被其他顶点指向,则“A1,A2”、“A3,A4”、“A5,A6”的入度为0。而“A1,A4”被“A1,A2”和“A3,A4”指向,则“A1,A4”的入度为2。“A5,A3”被“A3,A4”、“A5,A6”指向,入度同样为2。“A5,A4”被“A1,A4”和“A5,A3”指向,入度也为2。也就是说,可以将顶点“A1,A2”、“A3,A4”、“A5,A6”对应的交易的智能合约调用的合约方法并行执行。当执行完之后,即可调整已执行顶点对应的对端顶点的入度。参考图7,顶点“A1,A2”的对端顶点为“A1,A4”,顶点“A3,A4”的对端顶点即为“A1,A4”和“A5,A3”。因此,将“A1,A2”、“A3,A4”、“A5,A6”对应的交易的智能合约调用的合约方法并行执行完成之后,将“A1,A2”、“A3,A4”、“A5,A6”对应的端点顶点的入度减去1,即“A1,A4”的入度要减2,减去2之后,“A1,A4”的入度为0。同样的,“A5,A3”的入度也要减2,减去2之后的入度同样为0。则当前入度为0的顶点为“A1,A4”和“A5,A3”,即将“A1,A4”和“A5,A3”对应的交易的智能合约调用的合约方法放入合约执行线程池中并行执行。同样的,当“A1,A4”和“A5,A3”对应的交易的智能合约调用的合约方法执行完成后,“A5,A4”的入度也会调整为0,即可执行“A5,A4”对应的交易的智能合约调用的合约方法,从而该合约组内六个交易执行完成。应当理解,在本实施例中,并不限定于需要等所有入度为0的顶点均执行完成之后才能调整其对端顶点的入度。可以当任意一个入度为0的顶点执行完成之后就立即调整其对端顶点的入度。例如,并不限定于需要等顶点“A1,A2”和顶点“A3,A4”均执行完成之后才能调整其对端顶点“A1,A4”和“A5,A3”的入度。而是,若当顶点“A1,A2”执行完成之后,无需等待顶点“A3,A4”执行即可将对端顶点“A1,A4”的入度下调1。
图2、4、5为一个实施例中区块链智能合约执行方法的流程示意图。应该理解的是,虽然图2、4、5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、6、7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供一种区块链智能合约执行装置,参考图8,区块链智能合约执行装置包括:获取模块802、确定模块804、分组模块806和执行模块808,具体包括:
获取模块802,用于获取区块内的智能合约,以及智能合约调用的合约方法。
确定模块804,用于确定标记为可并行的合约方法。
分组模块806,用于根据智能合约调用的合约方法,对智能合约的调用进行分组,得到多个合约组;其中,将连续调用同一个可并行的合约方法的智能合约的调用划分为一个合约组。
执行模块808,用于串行执行各合约组,其中,合约组内任意两个涉及数据不同的智能合约的调用并行执行。
在一个实施例中,分组模块806还用于将连续调用同一个可并行的合约方法的智能合约的调用划分为一个合约组;将调用未标记为可并行的合约方法的智能合约的调用分别单独划分为一个合约组;将未连续调用同一个可并行的合约方法的智能合约的调用分别单独划分为一个合约组。
在一个实施例中,区块链智能合约执行装置还包括注册模块,用于接收并行注册请求,并行注册请求携带有待注册合约方法;当确定待注册合约方法符合可并行规则时,将待注册合约方法标记为可并行的合约方法。
在一个实施例中,执行模块808还用于当合约组内只包括一个智能合约的调用时,执行智能合约的调用;当合约组内包括多个智能合约的调用时,构造与各智能合约的调用对应的有向图;基于有向图中各顶点的入度,执行各智能合约的调用。
在一个实施例中,执行模块808还用于将各智能合约的调用的涉及数据作为有向图的顶点;根据各涉及数据,确定存在交集的智能合约的调用;基于智能合约的调用在区块内的次序,将任意两个存在交集的智能合约的调用对应的顶点进行有向连接,得到有向图,其中,次序优先的智能合约的调用对应的顶点指向另一个智能合约的调用对应的顶点。
在一个实施例中,执行模块808还用于当一个智能合约的调用与另一个智能合约的调用不存在相同的涉及数据时,确定两个智能合约的调用不存在交集;当一个智能合约的调用与另一个智能合约的调用存在任意一个相同的涉及数据时,确定两个智能合约的调用存在交集。
在一个实施例中,执行模块808还用于遍历有向图内的顶点,确定有向图内入度为0的顶点;将入度为0的顶点对应的智能合约的调用并行执行;当并行执行完成后,将入度为0的顶点的对端顶点的入度下调,并返回遍历有向图内的顶点,确定有向图内入度为0的顶点的步骤,直至有向图内顶点对应的智能合约的调用均执行完成。
图9示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的区块链节点110。如图9所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现场景识别方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行场景识别方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的区块链智能合约执行装置可以实现为一种计算机程序的形式,计算机程序可在如图9所示的计算机设备上运行。计算机设备的存储器中可存储组成该区块链智能合约执行装置的各个程序模块,比如,图8所示的获取模块802、确定模块804、分组模块806和执行模块808。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的区块链智能合约执行方法中的步骤。
例如,图9所示的计算机设备可以通过如图8所示的区块链智能合约执行装置中的获取模块802执行步骤S202,获取区块内的智能合约,以及智能合约调用的合约方法。计算机设备可通过确定模块804执行步骤S204,确定标记为可并行的合约方法。计算机设备可通过分组模块806执行步骤S206,根据智能合约调用的合约方法,对智能合约的调用进行分组,得到多个合约组;其中,将连续调用同一个可并行的合约方法的智能合约的调用划分为一个合约组。计算机设备可通过执行模块808执行步骤S208,串行执行各合约组,其中,合约组内任意两个涉及数据不同的智能合约的调用并行执行。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述区块链智能合约执行方法的步骤。此处区块链智能合约执行方法的步骤可以是上述各个实施例的区块链智能合约执行方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述区块链智能合约执行方法的步骤。此处区块链智能合约执行方法的步骤可以是上述各个实施例的区块链智能合约执行方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种区块链智能合约执行方法,包括:
获取区块内的智能合约,以及所述智能合约调用的合约方法;
确定标记为可并行的合约方法;
根据所述智能合约调用的合约方法,对所述智能合约的调用进行分组,得到多个合约组;其中,将连续调用同一个可并行的合约方法的所述智能合约的调用划分为一个合约组;
串行执行各所述合约组,其中,所述合约组内任意两个涉及数据不同的智能合约的调用并行执行。
2.根据权利要求1所述的方法,其特征在于,根据所述智能合约调用的合约方法,对所述智能合约的调用进行分组,得到多个合约组,包括:
将连续调用同一个可并行的合约方法的所述智能合约的调用划分为一个合约组;
将调用未标记为可并行的合约方法的所述智能合约的调用分别单独划分为一个合约组;
将未连续调用同一个可并行的合约方法的所述智能合约的调用分别单独划分为一个合约组。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收并行注册请求,所述并行注册请求携带有待注册合约方法;
当确定所述待注册合约方法符合可并行规则时,将所述待注册合约方法标记为可并行的合约方法。
4.根据权利要求1所述的方法,其特征在于,所述串行执行各所述合约组,包括:
当所述合约组内只包括一个智能合约的调用时,执行所述智能合约的调用;
当所述合约组内包括多个智能合约的调用时,构造与各所述智能合约的调用对应的有向图;
基于所述有向图中各顶点的入度,执行各所述智能合约的调用。
5.根据权利要求4所述的方法,其特征在于,所述构造与各所述智能合约的调用对应的有向图,包括:
将各所述智能合约的调用的涉及数据作为有向图的顶点;
根据各所述涉及数据,确定存在交集的智能合约的调用;
基于所述智能合约的调用在所述区块内的次序,将任意两个存在交集的智能合约的调用对应的顶点进行有向连接,得到有向图,其中,次序优先的智能合约的调用对应的顶点指向另一个智能合约的调用对应的顶点。
6.根据权利要求5所述的方法,其特征在于,所述根据各所述涉及数据,确定存在交集的智能合约的调用,包括:
当一个智能合约的调用的与另一个智能合约的调用不存在相同的涉及数据时,确定两个智能合约的调用不存在交集;
当一个智能合约的调用与另一个智能合约的调用存在任意一个相同的涉及数据时,确定两个智能合约的调用存在交集。
7.根据权利要求5所述的方法,其特征在于,所述基于所述有向图中各顶点的入度,执行各所述智能合约的调用,包括:
遍历所述有向图内的顶点,确定所述有向图内入度为0的顶点;
将所述入度为0的顶点对应的智能合约的调用并行执行;
当所述并行执行完成后,将所述入度为0的顶点的对端顶点的入度下调,并返回遍历所述有向图内的顶点,确定所述有向图内入度为0的顶点的步骤,直至所述有向图内顶点对应的智能合约的调用均执行完成。
8.一种区块链智能合约执行装置,其特征在于,所述装置包括:
获取模块,用于获取区块内的智能合约,以及所述智能合约调用的合约方法;
确定模块,用于确定标记为可并行的合约方法;
分组模块,用于根据所述智能合约调用的合约方法,对所述智能合约的调用进行分组,得到多个合约组;其中,将连续调用同一个可并行的合约方法的所述智能合约的调用划分为一个合约组;
执行模块,用于串行执行各所述合约组,其中,所述合约组内任意两个涉及数据不同的智能合约的调用并行执行。
9.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910832634.6A CN110555700A (zh) | 2019-09-04 | 2019-09-04 | 区块链智能合约执行方法、装置、计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910832634.6A CN110555700A (zh) | 2019-09-04 | 2019-09-04 | 区块链智能合约执行方法、装置、计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110555700A true CN110555700A (zh) | 2019-12-10 |
Family
ID=68738929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910832634.6A Pending CN110555700A (zh) | 2019-09-04 | 2019-09-04 | 区块链智能合约执行方法、装置、计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110555700A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111563820A (zh) * | 2020-05-08 | 2020-08-21 | 中国工商银行股份有限公司 | 智能合约并行执行方法及装置 |
WO2020224353A1 (zh) * | 2019-05-07 | 2020-11-12 | 深圳前海微众银行股份有限公司 | 一种区块链中智能合约的发布方法及装置 |
CN112308716A (zh) * | 2020-10-28 | 2021-02-02 | 深圳前海微众银行股份有限公司 | 区块链智能合约执行方法、装置、设备及计算机存储介质 |
CN112598525A (zh) * | 2021-02-26 | 2021-04-02 | 北京全息智信科技有限公司 | 一种智能合约分簇并行的区块链实现方法及装置 |
CN112748932A (zh) * | 2021-01-19 | 2021-05-04 | 矩阵元技术(深圳)有限公司 | 基于智能合约的数据处理方法、服务器 |
CN112835700A (zh) * | 2020-12-07 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
CN113869902A (zh) * | 2021-12-03 | 2021-12-31 | 深圳前海微众银行股份有限公司 | 一种区块链交易执行方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107833060A (zh) * | 2017-11-13 | 2018-03-23 | 中国银行股份有限公司 | 一种区块链中智能合约交易的验证方法以及系统 |
CN108269072A (zh) * | 2016-12-30 | 2018-07-10 | 深圳瀚德创客金融投资有限公司 | 用于区块链的交易处理方法和网络节点 |
CN108537543A (zh) * | 2018-03-30 | 2018-09-14 | 百度在线网络技术(北京)有限公司 | 区块链数据的并行处理方法、装置、设备和存储介质 |
CN109377230A (zh) * | 2018-12-11 | 2019-02-22 | 四川大学 | 一种基于有向图的智能合约在区块链中实现的方法及装置 |
CN109784930A (zh) * | 2019-02-18 | 2019-05-21 | 深圳市网心科技有限公司 | 一种区块链交易数据的处理方法、装置、电子设备及介质 |
US20190245697A1 (en) * | 2018-02-05 | 2019-08-08 | Nokia Technologies Oy | Securing blockchain access through a gateway |
CN110135985A (zh) * | 2019-04-04 | 2019-08-16 | 杭州抖音科技有限公司 | 一种区块链上交易的并行执行方法及系统 |
-
2019
- 2019-09-04 CN CN201910832634.6A patent/CN110555700A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108269072A (zh) * | 2016-12-30 | 2018-07-10 | 深圳瀚德创客金融投资有限公司 | 用于区块链的交易处理方法和网络节点 |
CN107833060A (zh) * | 2017-11-13 | 2018-03-23 | 中国银行股份有限公司 | 一种区块链中智能合约交易的验证方法以及系统 |
US20190245697A1 (en) * | 2018-02-05 | 2019-08-08 | Nokia Technologies Oy | Securing blockchain access through a gateway |
CN108537543A (zh) * | 2018-03-30 | 2018-09-14 | 百度在线网络技术(北京)有限公司 | 区块链数据的并行处理方法、装置、设备和存储介质 |
CN109377230A (zh) * | 2018-12-11 | 2019-02-22 | 四川大学 | 一种基于有向图的智能合约在区块链中实现的方法及装置 |
CN109784930A (zh) * | 2019-02-18 | 2019-05-21 | 深圳市网心科技有限公司 | 一种区块链交易数据的处理方法、装置、电子设备及介质 |
CN110135985A (zh) * | 2019-04-04 | 2019-08-16 | 杭州抖音科技有限公司 | 一种区块链上交易的并行执行方法及系统 |
Non-Patent Citations (1)
Title |
---|
黄洁华;高灵超;许玉壮;白晓敏;胡凯;: "众筹区块链上的智能合约设计", 信息安全研究, no. 03, 5 March 2017 (2017-03-05), pages 21 - 29 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020224353A1 (zh) * | 2019-05-07 | 2020-11-12 | 深圳前海微众银行股份有限公司 | 一种区块链中智能合约的发布方法及装置 |
CN111563820A (zh) * | 2020-05-08 | 2020-08-21 | 中国工商银行股份有限公司 | 智能合约并行执行方法及装置 |
CN111563820B (zh) * | 2020-05-08 | 2023-09-22 | 中国工商银行股份有限公司 | 智能合约并行执行方法及装置 |
CN112308716A (zh) * | 2020-10-28 | 2021-02-02 | 深圳前海微众银行股份有限公司 | 区块链智能合约执行方法、装置、设备及计算机存储介质 |
CN112308716B (zh) * | 2020-10-28 | 2024-02-20 | 深圳前海微众银行股份有限公司 | 区块链智能合约执行方法、装置、设备及计算机存储介质 |
CN112835700A (zh) * | 2020-12-07 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
CN112835700B (zh) * | 2020-12-07 | 2022-07-12 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
CN112748932A (zh) * | 2021-01-19 | 2021-05-04 | 矩阵元技术(深圳)有限公司 | 基于智能合约的数据处理方法、服务器 |
CN112748932B (zh) * | 2021-01-19 | 2022-03-22 | 矩阵元技术(深圳)有限公司 | 基于智能合约的数据处理方法、服务器 |
CN112598525A (zh) * | 2021-02-26 | 2021-04-02 | 北京全息智信科技有限公司 | 一种智能合约分簇并行的区块链实现方法及装置 |
CN112598525B (zh) * | 2021-02-26 | 2021-12-03 | 北京全息智信科技有限公司 | 一种智能合约分簇并行的区块链实现方法及装置 |
CN113869902A (zh) * | 2021-12-03 | 2021-12-31 | 深圳前海微众银行股份有限公司 | 一种区块链交易执行方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110555700A (zh) | 区块链智能合约执行方法、装置、计算机可读存储介质 | |
KR102103130B1 (ko) | 서비스 데이터를 블록체인에 기입하기 위한 방법 및 장치, 그리고 서비스 하위세트를 결정하기 위한 방법 | |
CN106991010A (zh) | 一种用于流媒体服务器的内存集中动态分配方法 | |
US20220358119A1 (en) | Blockchain consensus method, apparatus and device | |
CN110599166A (zh) | 一种区块链内获取交易依赖关系的方法及装置 | |
CN112559529A (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN116011562A (zh) | 算子处理方法及算子处理装置、电子设备和可读存储介质 | |
CN111581155A (zh) | 数据入数据库的方法、装置和计算机设备 | |
US8543722B2 (en) | Message passing with queues and channels | |
CN114003775A (zh) | 图数据处理、查询方法及其系统 | |
CN114138468A (zh) | 一种封装任务量自适应分配方法、装置及存储介质 | |
CN112287400A (zh) | 超级账本中的交易排序方法、装置和计算机设备 | |
CN110727831A (zh) | 全路径计算方法、装置、计算机设备和存储介质 | |
CN113792170B (zh) | 图数据划分方法、装置和计算机设备 | |
US11074294B2 (en) | System and method for Directed Acyclic Graph (DAG) encoding into hash linked blocks | |
CN114741173A (zh) | Dag任务编排的方法、装置、电子设备和存储介质 | |
CN110851446B (zh) | 数据表的生成方法、装置、计算机设备及存储介质 | |
CN114328486A (zh) | 基于模型的数据质量核查方法及装置 | |
US7664723B2 (en) | Symbolic computation using an inverted match | |
CN117764206B (zh) | 一种多模型集成方法及系统 | |
US20220335039A1 (en) | Data file distribution method and equipment, smart device and computer storage medium | |
CN114969038A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN112232819A (zh) | 数据的处理方法以及区块链节点 | |
CN115640360A (zh) | 动态压缩型分布式数据存储方法及存储系统、装置 | |
CN115809230A (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 |