这篇文章用来记录在学习以太坊的过程中,一些相关的基本概念和 solidity 语言的相关基础语法等。
ethereum
,货币为 以太 ether
int
(整型)uint
(无符号整型)bool
(布尔类型)address
(地址类型)string
(字符串)byte
(字节)bytes32
(字节数组)mapping(type => type)
(一对一映射)strut
结构体Type[8]
定长数组Type[]
动态数组strut
结构体strut
结构体enum
(枚举类型)contract
合约function
函数event
事件modifier
修饰符storage
: 成员变量,永久保存在状态树中(付费)memory
:局部变量,临时存储(值传递)calldata
: 函数参数变量(临时存储的一个数据位置)and
、or
、 not
==
、 =
、>
、 <=
&
、|
?:
+
、-
、 *
、 /
if, else, while, do, for, switch, continue, break, return
Block 在调用某个方法的时候,solidity会提供一个block的变量,把当前块的信息返回。
block.coinbase()
: 返回挖掘此块的节点地址block.difficulty()
: 返回当前区块的难度block.gaslimit()
: 返回当前块的最大燃气量block.limit()
: 返回当前区块的gas消耗限制block.number()
: 返回链上当前块高、编号block.timestamp()
: 返回当前区块的时间戳msg.sender()
: 返回当前调用合约的发送者的地址msg.gas()
: 返回燃料的消耗量msg.sig()
: 返回数据的前四个字节msg.value
: 返回发送消息的数量account.balance()
: 返回地的址余额(以wei为单位)address.transfer()
: 在两个账户之间转移etherassert(bool condition,string memory reason)
:自信某一条件一定成立,用于安全设计,如果不成立,扣光所有gasrequire(bool condition,string memory reason)
:温和认定某条件成立,如果不满足,退回剩余的gasrevert(string memory reason)
:终止合约执行,并还原状态变更now()
: 返回当前时间的时间戳(秒)random = uint(keccak256(abi.encodePacked(msg.sender,block.difficulty,now)))