CN110175844A - 一种区块链中智能合约的发布方法及装置 - Google Patents
一种区块链中智能合约的发布方法及装置 Download PDFInfo
- Publication number
- CN110175844A CN110175844A CN201910373705.0A CN201910373705A CN110175844A CN 110175844 A CN110175844 A CN 110175844A CN 201910373705 A CN201910373705 A CN 201910373705A CN 110175844 A CN110175844 A CN 110175844A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- dependent tree
- node
- contract
- intelligence
- 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 49
- 230000001419 dependent effect Effects 0.000 claims abstract description 140
- 238000012508 change request Methods 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 4
- 230000001052 transient effect Effects 0.000 claims description 4
- 238000004891 communication Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000010276 construction Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 4
- 238000009826 distribution Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- 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/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例涉及科技金融(Fintech)领域,尤其涉及一种区块链(Block chain)中智能合约的发布方法及装置,用以提高智能合约的发布效率和准确率。本发明实施例包括:获取待发布的智能合约;遍历所述待发布的智能合约,确定所述待发布的智能合约之间的依赖关系;依据所述依赖关系,建立N个依赖树,所述依赖树的一个节点对应一个智能合约;N≥1;针对任一依赖树,从所述依赖树的叶子节点开始,直至所述依赖树的根节点,依次发布各节点所对应的智能合约。
Description
技术领域
本发明涉及科技金融(Fintech)领域,尤其涉及一种区块链中智能合约的发布方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Finteh)转变,区块链(Block chain)技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。
智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议,其执行过程以交易的形式在区块链上共识、确认。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
智能合约为一种运行在区块链上的代码片段,需要发布到区块链上,才能运行。现有区块链的一个应用项目根据功能设置多个模块,每个模块根据功能又会划分为几个数据结构,所有功能均利用智能合约实现,运行在区块链上。
目前对于每个智能合约的发布都需要单独写发布代码,如果智能合约有更新,之前写的发布代码需要重新编写,并重新整理智能合约之间的依赖关系,耗时耗力。
发明内容
本申请提供一种区块链中智能合约的发布方法及装置,用以提高智能合约的发布效率和准确率。
本发明实施例提供的一种区块链中智能合约的发布方法,包括:
获取待发布的智能合约;
遍历所述待发布的智能合约,确定所述待发布的智能合约之间的依赖关系;
依据所述依赖关系,建立N个依赖树,所述依赖树的一个节点对应一个智能合约;N≥1;
针对任一依赖树,从所述依赖树的叶子节点开始,直至所述依赖树的根节点,依次发布各节点所对应的智能合约。
一种可选的实施例中,所述遍历所述待发布的智能合约,确定所述待发布的智能合约之间的依赖关系之前,还包括:
针对任一智能合约,执行以下步骤:
识别所述智能合约调用的地址参数;所述地址参数用于指示所述智能合约调用的智能合约;
将所述地址参数标准化,以确定所述地址参数对应的智能合约。
一种可选的实施例中,所述从所述依赖树的叶子节点开始,直至所述依赖树的根节点,依次发布各节点所对应的智能合约,包括:
对所述依赖树的叶子节点对应的智能合约进行发布;
将智能合约发布成功的叶子节点从所述依赖树中移除;
重复对所述依赖树的叶子节点对应的智能合约进行发布的步骤,直至所述依赖树中只存在根节点;
对所述根节点对应的智能合约进行发布。
一种可选的实施例中,所述依据所述依赖关系,建立N个依赖树之后,还包括:
接收智能合约变更请求;
根据所述智能合约变更请求,更新依赖树中的节点。
本发明实施例还提供一种区块链中智能合约的发布装置,包括:
获取单元,用于获取待发布的智能合约;
确定单元,用于遍历所述待发布的智能合约,确定所述待发布的智能合约之间的依赖关系;
建立单元,用于依据所述依赖关系,建立N个依赖树,所述依赖树的一个节点对应一个智能合约;N≥1;
发布单元,用于针对任一依赖树,从所述依赖树的叶子节点开始,直至所述依赖树的根节点,依次发布各节点所对应的智能合约。
一种可选的实施例中,所述确定单元,还用于:
针对任一智能合约,执行以下步骤:
识别所述智能合约调用的地址参数;所述地址参数用于指示所述智能合约调用的智能合约;
将所述地址参数标准化,以确定所述地址参数对应的智能合约。
一种可选的实施例中,所述发布单元,具体用于:
对所述依赖树的叶子节点对应的智能合约进行发布;
将智能合约发布成功的叶子节点从所述依赖树中移除;
重复对所述依赖树的叶子节点对应的智能合约进行发布的步骤,直至所述依赖树中只存在根节点;
对所述根节点对应的智能合约进行发布。
一种可选的实施例中,所述获取单元,还用于接收智能合约变更请求;
所述建立单元,还用于根据所述智能合约变更请求,更新依赖树中的节点。
本发明实施例还提供一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方法。
本发明实施例还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上所述的方法。
本发明实施例中,获取待发布的智能合约,遍历所有待发布的智能合约,确定智能合约之间的依赖关系。依据依赖关系,建立N个依赖树,其中依赖树的一个节点对应一个智能合约,N≥1。针对任一依赖树,从该依赖主的叶子节点开始,直至该依赖树的根节点,依次发布各节点对应的智能合约。从而,通过构建依赖树发布智能合约,以树的遍历来自动和高效的发布智能合约,不需要人工整理发布顺序,不担心错乱,提高了智能合约发布准确率。此外,若有智能节点更新或智能节点之间的依赖关系变更,无需重复编写代码,只需改变依赖树中的节点或者节点顺序,重新构造一个新的依赖树,并重新执行一次发布遍历依赖树即可,从而极大的简化了智能合约的发布流程,提高了发布效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种区块链的应用项目的结构示意图;
图2为本发明实施例提供的一种区块链中智能合约的发布方法的流程示意图;
图3a-图3f为本发明实施例提供的依赖树建立过程中的结构示意图;
图4为本发明具体实施例一提供的智能合约的发布过程的流程示意图;
图5为本发明具体实施例二提供的智能合约更新后的发布过程的流程示意图;
图6为本发明实施例提供的一种区块链中智能合约的发布装置的结构示意图;
图7为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了便于理解,下面对本发明实施例中可能涉及的名词进行定义和解释。
区块链:是由一系列区块组成的一条链,每个块上除了记录本块的数据还会记录上一块的Hash(哈希)值,通过这种方式组成一条链。区块链的核心理念有两个,一个是密码学技术,另一个是去中心化思想,基于这两个理念做到区块链上的历史信息无法被篡改。一个区块由块头和块体组成,其中块头定义包括该区块高度h,上一个区块的Hash值prevHash等重要字段,而块体主要存储交易数据。
智能合约:一种可以运行在区块链上的代码片段,智能合约的执行过程会以交易的形式在区块链上共识、确认。
共识:一种区块链各节点对某个交易的正确性达成一致的算法。
web3j:使用HTTP(超文本传输协议,Hyper Text Transfer Protocol)或IPC(进程间通信,Inter-Process Communication)连接与本地或远程以太坊节点交互的库集合。
WeIdentiy:一套分布式多中心的技术解决方案,可承载实体对象(人或者物)的现实身份与链上身份的可信映射、以及实现实体对象之间安全的访问授权与数据交换。
Solidity:一种智能合约高级语言,运行在以太坊虚拟机(EVM)之上。
java:一门面向对象的编程语言,用以编写桌面应用程序、Web应用程序、分布式***和嵌入式***应用程序等。
如图1所示,本发明实施例所适用的一种应用场景中,一个区块链的应用项目根据功能分成三个模块,分别为模块A、模块B和模块C。每个模块又根据功能分成多个数据结构,例如,模块A分成了A1、A2、A3三个数据结构,模块B分成了B1、B2、B3三个数据结构,模块C分成了C1、C2、C3三个数据结构,所有这些数据结构均分别利用智能合约实现,运行在区块链上,记为智能合约A1、智能合约B1等。
现有技术中,Solidity编写的智能合约的发布方式是通过调用web3j的接口发布。针对如图1的应用场景,通用的发布过程如下:
步骤一:按模块A、模块B、模块C分别进行发布。假设发布模块A,从智能合约A1开始,检查智能合约A1的构造方法中的参数,传入参数,调用web3j的接口发布。如果智能合约A1的参数中包含了其他的智能合约,例如智能合约A1的参数中包含有智能合约A2和智能合约B3的地址参数,那么就需要按先发布智能合约A2和智能合约B3,然后再发布智能合约A1。
步骤二:每个智能合约按照步骤一检查构造方法中的参数之后,编写发布代码进行发布,直至所有模块均发布完成。
步骤三:最后将智能合约的地址保存下来,即完成发布。
如果后续遇到智能合约的更新或者依赖关系的变化,需要重新调整发布代码,并且按照上述步骤重新发布。
为了解决上述现有技术中的问题,本发明实施例提供了一种区块链中智能合约的发布方法,如图2所示,本发明实施例提供的区块链中智能合约的发布方法包括以下步骤:
步骤201、获取待发布的智能合约。
步骤202、遍历所述待发布的智能合约,确定所述待发布的智能合约之间的依赖关系。
具体遍历过程中,按每个智能合约的构造方法,动态识别智能合约中的地址参数,并根据地址参数确定依赖关系。例如智能合约A1的构造方法中包含智能合约A2的地址参数,则认为智能合约A1依赖智能合约A2。
步骤203、依据所述依赖关系,建立N个依赖树,所述依赖树的一个节点对应一个智能合约;N≥1。
上述步骤根据智能合约支架内的依赖关系,动态构建了多组树形结构的依赖关系,每一组具有依赖关系的智能合约将形成有一个根节点和多个叶子节点的依赖树。若任两个智能合约之间不存在依赖关系,则这两个智能合约分别位于两个依赖树上。此外,每个依赖树都具有一个根节点,但不是每棵依赖树都具有叶子节点。例如,若智能合约C1没有依赖任何其它智能合约,也没有别的智能合约依赖智能合约C1,则智能合约C1单独形成一个依赖树,该依赖树只具有根节点,对应于智能合约C1,没有叶子节点。
步骤204、针对任一依赖树,从所述依赖树的叶子节点开始,直至所述依赖树的根节点,依次发布各节点所对应的智能合约。
具体来说,动态构造完依赖树之后,所构建的依赖树的每个叶子节点都对应于一个智能合约对象。假设采用web3j的java版本来进行智能合约发布,那么每个智能合约都可以转换成一个java类。若在构造方法里是通过参数名和智能合约匹配的方式构造,因此,在发布的时候然后可以以反射的方式找到对应的智能合约,动态的发布。
本发明实施例中,获取待发布的智能合约,遍历所有待发布的智能合约,确定智能合约之间的依赖关系。依据依赖关系,建立N个依赖树,其中依赖树的一个节点对应一个智能合约,N≥1。针对任一依赖树,从该依赖主的叶子节点开始,直至该依赖树的根节点,依次发布各节点对应的智能合约。从而,通过构建依赖树发布智能合约,以树的遍历来自动和高效的发布智能合约,不需要人工整理发布顺序,不担心错乱,提高了智能合约发布准确率。此外,若有智能节点更新或智能节点之间的依赖关系变更,无需重复编写代码,只需改变依赖树中的节点或者节点顺序,重新构造一个新的依赖树,并重新执行一次发布遍历依赖树即可,从而极大的简化了智能合约的发布流程,提高了发布效率。
为了保证有效建立智能合约之间的依赖关系,所述遍历所述待发布的智能合约,确定所述待发布的智能合约之间的依赖关系之前,还包括:
针对任一智能合约,执行以下步骤:
识别所述智能合约调用的地址参数;所述地址参数用于指示所述智能合约调用的智能合约;
将所述地址参数标准化,以确定所述地址参数对应的智能合约。
具体来说,智能合约的构造方法中包含该智能合约调用的智能合约的地址参数。举例来说,智能合约A1的构造方法的一段内容如下代码1所示:
其中,CptController为智能合约A1的智能合约名,cptDataAddress为智能合约A2的地址,weIdContractAddress为智能合约B1的地址。智能合约A1的构造方法中包含智能合约A2的地址参数以及智能合约B1的地址参数,则智能合约A1调用智能合约A2以及智能合约B1。则在现有技术中,需先发布智能合约A2以及智能合约B1,确定智能合约A2与智能合约B1的地址后,再发布智能合约A1。而本发明实施例中,无需先发布智能合约A2与智能合约B1,而是从智能合约A1的构造方法中确定智能合约A1调用了智能合约A2以及智能合约B1,并将智能合约A2以及智能合约B1的地址参数标准化。这里的标准化可以有两种情况,可以在智能合约A1构造的过程中,直接将标准化的智能合约的地址参数写入;或者,若是引用智能合约A1,则将智能合约A1中的地址参数标准化。这里,地址参数标准化可以是直接将智能合约的标识作为地址参数,或者将所有智能合约的地址统一命名格式。例如,将上述代码中智能合约A1、智能合约A2、智能合约B1分别命名为A1、A2和B1,再将智能合约A1引用的地址参数分别改为A2和B1,则上述代码1可改写成如下代码2的形式:
这里是将智能合约的标识作为地址参数来引用。或者,也可以为每个智能合约的地址设置统一格式的标识,例如,将智能合约A2的地址设置标识为Aeee,将智能合约B2的地址设置标识为Beee,则上述代码1可以改写成如下代码3的形式:
当然,也可以利用其它方式将地址参数标准化,这里不做限制。
根据智能合约调用的地址参数确定智能合约之间的依赖关系之后,根据依赖关系建立依赖树。
一种具体的构建过程中,可以针对不同的模块分别建立子依赖树,再将多个子依赖树结合形成最终的依赖树;也可以直接遍历所有模块中智能合约,直接建立依赖树。
下面举例来说明,为了便于描述,举例中的智能合约A1用A1表示,其它描述类似。一种具体的示例中,分别遍历每一个模块,针对一个模块建立每个智能合约的子依赖树。对于图1模块A中的智能合约,若存在以下依赖关系,A1依赖于A2和A3,且A3依赖于B1、B3和C2,则利用节点代表智能合约,利用箭头代表智能合约之间的依赖关系,得到如图3a所示的子依赖树。对于模块B中的智能合约,存在以下依赖关系,B1依赖于B2和C2,则得到如图3b所示的子依赖树。对于模块C中的智能合约,存在以下依赖关系,C2依赖于C3,则得到如图3c的子依赖树。最后,将图3a至图3c中的子依赖树结合,形成如图3d所示的两棵依赖树301和依赖树302。其中,依赖树301包含有根节点和叶子节点,依赖树302只包含根节点。
针对上述得到的依赖树,本发明实施例直接对依赖树进行遍历和发布。所述从所述依赖树的叶子节点开始,直至所述依赖树的根节点,依次发布各节点所对应的智能合约,包括:
对所述依赖树的叶子节点对应的智能合约进行发布;
将智能合约发布成功的叶子节点从所述依赖树中移除;
重复对所述依赖树的叶子节点对应的智能合约进行发布的步骤,直至所述依赖树中只存在根节点;
对所述根节点对应的智能合约进行发布。
以发布图3d中的依赖树301为例进行说明。对于依赖树301而言,叶子节点包括A2、B2、B3、C2和C3,则首先对智能合约A2、B2、B3、C2和C3进行发布。发布完成后,将依赖树301中的节点A2、B2、B3、C2和C3移除,得到如图3e所示的依赖树结构。对于图3e中的依赖树,其叶子节点为C2,又由于C2已发布,所以可以直接将C2移除,得到如图3f所示的依赖树结构。对于图3f中的依赖树继续处理,发布B1,并在发布成功后将B1移除。再发布A3,并在发布成功后将A3移除。最后剩下根节点A1,并将根节点A1进行发布。
特殊地,对于依赖树302,由于只包含根节点,因此,只需将根节点对应的智能合约C1进行发布即可。
最后,可以将根节点作为依赖树的标识,进行保存。例如,对于图3d中的依赖树,最终保存根节点A1和根节点C1。
本发明实施例中,每次发布智能合约,均构造依赖树,并对依赖树进行调用发布。若智能合约有更新和增减,也无需重新编写智能合约的发布代码。所述依据所述依赖关系,建立N个依赖树之后,还包括:
接收智能合约变更请求;
根据所述智能合约变更请求,更新依赖树中的节点。
具体实施过程中,当模块中的智能合约有增加或删减,或者智能合约之间的依赖关系改变时,无需重新编写发布代码,只需要将依赖树中的节点进行相应变更。例如,若删除智能合约,则将依赖树中对应的节点移除;若增加智能合约重新,则将依赖树中对应位置增加节点;若智能合约中的依赖关系发生改变,则相应改变依赖树中的箭头位置和/或指向。之后,再执行新的依赖树即可。从而简化了智能合约的发布流程,提高了发布效率。
为了更清楚地理解本发明,下面以具体实施例对上述流程进行详细描述,具体实施例一为智能合约的发布过程,步骤如图4所示,包括:
步骤S401:获取待发布的智能合约。
步骤S402:识别智能合约调用的地址参数。
步骤S403:利用地址参数对应的智能合约名替换地址参数。
步骤S404:确定所有待发布的智能合约之间的依赖关系。
步骤S405:依据依赖关系,建立N个依赖树。依赖树的一个节点对应一个智能合约。
步骤S406:对依赖树的叶子节点对应的智能合约进行发布。
步骤S407:将智能合约发布成功的叶子节点从依赖树中移除。
步骤S408:判断依赖树中是否只存在根节点,若是,则执行步骤S409,否则执行步骤S406。
步骤S409:对根节点对应的智能合约进行发布,并将该根节点进行保存。
具体实施例二为智能合约更新后的发布过程,步骤如图5所示,包括:
步骤S501:接收智能合约变更请求。
步骤S502:根据智能合约变更请求,获取对应的依赖树,并更新依赖树中的节点。
步骤S503:对依赖树的叶子节点对应的智能合约进行发布。
步骤S504:将智能合约发布成功的叶子节点从依赖树中移除。
步骤S505:判断依赖树中是否只存在根节点,若是,则执行步骤S506,否则执行步骤S503。
步骤S506:对根节点对应的智能合约进行发布,并将该根节点进行保存。
本发明实施例还提供了一种区块链中智能合约的发布装置,如图6所示,包括:
获取单元601,用于获取待发布的智能合约;
确定单元602,用于遍历所述待发布的智能合约,确定所述待发布的智能合约之间的依赖关系;
建立单元603,用于依据所述依赖关系,建立N个依赖树,所述依赖树的一个节点对应一个智能合约;N≥1;
发布单元604,用于针对任一依赖树,从所述依赖树的叶子节点开始,直至所述依赖树的根节点,依次发布各节点所对应的智能合约。
可选的,所述确定单元602,还用于:
针对任一智能合约,执行以下步骤:
识别所述智能合约调用的地址参数;所述地址参数用于指示所述智能合约调用的智能合约;
将所述地址参数标准化,以确定所述地址参数对应的智能合约。
可选的,所述发布单元604,具体用于:
对所述依赖树的叶子节点对应的智能合约进行发布;
将智能合约发布成功的叶子节点从所述依赖树中移除;
重复对所述依赖树的叶子节点对应的智能合约进行发布的步骤,直至所述依赖树中只存在根节点;
对所述根节点对应的智能合约进行发布。
可选的,所述获取单元601,还用于接收智能合约变更请求;
所述建立单元603,还用于根据所述智能合约变更请求,更新依赖树中的节点。
基于相同的原理,本发明还提供一种电子设备,如图7所示,包括:
包括处理器701、存储器702、收发机703、总线接口704,其中处理器701、存储器702与收发机703之间通过总线接口704连接;
所述处理器701,用于读取所述存储器702中的程序,执行下列方法:
获取待发布的智能合约;
遍历所述待发布的智能合约,确定所述待发布的智能合约之间的依赖关系;
依据所述依赖关系,建立N个依赖树,所述依赖树的一个节点对应一个智能合约;N≥1;
针对任一依赖树,从所述依赖树的叶子节点开始,直至所述依赖树的根节点,依次发布各节点所对应的智能合约。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (10)
1.一种区块链中智能合约的发布方法,其特征在于,包括:
获取待发布的智能合约;
遍历所述待发布的智能合约,确定所述待发布的智能合约之间的依赖关系;
依据所述依赖关系,建立N个依赖树,所述依赖树的一个节点对应一个智能合约;N≥1;
针对任一依赖树,从所述依赖树的叶子节点开始,直至所述依赖树的根节点,依次发布各节点所对应的智能合约。
2.如权利要求1所述的方法,其特征在于,所述遍历所述待发布的智能合约,确定所述待发布的智能合约之间的依赖关系之前,还包括:
针对任一智能合约,执行以下步骤:
识别所述智能合约调用的地址参数;所述地址参数用于指示所述智能合约调用的智能合约;
将所述地址参数标准化,以确定所述地址参数对应的智能合约。
3.如权利要求1所述的方法,其特征在于,所述从所述依赖树的叶子节点开始,直至所述依赖树的根节点,依次发布各节点所对应的智能合约,包括:
对所述依赖树的叶子节点对应的智能合约进行发布;
将智能合约发布成功的叶子节点从所述依赖树中移除;
重复对所述依赖树的叶子节点对应的智能合约进行发布的步骤,直至所述依赖树中只存在根节点;
对所述根节点对应的智能合约进行发布。
4.如权利要求1所述的方法,其特征在于,所述依据所述依赖关系,建立N个依赖树之后,还包括:
接收智能合约变更请求;
根据所述智能合约变更请求,更新依赖树中的节点。
5.一种区块链中智能合约的发布装置,其特征在于,包括:
获取单元,用于获取待发布的智能合约;
确定单元,用于遍历所述待发布的智能合约,确定所述待发布的智能合约之间的依赖关系;
建立单元,用于依据所述依赖关系,建立N个依赖树,所述依赖树的一个节点对应一个智能合约;N≥1;
发布单元,用于针对任一依赖树,从所述依赖树的叶子节点开始,直至所述依赖树的根节点,依次发布各节点所对应的智能合约。
6.如权利要求5所述的装置,其特征在于,所述确定单元,还用于:
针对任一智能合约,执行以下步骤:
识别所述智能合约调用的地址参数;所述地址参数用于指示所述智能合约调用的智能合约;
将所述地址参数标准化,以确定所述地址参数对应的智能合约。
7.如权利要求5所述的装置,其特征在于,所述发布单元,具体用于:
对所述依赖树的叶子节点对应的智能合约进行发布;
将智能合约发布成功的叶子节点从所述依赖树中移除;
重复对所述依赖树的叶子节点对应的智能合约进行发布的步骤,直至所述依赖树中只存在根节点;
对所述根节点对应的智能合约进行发布。
8.如权利要求5所述的装置,其特征在于,
所述获取单元,还用于接收智能合约变更请求;
所述建立单元,还用于根据所述智能合约变更请求,更新依赖树中的节点。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-4任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1~4任一所述方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910373705.0A CN110175844A (zh) | 2019-05-07 | 2019-05-07 | 一种区块链中智能合约的发布方法及装置 |
PCT/CN2020/081871 WO2020224353A1 (zh) | 2019-05-07 | 2020-03-27 | 一种区块链中智能合约的发布方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910373705.0A CN110175844A (zh) | 2019-05-07 | 2019-05-07 | 一种区块链中智能合约的发布方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110175844A true CN110175844A (zh) | 2019-08-27 |
Family
ID=67691389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910373705.0A Pending CN110175844A (zh) | 2019-05-07 | 2019-05-07 | 一种区块链中智能合约的发布方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110175844A (zh) |
WO (1) | WO2020224353A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110989992A (zh) * | 2019-10-30 | 2020-04-10 | 无线生活(北京)信息技术有限公司 | 资源处理方法及装置 |
CN111488357A (zh) * | 2020-04-08 | 2020-08-04 | 北京瑞策科技有限公司 | 业务数据区块链的数字账户实现方法及装置 |
WO2020224353A1 (zh) * | 2019-05-07 | 2020-11-12 | 深圳前海微众银行股份有限公司 | 一种区块链中智能合约的发布方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145521A (zh) * | 2017-04-10 | 2017-09-08 | 杭州趣链科技有限公司 | 一种面向区块链多级智能合约的数据迁移方法 |
CN108537543A (zh) * | 2018-03-30 | 2018-09-14 | 百度在线网络技术(北京)有限公司 | 区块链数据的并行处理方法、装置、设备和存储介质 |
CN108595157A (zh) * | 2018-04-28 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、设备和存储介质 |
CN109313685A (zh) * | 2016-06-06 | 2019-02-05 | 微软技术许可有限责任公司 | 区块链***的加密应用 |
CA3052884A1 (en) * | 2018-12-28 | 2019-04-18 | Alibaba Group Holding Limited | Parallel execution of transactions in a blockchain network based on smart contract whitelists |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684189B (zh) * | 2017-10-18 | 2022-02-11 | 富士通株式会社 | 区块链智能合约的逻辑验证方法和装置及计算机存储介质 |
CN110175844A (zh) * | 2019-05-07 | 2019-08-27 | 深圳前海微众银行股份有限公司 | 一种区块链中智能合约的发布方法及装置 |
CN110555700A (zh) * | 2019-09-04 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 区块链智能合约执行方法、装置、计算机可读存储介质 |
-
2019
- 2019-05-07 CN CN201910373705.0A patent/CN110175844A/zh active Pending
-
2020
- 2020-03-27 WO PCT/CN2020/081871 patent/WO2020224353A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109313685A (zh) * | 2016-06-06 | 2019-02-05 | 微软技术许可有限责任公司 | 区块链***的加密应用 |
CN107145521A (zh) * | 2017-04-10 | 2017-09-08 | 杭州趣链科技有限公司 | 一种面向区块链多级智能合约的数据迁移方法 |
CN108537543A (zh) * | 2018-03-30 | 2018-09-14 | 百度在线网络技术(北京)有限公司 | 区块链数据的并行处理方法、装置、设备和存储介质 |
CN108595157A (zh) * | 2018-04-28 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、设备和存储介质 |
CA3052884A1 (en) * | 2018-12-28 | 2019-04-18 | Alibaba Group Holding Limited | Parallel execution of transactions in a blockchain network based on smart contract whitelists |
Non-Patent Citations (3)
Title |
---|
梅晨: "基于区块链的物联网安全平台的设计与实现"", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 11, 15 November 2018 (2018-11-15), pages 138 - 253 * |
马春光;安婧;毕伟;袁琪;: "区块链中的智能合约", 信息网络安全, no. 11, pages 13 - 22 * |
黄洁华等: "众筹区块链上的智能合约设计", 《信息安全研究》, vol. 3, no. 3, 31 March 2017 (2017-03-31), pages 211 - 219 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020224353A1 (zh) * | 2019-05-07 | 2020-11-12 | 深圳前海微众银行股份有限公司 | 一种区块链中智能合约的发布方法及装置 |
CN110989992A (zh) * | 2019-10-30 | 2020-04-10 | 无线生活(北京)信息技术有限公司 | 资源处理方法及装置 |
CN110989992B (zh) * | 2019-10-30 | 2023-10-31 | 无线生活(北京)信息技术有限公司 | 资源处理方法及装置 |
CN111488357A (zh) * | 2020-04-08 | 2020-08-04 | 北京瑞策科技有限公司 | 业务数据区块链的数字账户实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020224353A1 (zh) | 2020-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110175844A (zh) | 一种区块链中智能合约的发布方法及装置 | |
CN110458631B (zh) | 基于区块链的票据号码分配方法、装置及电子设备 | |
CN109379418A (zh) | 基于区块链处理业务***的文件的方法、设备及存储介质 | |
CN110930152B (zh) | 一种基于区块链的数据处理方法及相关设备 | |
CN110597919B (zh) | 基于区块链的数据管理方法、装置、设备及存储介质 | |
CN110392084A (zh) | 在分布式***中管理地址的方法、设备和计算机程序产品 | |
WO2020259035A1 (zh) | 一种业务代码的生成、执行方法及装置 | |
CN115631039A (zh) | 资金追踪方法、装置及设备 | |
CN112015823B (zh) | 一种区块链数据的删除方法和装置 | |
CN110490459A (zh) | 一种协议管理方法及装置 | |
CN109560996A (zh) | 物联网终端自动化测试***及方法 | |
CN111967995A (zh) | 一种智能合约的创建方法和装置 | |
CN110430248A (zh) | 基于云服务的区块链构建方法、装置、介质及电子设备 | |
CN109583862A (zh) | 一种基于区块链技术的点对点互联网公益管理方法及装置 | |
CN110380985A (zh) | 基于交易链路的流量控制方法、装置、设备及存储介质 | |
CN111596956B (zh) | 基于区块链的信息处理方法、装置、电子设备和介质 | |
CN112037032A (zh) | 基于知识图谱的额度管理方法及装置 | |
CN110728445B (zh) | 信息管理方法、信息管理装置、电子设备和介质 | |
CN111199055A (zh) | 隐私公链区块链数据可视化分析方法及*** | |
CN114022148A (zh) | 基于区块链的交易冲突检测方法、装置、设备和存储介质 | |
CN108804685A (zh) | 一种资产托管监督任务的处理方法及装置 | |
CN107133040A (zh) | 一种标准产品业务装置及业务模块扩展置换方法 | |
CA3159237A1 (en) | Method and system for converting database applications into blockchain applications | |
CN107133205A (zh) | 一种基于数据服务的云表单组件实现方法及装置 | |
CN103336710A (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 |