2

我有一个以solidity 定义的合约,我想这样做,以便在调用特定函数时,合约的总成本增加1 以太币。我对如何ether在实践中使用有点模糊。我会为此使用普通的 int 吗?关键字在哪里ether发挥作用?

4

1 回答 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 回答