Contract对象常用方法分析及应用示例
contract对象表示一个合约对象,因为slither就是分析智能合约的,所以合约对象是slither中的核心对象,使用频率非常非常高。
from slither.core.declarations import Contract
合约名称,是合约代码中contract XXXX
,这里的XXX内容,不是symbol的内容或者合约的状态变量name的值。
表示该类的属性有:variables/variables_as_dict/state_variables/state_variables_declared/state_variables_inherited。它们表示不同的变量。
variables:
返回变量列表。列表的每一项是个StateVariable对象
。StateVariable对象
,如访问合约的_balance状态变量的话,可以通过.variables_as_dict[’_balance’]
得到对应的StateVariable对象。StateVariable对象
<aside> 💡 ❓declared与不是declared有什么区别
</aside>
对于状态变量,区分是否为declared的方法就是看该状态变量是当前合约中声明的还是从其他合约继承过来的。
如下面的调试过程中,c.state_variables,c.state_variables_declared
相差了8个状态变量,少的这8个状态变量就是从其他合约继承来的_name,_balances等变量。
表示函数和修饰符列表的属性有:functions/modifiers/functions_and_modifiers/functions_and_modifiers_declared/functions_and_modifi...
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!