Безопасность. Внешние вызовы. Часть 4
Учитывайте ошибки внешних вызовов
// плохо
someAddress.send(55);
someAddress.call.value(55)("");
// опасно, так как использует весь газ и не проверяет на ошибки
someAddress.call.value(100)(bytes4(sha3("deposit()")));
// если deposit() получит ошибку, то call() вернет false, но транзакция все равно отправит деньги
// хорошо
(bool success, ) = someAddress.call.value(55)("");
if(!success) {
// handle failure code
}
Всегда проверяйте успешность низкоуровневых вызовов!
#безопасность #externalcall #external
Post #352
155
- 👍 1