【问题标题】:How to check for negative numbers sent to smart contract?如何检查发送到智能合约的负数?
【发布时间】:2018-10-15 16:13:54
【问题描述】:

我希望我的合同不接受将负值添加到它的余额中,所以我想我会添加一个 > 0 的要求值。虽然它会接缝,因为使用应付函数发送的值是无符号的,因此总是一个正数.这意味着如果您发送 -1 以太币,它会被接受并添加大约 1 以太币。如何确保不能发送负数?

function () external payable {
  require(msg.value > 0); 
  require(msg.data.length == 0);
} 

谢谢!

【问题讨论】:

    标签: ethereum solidity smartcontracts web3 truffle


    【解决方案1】:

    不可能在 EVM 中发送负值。所以msg.value 总是非负数。你不需要检查。

    【讨论】:

    • 啊!明白了!因此,当我发送 -1 eth 并将其添加到余额中时,remix 中的测试用例永远不会在主网上的真实情况下发生?
    • 没错,它不是一个有效的操作码,以太坊虚拟机不会执行它。 @Adremalin
    猜你喜欢
    • 2022-08-12
    • 2021-08-03
    • 1970-01-01
    • 2021-04-26
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    相关资源
    最近更新 更多