Ethereum 如何检查发送到智能合约的负数?

Ethereum 如何检查发送到智能合约的负数?,ethereum,solidity,smartcontracts,web3,truffle,Ethereum,Solidity,Smartcontracts,Web3,Truffle,我希望我的合同不接受将负值添加到余额中,所以我想我应该添加一个大于0的require值。但是,由于payment函数发送的值是无符号的,因此始终为正数,因此它会被忽略。这意味着如果你发送-1个以太,它将被接受,并添加大约1个以太。如何确保不发送负数 function () external payable { require(msg.value > 0); require(msg.data.length == 0); } 谢谢 不可能在EVM中发送负值。所以msg.value

我希望我的合同不接受将负值添加到余额中,所以我想我应该添加一个大于0的require值。但是,由于payment函数发送的值是无符号的,因此始终为正数,因此它会被忽略。这意味着如果你发送-1个以太,它将被接受,并添加大约1个以太。如何确保不发送负数

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

谢谢

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

啊!明白了!因此,当我发送-1 eth并将其添加到余额时,混音中的测试用例永远不会在mainnet上的真实情况下发生?确切地说,它不是有效的操作码,以太坊虚拟机不会执行它@肾上腺素