我有一个以solidity 定义的合约,我想这样做,以便在调用特定函数时,合约的总成本增加1 以太币。我对如何ether
在实践中使用有点模糊。我会为此使用普通的 int 吗?关键字在哪里ether
发挥作用?
问问题
1429 次
1 回答
4
你可能知道,1 ether
== 1000000000000000000
(或 10^18)wei。
您可以访问全局变量msg.value
中的交易值,该变量返回随交易发送的 wei 数量。
因此,您可以进行简单的验证,检查调用您的函数的交易是否具有 1 ETH 的值。
function myFunc() external payable {
require(msg.value == 1 ether, 'Need to send 1 ETH');
}
和 10^18 wei 比较是一样的
function myFunc() external payable {
require(msg.value == 1000000000000000000, 'Need to send 1 ETH');
}
function myFunc() external payable {
require(msg.value == 1e18, 'Need to send 1 ETH');
}
Solidity 文档中还有一个简短的段落显示了更多示例:https ://docs.soliditylang.org/en/v0.8.2/units-and-global-variables.html#ether-units
于 2021-03-14T16:29:49.043 回答