本文已参与「新人创作礼」活动,一起开启掘金创作之路。
本文章主要是将在学习b站Solidity学习的摘要笔记
课程是这个👉Solidity8学习视频
第一课:8.0的版本升级
1.safe math
现在有两种方法:
1.x--; 自带safe math;如果减掉就会溢出
2.unchecked{x--;} 老方法,还是会溢出
2.错误自定义
原来:revert('其中字符串越长gas越多')
现在:error Unauthorized(address caller) //可以定义在contract内部或者外部
3.函数可以定义在函数内部或者外部
当前文件都可以使用到(在外部)
但是在外部的函数不能有状态变量,因为这个函数类似以前的library,有变量就会导致发生覆盖
4.在import引用合约可以使用别名
import{unauthorized as ua}
但是不能重写定义一个同名的文件
5.create2()这是啥?
可以在部署合约地址时使用{盐}来指定你未来会部署到什么位置
第七课:
1.对于msg.sender这只是代表上一个调用这个合约的东西(可能是人的账号也可能是合约)
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
contract globalV{
function globalVart() external view returns (address,uint,uint){//这里是retunrns!!!
address sender =msg.sender;
uint timestamp =block.timestamp;
uint blockN =block.number;
return(sender,timestamp,blockN);//这里是return
}
}
view,pure是读取函数才有,如果有写入就是不行的
external只有外部可见
2.默认值
最下面这些注释的默认值是多少?
3.把一个变量设置为constant常量读取gas更省
同时常量必须要设置一个初始值,不能直接使用默认值
4.如果在一个function中想要修改数组的数据
需要把数组中想要修改的单元导出来作为storage,然后再进行修改.不能作为memory(只是再内存中给修改,代码了结束就没有了)