04.Slither Contract对象常用方法分析及应用示例

  • 小驹
  • 更新于 2023-06-28 16:22
  • 阅读 973

Contract对象常用方法分析及应用示例

contract对象

contract对象表示一个合约对象,因为slither就是分析智能合约的,所以合约对象是slither中的核心对象,使用频率非常非常高。

导入方法

from slither.core.declarations import Contract

常用属性和方法

name (str)

合约名称,是合约代码中contract XXXX,这里的XXX内容,不是symbol的内容或者合约的状态变量name的值。

变量列表的属性

表示该类的属性有:variables/variables_as_dict/state_variables/state_variables_declared/state_variables_inherited。它们表示不同的变量。

  • variables:返回变量列表。列表的每一项是个StateVariable对象
  • variables_as_dict: 返回变量的字典。key为源代码中的状态变量名,value为一个StateVariable对象,如访问合约的_balance状态变量的话,可以通过.variables_as_dict[’_balance’]得到对应的StateVariable对象。
  • state_variables: 返回合约的状态变量列表。列表第一项是个StateVariable对象
  • state_variables_declared:返回合约中自己声明的变量列表。
  • state_variables_inherited:返回合约中继承来的变量列表。

<aside> 💡 ❓declared与不是declared有什么区别

</aside>

对于状态变量,区分是否为declared的方法就是看该状态变量是当前合约中声明的还是从其他合约继承过来的。

如下面的调试过程中,c.state_variables,c.state_variables_declared 相差了8个状态变量,少的这8个状态变量就是从其他合约继承来的_name,_balances等变量。 image.png

函数和修饰符列表

表示函数和修饰符列表的属性有:functions/modifiers/functions_and_modifiers/functions_and_modifiers_declared/functions_and_modifi...

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

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

0 条评论

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