智能合约类型的识别方法、装置及计算设备制造方法及图纸

技术编号:37426812 阅读:13 留言:0更新日期:2023-04-30 09:47
本申请公开了一种智能合约类型的识别方法、装置及计算设备,该方法包括:解析智能合约的字节码,将字节码转换为操作码;遍历操作码,识别操作码中的至少一个特征操作码;根据至少一个特征操作码,得到与至少一个特征操作码对应的至少一个操作事件的操作对象标识符;根据至少一个操作事件的操作对象标识符,识别智能合约的类型。通过上述方式,根据智能合约的字节码即可实现对智能合约的类型的识别,能够准确高效地完成智能合约的类型识别。确高效地完成智能合约的类型识别。确高效地完成智能合约的类型识别。

【技术实现步骤摘要】
智能合约类型的识别方法、装置及计算设备


[0001]本申请涉及区块链
,具体涉及一种智能合约类型的识别方法、装置及计算设备。

技术介绍

[0002]区块链中很多数据类应用都需要判断智能合约的类型,才能进行后续的业务逻辑,比如数字产品交易平台,首先需要判断某个地址对应的智能合约是否符合智能合约标准,只有满足智能合约标准的情况下,才能按照标准中定义的方法,进行后续的上架、展示等操作。因此,智能合约的类型识别是至关重要的。
[0003]目前存在一些智能合约标准,符合标准的智能合约能够通过指定的接口来帮助外部判断其合约类型。但是,在智能合约标准发布之前,已经存在大量的已部署的智能合约,这些存量的智能合约并不一定符合标准。目前,尚没有能够有效识别未知智能合约的类型的方式。

技术实现思路

[0004]本申请实施例的目的是提供一种智能合约类型的识别方法、装置及计算设备,以解决现有技术缺乏能够有效识别未知智能合约类型的方式的问题。
[0005]根据本申请的一个方面,提供了一种智能合约类型的识别方法,包括:
[0006]解析智能合约的字节码,将字节码转换为操作码;
[0007]遍历操作码,识别操作码中的至少一个特征操作码;
[0008]根据至少一个特征操作码,得到与至少一个特征操作码对应的至少一个操作事件的操作对象标识符;
[0009]根据至少一个操作事件的操作对象标识符,识别智能合约的类型。
[0010]可选地,遍历操作码,识别操作码中的至少一个特征操作码进一步包括:
[0011]遍历操作码,根据操作码的定义,识别操作码中的至少一个特征操作码。
[0012]可选地,遍历操作码,根据操作码的定义,识别操作码中的至少一个特征操作码进一步包括:
[0013]针对任一操作码,根据该操作码的定义,判断该操作码是否为用于函数调用和/或事件定义的操作码,若是,则将该操作码识别为特征操作码。
[0014]可选地,根据至少一个特征操作码,得到与至少一个特征操作码对应的至少一个操作事件的操作对象标识符进一步包括:
[0015]若特征操作码为用于函数调用的操作码,则得到与该特征操作码对应的函数调用的函数标识符;
[0016]和/或,若特征操作码为用于事件定义的操作码,则得到与该特征操作码对应的事件定义的事件标识符。
[0017]可选地,根据至少一个操作事件的操作对象标识符,识别智能合约的类型进一步
包括:
[0018]将至少一个操作事件的操作对象标识符与任一智能合约类型对应的各个方法的签名标识符进行比对,根据比对结果确定智能合约的类型。
[0019]可选地,方法进一步包括:
[0020]对于任一智能合约类型,获取该智能合约类型的智能合约所需实现的各个方法的签名信息;
[0021]按照预设编码算法对各个方法的签名信息进行编码,得到该智能合约类型对应的各个方法的签名标识符。
[0022]可选地,方法进一步包括:
[0023]若识别出智能合约的类型,选择智能合约的类型对应的存储模型和索引模型部署智能合约所定义的业务;
[0024]若未识别出智能合约的类型,拒绝智能合约的部署事件。
[0025]根据本申请的另一方面,提供了一种智能合约类型的识别装置,装置包括:
[0026]转码模块,适于解析智能合约的字节码,将字节码转换为操作码;
[0027]第一识别模块,适于遍历操作码,识别操作码中的至少一个特征操作码;
[0028]处理模块,适于根据至少一个特征操作码,得到与至少一个特征操作码对应的至少一个操作事件的操作对象标识符;
[0029]第二识别模块,适于根据至少一个操作事件的操作对象标识符,识别智能合约的类型。
[0030]可选地,第一识别模块进一步适于:遍历操作码,根据操作码的定义,识别操作码中的至少一个特征操作码。
[0031]可选地,第一识别模块进一步适于:针对任一操作码,根据该操作码的定义,判断该操作码是否为用于函数调用和/或事件定义的操作码,若是,则将该操作码识别为特征操作码。
[0032]可选地,处理模块进一步适于:若特征操作码为用于函数调用的操作码,则得到与该特征操作码对应的函数调用的函数标识符;
[0033]和/或,若特征操作码为用于事件定义的操作码,则得到与该特征操作码对应的事件定义的事件标识符。
[0034]可选地,第二识别模块进一步适于:
[0035]将至少一个操作事件的操作对象标识符与任一智能合约类型对应的各个方法的签名标识符进行比对,根据比对结果确定智能合约的类型。
[0036]可选地,装置还包括:预处理模块,适于对于任一智能合约类型,获取该智能合约类型的智能合约所需实现的各个方法的签名信息;
[0037]按照预设编码算法对各个方法的签名信息进行编码,得到该智能合约类型对应的各个方法的签名标识符。
[0038]可选地,装置包括:部署模块,适于若识别出智能合约的类型,选择智能合约的类型对应的存储模型和索引模型部署智能合约所定义的业务;若未识别出智能合约的类型,拒绝智能合约的部署事件。
[0039]根据本申请的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和
通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
[0040]所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述智能合约类型的识别方法对应的操作。
[0041]根据本申请的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述智能合约类型的识别方法对应的操作。
[0042]根据本申请的智能合约类型的识别方法、装置及计算设备,通过将智能合约的字节码转换为操作码,并识别出其中的各个特征操作码,确定各个特征操作码所对应的操作事件的操作对象标识符,根据至少一个操作事件的操作对象标识符,即可判定智能合约的类型;进一步地,通过识别出操作码中用于函数调用和/或用于事件定义的特征操作码,并获取特征操作码对应的函数标识符和/或事件标识符,将待识别的智能合约对应的函数标识符和/或事件标识符与标准智能合约所需实现的方法的签名标识符进行比对,判断待识别的智能合约是否实现了标准智能合约所需实现的全部方法,即可判定该待识别的智能合约所满足的智能合约标准,从而确定待识别的智能合约的类型。通过上述方式,不需要对区块链网络发出任何额外请求,只需要智能合约的字节码,即可高效、准确地判断智能合约的类型。
[0043]上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
[0044]通过阅读下文优选实施方式的详细描述,各种其他的优本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种智能合约类型的识别方法,包括:解析智能合约的字节码,将所述字节码转换为操作码;遍历所述操作码,识别所述操作码中的至少一个特征操作码;根据所述至少一个特征操作码,得到与所述至少一个特征操作码对应的至少一个操作事件的操作对象标识符;根据所述至少一个操作事件的操作对象标识符,识别所述智能合约的类型。2.根据权利要求1所述的方法,其中,所述遍历所述操作码,识别所述操作码中的至少一个特征操作码进一步包括:遍历所述操作码,根据所述操作码的定义,识别所述操作码中的至少一个特征操作码。3.根据权利要求2所述的方法,其中,所述遍历所述操作码,根据所述操作码的定义,识别所述操作码中的至少一个特征操作码进一步包括:针对任一操作码,根据该操作码的定义,判断该操作码是否为用于函数调用和/或事件定义的操作码,若是,则将该操作码识别为特征操作码。4.根据权利要求3所述的方法,其中,所述根据所述至少一个特征操作码,得到与所述至少一个特征操作码对应的至少一个操作事件的操作对象标识符进一步包括:若特征操作码为用于函数调用的操作码,则得到与该特征操作码对应的函数调用的函数标识符;和/或,若特征操作码为用于事件定义的操作码,则得到与该特征操作码对应的事件定义的事件标识符。5.根据权利要求1

4中任一项所述的方法,其中,所述根据所述至少一个操作事件的操作对象标识符,识别所述智能合约的类型进一步包括:将所述至少一个操作事件的操作对象标识符与任一智能合约类型对应的各个方法的签名标识符进行比对,根据比对结果确定所述智能合约的类型。6.根...

【专利技术属性】
技术研发人员:原超孙英男王炜煜
申请(专利权)人:上海加密原生科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1