#solidity
#солидность
Вопрос:
Я хочу установить требование, которое ограничивает, если у пользователя нет эфира больше, чем введено msg.value
Итак, я написал require код, подобный этому.
function send() public payable {
require(msg.sender.balance >= msg.value);
}
Но это не работает из-за «ошибки виртуальной машины: возврат».
Как это может быть??
Комментарии:
1. Этот код, похоже, работает нормально для меня. Мое предположение очевидно: у отправителя осталось не больше эфира, чем сумма, на которую они отправлены
send
.
Ответ №1:
Возможно, вам нужно использовать функцию возврата, подобную этой:
function send() public payable {
if (msg.value > msg.sender.balance) {revert();}
}
Комментарии:
1. Спасибо, я хочу поделиться с кем-нибудь об этом. revert(), assert() и т. Д. medium.com/blockchannel /…
2. хорошие друзья!
Ответ №2:
Вы можете попробовать это:
function send() public payable {
if (msg.sender.balance < msg.value) {
revert();
}
}
Надеюсь, это вам поможет.