advertencia sobre seguridad/enforce-explicit-visibility: No se especificó visibilidad explícitamente para la función de multiplicación [duplicado]

mi ide es vs (puede encontrar que la versión de solc es 0.4.17), pero mi solcjs es 0.4.24.cuando ejecuto este código simple

`pragma solidity^ 0.4.45;
contract test{
    function multiply(uint a) constant returns(uint d){
        return a*7;
    }
}

hay una advertencia "seguridad/exigir-visibilidad-explícita: No se especificó visibilidad explícitamente para la función de multiplicación".

Cuando ejecuto otro código simple, aparece una advertencia con "[solc] La mutabilidad del estado de la función se puede restringir a puro".

¿Hay algún problema con el conflicto de versiones sobre solc/solcjs? ¿Cómo lo soluciono?

Respuestas (1)

La primera advertencia dice que olvidó marcar la visibilidad (pública, privada, externa o interna) de su función.

El segundo significa que su función se puede marcar como pure, lo que significa que no lee ni escribe desde la cadena de bloques. constanto viewlas funciones pueden leer desde la cadena de bloques, pero la tuya no.

Ver los documentos para más detalles

Esto debería eliminar algunas advertencias:

pragma solidity ^0.4.24;
contract test{
    function multiply(uint a) public pure returns(uint d){
        return a*7;
    }
}