如何在 Solidity 合约中采取一些行动花费 1 Ether
How to make some action in a Solidity contract cost 1 Ether
我有一个在 solidity 中定义的合约,我想让它在调用特定函数时,合约的总成本增加 1 个以太币。我对如何在实践中使用 ether
有点模糊。我会为此使用普通的 int 吗?关键字 ether
在哪里发挥作用?
你可能知道,1 ether
== 1000000000000000000
(或 10^18)wei。
您可以在全局变量 msg.value
中访问交易值,即 returns 与交易一起发送的 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
我有一个在 solidity 中定义的合约,我想让它在调用特定函数时,合约的总成本增加 1 个以太币。我对如何在实践中使用 ether
有点模糊。我会为此使用普通的 int 吗?关键字 ether
在哪里发挥作用?
你可能知道,1 ether
== 1000000000000000000
(或 10^18)wei。
您可以在全局变量 msg.value
中访问交易值,即 returns 与交易一起发送的 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