¿Por qué establecer balanceOf en lugar de solo usar una variable pública en tokens ERC20?

Buen día,

ERC20 especifica las siguientes 2 funciones como las más importantes:

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

Pero la función balanceOf no es más que una forma elegante de acceder a la información almacenada dentro de una matriz de mapeo simple. ¿Por qué no simplemente configurar la matriz de asignación de saldos para que sea pública y terminar con ella?

mapping (address=>uint) public balanceOf;

Siento como si me faltara algo aquí. Como siempre, su ayuda es apreciada.

Además, ¿por qué el 'saldo unit256' es un constant returns? ¿Puede cambiar o me estoy equivocando en algo?

Respuestas (2)

La función simplemente define una forma de acceder a la matriz de mapeo y asume que no ha establecido su modificador en público.

En las billeteras ether, ambos parecen funcionar de la misma manera, por lo que no hay una diferencia real si solo necesita ver los saldos.

Por razones de seguridad. Tener la variable privada le permite bloquearla detrás de los requisitos. Por ejemplo, solo el propietario de un token puede llamar a la función tranfer() en ese token.

(También puede configurar otra cuenta como "operador" de sus tokens, lo que le otorga a esa cuenta de "operador" permiso para llamar a la función de transferencia () en sus tokens).