# Solidity入门

By [0xDADDD](https://paragraph.com/@0xdaddd) · 2023-02-18

---

0x00 资源导航
---------

0x00.Solidity资源导航，入门相关资源持续收集整理中，方便学习和回顾。目前主要包含官方说明以及智能合约示例。

官方说明文档（当前最新版本0.8.17）

[https://docs.soliditylang.org/zh/latest/](https://docs.soliditylang.org/zh/latest/)

速查表

[https://docs.soliditylang.org/zh/latest/cheatsheet.html](https://docs.soliditylang.org/zh/latest/cheatsheet.html)

语法

[https://docs.soliditylang.org/zh/latest/grammar.html](https://docs.soliditylang.org/zh/latest/grammar.html)

官方合约示例

[https://docs.soliditylang.org/zh/latest/solidity-by-example.html#](https://docs.soliditylang.org/zh/latest/solidity-by-example.html#)

Solidity官网

[https://soliditylang.org/](https://soliditylang.org/)

0x01 学习记录
---------

0x00.Solidity学习记录，主要用于学习过程中关键点的记录，以及和其他已经掌握语言的差异记录。

### 版本管理

    pragma solidity ^0.8.0;
    

solidity指定版本号的语义遵循NPM版本语义：^, <, >, <=, >=, =

### 数据类型

[https://docs.soliditylang.org/zh/latest/types.html](https://docs.soliditylang.org/zh/latest/types.html)

#### 浮点数

浮点型（在许多语言中的 `float` 和 `double` ，更准确地说是 IEEE 754 类型）和定长浮点型之间最大的不同点是， 在前者中整数部分和小数部分（小数点后的部分）需要的位数是灵活可变的，而后者中这两部分的长度受到严格的规定。 一般来说，在浮点型中，几乎整个空间都用来表示数字，但只有少数的位来表示小数点的位置。

`fixed` / `ufixed`：表示各种大小的有符号和无符号的定长浮点型。 在关键字 `ufixedMxN` 和 `fixedMxN` 中， `M` 表示该类型占用的位数， `N` 表示可用的小数位数。 `M` 必须能整除 8，即 8 到 256 位。 `N` 则可以是从 0 到 80 之间的任意数。 `ufixed` 和 `fixed` 分别是 `ufixed128x18` 和 `fixed128x18` 的别名。

#### 地址类型

`address`: 保存一个20字节的值（一个以太坊地址的大小）。 `address payable`: 与 address 类型相同，但有额外的方法 transfer 和 send。

### 变量

[https://docs.soliditylang.org/zh/latest/units-and-global-variables.html](https://docs.soliditylang.org/zh/latest/units-and-global-variables.html)

#### 状态变量

存储在区块链上，对状态变量的操作需要消耗gas。

#### 局部变量

函数运行中有效的变量，函数退出后变量释放。

#### 全局变量

区块链上提供的变量，可以在任意智能合约中使用。

### TODO…

---

*Originally published on [0xDADDD](https://paragraph.com/@0xdaddd/solidity)*
