编写solidity,总结的几条经验
  1. 在项目设计之初,就要思考每个合约每个方法的权限,权限总结下面几条:

    1. Role 角色,哪些角色可以调用该方法,不同的业务角色划分不一样,最普遍的几个如下:
      • owner 拥有者/部署者/创建者
      • everyone 所有用户
      • … 其他角色
    2. R/W 读写,该方法需不需要读/写合约变量,需不需要
      1. R 如果是只读合约变量,那么合约要标明:view
      2. RP 如果是只读常量,不读合约变量,那么合约要标明:pure
      3. W 如果可写,那么不需要特殊标明
    3. Pay 转账,该方法是否需要接受ETH,如果需要那么方法要标明payable
    4. Range 操作范围,该方法是内部调用、外部调用、还是内外都可以调用、是否可以继承。
  2. 如果合约设计允许接收ETH,那么一定要加上receive或者fallback方法:

    receive() payable external {}
    fallback() payable external {}
    
  3. 声明合约变量或者结构体变量的时候,要注意类型的顺序,EVM每个卡槽是256位,如果不足256位,会自动填充,这个过程是需要手续费的。让两个128类型的变量挨着,比隔开会更省gas费用。

Subscribe to daxiong
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.