Solidity笔记

Contract类的几种类型

  • Contract: 正常可部署的合约

  • Abstract Contract: 存在部分未实现的方法

  • Interface: 所有方法均无实现

  • Library:库,封装常用的工具类和方法,不能对状态变量和存储进行更改

  • Modifier:类似拦截器,AOP编程;定义一个modifier可以修辞某方法

变量关键字

  • payable:可接受付款的地址变量

  • memory:动态内存,不会被存储,使用完后被EVM回收

  • public:外部可访问

  • private:内部可访问

函数可见性

  • public: 内部外部均可见

  • private: 只有当前合约内部可见

  • external: 供外部调用,内部调用使用this关键字

  • internal: 只有内部可见,可以被继承

  • virtual:子类继承实现,实现方法需加override关键字

  • payable:可接受付款的方法

修饰符

  • pure for functions: 禁止对状态变量的访问和修改

  • view for functions: 禁止修改状态变量,但可以修改

  • payable for functions: 可接受付款

  • constant for state variables: 常量

  • immutable for state variables: Allows exactly one assignment at construction time and is constant afterwards. Is stored in code.

  • anonymous for events: 不作为主题存储及用于检索

  • indexed for event parameters: 将参数作为主题存储,可用于检索

  • virtual for functions and modifiers: 子类可重写覆盖

  • override: 重写父类方法时标记