Глобальные переменные Solidity: изучение различных методов на примерах кода

В Solidity глобальная переменная относится к переменной, которая объявлена ​​вне какой-либо функции и имеет глобальную область действия внутри контракта. Глобальные переменные могут быть доступны и изменены любой функцией в контракте. Вот несколько методов объявления и использования глобальных переменных в Solidity, а также примеры кода:

  1. Переменные состояния:
    Переменные состояния объявляются вне какой-либо функции и постоянно сохраняют данные в блокчейне. Они доступны для всех функций в рамках контракта.

    contract MyContract {
       uint256 public myVariable; // State variable
       function setMyVariable(uint256 newValue) public {
           myVariable = newValue;
       }
    }
  2. Постоянные переменные.
    Постоянные переменные используются для хранения значений, которые нельзя изменить после инициализации. Они обычно используются для фиксированных значений или настроек конфигурации.

    contract MyContract {
       uint256 public constant myConstant = 100;
       function getMyConstant() public view returns (uint256) {
           return myConstant;
       }
    }
  3. Неизменяемые переменные.
    Неизменяемые переменные аналогичны постоянным переменным, но во время развертывания контракта им могут быть присвоены разные значения. После присвоения их значения нельзя изменить.

    contract MyContract {
       uint256 immutable public myImmutable;
       constructor(uint256 initialValue) {
           myImmutable = initialValue;
       }
    }
  4. Внутренние переменные.
    Внутренние переменные объявляются с использованием ключевого слова internalи имеют глобальную область действия в рамках контракта и производных от него контрактов.

    contract MyBaseContract {
       uint256 internal myInternalVariable;
    }
    contract MyContract is MyBaseContract {
       function setMyInternalVariable(uint256 newValue) public {
           myInternalVariable = newValue;
       }
    }
  5. Частные переменные.
    Частные переменные объявляются с использованием ключевого слова privateи имеют глобальную область действия, ограниченную контрактом, в котором они определены. Доступ к ним невозможен с помощью производных контрактов.

    contract MyContract {
       uint256 private myPrivateVariable;
       function setMyPrivateVariable(uint256 newValue) public {
           myPrivateVariable = newValue;
       }
    }