如何在Solidity合同中进行一些操作需要花费1以太币



我在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-单位

最新更新