区块链 区块链技术 比特币公众号手机端

03.slither API常用对象结构

liumuhui 2年前 (2023-06-28) 阅读数 171 #技术

1.slither 代码目录对应的功能

slither代码的目录结构如下

image.png

下面4个主要目录如下:

  1. core目录
  2. detectors目录
  3. slithir目录
  4. priterns目录

slither的代码逻辑部分主要集中在core目录下,core目录的内容主要包括

  • cfg目录: 主要保存Node节点对象。
  • context目录: 语境上下文对象,context文件中主要有函数上下文和合约上下文两类。
  • variables目录: 各类不同类型(如状态变量,事件变量,局部变量,结构体变量,函数类型变量等)的变量对象。如state_variable 保存了StateVariable状态变量。

slither的代码内置的检测能力主要集中在detectors目录

  • abstract_detector.py:定义了检测器类的基础数据类型和所有的检测器的基类AbstractDetector
    • AbstractDetector:所有的检测器的基类。
    • DetectorClassification:指定检测器的威胁等级

slithir目录,该目录下均为ir的内容

  • operations:包含ir的操作类型。OperationWithLValue,HighLevelCall,LowLevelCall,InternalCall,InternalDynamicCall等。
  • variables: ir的变量类型。包括ReferenceVariable, TemporaryVariable, TupleVariable

printers目录,该目录下实现了上节内容讲解的各类的打印器功能。

2.常用的数据结构对象

主要对象有

  • slither对象:最大的对象,表示整个sol文件的解析。
  • contract对象:表示一个合约。
  • function对象:表示合约中的某个函数。
  • variable对象:表示合约中的一个状态变量或者函数中的变量或者ir中生成的临时变量。
  • node对象:函数中的节点对象,相当于源代码中的一行。
  • ir对象:源代码生成的是间代码。
  • 操作对象

...

版权声明

本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门