solidity v0.5.0的重大改变

Solidity 0.5.0带来了许多重大改变,包括显式声明函数可见性、地址类型细分、禁止的写法、废弃的关键字等。构造函数必须用`constructor`定义,`.call()`函数新增返回值,ABI解码增强安全性,不允许的写法如0长度数组、未初始化的storage变量等将报错,同时弃用了如`var`、`constant`和`throw`等关键字。
摘要由CSDN通过智能技术生成

不知不觉,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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值