CN115879868B - 一种专家系统与深度学习相融合的智能合约安全审计方法 - Google Patents
一种专家系统与深度学习相融合的智能合约安全审计方法 Download PDFInfo
- Publication number
- CN115879868B CN115879868B CN202211105741.7A CN202211105741A CN115879868B CN 115879868 B CN115879868 B CN 115879868B CN 202211105741 A CN202211105741 A CN 202211105741A CN 115879868 B CN115879868 B CN 115879868B
- Authority
- CN
- China
- Prior art keywords
- instruction
- node
- vulnerability
- intelligent contract
- value
- 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.)
- Active
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种专家系统与深度学习相融合的智能合约安全审计方法。包括:按安全漏洞类别构建漏洞关联信息专家知识库;将solidity编写的智能合约代码转换为以太坊虚拟机(EVM)上的指令序列,构建属性级控制流图PCFG;按漏洞类别从PCFG中提取出与漏洞相关的子图SPCFG;并在子图的基础上,提取token并进行词嵌入编码,进而结合子图范围加权形成输入数据;以现有的成熟卷积神经网络为基础模型结构,按照漏洞类别分别进行训练,形成面向不同漏洞类别的智能合约安全审计模型。本发明可以借助于专家系统表示的精准知识,尽可能消除与智能合约安全不相关的代码,减少智能合约安全审计分析的代码量,提高审计效率。
Description
技术领域
本发明属于区块链和智能合约安全审计领域,特别是涉及一种专家系统与深度学习相融合的智能合约安全审计方法。
背景技术
目前智能合约安全审计方法和工具虽然取得一定成果,但在审计效率和准确性的均衡性上仍然存在不足,难以满足复杂智能合约的安全审计需求。如模型检测、定理证明等,由于其复杂度较高,审计效率较低,难以应对大型复杂智能合约;而对于模糊测试类,受实际生成的测试用例的限制,其实际检测性能难以控制;而基于抽象语法树的审计模型,其准确性较低。但随着智能合约应用的推广,其复杂度将不断提升,安全漏洞涉及的范围也将扩大,因此,如何提升智能合约安全审计模型的综合分析能力,在审计效率和准确性上尽量均衡,以适应复杂智能合约的安全审计需求,是智能合约安全审计研究的不容忽视的一个重要问题。
发明内容
为解决上述问题,本发明以以太坊虚拟机的指令序列为基础,结合人工智能理论,提出一种专家系统与深度学习相融合的智能合约安全审计的方法。
技术方案:
所述方法包括以下步骤:
(1)基于搜集的智能合约安全漏洞特征,采用专家知识表示方法,按安全漏洞类别构建相应的漏洞关联信息专家知识库;
(2)利用以太坊智能合约编译器solc将solidity编写的智能合约代码转换为以太坊虚拟机(EVM)上的指令序列;
(3)通过对EVM指令序列的语义分析,构建属性级控制流图PCFG(V,E,P)。V表示PCFG中节点的集合,其中每个节点v对应一条EVM的指令;E表示PCFG中边的集合,其中每条边e表示v之间的依赖关系,即如果vj执行依赖于vi的执行,那么E中将添加一条从vi指向vj的边。P表示每个节点v的属性值,表示该节点的指令类型信息;
(4)利用专家系统的知识库,根据相应的规则,按漏洞类别从步骤(3)的PCFG中提取出相应的子图其中i表示漏洞类别标号,j表示当前样本编号;
(5)通过对大量样本数据的2~4步骤处理,获得每个漏洞类别i的关联子图样本数据集SPCFGi。并将SPCFG中的每个节点转换为字符串token,并存入词列表L。
(6)对步骤(5)中的每个SPCFGi中的每个样本通过图的广度优先遍历方法展开为一维token向量,然后采用词嵌入方法,对L中的token进行编码,得到每个token字符串的实数向量表示;
(7)以现有的成熟卷积神经网络为基础模型结构,以步骤(6)获得的token实数向量以及各子图的关联度权值为输入,计算加权token值。然后按照漏洞类别分别进行训练,形成面向不同漏洞类别的智能合约安全审计模型。
(8)对于待检测的智能合约,依次经过步骤(1)~(6)的处理,形成加权token值,然后输入到步骤(7)构建的智能合约安全审计模型,实现对该智能合约的安全审计。
优选的,步骤(1)中的专家知识库重点描述与对应类别安全漏洞关联的信息,并不是漏洞本身。表示方式为“A1|A2|…|An”。其中Ai表示第i种类型的漏洞,i∈{1,2,…,n},“|”表示或的关系,即该知识库能检测的智能合约安全漏洞类型包含Ai中的任意一种或多种。对于每一种类型的漏洞Ai,其关联分析节点范围表示为: 其中令k∈1,2,…,m,则Cki→(Xki,Wki)表示一条匹配规则,且从1开始顺次编号;/>表示第k条规则中满足的属性值条件,/>表示第k条规则中子图范围,/>表示第k条规则与漏洞Ai所对应的关联度权值,其取值范围为[0,1]之间的实数;“&”为连结字符,用于分隔Ai类型漏洞关联的规则。
满足的属性值条件是一个列表形式,里面可以包含多个属性值,当进行节点属性匹配时,只要/>中包含该节点vy的属性值,即认为成功匹配该规则。此时,将匹配的子图与相应的匹配规则构建映射结构M,其表示为/>其中,/>表示匹配的子图,vy表示匹配到节点,/>为匹配的关联度权值,/>表示子图范围。
子图范围是一个二元组(f,d),其中f是状态标记,其取值为f∈{0,1}整数值,d是深度标志,取值为整数。当f取值为1时,表示匹配的子图范围为知识库中漏洞类型Ai的第d条规则所匹配的节点到当前匹配节点之间所有直接关联节点构成的子图。当f取值为0时,表示匹配的子图范围为当前匹配节点直接相邻的d层节点构成的子图(即以当前匹配节点为起始节点,按照层次优先遍历d层获得的节点集合构成的子图)。
优选的,步骤(3)中的PCFG节点属性基于指令类别进行表示,除环境信息指令、存取操作指令、流控制指令和系统指令使用对应的指令名字符串表示外,其他类型指令包括停止指令、算术指令、比较指令、逻辑位运算指令、KECCAK256指令、块信息指令、入栈指令、复制指令、交换指令、日志指令分别用统一的大类类型名字符串表示,即{“stop”、“arith”、“comp”、“logic”、“kecc”、“blockinfo”、“push”、“dup”、“exchage”、“log”}。
优选的,步骤(5)构建节点v的token字符串时,其基本格式为“pre%property%suc”,其中pre表示节点v的直接前驱节点的个数,但不包括其自身,property表示节点v的属性字符串,suc表示节点v的直接后继节点的个数,但不包括其自身。
优选的,步骤(7)中输入数据按照以下步骤获得:
-依次遍历SPCFGi中的每个子图通过前文所述的M映射结构,获得对应的匹配节点即关联度权值/> 表示/>中的d值;
-对于中的每个节点vi,按如下公式计算其加权token值Veci。
其中Ti表示节点vi对应token实值向量值。
本发明的有益效果
专家系统与深度学习相融合的智能合约安全审计方法,一方面可以借助于专家系统表示的精准知识,尽可能消除与智能合约安全不相关的代码,减少智能合约安全审计分析的代码量,提高审计效率。另一方面借助于深度学习技术,将影响智能合约安全的代码特征自适应的提取出来,对于构建精准的智能合约安全审计模型是极为重要的。专家系统与深度学习相融合额智能合约安全审计方法,将有望取代基于源代码的以太坊智能合约安全审计模型,成为智能合约安全审计研究领域的一个重要突破点。
附图说明
图1是本发明一种专家系统与深度学习相融合的智能合约安全审计方法的示意图;
图2是实施例中源程序示意图;
图3是实施例中源程序对应的EVM指令序列示意图;
图4是实施例中PCFG示意图;
图5是实施例中SPCFG示意图。
具体实施方式
下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
结合图1,一种专家系统与深度学习相融合的智能合约安全审计方法,包括以下步骤:
(1)基于搜集的智能合约安全漏洞特征,采用专家知识表示方法,按安全漏洞类别构建相应的漏洞关联信息专家知识库。具体的,假如我们通过分析,搜集的可重入类型智能合约漏洞特征主要关注两点:(a)指令码中包含有call指令,且其附近4层的数据涉及到参数,需要关联分析;(b)call指令调用点在重入调用时,所有storage类型的状态变量的操作。因此,我们将这两个特征关联的信息表示为对应的知识库: A1=<{call}→((0,4),1)>&<{sload,sstore}→((1,1),1)>。
(2)利用以太坊智能合约编译器solc将solidity编写的智能合约代码转换为以太坊虚拟机(EVM)上的指令序列。具体的,对于如图2所示的solidity语言智能合约源代码,我们使用solc编译器,并通过添加编译参数“--asm”,将该c语言源代码转为对应的EVM指令序列,如图3所示。
(3)通过对EVM字节指令的语义分析,以其标号及分支语句为基准,首先构建基于EVM字节指令的程序控制流图CFG。具体的,我们首先扫描一次所有的EVM指令,每当遇到以”tag”开始,并以“:”结束的字符串,我们则将结束上一个基本块,并新建一个基本块结构,同时保存tag后面的标号,作为该基本块的标识;如果遇到流控制指令,则将该指令归为上一个基本块,其后的一条指令作为一个新基本块的开始。如图3所示,第1条指令为“tag_1:”,因此将它作为一个新基本块的开始。而第24条指令为“jumpi”,为流控制指令,则将其归为上一个基本块,其下一条指令作为新基本块的开始。在基本块构建完成后,我们分析每个基本块的最后一条语句,如果是“jumpi”等条件分支指令,则根据“jumpi”指令及前一条指令对应的标号,构建相应的CFG边;如果是“jump”,则直接根据该指令后跟着的标号来确定。如图3中第24条指令为“jumpi”指令,则结合它的前一条指令“tag_25”,知道其可能跳转到“tag_25”对应的标号,也可能跳转到其后的第25条指令,因此,我们在第24条指令所在基本块添加一条到“tag_25”所在基本块的边,同时也添加一条从第24条指令所在基本块添加一条到第25条指令所在基本块的边。当CFG的边构建完成后,我们去掉所有的标号,即以“tag”开始,并以“:”结束的行,并按照具体的指令类型,将每条指令转换为属性表示。如指令“and”,则转为其对应的大类字符串“arith”,对于指令“dup1”,则转为“dup”等,同时对于基本块内部的指令序列,每条指令对应一个节点,前一个节点增加一条指向后一个节点的边,最终形成如图4所示的 PCFG示意图,其中每个框表示一个基本块,基本块的右下角标记了该基本块的名字,基本块内的边被隐去,每行对应一个用属性表示的节点。
(4)利用专家系统的知识库,根据相应的规则,按漏洞类别从步骤(3)的PCFG中提取出相应的子图具体的,结合(1)中的可重入漏洞知识库知识A1=<{call}→((0,4),1)&{sload,sstore}→((1,1),1),首先对规则1{call}→((0,4),1)进行匹配,发现在“B2”基本块的第20 个节点正好匹配“call”属性,因此根据子图范围”(0,4)”,将构建子图/>如图5(a)所示。对于规则2<{sload,sstore}→((1,1),1)>,发现在“B0”基本块的第20个节点属性匹配了“sload”,而其子图范围为(1,1),因此将根据规则1的匹配结果,即B2中的第20 个节点,将B0的第20个节点到B2中的第20个节点路径上的所有点均包含进来。此时得到子图如图5(b)所示。
(5)通过对大量样本数据的2~4步骤处理,获得每个漏洞类别i的关联子图样本数据集SPCFGi。并将SPCFG中的每个节点转换为字符串token存入词列表L。具体的,如对于其token为{1%dup%1,1%call%1,1%gas%1},词列表L中将增加这3个token。
(6)对步骤(5)中的每个SPCFGi中的每个样本SPCFG_j^i通过图的广度优先遍历方法展开为一维token向量,然后采用词嵌入方法,对L中的token进行编码,使得L中的每个token对应一个实数向量,进而得到每个token字符串的实数向量表示。对于在具体实例中,我们直接借助开源的word2vec工具,获得每个token对应的词向量表示。
(7)以步骤(6)获得的token实数向量以及各子图的关联度权值,按照如下公式获得每个节点的加权token值。
具体的,假如图5(a)中call节点对应的token(即“1%call%1”)为T=(0.2,0.6,0.9),其子图映射M值为(“call”,(0,4),1),即满足条件vi=vy,同时,因此其向量值为/>
(8)以现有的成熟深度卷积神经网络为基础模型结构,以步骤(7)获得的加权token 值为输入,按照漏洞类别分别进行训练,形成面向不同漏洞类别的智能合约安全审计模型。
(9)最后,对于待检测的智能合约,依次经过步骤1~6的处理,形成加权token值,然后输入到步骤(8)构建的智能合约安全审计模型,实现对该智能合约的安全审计。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种专家系统与深度学习相融合的智能合约安全审计方法,其特征在于:
(1)基于搜集的智能合约安全漏洞特征,采用专家知识表示方法,按安全漏洞类别构建相应的漏洞关联信息专家知识库;
(2)利用以太坊智能合约编译器solc将solidity编写的智能合约代码转换为以太坊虚拟机EVM上的指令序列;
(3)通过对EVM指令序列的语义分析,构建属性级控制流图PCFG(V,E,P),V表示PCFG中节点的集合,其中每个节点v对应一条EVM的指令;E表示PCFG中边的集合,其中每条边e表示v之间的依赖关系,即如果vj执行依赖于vi的执行,那么E中将添加一条从vi指向vj的边;P表示每个节点v的属性值,表示该节点的指令类型信息;
(4)利用专家系统的知识库,根据步骤(1)相应的规则,按漏洞类别从步骤(3)的PCFG中提取出相应的子图其中i表示漏洞类别标号,j表示当前样本编号;
(5)通过对大量样本数据的(2)~(4)步骤处理,获得每个漏洞类别i的关联子图样本数据集SPCFGi;并将SPCFG中的每个节点转换为字符串token,并存入词列表L;
(6)对步骤(5)中的每个SPCFGi中的每个样本通过图的广度优先遍历方法展开为一维token向量,然后采用词嵌入方法,对L中的token进行编码,得到每个token字符串的实数向量表示;
(7)以现有的成熟卷积神经网络为基础模型结构,以步骤(6)获得的token实数向量以及各子图的关联度权值为输入,计算加权token值;然后按照漏洞类别分别进行训练,形成面向不同漏洞类别的智能合约安全审计模型;步骤(7)中输入数据按照以下步骤获得:
a)依次遍历SPCFGi中的每个子图通过M映射结构,获得对应的匹配节点即关联度权值/>其中,/>表示匹配的子图,vy表示匹配到节点,Wk i为匹配的关联度权值,/>表示子图范围;
b)对于中的每个节点vi,按如下公式计算其加权token值Veci:
其中Ti表示节点vi对应token实值向量值,表示/>中的d值;
(8)对于待检测的智能合约,依次经过步骤(1)~(6)的处理,形成加权token值,然后输入到步骤(7)构建的智能合约安全审计模型,实现对该智能合约的安全审计。
2.根据权利要求1所述的方法,其特征在于步骤(1)中的专家知识库重点描述与对应类别安全漏洞关联的信息,并不是漏洞本身,表示方式为“A1|A2|…|An”;其中Ai表示第i种类型的漏洞,i∈{1,2,…,n},“|”表示或的关系;对于每一种类型的漏洞Ai,其关联分析节点范围表示为:其中令k∈{1,2,…,m},则/>表示一条匹配规则,且从1开始顺次编号;/>表示第k条规则中满足的属性值条件,/>表示第k条规则中子图范围,/>表示第k条规则与漏洞Ai所对应的关联度权值,其取值范围为[0,1]之间的实数;“&”为连结字符,用于分隔Ai类型漏洞关联的规则。
3.根据权利要求2所述的方法,其特征在于其满足的属性值条件是一个列表形式,里面包含多个属性值,当进行节点属性匹配时,只要/>中包含该节点vy的属性值,即认为成功匹配该规则;此时,将匹配的子图/>与相应的匹配规则构建映射结构M,其表示为其中,/>表示匹配的子图,vy表示匹配到节点,/>为匹配的关联度权值,/>表示子图范围。
4.根据权利要求2所述的方法,其特征在于子图范围是一个二元组(f,d),其中f是状态标记,其取值为f∈{0,1}整数值,d是深度标志,取值为整数;当f取值为1时,表示匹配的子图范围为知识库中漏洞类型Ai的第d条规则所匹配的节点到当前匹配节点之间所有直接关联节点构成的子图;当f取值为0时,表示匹配的子图范围为当前匹配节点直接相邻的d层节点构成的子图。
5.根据权利要求1所述的方法,其特征在于步骤(3)中的PCFG节点属性基于指令类别进行表示,除环境信息指令、存取操作指令、流控制指令和系统指令使用对应的指令名字符串表示外,其他类型指令包括停止指令、算术指令、比较指令、逻辑位运算指令、KECCAK256指令、块信息指令、入栈指令、复制指令、交换指令、日志指令分别用统一的大类类型名字符串表示,即{“stop”、“arith”、“comp”、“logic”、“kecc”、“blockinfo”、“push”、“dup”、“exchage”、“log”}。
6.根据权利要求1所述的方法,其特征在于步骤(5)构建节点v的token字符串时,其基本格式为“pre%property%suc”,其中pre表示节点v的直接前驱节点的个数,但不包括其自身,property表示节点v的属性字符串,suc表示节点v的直接后继节点的个数,但不包括其自身。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211105741.7A CN115879868B (zh) | 2022-09-09 | 2022-09-09 | 一种专家系统与深度学习相融合的智能合约安全审计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211105741.7A CN115879868B (zh) | 2022-09-09 | 2022-09-09 | 一种专家系统与深度学习相融合的智能合约安全审计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115879868A CN115879868A (zh) | 2023-03-31 |
CN115879868B true CN115879868B (zh) | 2023-07-21 |
Family
ID=85769816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211105741.7A Active CN115879868B (zh) | 2022-09-09 | 2022-09-09 | 一种专家系统与深度学习相融合的智能合约安全审计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115879868B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035842A (zh) * | 2020-08-17 | 2020-12-04 | 杭州云象网络技术有限公司 | 一种基于编码解码器的智能合约漏洞检测可解释性方法 |
CN113486357A (zh) * | 2021-07-07 | 2021-10-08 | 东北大学 | 一种基于静态分析和深度学习的智能合约安全检测方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100503386B1 (ko) * | 2003-03-14 | 2005-07-26 | 주식회사 안철수연구소 | 제어흐름과 자료흐름을 고려한 악성 행위 패턴 감지 방법 |
US20140208297A1 (en) * | 2013-01-20 | 2014-07-24 | International Business Machines Corporation | Validation of revised computer programs |
CN104462981B (zh) * | 2013-09-12 | 2019-01-04 | 深圳市腾讯计算机系统有限公司 | 漏洞检测方法及装置 |
CN111062038B (zh) * | 2019-11-23 | 2022-06-24 | 同济大学 | 一种基于状态空间的智能合约形式化验证系统及方法 |
CN111460450B (zh) * | 2020-03-11 | 2023-02-10 | 西北大学 | 一种基于图卷积网络的源代码漏洞检测方法 |
CN112100054B (zh) * | 2020-08-12 | 2021-07-20 | 北京大学 | 一种面向数据管控的程序静态分析方法和系统 |
CN112733156B (zh) * | 2021-01-29 | 2024-04-12 | 中国人民解放军国防科技大学 | 基于代码属性图的软件脆弱性智能检测方法、系统及介质 |
CN113051574B (zh) * | 2021-03-11 | 2023-03-21 | 哈尔滨工程大学 | 一种智能合约二进制代码的漏洞检测方法 |
CN113221120A (zh) * | 2021-05-19 | 2021-08-06 | 西北工业大学太仓长三角研究院 | 一种面向物联网应用规则的漏洞检测方法及系统 |
CN113722218B (zh) * | 2021-08-23 | 2022-06-03 | 南京审计大学 | 一种基于编译器中间表示的软件缺陷预测模型构建方法 |
CN113497809B (zh) * | 2021-09-07 | 2021-11-26 | 中国人民解放军国防科技大学 | 基于控制流和数据流分析的mips架构漏洞挖掘方法 |
CN113868650B (zh) * | 2021-09-13 | 2023-04-25 | 四川大学 | 基于代码异质中间图表示的漏洞检测方法与装置 |
CN114385185A (zh) * | 2021-12-24 | 2022-04-22 | 深圳前海微众银行股份有限公司 | 一种智能合约的控制流图生成方法及装置 |
CN114048464B (zh) * | 2022-01-12 | 2022-03-15 | 北京大学 | 基于深度学习的以太坊智能合约安全漏洞检测方法及系统 |
-
2022
- 2022-09-09 CN CN202211105741.7A patent/CN115879868B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035842A (zh) * | 2020-08-17 | 2020-12-04 | 杭州云象网络技术有限公司 | 一种基于编码解码器的智能合约漏洞检测可解释性方法 |
CN113486357A (zh) * | 2021-07-07 | 2021-10-08 | 东北大学 | 一种基于静态分析和深度学习的智能合约安全检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115879868A (zh) | 2023-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Alur et al. | Search-based program synthesis | |
CN111639344B (zh) | 一种基于神经网络的漏洞检测方法及装置 | |
CN108446540B (zh) | 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统 | |
CN113360915B (zh) | 基于源代码图表示学习的智能合约多漏洞检测方法及系统 | |
Bergmann | Translating OCL to graph patterns | |
Wang et al. | Benchmarking the combinatorial generalizability of complex query answering on knowledge graphs | |
Le et al. | Interactive program synthesis | |
CN108563561B (zh) | 一种程序隐性约束提取方法及系统 | |
CN114692600B (zh) | 使用子例程图谱进行形式语言处理的方法和系统 | |
Taentzer et al. | Generation of Sierpinski triangles: A case study for graph transformation tools | |
CN114816517A (zh) | 一种层次语义感知的代码表示学习方法 | |
CN116702157B (zh) | 一种基于神经网络的智能合约漏洞检测方法 | |
CN116663019B (zh) | 一种源代码漏洞检测方法、装置和系统 | |
CN110309214A (zh) | 一种指令执行方法及其设备、存储介质、服务器 | |
CN115879868B (zh) | 一种专家系统与深度学习相融合的智能合约安全审计方法 | |
CN115373737B (zh) | 一种基于特征融合的代码克隆检测方法 | |
CN116383832A (zh) | 一种基于图神经网络的智能合约漏洞检测方法 | |
Bauer et al. | MLFMF: data sets for machine learning for mathematical formalization | |
Şerbănuţă et al. | A Truly Concurrent Semantics for the Framework Based on Graph Transformations | |
Komendantskaya et al. | Proof mining with dependent types | |
Arora et al. | Code semantic detection | |
Marshall | A graph-based framework for comparing curricula | |
Zhang et al. | Constraint-based automatic symmetry detection | |
KR20050065015A (ko) | 프로그램의 복제 여부를 검사하는 방법 및 시스템 | |
Yang | Neurosymbolic Machine Learning for Reasoning |
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 |