¿Por qué balanceof() devuelve una constante?

El estándar de token ERC20 especifica balanceof()devolver un archivo constant.

function balanceOf(address _owner) constant returns (uint256 balance)

¿Pero el monto del saldo podría cambiar o me estoy equivocando en algo aquí?

Respuestas (2)

La palabra clave constante no especifica lo que devuelve la función. Una función marcada como constante como esta le dice que la función devolverá un valor y no modificará ninguna variable de estado. Un gran uso de las palabras clave constante/vista es declarar una función que se puede llamar sin enviar una transacción, es decir, una "consulta" gratuita de la cadena de bloques.

http://solidity.readthedocs.io/en/develop/contracts.html#view-functions

¿Por qué estaría mal no usarlo constanten balanceof()? La función en sí no cambia ningún estado, solo regresareturn balances[_owner];
No estaría mal. Tienes razón en tener constante allí.
Lo que es "constante" es la función, que en Solidity se refiere a una función que no modifica el estado de la cadena de bloques, solo lee valores. No debe confundirse con una variable constante, cuyo valor no se puede cambiar una vez declarado.

constante en las funciones es un alias para ver, por lo que cuando se ejecuta puede ver el contenido que devuelve la función