В Solidity константы нигде не хранятся в хранилище; они подставляются в байт-код. Примерно как то так:
constant uint256 FOO = 42;
function blah() {
return FOO;
}
Превращается в это:
function blah() {
return 42;
}
Компилятор может выполнить эту замену, только если значение константы известно во время компиляции . В вашем примере, если _decimals
является константой, для компилятора теоретически возможно выяснить, что decimals()
возвращает константу и каково это значение, но компилятор Solidity далеко не такой умный.