03.slither API常用对象结构

  • 小驹
  • 更新于 2023-06-28 15:29
  • 阅读 1204

slither API中常用对象结构解析

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对象:源代码生成的是间代码。
  • 操作对象

...

剩余70%的内容订阅专栏后可查看

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
小驹
小驹
0xcD46...3461
weixin: xiaoju521区块链安全分析,欢迎私信沟通交流