Безопасность. Внешние вызовы. Часть 1
Вызовы (далее external calls) в другие контракты, код которых вы не знаете, могут привести к значительным проблемам безопасности вашего контракта.
Постарайтесь как можно реже использовать external calls в своем контракте. Однако, если все же это необходимо, то придерживайтесь следующих правил.
Помечайте контракты, которые вы не знаете
Когда вы используете чужие внешние контракты (далее untrusted contracts), используйте понятные обозначения переменных, которые "прямо говорят" об использовании рискованных функций.
Например:
// плохо
Bank.withdraw(100); // Unclear whether trusted or untrusted
function makeWithdrawal (uint amount) {
// Isn't clear that this function is potentially unsafe
Bank.withdraw(amount);
}
// хорошо
UntrustedBank.withdraw(100); // untrusted external call
TrustedBank.withdraw(100); // external but trusted bank contract maintained by XYZ Corp
function makeUntrustedWithdrawal (uint amount) {
UntrustedBank.withdraw(amount);
}
#безопасность #externalcall #external
Post #349
171
- 👍 1