安装配置
开发IDE: 我一般就直接用idea了,有solidity插件,但是以太坊有一个官方的IDE: remix
如果是使用
hardhat
,那么就不用单独安装了,它会安装指定的版本的solc
的
1 | brew update |
语法
可见性修饰符(只能其中一种)
- public: 任何用户或者合约都能调用和访问
- private: 只能在本合约内部调用和访问
- external: 和public类似,不过只能在合约外调用,不能被合约内的其他函数调用
- Internal: 和private类似,不过可以在继承的子合约中调用副合约的函数
函数修饰符
- view: 可是使用合约中的变量,只是在本地执行,不会消耗gas,不会修改合约状态(例如修改变量、触发事件等)
- pure: 只能使用局部的变量,入参或者方法内部的变量,既不读取状态,也不改变状态,同样是本地执行,不会消耗gas
- payable: 表示一个函数能够附加以太币调用,例如一些需要转账的函数
函数入参修饰符
- memory: 表示这里是值传递
- storage: 表示是指针传递
变量分类,注意每个变量在声明时都会有一个对应其类型的默认值(address -> address(0), boolean -> false, enum -> 第一个元素),没有空值null的概念
- 状态变量:变量值会一直保存在合约的存储空间中
- 局部变量:仅在函数执行过程中有效,函数退出后就无效了
- 全局变量:保存在全局命名空间中的变量,用于获取区块链相关信息
内置全局变量
- block.number(uint): 当前区块号
- block.timestamp(uint): 当前区块的时间戳,等同于now
- block.gaslimit(uint): 当前区块的gaslimit
- msg.sender(address): 消息发送者
- msg.value(uint): 当前消息的wei值
- now: 当前区块的时间长
- tx.gasprice(uint): 当前transaction的gas价格
- tx.origin(address payable): 当前交易的发送者地址
1 | pragma solidity ^0.8.4; |