Зачем устанавливать balanceOf, а не просто использовать общедоступную переменную в токенах ERC20?

Добрый день,

ERC20 определяет следующие две функции как наиболее важные:

function balanceOf(address _owner) constant returns (uint256 balance){}
function transfer(address _to, uint256 _value) returns (bool success){}

Но функция balanceOf — это не что иное, как причудливый способ доступа к информации, хранящейся в простом массиве отображения. Почему бы просто не сделать массив отображения балансов общедоступным и покончить с этим?

mapping (address=>uint) public balanceOf;

Я чувствую, как будто я что-то упускаю здесь. Как всегда, ваша помощь приветствуется.

Кроме того, почему «баланс unit256» constant returns? Может что изменится или я что-то не так понял?

Ответы (2)

Функция просто определяет способ доступа к массиву сопоставления и предполагает, что вы не установили для его модификатора значение public.

В эфирных кошельках они оба работают одинаково, поэтому нет никакой разницы, если вам просто нужно увидеть баланс.

Из соображений безопасности. Наличие переменной private позволяет вам заблокировать ее за требованиями. Например, только владелец токена может вызвать функцию transfer() для этого токена.

(Вы также можете установить другую учетную запись в качестве «оператора» ваших токенов, тем самым предоставив этой учетной записи «оператора» разрешение на вызов функции transfer() для ваших токенов).