不知不觉,solidity已经走到了0.5版本,随着solidity 0.5.0 nightly build版本的面世,相信1.0版本也将在不久的将来与开发者见面.作为一个大版本更新,新版引入了很多新特性,也废弃了很多关键字,比如
-
.call()不仅可以获知远程调用执行成功与否,还将获得远程调用执行的返回值
-
ABI解码做了新的处理规范,有效防御了"短地址攻击"
-
address地址类型细分成 address和 address payable
-
uintY和 bytesX不能直接转换
-
回退函数必须显式声明为 external可见性
-
构造函数必须用 constructor关键字定义
-
用于抛出异常的 throw关键字弃用, 函数状态可变性修饰符必须用 view,不能混用 constant和 view
-
...
下面我们将对这些改变一一予以详细介绍,供大家参考。
显式声明
函数可见性
-
函数可见性必须显式声明. 之前, 函数如果不显式声明,将默认 public可见性.
-
public: constructor构造函数必须声明为 public可见性,否则编译报错.
-
external: 回退函数(fallback function), 接口(interface)的函数必须声明为 external可见性,否则编译报错.
存储位置
-
结构体(struct),数组(array),映射(mapping)类型的变量必须显式声明存储位置( storage, memeory, calldata),包括函数参数和返回值变量都必须显式声明.
-
external 的函数参数需显式声明为 ca