合约的组成
solidity
// SPDX-License-Identifier: MIT //开源协议
pragma solidity ^0.8.0; //编译器版本要大于0.8.0
contract Counter { //定义合约
uint public counter; //状态变量
constructor(){
counter =0;
}
funtion count()public{ //合约函数
counter+=1;
}
}
solidity 语言
solidity 数据类型
- 值类型
- 布尔、整型、定长浮点型、定长字节数组、枚举、函数类型、地址类型
- 十六进制常量、有理数和整型常量、字符串常量、地址常量
- 引用类型
- 结构体
- 数组
- 映射类型
整型
int/uint,uint8...uint256
支持的运算符
- 比较运算:<=,<,==,!=,>=,>
- 位运算:&,|,^(异或),~(位取反)
- 算数运算:+,-,*,/,%(取余数),**(幂)
- 移位:<<(左移),>>(右移)
在使用整型时,要特别注意整型的大小及所能容纳的最大值和最小值,如 uint8 的最大值是 0xff(255),最小值是 0
从 solidity0.6.0 版本开始可以通过 Type(T).min 和 Type(T).max 获得整型的最小值和最大值
地址类型
solidity 使用地址类型来表示一个账号,地址类型有两种形式
- address:一个 20 字节的值
- address payable:表示可支付地址,与 address 相同也是 20 字节,不过它有成员函数 transfer 和 send
成员函数
<address>balance(uint256)
:返回地址的余额<address payable>transfer(uint256 amount)
:向地址发送以太币,失败时抛出异常<address payable>send(uint256 amount) returns(bool)
:向地址发送以太币,失败时返回 false- 3 个底层成员函数:call,delegatecall,staticcall 例如
<address>.call(bytes memory) returns (bool, bytes memory)
,通常用于合约交互,直接控制编码的方式调用合约函数
合约类型
每个合约都是一个类型
合约可以显示地转换为 address 类型,从而可以使用地址类型的成员函数
这段时间太忙了,先学到这吧...挖坑,后面再填