Solidity8.0新特性

一、新的特性

安全数学:老版本是没有的,会出现数学溢出的。之前的uint无符号正整数有数学溢出,在使用的时候都要引用安全数学的方法,0-1得到的是uint256最大值并不会得-1,因为uint是无符号整数,不会出现-1。

// SPDX-License-Identifier: MIT pragma solidity ^0.8; //safe math contract SafeMath { function testUnderflow() public pure returns (uint) { uint x = 0; x--; return x; } function testUncheckedUnderflow() public pure returns (uint) { uint x = 0; unchecked { x--; } return x; } }

二、自定义错误

// SPDX-License-Identifier: MIT //之前合约报错一般使用revert/re ,报错信息可以写字符串 contract VendingMachine { address paypable owner = paypable(msg.sender);

  error Unauthorized();//可以让报错抛出变量值,
function withdraw() public { if (msg.sender != owner) // 23642 gas // revert("error") // ?gas,字符串的长度决定消耗gas的多少 //revert("error")
     revert Unauthorized() owner.transfer(address(
this).balance); } }

 

三、函数在合约之外

四、引用合约名称可以起别名

五、create2方法内联汇编和原来的新建方法一样的方法


__EOF__

本文作者zale
本文链接https://www.cnblogs.com/zaleswift/p/16492372.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   ZaleSwfit  阅读(165)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示