45.隐式转换
2023-10-25 17:37:48 # 00.security

隐式转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;

// https://github.com/ethereum/solidity/issues/13004
// https://twitter.com/paladin_marco/status/1584538632810942464

contract test{

function toHours(uint8 _days) public pure returns(uint256){
// implicitly converted to uint8
return 24 * _days;
// 修复
// return uint256(_days) * 24;
} // 10+ will revert

function toSeconds(uint8 _days) public pure returns(uint256){
// implicitly converted to uint24
// 在 Solidity 中,时间单位会在特定的时间长度内转换为几秒的单位。例如,这里的 days 被转换为 uint24 格式。
return _days * 1 days;
// 修复
// return uint256(_days) * uint256(1 days);
} // 194+ will revert

}
Prev
2023-10-25 17:37:48 # 00.security
Next