【区块链安全 | 第二十三篇】单位和全局可用变量(一)

在这里插入图片描述

单位和全局可用变量(Units and Globally Available Variables)

以太单位(Ether Units)

在 Solidity 中,数字字面量可以使用 wei、gwei 或 ether 作为后缀,表示以太币的不同子单位。如果未添加单位后缀,则默认单位为 wei。

assert(1 wei == 1);
assert(1 gwei == 1e9); // 1 gwei = 10^9 wei
assert(1 ether == 1e18); // 1 ether = 10^18 wei

这些单位后缀实质上是将数字乘以对应的 10 的幂。

注意:Solidity 从 0.7.0 版本起已移除 finney 和 szabo 单位。

时间单位(Time Units)

数值字面量也可以使用时间单位后缀,包括 seconds、minutes、hours、days 和 weeks。这些单位以 seconds 为基础进行定义:

  • 1 == 1 seconds

  • 1 minutes == 60 seconds

  • 1 hours == 60 minutes

  • 1 days == 24 hours

  • 1 weeks == 7 days

注意:
1.这些单位在处理日历相关计算时可能产生误差,例如一年并不总是 365 天,且一天也不一定总是 24 小时(如遇闰秒)。
2.由于闰秒无法预测,如需精确的日历计算,应使用外部预言机(oracle)提供的时间信息。
3.years 单位已在 Solidity 0.5.0 版本中移除,原因同样是精度问题。

以下用法是非法的:

uint duration = 3;
uint timePeriod = duration days; // 错误:无法对变量使用时间单位后缀

正确的写法如下:

function f(uint start, uint daysAfter) public {
    if (block.timestamp >= start + daysAfter * 1 days) {
        // 逻辑代码
    }
}

保留关键字

以下关键字在 Solidity 中为保留字,可能会在未来的版本中被引入作为语法的一部分:after、alias、apply、auto、byte、case、copyof、default、define、final、implements、in、inline、let、macro、match、mutable、null、of、partial、promise、reference、relocatable、sealed、sizeof、static、supports、switch、typedef、typeof、var

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值