Warnung über Sicherheit/enforce-explicit-visibility: Keine explizite Sichtbarkeit für Multiplikationsfunktion angegeben [duplizieren]

meine IDE ist vs (kann finden, dass die Solc-Version 0.4.17 ist), aber meine Solcjs ist 0.4.24. Wenn ich diesen einfachen Code ausführe

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

Es gibt eine Warnung "security/enforce-explicit-visibility: No Visibility Specific Specific for Multiply Function."

Wenn ich einen anderen einfachen Code ausführe, kommt eine Warnung mit "[solc] Funktionszustandsveränderlichkeit kann auf rein beschränkt werden".

Gibt es einen Fehler bei Versionskonflikten über solc/solcjs? Wie löse ich es?

Antworten (1)

Die erste Warnung besagt, dass Sie vergessen haben, die Sichtbarkeit (öffentlich, privat, extern oder intern) Ihrer Funktion zu markieren.

Die zweite bedeutet, dass Ihre Funktion als markiert werden kann pure, was bedeutet, dass sie nicht aus der Blockchain liest oder schreibt. constantoder viewFunktionen dürfen aus der Blockchain lesen, Ihre jedoch nicht.

Weitere Einzelheiten finden Sie in den Dokumenten

Dies sollte einige Warnungen beseitigen:

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