学习Solidity语言定义,第一个开发工具Remix,第一个solidity程序。
solidity是一种用于编写以太坊虚拟机智能合约的编程语言。
Remix是以太坊官方推荐的智能合约集成开发环境。可用于编写solidity代码,编译solidity代码,部署solidity代码。并且remix还提供了一个remix虚拟机,模拟以太坊链,运行智能合约,初始化的时候会提供一些拥有100 eth的账户,方便用户测试。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;
contract HelloWeb3{
string public _string = "Hello Web3!";
}
- 第一行是注释,内容为SPDX 许可标识符。说明代码所使用的软件许可(license)
- 第二行是声明源文件所使用的 Solidity 版本。因为不同版本的语法有差异。这行代码表示源文件将不允许小于 0.8.21 版本或大于等于 0.9.0 的编译器编译(第二个条件由 ^ 提供)。Solidity 语句以分号(;)结尾。
- 第三行创建合约,并声明合约名称为HelloWeb3,合约的所有内容都包括在这个花括号中
- 第四行声明了一个类型为string,可见性为public,名称为_string的变量,存储的内容为"Hello Web3!"
学习solidity的值类型。包括布尔型,整数型等等,这类变量赋值时候直接传递数值
布尔型的值只有true或者false; 运算符有: !, &&, ||, ==, !=。 且遵循短路规则。
分别有符号和无符号的不同位数的整型变量。关键字 uint8 到 uint256 (无符号整型,从 8 位到 256 位)以及 int8 到 int256, 以 8 位为步长递增。 uint 和 int 分别是 uint256 和 int256 的别名。
运算符有:
-
比较运算符: <=, <, ==, !=, >=, > (返回布尔值)
-
位运算符: &, |, ^ (异或), ~ (位取反)
-
移位运算符: << (左移), >> (右移)
-
算数运算符: +, -, 一元运算 - (只适用于有符号的整数), *, /, % (取余), ** (幂)
地址类型(address)有两类:
- 普通地址(address): 存储一个 20 字节的值(以太坊地址的大小)。
- payable address: 比普通地址多了 transfer 和 send 两个成员方法,用于接收转账。
字节数组分为定长和不定长两种:
- 定长字节数组: 属于值类型,数组长度在声明之后不能改变。根据字节数组的长度分为 bytes1, bytes8, bytes32 等类型。定长字节数组最多存储 32 bytes 数据,即bytes32。
- 不定长字节数组: 属于引用类型(之后的章节介绍),数组长度在声明之后可以改变,包括 bytes 等
- 枚举(enum)是 Solidity 中用户定义的数据类型。它主要用于为 uint 分配名称,使程序易于阅读和维护。
学习solidity的函数输出,包括:返回多种变量,命名式返回,以及利用解构式赋值读取全部或部分返回值。
returns:跟在函数名后面,用于声明返回的变量类型及变量名。
return:用于函数主体中,返回指定的变量。
我们可以在 returns 中标明返回变量的名称。Solidity 会初始化这些变量,并且自动返回这些函数的值,无需使用 return。
Solidity 支持使用解构式赋值规则来读取函数的全部或部分返回值。