предупреждение о безопасности/enforce-explicit-visibility: видимость явно не указана для функции умножения [дубликат]

мой ide vs (можно найти версию solc 0.4.17), но мой solcjs 0.4.24. когда я запускаю этот простой код

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

есть предупреждение «security/enforce-explicit-visibility: видимость явно не указана для функции умножения».

Когда я запускаю другой простой код, появляется предупреждение: «изменчивость состояния функции [solc] может быть ограничена чистым».

Что-то не так с конфликтом версий в solc/solcjs? Как мне это решить?

Ответы (1)

Первое предупреждение говорит о том, что вы забыли отметить видимость (общедоступную, приватную, внешнюю или внутреннюю) вашей функции.

Второе означает, что ваша функция может быть помечена как pure, что означает, что она не читает и не пишет из блокчейна. constantили viewфункциям разрешено читать из блокчейна, а вашей — нет.

См. документы для получения более подробной информации.

Это должно устранить некоторые предупреждения:

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