文章解释了Solidity中以太坊的单位转换,特别是wei、gwei和ether之间的关系,并展示了如何在代码中正确表示这些单位。
以下两行代码是等价的
(bool ok, ) = recipient.call{value: 1 ether}("");
(bool ok, ) = recipient.call{value: 1_000_000_000_000_000_000}("");
如果你愿意数一数,那就是 10^18。记住,Solidity 中没有浮点数,所以“1 以太坊”实际上是其最小单位的 10^18 倍。
以太坊的最小单位是 1 wei。10^18 wei 等于 1 以太坊。
另一个常用的单位是 gwei。1 gwei 等于 10 亿 wei,或 10 亿分之一以太坊。
Remix 不允许你在发送价值时指定以太坊的分数部分,因此你必须从分数中计算出金额并将其转换为 wei 或 gwei。
顺便说一下,尽管 Solidity 不支持浮点数,但你可以指定以太坊的分数部分。Solidity 编译器足够聪明,能够理解以太坊的分数部分本身并不是一个分数。以下代码行是等价的
(bool ok, ) = recipient.call{value: 1 gwei}("");
(bool ok, ) = recipient.call{value: 1_000_000_000 wei}("");
(bool ok, ) = recipient.call{value: 0.000000001 ether}("");
顺便提一下,以太坊还有其他单位的名称,如 Finney 和 Sazbo,但这些单位很少使用,最好在需要知道它们的值时直接谷歌搜索。然而,以下值必须记住:
查看 Web3 训练营 ,以了解更多关于智能合约开发和代币标准的内容。
- 原文链接: rareskills.io/learn-soli...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!