timezone |
---|
Asia/Shanghai |
-
自我介绍
Hotcoin Research的技术研究员、资深 gamer
-
你认为你会完成本次残酷学习吗?
努力完成,冲
學習內容:
笔记:
HelloWeb3.sol
// SPDX-License-Identifier: MIT
// 开源代码的许可证类型
pragma solidity ^0.8.21;
// 指定编译器版本,表示此合约兼容0.8.21及以上版本,但不兼容0.9.0及以上版本
// 定义一个名为HelloWeb3的智能合约
contract HelloWeb3{
// 定义一个名为_string的公共字符串变量,并初始化为"Hello Web3!"
string public _string = "Hello Web3!";
// public 关键字使得这个变量可以被外部读取
}
學習內容:
笔记:值类型和函数
Solidity 中的值类型包括:
- 取值:
true
或false
- 运算符:
!
(非)、&&
(与)、||
(或)、==
(等于)、!=
(不等于) - 注意:
&&
和||
遵循短路规则
int
:包括负数的整数uint
:正整数uint256
:256位正整数- 运算符:
- 比较:
<=
、<
、==
、!=
、>=
、>
- 算术:
+
、-
、*
、/
、%
(取余)、**
(幂)
- 比较:
- 普通地址:存储 20 字节的值
- payable address:可以接收转账,有
transfer
和send
方法
- 属于值类型
- 类型:
bytes1
,bytes8
,bytes32
等 - 最多存储 32 bytes 数据
- 用户定义的数据类型
- 可以和 uint 显式转换
Solidity 函数的基本结构:
solidity
function <function name>(<parameter types>) {internal|external|public|private} [pure|view|payable] [returns (<return types>)]
public
:内部和外部均可见private
:只能从本合约内部访问external
:只能从合约外部访问internal
:只能从合约内部和继承的合约访问
pure
:不能读取也不能写入状态变量view
:能读取但不能写入状态变量payable
:可以接收 ETH 转账
以下操作被视为修改链上状态:
- 写入状态变量
- 释放事件
- 创建其他合约
- 使用
selfdestruct
- 通过调用发送以太币
- 调用任何未标记
view
或pure
的函数 - 使用低级调用
- 使用包含某些操作码的内联汇编
- 合约中定义的函数需要明确指定可见性
public|private|internal
也可用于修饰状态变量- 包含
pure
和view
关键字的函数直接调用不需要支付 gas 费用