Skip to content

Latest commit

 

History

History
64 lines (49 loc) · 3.54 KB

File metadata and controls

64 lines (49 loc) · 3.54 KB

第一课

学习Solidity语言定义,第一个开发工具Remix,第一个solidity程序。

solidity定义

solidity是一种用于编写以太坊虚拟机智能合约的编程语言。

Remix

Remix是以太坊官方推荐的智能合约集成开发环境。可用于编写solidity代码,编译solidity代码,部署solidity代码。并且remix还提供了一个remix虚拟机,模拟以太坊链,运行智能合约,初始化的时候会提供一些拥有100 eth的账户,方便用户测试。

第一个solidity程序

    // 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的值类型。包括布尔型,整数型等等,这类变量赋值时候直接传递数值

布尔型 bool

布尔型的值只有true或者false; 运算符有: !, &&, ||, ==, !=。 且遵循短路规则。

整型 int / uint

分别有符号和无符号的不同位数的整型变量。关键字 uint8 到 uint256 (无符号整型,从 8 位到 256 位)以及 int8 到 int256, 以 8 位为步长递增。 uint 和 int 分别是 uint256 和 int256 的别名。

运算符有:

  • 比较运算符: <=, <, ==, !=, >=, > (返回布尔值)

  • 位运算符: &, |, ^ (异或), ~ (位取反)

  • 移位运算符: << (左移), >> (右移)

  • 算数运算符: +, -, 一元运算 - (只适用于有符号的整数), *, /, % (取余), ** (幂)

地址 address

地址类型(address)有两类:

  • 普通地址(address): 存储一个 20 字节的值(以太坊地址的大小)。
  • payable address: 比普通地址多了 transfer 和 send 两个成员方法,用于接收转账。

定长字节数组

字节数组分为定长和不定长两种:

  • 定长字节数组: 属于值类型,数组长度在声明之后不能改变。根据字节数组的长度分为 bytes1, bytes8, bytes32 等类型。定长字节数组最多存储 32 bytes 数据,即bytes32。
  • 不定长字节数组: 属于引用类型(之后的章节介绍),数组长度在声明之后可以改变,包括 bytes 等

枚举

  • 枚举(enum)是 Solidity 中用户定义的数据类型。它主要用于为 uint 分配名称,使程序易于阅读和维护。

第三课

学习solidity的函数输出,包括:返回多种变量,命名式返回,以及利用解构式赋值读取全部或部分返回值。

返回值:return 和 returns

returns:跟在函数名后面,用于声明返回的变量类型及变量名。

return:用于函数主体中,返回指定的变量。

命名式返回

我们可以在 returns 中标明返回变量的名称。Solidity 会初始化这些变量,并且自动返回这些函数的值,无需使用 return。

解构式赋值

Solidity 支持使用解构式赋值规则来读取函数的全部或部分返回值。