我在solidity中定义了一个合同,我想让它在调用特定函数时,合同的总成本增加1以太币。我对如何在实践中使用ether
有点模糊。我可以用一个普通的int吗?关键字ether
在哪里发挥作用?
您可能知道,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-单位