以太坊基础笔记
2023-06-13 09:15:37 时间
这篇文章用来记录在学习以太坊的过程中,一些相关的基本概念和 solidity 语言的相关基础语法等。
以太坊基础
涉及工具
区块链发展简史
以太坊中的重要概念
以太坊的货币
- 以太坊
ethereum
,货币为 以太ether
- 2014年7/8月 众筹发行大约 7200万以太币(矿前),后经过挖矿产生,每年被限制不超过 7200万的25%,未来产量变化不确定。
- 以太币供应量查询
以太币单位
Solidity
变量
基本类型
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
Block 在调用某个方法的时候,solidity会提供一个block的变量,把当前块的信息返回。
block.coinbase()
: 返回挖掘此块的节点地址block.difficulty()
: 返回当前区块的难度block.gaslimit()
: 返回当前块的最大燃气量block.limit()
: 返回当前区块的gas消耗限制block.number()
: 返回链上当前块高、编号block.timestamp()
: 返回当前区块的时间戳
内置对象 msg
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)))
相关文章
- Android.mk的用法和基础 && m、mm、mmm编译命令「建议收藏」
- 学习笔记第一章 编程基础
- MySQL基础课堂笔记「建议收藏」
- Java基础入门笔记02——文档注释,JavaDos文件,数据类型,类型转换,变量默认值问题
- Java基础入门笔记04——方法调用,方法重载,命令行参数,可变参数,多维数组,Arrays类,冒泡排序,矩阵的压缩存储
- 《Unity Shader入门精要》笔记:基础篇(1)
- 产品能力|算法学习笔记-贪心算法基础
- MsSQL2008R2安装基础流程笔记
- Vue 组件基础
- 重新定义数据库基础平台—沃趣科技数据库云版图
- Python 基础知识点归纳
- MySQL数据库基础学习(二十九)
- js 基础笔记 流程控制
- MySql基础-笔记11-临时表、复制表、元数据、序列使用
- Unity脚本(C#)基础笔记
- Rust学习笔记之基础概念
- JS基础(二)
- 鼓掌!阿里技术官亲荐“架构修炼宝典”,从基础到源码,一站到底
- Java基础学习笔记五 Java基础语法之面向对象详解编程语言
- Java基础学习笔记十七 集合框架(三)之Map详解编程语言
- Java基础学习笔记二十 IO流详解编程语言
- Java基础学习笔记二十八 管家婆综合项目详解编程语言
- Linux基础知识:面试准备(linux基础面试题)
- Linux驱动:构建环境的基础(linux驱动环境)
- MySQL基础入门书籍推荐(mysql基础书籍)
- 架构云时代Oracle云基础架构的引领者(oracle云基础)
- 入门从零开始Oracle 11g入门指南(oracle11g零基础)
- OraclePL/SQL语言入门基础