TotalSupply () Firma de solidez que causa un error de conflicto

Estoy escribiendo un token ERC20 muy básico usando solidez en la billetera Mist. Por alguna razón, al compilador no le gusta el nombre de la función totalSupply(). Si cambio este nombre, compila bien.

Para ser compatible con ERC20, esta función debe firmarse de esta manera.

¿Cómo soluciono este error?

Código de solidez

ingrese la descripción de la imagen aquí

Respuestas (2)

Creo que el argumento de devolución de su función debería cambiarse de nombre: esto es de lo que realmente se queja el compilador:

function totalSupply() constant returns (uint256 something) {

En realidad, es opcional nombrar el argumento de retorno aquí; puedes simplemente poner su tipo:

function totalSupply() constant returns (uint) {

[Para referencia futura, sería más fácil verificar si se puede publicar el código en sí en lugar de una imagen del código para que podamos cortarlo y pegarlo en el compilador].

Opción 1

Una solución e implementación típicas de un token ERC20 es cambiar el nombre de la publicvariable a totalSupply(sin guión bajo) y eliminar la función totalSupply, ya que Solidity la generaría automáticamente.

Explicación del mensaje de error de sombreado

function totalSupply() constant returns (uint256 totalSupply)indica al compilador que el valor devuelto será variable totalSupply(sin guión bajo).

Pero la función devuelve el valor de otra variable (se ve igual pero es diferente ya que tiene un guión bajo). Entonces, el error del compilador se debe a que la totalSupplyvariable está siendo anulada/sombreada por otra variable.

opcion 2

Como explicó @benjaminion, no nombre el valor de retorno y simplemente use:

function totalSupply() constant returns (uint256)

Ahora no hay ninguna variable para sombrear.