Как установить require (msg.sender.balance> = msg.value)?

#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();
   }
}
  

Надеюсь, это вам поможет.