timezone |
---|
Asia/Tokyo |
-
自我介绍 Hi, 我是 Thurendous。30 岁开始转行,现在在做 Web3 相关的开发工作。喜欢新的领域,新的想法。 希望通过学习巩固自己的已经知道的 Solidity 知识。同时能够培养自己的学习习惯。共勉进步!
-
你认为你会完成本次残酷学习吗? 会尽力而为,不中途放弃。培养习惯,提高自己。
(Day 1)
今天开始复习 solidity 的内容。残酷共学的初衷和学习方式个人非常地喜欢!加油!一起!
- Hello Web3 (三行代码)
- 学习了 solidity 就可以看懂合约代码,不会的话在区块链世界就会很 low(圈重点)。
- 写智能合约的话,需要做这些事情:
- 写一个 license
- License 是有各种各样的版本,MIT 是一个比较宽松和常见的。MIT 意味着任何人可以以任何方式使用,复制,修改,分发。甚至是商用你写的代码。还有一个 GPL 也是宽松的版本控制,但是他是要求你写的代码的源码必须公开。
- 写版本
- 写 import
- 写合约的内容
- 写一个 license
- 可以使用 Remix 来进行智能合约的书写。
- 在 Solidity Editor 中写代码
- 在 Solidity Compiler 中编译
- 然后进行部署按 deploy 按键
- 然后就会有一个智能合约的 interaction 的界面,可以进行交互了。
- 数据类型
值类型
- 布尔型
- 只有两个值:true 和 false
- 默认值是 false
- 整型
- uint 无符号整数,正整数
- int 有符号整数,正整数和负整数
- uint 和 int 后面可以跟数字,表示这个整数有多少位。比如 uint8 就是 8 位,uint256 就是 256 位。uint 和 int 的取值范围是 0 到 2^n - 1。比如 uint8 的取值范围是 0 到 255,uint256 的取值范围是 0 到 2^256 - 1。
- uint 和 int 默认是 uint256 和 int256。
- 地址类型
- address 是一个 160 位的整数,表示一个以太坊地址。
- address 可以用来表示一个账户的地址,也可以用来表示一个合约的地址。
- 可以添加 payable 关键字,表示这个地址可以接收以太币。
- 定长字节数组
- bytes1 到 bytes32,分别表示 1 到 32 个字节的字节数组。
- 定长的 bytes 可以节省一些 gas。
- 定长字节数组的长度是固定的,不能改变。
- 变长字节数组
- bytes 是一个可变长度的字节数组。
- bytes 的长度可以改变,可以存储任意长度的数据。
- 枚举 enum
- 枚举类型是一个用户自定义的类型,可以用来表示一组有限的值。
- 枚举(enum)是 Solidity 中用户定义的数据类型。它主要用于为 uint 分配名称,使程序易于阅读和维护。它与 C 语言 中的 enum 类似,使用名称来代替从 0 开始的 uint。
- 枚举可以显式地和 uint 相互转换,并会检查转换的正整数是否在枚举的长度内,
另外的引用类型和映射类型以后会介绍到。