最近注意到 Solidity 最新版本已经到 7.x 了。今天抽空看了一下,感觉这次大版本升级的变动还是不大的,基本都是小的语法升级,没什么太大变化。不过有些不兼容的改动还是要注意一下。
0x01 合约调用的变动
之前合约调合约时是通过下面的方式来发送 gas 费和要转账的 eth 的。
x.f.gas(10000).value(2 ether)(arg1, arg2)
新的方式变成了下面这样:
x.f{gas: 10000, value: 2 ether}(arg1, arg2)
老的方式会报错。
0x02 使用 block.timestamp 来替代 now
now
本来就是与 block.timestamp 是等价的,使用 now
容易让人认为时间和交易有关,实际上只与区块有关。直接使用 block.timestamp 更不容易出错。
0x03 gwei
为关键字
之后不能用 gwei 为变量标识符了,实际上大家也确实很少使用 gwei 做标识符,不过作为计量单位确实很常用。
0x04 构造函数没必要声明为 public 或 external 的了
不想被调用的构造函数可以声明为 abstract
。
网友评论