CN113689293A - 一种联盟链中智能合约文件确定方法及装置 - Google Patents
一种联盟链中智能合约文件确定方法及装置 Download PDFInfo
- Publication number
- CN113689293A CN113689293A CN202110908798.XA CN202110908798A CN113689293A CN 113689293 A CN113689293 A CN 113689293A CN 202110908798 A CN202110908798 A CN 202110908798A CN 113689293 A CN113689293 A CN 113689293A
- Authority
- CN
- China
- Prior art keywords
- contract
- code
- intelligent contract
- contract code
- file
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000012545 processing Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 9
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 238000003780 insertion Methods 0.000 claims description 5
- 230000037431 insertion Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000004804 winding Methods 0.000 description 1
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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供一种联盟链中智能合约文件确定方法及装置,该方法包括:参与方接收交易查询请求;所述交易查询请求用于确定待查询交易结果对应的智能合约文件;所述参与方从链上确定用于运行得到所述待查询交易结果的第一合约代码;所述参与方将所述第一合约代码分别与本地中的各第二合约代码进行匹配;所述各第二合约代码是任一智能合约文件经过至少一个版本的编译器编译后得到的;所述参与方将于所述第一合约代码匹配的第二合约代码对应的智能合约文件,确定为所述待查询交易结果对应的智能合约文件。该方法使得参与方能够准确快速确定链上合约字节码对应的智能合约文件,对数据进行准确解析。
Description
技术领域
本申请涉及网络技术领域,尤其涉及一种联盟链中智能合约文件确定方法及装置。
背景技术
联盟链为一种只针对某个特定群体的成员和有限的第三方的区块链,其内部指定多个预选节点为记账人,每个块的生成由所有的预选节点共同决定。其中,成员可以作为开发者开发获取智能合约代码,将该智能合约代码分发至该特定群体的各成员。
现有一种联盟链为司法数据存证链,可以由多家金融机构、存证机构和监管机构组成,以实现司法数据的上链有效性、存证权威背书、数据不可篡改,以及构建司法数据追溯治理体系。由于联盟链上的智能合约为成员共用,则司法数据存证链对应的多机构之间需要彼此共享智能合约代码,使得对应的机构可以根据智能合约代码对链上数据解析。如,监管机构可以根据对应的智能合约代码将链上所有的存证数据解析并导出到链下的数据库中,进行分析,以实现监管治理。而由于多个机构可能涉及到的多种业务,则对应存在多份智能合约代码。监管机构将链上数据解析前,需要获取数据对应的智能合约代码,以根据智能合约代码对数据进行解析。又由于智能合约代码上链对应的编译器的版本和环境等不同,即使是相同的智能合约代码所产生的链上合约字节码也是不同的,且开发者智能合约的生产环境和部署环境决定,开发者并不能获取所有智能合约代码的链上合约字节码,也无法同智能合约代码一样将链上合约字节码分发至各机构。因此,监管机构并多数情况下,即不能获取智能合约文件对应的链上合约字节码,也不能根据链上合约字节码直接确定其对应的智能合约文件,则也无法对数据进行解析。
因此,现在亟需一种联盟链中智能合约文件确定方法及装置,使得参与方能够准确快速确定链上合约字节码对应的智能合约文件。
发明内容
本发明实施例提供一种联盟链中智能合约文件确定方法及装置,使得参与方能够准确快速确定链上合约字节码对应的智能合约文件。
第一方面,本发明实施例提供一种联盟链中智能合约文件确定方法,该方法包括:
参与方接收交易查询请求;所述交易查询请求用于确定待查询交易结果对应的智能合约文件;所述参与方从链上确定用于运行得到所述待查询交易结果的第一合约代码;所述参与方将所述第一合约代码分别与本地中的各第二合约代码进行匹配;所述各第二合约代码是任一智能合约文件经过至少一个版本的编译器编译后得到的;所述参与方将于所述第一合约代码匹配的第二合约代码对应的智能合约文件,确定为所述待查询交易结果对应的智能合约文件。
上述方法中,参与方通过交易查询请求获取第一合约代码;在一种示例中,交易查询请求中可以包含交易类型或交易标识等信息,关联到对应的交易查询链,根据交易查询链获取第一合约代码。将第一合约代码分别与本地的各第二合约代码进行匹配获取待查询交易结果对应的智能合约文件。如此,可以准确快速的确定第一合约代码对应的智能合约文件。
可选的,所述各第二合约代码是任一智能合约文件经过至少一个版本的编译器编译后得到的,包括:
所述参与方接收开发者发送的智能合约文件信息,所述智能合约文件信息中包含智能合约文件、编译器版本区间;所述参与方确定所述编译器版本区间和区块链支持的编译器版本中相同的编译器版本;所述参与方根据任一相同的编译器版本对应的编译器对所述智能合约文件进行编译得到对应的第二合约代码,并将所述第二合约代码、所述第二合约代码与所述智能合约文件的映射信息和所述智能合约文件存储。
上述方法中,参与方获取-开发者发送的智能合约文件对应的编译器版本区间和区块链支持的编译器版本中-相同的编译器版本,并根据相同的编译器版本对应的编译器对智能合约文件进行编译获取第二合约代码。如此,使得参与方中包含该智能合约文件所有编译版本的智能合约代码,后续找到与第一合约代码相似度最高的第二合约代码,即为第二合约代码的智能合约文件就是第一合约代码的智能合约文件。
可选的,所述参与方将所述第一合约代码分别与本地中的各第二合约代码进行匹配,包括:
针对任一第二合约代码,将所述第一合约代码和所述第二合约代码进行字符比对,确定所述第一合约代码和所述第二合约代码相同的代码段和不同的代码段;根据所述不同的代码段,确定所述第一合约代码与所述第二合约代码的相似度。
上述方法中,根据第一合约代码和第二合约代码不同的代码段,确定第一合约代码与第二合约代码不同程度,进一步确定第一合约代码和第二合约代码的相似度。可以将相似度最高的第二合约代码对应的智能合约文件确认为第一合约代码的智能合约文件。如此,可以准确快速的确定第一合约代码对应的智能合约文件。
可选的,根据所述不同的代码段,确定所述第一合约代码与所述第二合约代码的相似度,包括:针对所述不同的代码段,将所述不同的代码段通过单字符编辑操作转化为相同的代码段,并确定单字符编辑操作次数,所述单字符编辑包括插入、删除和替换;根据所述单字符编辑操作次数确定所述第一合约代码与所述第二合约代码的相似度,所述单字符编辑操作次数越小所述相似度越高。
上述方法中,将第一合约代码和第二合约代码的不同的代码段进行单字符编辑操作,可以根据单字符编辑操作次数准确确定第一合约代码和第二合约代码的不同的字符数。如此,单字符编辑操作次数越小,第一合约代码和第二合约代码的不同的字符数越少,相似度越高。可以准确判断第一合约代码和第二合约代码的相似度。
可选的,确定所述单字符编辑操作次数满足如下公式:
其中,D(A,B)表示将所述第一合约代码转换为所述第二合约代码的所述单字符编辑操作次数,i表示所述第一合约代码的前i个字符,j表示所述第二合约代码的前j个字符。
上述方法中,通过上述公式可以准确确定单字符编辑操作次数,进一步,可以准确确定第一合约代码和第二合约代码的相似度。提高查询第一合约代码的智能合约文件的准确度。
可选的,所述参与方将于所述第一合约代码匹配的第二合约代码对应的智能合约文件,确定为所述待查询交易结果对应的智能合约文件之前,还包括:
所述参与方确定与所述第一合约代码相似度最大的第二合约代码对应的智能合约文件,为所述待查询交易结果对应的智能合约文件,其中,最大的相似度不小于经验阈值。
上述方法中,令最大的相似度值不小于经验阈值。防止发生参与方本身没有该第一合约代码对应的智能合约文件,而直接确定另一个智能合约文件为该第一合约代码的智能合约文件的情况。提高查询第一合约代码的智能合约文件的准确度。
可选的,所述参与方确定相似度最大的所述第二合约代码对应的智能合约文件为所述第一合约代码的智能合约文件之后,还包括:
所述参与方将所述最大的相似度和所述智能合约文件、所述第一合约代码的对应关系存储。
上述方法中,便于下一次直接获取该第一合约代码的智能合约文件。
第二方面,本发明实施例提供一种联盟链中智能合约文件确定装置,该装置包括:
收发模块,用于接收交易查询请求;所述交易查询请求用于确定待查询交易结果对应的智能合约文件;
处理模块,用于从链上确定用于运行得到所述待查询交易结果的第一合约代码;
所述处理模块还用于,将所述第一合约代码分别与本地中的各第二合约代码进行匹配;所述各第二合约代码是任一智能合约文件经过至少一个版本的编译器编译后得到的;
所述处理模块还用于,将于所述第一合约代码匹配的第二合约代码对应的智能合约文件,确定为所述待查询交易结果对应的智能合约文件。
第三方面,本申请实施例还提供一种计算设备,包括:存储器,用于存储程序;处理器,用于调用所述存储器中存储的程序,按照获得的程序执行如第一方面的各种可能的设计中所述的方法。
第四方面,本申请实施例还提供一种计算机可读非易失性存储介质,包括计算机可读程序,当计算机读取并执行所述计算机可读程序时,使得计算机执行如第一方面的各种可能的设计中所述的方法。
本申请的这些实现方式或其他实现方式在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种联盟链中智能合约文件确定方法的架构示意图;
图2为本发明实施例提供的一种联盟链中智能合约文件确定方法的架构示意图;
图3为本发明实施例提供的一种联盟链中智能合约文件确定方法的架构示意图;
图4为本发明实施例提供的一种联盟链中智能合约文件确定方法的流程示意图;
图5为本发明实施例提供的一种联盟链中智能合约文件确定方法的流程示意图;
图6为本发明实施例提供的一种联盟链中智能合约文件确定方法装置示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种联盟链中智能合约文件确定方法的系统架构,区块链103的联盟链中包含多个参与方102,多个参与方102中可以包含至少一个开发方101,开发方101可以获取智能合约文件,并将该智能合约文件存储至数据库以完成在区块链103中的注册。开发方101将智能合约文件信息分发至该联盟链的剩余的多个参与方102。其中,开发方101和参与方102可以是同一企业或公共机构等组织,也可以是不同企业或公共机构等组织,在一种示例中,当参与方102中的某一个参与方开发了智能合约文件并存储至区块链103,则确定该参与方为开发方101。参与方102接收到智能合约文件信息后,根据该智能合约文件信息中编译器版本区间和区块链103支持的编译器版本进行交集运算,获取相同版本的编译器,根据相同版本的编译器对该智能合约文件信息中的智能合约文件进行编译,获取至少一个第二合约代码,将该第二合约代码、该第二合约代码与智能合约文件的映射信息和该智能合约文件存储。参与方102接收交易查询请求,根据交易查询请求获取第一合约代码,将该第一合约代码分别与存储的各第二合约代码进行匹配,确定该第一合约代码对应的智能合约文件。
需要说明的是,开发方101可以是服务器或服务器集群,或服务器中的部件,例如,芯片。或者,开发方101可以是具有算法提供能力和/或算法开发能力的设备或装置,示例性的,该设备可以是终端设备或终端中的部件,例如,芯片。参与方102可以是服务器或服务器集群,或服务器中的部件,例如,芯片。或者,参与方102可以是或具有提供算法能力和/或算法开发能力的设备或装置,示例性的,该设备可以是终端设备或终端中的部件,例如,芯片。具体实施方式可以根据需要确定,本发明不做限定。
基于图1架构,本发明实施例提供的一种开发方的系统架构,如图2所示,开发方包括智能合约开发单元和智能合约发送单元;其中,智能合约开发单元用于开发智能合约文件信息,智能合约发送单元用于将该智能合约文件信息发送至部署方和参与方102。部署方可以根据智能合约接收单元接收该智能合约文件信息,智能合约部署单元根据该智能合约文件信息,将智能合约文件部署到区块链103上。上述开发方架构以及部署方架构只是一种示例,并不对本发明中的具体系统架构做限定。
基于图1和图2架构,为本发明实施例提供的一种参与方的系统架构,如图3所示,参与方包括数据库、计算单元、接收单元和查询单元;其中,接收单元用于接收开发方发送的智能合约文件信息,并将该智能合约文件信息发送至计算单元,以及用于接收交易查询请求。计算单元用于确定区块链103支持的编译器版本和智能合约文件信息中的编译器版本区间的相同的编译器版本,并根据相同的编译器版本将该智能合约文件信息中的智能合约文件进行编译获取第二合约代码,将该第二合约代码、第二合约代码与智能合约文件的映射信息和智能合约文件发送至数据库存储,以及用于匹配第一合约代码和第二合约代码以确定第一合约代码对应的智能合约文件。当查询单元通过接收单元接收到交易查询请求后,获取交易查询请求对应的区块链103中的第一合约代码,并发送至计算单元。
需要说明的是,上述开发方101和参与方102的系统架构可以同时存在于同一个开发方101或参与方102。开发方101和参与方102的角色并不固定,可以根据需求设置。
基于此,本申请实施例提供了一种联盟链中智能合约文件确定方法的流程,如图4所示,包括:
步骤401、参与方接收交易查询请求;所述交易查询请求用于确定待查询交易结果对应的智能合约文件;
此处,交易查询请求中可以包含交易类型、交易标识等用于关联交易查询链的信息,获取交易查询链。在一种示例中,交易查询链为:交易标识或交易类型-关联-第一合约代码地址-关联-第一合约代码。
在一种示例中,参与方根据交易查询请求获取交易的hash。该交易的hash可以是根据用户输入确定的。如,用户需要查找的交易的hash为“0x25f4e78af00b2ba044e2d7a5db7f6802e09000c7784c181da2b63a2a35ad42bf”。参与方根据交易的hash,在链上查询对应的交易的第一合约代码地址。在区块链上,通常提供了RPC接口来进行查询的操作,如,执行getTransactionByHash,获得该笔交易对应的第一合约代码地址,如,第一合约代码地址为“0x1a5a9b0d7e2c44a17b7258ff0c84fa202c0f5483”。参与方根据第一合约代码地址,通过链上查询合约字节码的接口查询获得对应的合约字节码Sq,或者,通过链上查询合约运行二进制代码的接口查询获得对应的合约运行二进制代码。
步骤402、所述参与方从链上确定用于运行得到所述待查询交易结果的第一合约代码;
此处,第一合约代码可以为智能合约文件的合约字节码,也可以为合约二进制码。
步骤403、所述参与方将所述第一合约代码分别与本地中的各第二合约代码进行匹配;所述各第二合约代码是任一智能合约文件经过至少一个版本的编译器编译后得到的;
步骤404、所述参与方将于所述第一合约代码匹配的第二合约代码对应的智能合约文件,确定为所述待查询交易结果对应的智能合约文件。
上述方法中,参与方通过交易查询请求获取第一合约代码;在一种示例中,交易查询请求中可以包含交易类型或交易标识等信息,关联到对应的交易查询链,根据交易查询链获取第一合约代码。将第一合约代码分别与本地的各第二合约代码进行匹配获取待查询交易结果对应的智能合约文件。如此,可以准确快速的确定第一合约代码对应的智能合约文件。
本申请实施例提供了一种第二合约代码确定方法,所述各第二合约代码是任一智能合约文件经过至少一个版本的编译器编译后得到的,包括:
所述参与方接收开发者发送的智能合约文件信息,所述智能合约文件信息中包含智能合约文件、编译器版本区间;
所述参与方确定所述编译器版本区间和区块链支持的编译器版本中相同的编译器版本;
所述参与方根据任一相同的编译器版本对应的编译器对所述智能合约文件进行编译得到对应的第二合约代码,并将所述第二合约代码、所述第二合约代码与所述智能合约文件的映射信息和所述智能合约文件存储。在一种示例中,若开发者提供与上链合约一致的智能合约Solidity文件和指定的编译器版本区间,存入到数据库中,并注册该智能合约相关的信息。存储的智能合约文件为存证合约Solidity文件S,假设S文件支持的Solidity的编译器版本区间为大于0.4.0,小于等于0.6.10。开发者将该S文件和S文件支持的Solidity的编译器版本区间发送至参与方。参与方根据S文件和编译器版本区间(编译器版本区间为大于0.4.0,小于等于0.6.10)和区块链支持的编译器版本(如,区块链支持的编译器版本为0.4.25,0.5.1,0.5.2和0.6.1)确定需要使用的各编译器版本,并根据确定使用的各编译器编译智能合约文件,生成智能合约的各第二合约代码:V1、V2、V3和V4,将V1、V2、V3和V4、V1、V2、V3和V4与S文件的映射关系以及S文件存储到数据库中。此处,该示例仅用于更清楚的解释方法内容,并不对该方法具体实施做限定。
本申请实施例提供了一种第一合约代码与第二合约代码的相似度确定方法,所述参与方将所述第一合约代码分别与本地中的各第二合约代码进行匹配,包括:针对任一第二合约代码,将所述第一合约代码和所述第二合约代码进行字符比对,确定所述第一合约代码和所述第二合约代码相同的代码段和不同的代码段;根据所述不同的代码段,确定所述第一合约代码与所述第二合约代码的相似度。此处,第一合约代码与所述第二合约代码的相似度可以是第一合约代码和第二合约代码的相同的代码段字符数与不同的代码段字符数的比值,也可以是第一合约代码总字符数与第二合约代码总字符数的和与两倍的不同的代码段字符数的比值等等,这里对相似度的计算并不做限定。基于上述示例,参与方获取第一合约代码后,这里以第一合约代码为合约字节码Sq为例:
第一合约代码-合约字节码Sq为“0x608060405260043610610083576000357c0100 000000000000000000000000000000000000000000000000000000900463ffffffff16806321 bdf79b146100885780632b14b54d146100b35780632e52d606146100e057806348d6f3ea1461 010b578063aa4bd8e914610138578063c3da42b81461017d578063e2179b8e146101a8575b60 0080fd5b34801561009457600080fd5b5061009d6101d3565b60405180828152602001915050 60405180910390f35b3480156100bf57600080fd5b506100de60048036038101908080359060 2001909291905050506101eb565b005b3480156100ec57600080fd5b506100f56101f5565b60 40518082815260200191505060405180910390f35b34801561011757600080fd5b5061013660 0480360381019080803590602001909291905050506101fb565b005b34801561014457600080 fd5b5061016360048036038101908080359060200190929190505050610205565b6040518082 15151515815260200191505060405180910390f35b34801561018957600080fd5b5061019261 0249565b6040518082815260200191505060405180910390f35b3480156101b457600080fd5b 506101bd61024f565b6040518082815260200191505060405180910390f35b60006101dd6102 55565b600381905550600354905090565b8060028190555050565b60005481565b8060048190 555050565b600080600090506000546102206002546003546000546102ee565b61022f600154 866000546102ee565b0281151561023957fe5b0690508060045414915050919050565b600354 81565b60015481565b6000805442604051602001808281526020019150506040516020818303 038152906040526040518082805190602001908083835b6020831015156102ae578051825260 2082019150602081019050602083039250610289565b6001836020036101000a038019825116 8184511680821785525050505050509050019150506040518091039020600190048115156102 e857fe5b06905090565b60006040516020815260208082015260206040820152846060820152 8360808201528260a082015260c05160208160c08460006005600019f1151561033257600080 fd5b80519250505093925050505600xxca165627a7a723058203252fa3714bf792d641c75239 7bd7bf3a2ab026259d80e5848993ad0de2898c00029”。
参与方依次获取存储的各第二合约代码:C1、C2、C3、V1、V2、V3和V4,分别将第二合约代码与该第一合约代码进行匹配,如,确定第二合约代码-合约字节码V1:
“0x608060405260043610610083576000357c0100000000000000000000000000000 000000000000000000000000000900463ffffffff16806321bdf79b146100885780632b14b54 d146100b35780632e52d606146100e057806348d6f3ea1461010b578063aa4bd8e9146101385 78063c3da42b81461017d578063e2179b8e146101a8575b600080fd5b3480156100945760008 0fd5b5061009d6101d3565b6040518082815260200191505060405180910390f35b348015610 0bf57600080fd5b506100de600480360381019080803590602001909291905050506101eb565 b005b3480156100ec57600080fd5b506100f56101f5565b60405180828152602001915050604 05180910390f35b34801561011757600080fd5b5061013660048036038101908080359060200 1909291905050506101fb565b005b34801561014457600080fd5b50610163600480360381019 08080359060200190929190505050610205565b6040518082151515158152602001915050604 05180910390f35b34801561018957600080fd5b50610192610249565b6040518082815260200 191505060405180910390f35b3480156101b457600080fd5b506101bd61024f565b604051808 2815260200191505060405180910390f35b60006101dd610255565b600381905550600354905 090565b8060028190555050565b60005481565b8060048190555050565b60008060009050600 0546102206002546003546000546102ee565b61022f600154866000546102ee565b028115156 1023957fe5b0690508060045414915050919050565b60035481565b60015481565b600080544 2604051602001808281526020019150506040516020818303038152906040526040518082805 190602001908083835b6020831015156102ae578051825260208201915060208101905060208 3039250610289565b6001836020036101000a038019825116818451168082178552505050505 0509050019150506040518091039020600190048115156102e857fe5b06905090565b6000604 05160208152602080820152602060408201528460608201528360808201528260a082015260c 05160208160c08460006005600019f1151561033257600080fd5b80519250505093925050505 600xyza165627a7a723058203252fa3714bf792d641c752397bd7bf3a2ab026259d80e584899 3ad0de2898c00029”。
确定sq和V1具有下划线部分的‘前缀’0x608060…505600x和‘后缀’a165627a7a7…2898c00029为相同的代码段;不具有下划线的部分为不同的代码段,sq为xc,V1为yz。
本申请实施例提供了一种第一合约代码与第二合约代码的相似度确定方法,根据所述不同的代码段,确定所述第一合约代码与所述第二合约代码的相似度,包括:
针对所述不同的代码段,将所述不同的代码段通过单字符编辑操作转化为相同的代码段,并确定单字符编辑操作次数,所述单字符编辑包括插入、删除和替换;
根据所述单字符编辑操作次数确定所述第一合约代码与所述第二合约代码的相似度,所述单字符编辑操作次数越小所述相似度越高。
基于上述示例,sq和V1的不同的代码段:sq为xc,V1为yz。将‘xc’通过单字符编辑操作替换2次得到‘yz’。其它的第二合约代码与第一合约代码的单字符编辑操作次数:若,与第二合约代码C1的单字符编辑操作次数为502,第二合约代码C1为智能合约文件F的0.4.25版本编译器所对应的第二合约代码、与第二合约代码C2的单字符编辑操作次数为591,第二合约代码C2为智能合约文件F的0.4.26版本编译器所对应的第二合约代码、与第二合约代码C3的单字符编辑操作次数为658,第二合约代码C3为智能合约文件F的0.5.25版本编译器所对应的第二合约代码、与第二合约代码V1的单字符编辑操作次数为2,第二合约代码V1为智能合约文件S的0.4.25版本编译器所对应的第二合约代码、与第二合约代码V2的单字符编辑操作次数为10,第二合约代码V2为智能合约文件S的0.5.1版本编译器所对应的第二合约代码、与第二合约代码V3的单字符编辑操作次数为6,第二合约代码V3为智能合约文件S的0.5.2版本编译器所对应的第二合约代码、与第二合约代码V4的单字符编辑操作次数为12,第二合约代码V4为智能合约文件S的0.6.1版本编译器所对应的第二合约代码。则确定第二合约代码V1对应的智能合约文件S为第一合约代码的智能合约文件。
本申请实施例提供了一种单字符编辑操作次数确定方法,确定所述单字符编辑操作次数满足如下公式:
其中,D(A,B)表示将所述第一合约代码转换为所述第二合约代码的所述单字符编辑操作次数,i表示所述第一合约代码的前i个字符,j表示所述第二合约代码的前j个字符。
此处,基于上述示例,为了简化描述,将V1的不同的代码段和Sq的不同的代码段分别表述为A和B,字符串A‘yz’、B‘xc’的长度为La,Lb。在此,可以定义一个关联值的函数。A和B的关联值定义为从A转换为B所需的单字符编辑操作次数,单字符编辑是指插入、删除和替换。则A和B的关联值表示为D(A,B),定义D(A,B)[i,j]:为A中前i个字符和B中前j个字符之间的关联值,则i,j可以看作是子字符串的长度。因此,最后的关联值就是i=La,j=Lb。
则可得单字符编辑操作次数公式:D(A,B)[i,j]={
Max(i,j),if min(i,j)=0,
Min{D(A,B)[i-1,j]+1,D(A,B)[i,j-1]+1,D(A,B)[i-1,j-1]+1}
}
即,若(i,j)中的最小值为0,则D(A,B)[i,j]等于(i,j)中的最大值。若(i,j)中的最小值不为0,则D(A,B)[i,j]等于(D(A,B)[i-1,j]+1、D(A,B)[i,j-1]+1、D(A,B)[i-1,j-1]+1)中的最小值。
基于上述示例和公式,建立一个矩阵,矩阵上增加一行,第二列为0,后面是’yz’字符串。矩阵左边增加一列,第二行为0,后面分别为字符串’xc’的值,本申请给出一种关联值,如表1:
0 | y | z | |
0 | 0 | 1 | 2 |
x | 1 | 1 | 2 |
c | 2 | 2 | 2 |
表1
其中,按照上述公式计算第一行和第一列的关联值:
第一行(index=0)初始化:
min(0,0)=0->lev_{a,b}(0,0)=max(0,0)=0;
min(0,1)=0->lev_{a,b}(0,1)=max(0,1)=1;
min(0,2)=0->lev_{a,b}(0,2)=max(0,2)=2;
第一列(index=0)初始化:
min(0,0)=0->lev_{a,b}(0,0)=max(0,0)=0;
min(1,0)=0->lev_{a,b}(1,0)=max(1,0)=1;
min(2,0=0->lev_{a,b}(2,0)=max(2,0)=2;
得到如下表2:
0 | y | z | |
0 | 0 | 1 | 2 |
x | 1 | ||
c | 2 |
表2
本申请实施例提供了一种第一合约代码与第二合约代码的相似度确定方法,所述参与方将于所述第一合约代码匹配的第二合约代码对应的智能合约文件,确定为所述待查询交易结果对应的智能合约文件之前,还包括:
所述参与方确定与所述第一合约代码相似度最大的第二合约代码对应的智能合约文件,为所述待查询交易结果对应的智能合约文件,其中,最大的相似度不小于经验阈值。也就是说,第一合约代码和第二合约代码的相似度若低于经验阈值,则第二合约代码对应的智能合约文件不是第一合约代码的智能合约文件,换句话说,相同智能合约文件对应的各合约代码的相似度一定是大于一定阈值的,若参与方没有第一合约代码对应的智能合约文件,则最大的相似度小于经验阈值。
本申请实施例提供了一种联盟链中智能合约文件确定方法,所述参与方确定相似度最大的所述第二合约代码对应的智能合约文件为所述第一合约代码的智能合约文件之后,还包括:所述参与方将所述最大的相似度和所述智能合约文件、所述第一合约代码的对应关系存储。如此,参与方再次获取第一合约代码,则可以迅速获得第一合约代码的智能合约文件。
基于上述系统架构和方法流程,本申请实施例提供了一种联盟链中智能合约文件确定方法的流程,如图5所示,包括:
步骤501、开发方开发获取智能合约文件信息,智能合约文件信息包含智能合约文件和支持编译智能合约文件的编译器版本区间。
步骤502、开发方将智能合约文件信息在区块链的数据库中完成注册。
步骤503、开发方将智能合约文件信息分发至各个参与方。
步骤504、参与方根据编译器版本区间和区块链支持的编译器版本确定相同的编译器版本。
步骤505、参与方根据相同的编译器版本分别对智能合约文件进行编译获取各第二合约代码。
步骤506、参与方将第二合约代码、第二合约代码与智能合约文件的映射信息和智能合约文件存储。
步骤507、参与方接收交易查询请求,根据交易查询请求获取第一合约代码。
步骤508、参与方将该第一合约代码分别与存储的各第二合约代码匹配,获取第一合约代码分别与各第二合约代码的相似度。
步骤509、参与方确定最大相似度。
步骤510、参与方判断该最大相似度是否大于经验阈值,若大于则执行步骤511,否则执行步骤512。
步骤511、参与方将该最大相似度对应的第二合约代码的智能合约文件确定为第一合约代码的智能合约文件。
步骤512、参与方确定没有存储第一合约代码对应的智能合约文件。
需要说明的是,上述流程步骤并不唯一,如,步骤501至步骤503可以与步骤504至步骤512中任一个或多个步骤同时执行,即,在参与方确定第一合约代码的智能合约文件时,开发方可以同时开发、注册和分发新的智能合约文件信息;开发方也可以是参与方,即,参与方可以同时开发、注册和分发新的智能合约文件信息,并同时获取第一合约代码,确定第一合约代码的智能合约文件。步骤504至步骤506与步骤507至步骤512可以在同一时段前后发生,也可以在不同时段前后发生,即,参与方对获取的智能合约文件进行编译获取各第二合约文件,以及将第二合约文件、第二合约文件与智能合约文件的映射信息和智能合约文件存储的流程发生前后,可以不发生步骤507至步骤512;步骤507至步骤512发生之后,可以不发生步骤504至步骤506。这里描述的多种方法流程只是一种示例,并不对流程步骤的具体执行做限制。
基于同样的构思,本发明实施例提供一种联盟链中智能合约文件确定装置,图6为本申请实施例提供的一种联盟链中智能合约文件确定装置示意图,如图6示,包括:
收发模块601,用于接收交易查询请求;所述交易查询请求用于确定待查询交易结果对应的智能合约文件;
处理模块602,用于从链上确定用于运行得到所述待查询交易结果的第一合约代码;
所述处理模块602还用于,将所述第一合约代码分别与本地中的各第二合约代码进行匹配;所述各第二合约代码是任一智能合约文件经过至少一个版本的编译器编译后得到的;
所述处理模块602还用于,将于所述第一合约代码匹配的第二合约代码对应的智能合约文件,确定为所述待查询交易结果对应的智能合约文件。
可选的,所述处理模块602具体用于:
通过所述收发模块601接收开发者发送的智能合约文件信息,所述智能合约文件信息中包含智能合约文件、编译器版本区间;确定所述编译器版本区间和区块链支持的编译器版本中相同的编译器版本;根据任一相同的编译器版本对应的编译器对所述智能合约文件进行编译得到对应的第二合约代码,并将所述第二合约代码、所述第二合约代码与所述智能合约文件的映射信息和所述智能合约文件存储。
可选的,所述处理模块602具体用于:针对任一第二合约代码,将所述第一合约代码和所述第二合约代码进行字符比对,确定所述第一合约代码和所述第二合约代码相同的代码段和不同的代码段;根据所述不同的代码段,确定所述第一合约代码与所述第二合约代码的相似度。
可选的,所述处理模块602具体用于:针对所述不同的代码段,将所述不同的代码段通过单字符编辑操作转化为相同的代码段,并确定单字符编辑操作次数,所述单字符编辑包括插入、删除和替换;根据所述单字符编辑操作次数确定所述第一合约代码与所述第二合约代码的相似度,所述单字符编辑操作次数越小所述相似度越高。
可选的,确定所述单字符编辑操作次数满足如下公式:
其中,D(A,B)表示将所述第一合约代码转换为所述第二合约代码的所述单字符编辑操作次数,i表示所述第一合约代码的前i个字符,j表示所述第二合约代码的前j个字符。
可选的,所述处理模块602还用于:确定与所述第一合约代码相似度最大的第二合约代码对应的智能合约文件,为所述待查询交易结果对应的智能合约文件,其中,最大的相似度不小于经验阈值。
可选的,所述处理模块602还用于:将所述最大的相似度和所述智能合约文件、所述第一合约代码的对应关系存储。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种联盟链中智能合约文件确定方法,其特征在于,所述的方法包括:
参与方接收交易查询请求;所述交易查询请求用于确定待查询交易结果对应的智能合约文件;
所述参与方从链上确定用于运行得到所述待查询交易结果的第一合约代码;
所述参与方将所述第一合约代码分别与本地中的各第二合约代码进行匹配;所述各第二合约代码是任一智能合约文件经过至少一个版本的编译器编译后得到的;
所述参与方将于所述第一合约代码匹配的第二合约代码对应的智能合约文件,确定为所述待查询交易结果对应的智能合约文件。
2.如权利要求1中所述的方法,其特征在于,所述各第二合约代码是任一智能合约文件经过至少一个版本的编译器编译后得到的,包括:
所述参与方接收开发者发送的智能合约文件信息,所述智能合约文件信息中包含智能合约文件、编译器版本区间;
所述参与方确定所述编译器版本区间和区块链支持的编译器版本中相同的编译器版本;
所述参与方根据任一相同的编译器版本对应的编译器对所述智能合约文件进行编译得到对应的第二合约代码,并将所述第二合约代码、所述第二合约代码与所述智能合约文件的映射信息和所述智能合约文件存储。
3.如权利要求1中所述的方法,其特征在于,所述参与方将所述第一合约代码分别与本地中的各第二合约代码进行匹配,包括:
针对任一第二合约代码,将所述第一合约代码和所述第二合约代码进行字符比对,确定所述第一合约代码和所述第二合约代码相同的代码段和不同的代码段;
根据所述不同的代码段,确定所述第一合约代码与所述第二合约代码的相似度。
4.如权利要求3中所述的方法,其特征在于,根据所述不同的代码段,确定所述第一合约代码与所述第二合约代码的相似度,包括:
针对所述不同的代码段,将所述不同的代码段通过单字符编辑操作转化为相同的代码段,并确定单字符编辑操作次数,所述单字符编辑包括插入、删除和替换;
根据所述单字符编辑操作次数确定所述第一合约代码与所述第二合约代码的相似度,所述单字符编辑操作次数越小所述相似度越高。
6.如权利要求1-5中任一所述的方法,其特征在于,所述参与方将于所述第一合约代码匹配的第二合约代码对应的智能合约文件,确定为所述待查询交易结果对应的智能合约文件之前,还包括:
所述参与方确定与所述第一合约代码相似度最大的第二合约代码对应的智能合约文件,为所述待查询交易结果对应的智能合约文件,其中,最大的相似度不小于经验阈值。
7.如权利要求6中所述的方法,其特征在于,所述参与方确定相似度最大的所述第二合约代码对应的智能合约文件为所述第一合约代码的智能合约文件之后,还包括:
所述参与方将所述最大的相似度和所述智能合约文件、所述第一合约代码的对应关系存储。
8.一种联盟链中智能合约文件确定装置,其特征在于,所述的装置包括:
收发模块,用于接收交易查询请求;所述交易查询请求用于确定待查询交易结果对应的智能合约文件;
处理模块,用于从链上确定用于运行得到所述待查询交易结果的第一合约代码;
所述处理模块还用于,将所述第一合约代码分别与本地中的各第二合约代码进行匹配;所述各第二合约代码是任一智能合约文件经过至少一个版本的编译器编译后得到的;
所述处理模块还用于,将于所述第一合约代码匹配的第二合约代码对应的智能合约文件,确定为所述待查询交易结果对应的智能合约文件。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序,当所述程序在计算机上运行时,使得计算机实现执行权利要求1至7中任一项所述的方法。
10.一种计算机设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行如权利要求1至7任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110908798.XA CN113689293B (zh) | 2021-08-09 | 2021-08-09 | 一种联盟链中智能合约文件确定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110908798.XA CN113689293B (zh) | 2021-08-09 | 2021-08-09 | 一种联盟链中智能合约文件确定方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113689293A true CN113689293A (zh) | 2021-11-23 |
CN113689293B CN113689293B (zh) | 2024-02-06 |
Family
ID=78579225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110908798.XA Active CN113689293B (zh) | 2021-08-09 | 2021-08-09 | 一种联盟链中智能合约文件确定方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113689293B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107507005A (zh) * | 2017-08-01 | 2017-12-22 | 众安信息技术服务有限公司 | 一种基于联盟链的链外数据访问方法和系统 |
CN107993149A (zh) * | 2017-12-18 | 2018-05-04 | 深圳前海微众银行股份有限公司 | 账户信息管理方法、系统以及可读存储介质 |
CN108647009A (zh) * | 2018-03-22 | 2018-10-12 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 区块链信息交互的装置、方法和存储介质 |
CN109165102A (zh) * | 2018-09-28 | 2019-01-08 | 北京航空航天大学 | 一种基于智能合约的约束求解器分布式调度方法 |
CN110138592A (zh) * | 2019-04-09 | 2019-08-16 | 苏宁易购集团股份有限公司 | 一种智能合约的管理方法及系统 |
CN111770113A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和节点设备 |
WO2020233644A1 (zh) * | 2019-05-20 | 2020-11-26 | 创新先进技术有限公司 | 有条件的结合代码标注与类型维度的收据存储方法和节点 |
WO2020238255A1 (zh) * | 2019-05-30 | 2020-12-03 | 创新先进技术有限公司 | 基于区块链的智能合约管理方法及装置、电子设备 |
CN112200569A (zh) * | 2020-10-09 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 基于区块链的数字印章使用方法、装置及电子设备 |
CN112488778A (zh) * | 2020-10-31 | 2021-03-12 | 远光软件股份有限公司 | 一种票据处理的方法及相关装置 |
CN112488777A (zh) * | 2020-10-31 | 2021-03-12 | 远光软件股份有限公司 | 一种票据处理的方法及相关装置 |
CN112631613A (zh) * | 2020-12-29 | 2021-04-09 | 杭州趣链科技有限公司 | 基于区块链平台的智能合约部署和调用方法及相关设备 |
-
2021
- 2021-08-09 CN CN202110908798.XA patent/CN113689293B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107507005A (zh) * | 2017-08-01 | 2017-12-22 | 众安信息技术服务有限公司 | 一种基于联盟链的链外数据访问方法和系统 |
CN107993149A (zh) * | 2017-12-18 | 2018-05-04 | 深圳前海微众银行股份有限公司 | 账户信息管理方法、系统以及可读存储介质 |
CN108647009A (zh) * | 2018-03-22 | 2018-10-12 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 区块链信息交互的装置、方法和存储介质 |
CN109165102A (zh) * | 2018-09-28 | 2019-01-08 | 北京航空航天大学 | 一种基于智能合约的约束求解器分布式调度方法 |
CN110138592A (zh) * | 2019-04-09 | 2019-08-16 | 苏宁易购集团股份有限公司 | 一种智能合约的管理方法及系统 |
WO2020233644A1 (zh) * | 2019-05-20 | 2020-11-26 | 创新先进技术有限公司 | 有条件的结合代码标注与类型维度的收据存储方法和节点 |
WO2020238255A1 (zh) * | 2019-05-30 | 2020-12-03 | 创新先进技术有限公司 | 基于区块链的智能合约管理方法及装置、电子设备 |
CN111770113A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和节点设备 |
CN112200569A (zh) * | 2020-10-09 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 基于区块链的数字印章使用方法、装置及电子设备 |
CN112488778A (zh) * | 2020-10-31 | 2021-03-12 | 远光软件股份有限公司 | 一种票据处理的方法及相关装置 |
CN112488777A (zh) * | 2020-10-31 | 2021-03-12 | 远光软件股份有限公司 | 一种票据处理的方法及相关装置 |
CN112631613A (zh) * | 2020-12-29 | 2021-04-09 | 杭州趣链科技有限公司 | 基于区块链平台的智能合约部署和调用方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113689293B (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Haq et al. | A survey of binary code similarity | |
Alrabaee et al. | Fossil: a resilient and efficient system for identifying foss functions in malware binaries | |
CN101652746B (zh) | 浮点操作的改善以及相关的改善 | |
JP5496772B2 (ja) | コンポーネント・ベース・アプリケーションに対して実行可能なコードを構築する方法、その方法を実行するプログラムを含むコンピュータ可読の記憶媒体、およびコンパイラ | |
CN106776809B (zh) | 一种数据查询方法及系统 | |
CN109743346B (zh) | 会话流程配置方法、装置及计算机可读存储介质 | |
CN112148343B (zh) | 规则发布方法、装置及终端设备 | |
CN114600420A (zh) | 修剪防篡改数据存储装置中的条目 | |
CN112308521B (zh) | 微服务划分方法和系统 | |
WO2021175053A1 (zh) | 一种在虚拟机中执行功能模块的方法和装置 | |
Tian et al. | Effective simd vectorization for intel xeon phi coprocessors | |
CN111988429A (zh) | 算法调度方法以及系统 | |
Searles et al. | Parallelization of machine learning applied to call graphs of binaries for malware detection | |
Kollias et al. | A fast approach to global alignment of protein-protein interaction networks | |
Casas-Roma et al. | k-Degree anonymity on directed networks | |
CN111930610A (zh) | 软件同源性检测方法、装置、设备及存储介质 | |
CN111651695A (zh) | 一种短链接的生成与解析方法及装置 | |
CN115469894A (zh) | 一种应用程序的安装控制方法、装置、设备及存储介质 | |
WO2021179697A1 (zh) | 一种在虚拟机中执行功能模块的方法和装置 | |
CN110825453A (zh) | 基于大数据平台的数据处理方法及装置 | |
CN113689293A (zh) | 一种联盟链中智能合约文件确定方法及装置 | |
CN107817972B (zh) | 缓存代码处理方法、装置、存储介质及电子设备 | |
CN114356342A (zh) | 一种编译方法及装置 | |
Oprişa et al. | A scalable approach for detecting plagiarized mobile applications | |
CN113010115B (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 |