一个字面常数可以带一个后缀 wei, gwei 或 ether 来指定一个以太坊的数量, 其中没有后缀的以太数字被认为单位是wei。
在以太坊和许多其他基于以太坊的区块链系统中,以太币(Ether)是网络中的主要加密货币。
以太可以被划分为更小的单位,这些单位使得交易可以以不同的粒度进行。
这些单位从最小的wei
到最大的ether
,其中每个单位都比前一个单位大1,000,000,000(十亿)倍。
这些单位的使用允许用户在进行交易和智能合约操作时指定非常精确的金额。
- Wei:
是以太币的最小单位,1 ether 等于 10 ** 18 wei。
- Gwei:
也称为 gigawei, 是 wei 的更大的单位,1 ether 等于 10 ** 9 wei。
由于许多交易费用都是以 gwei 为单位衡量的,因此这个单位在交易费(gas费)时尤其常见。
- Ether
是这些单位中最大的,通常用于表示在普通交易和投资中转移的较大金额。
基础声明,比较
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract My {
uint256 a = 1 ether;
uint256 b = 10**9 * 1 gwei;
uint256 c = 10**18 * 1 wei;
function name() public view returns (bool) {
return b == c;
}
}
接收以太币例子
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract My {
uint256 a = 1 ether;
uint256 b = 10**9 * 1 gwei;
uint256 c = 10**18 * 1 wei;
function name() public view returns (bool) {
return b == c;
}
function name(address _addr) public payable {
address payable ap = payable(_addr);
require(msg.value == 1 ether, "message");
ap.transfer(msg.value);
}
function name2(address _addr) public payable {
address payable ap = payable(_addr);
require(msg.value == 10 gwei, "message");
ap.transfer(msg.value);
}
function name3(address _addr) public payable {
address payable ap = payable(_addr);
require(msg.value == 10 wei, "message");
ap.transfer(msg.value);
}
function name4(address _addr) public payable {
address payable ap = payable(_addr);
require(msg.value == 0.001 ether, "message");
ap.transfer(msg.value);
}
}