区块链编程语言Solidity学习:bilibili课(一)

262 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 本文章主要是将在学习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.默认值

image.png 最下面这些注释的默认值是多少?

3.把一个变量设置为constant常量读取gas更省

同时常量必须要设置一个初始值,不能直接使用默认值

4.如果在一个function中想要修改数组的数据

需要把数组中想要修改的单元导出来作为storage,然后再进行修改.不能作为memory(只是再内存中给修改,代码了结束就没有了)