Переменные Variables - demonoved/A-trial-run-in-solidity GitHub Wiki

// SPDX-License-Identifier: MIT
// compiler version must be greater than or equal to 0.8.20 and less than 0.9.0
pragma solidity ^0.8.23;
// local - внутри функции, не хранится в блокчейне
// state - вне функций, хранится в блокчейне
// global - предоставляет информацию о блокчейне
contract Variables{
    //переменные состояния хранятся в блокчейне 
    string public text = "Hello";
    uint public num = 123;
    function doSomething () public {
        //локальные переменные не сохраняются в блокчейне
        uint i = 456;
        // Некоторые глобальные переменные
        uint timestamp = block.timestamp; // отметка времени текущего блока
        address sender = msg.sender; // адрес входящего
    }
}
  1. // SPDX-License-Identifier: MIT Это строка лицензии, указывающая, что код распространяется под лицензией MIT, что является стандартной практикой для открытых исходных кодов программного обеспечения.

  2. // compiler version must be greater than or equal to 0.8.20 and less than 0.9.0 Это комментарий о том, что версия компилятора Solidity должна быть не ниже 0.8.20 и не выше 0.9.0.

  3. pragma solidity ^0.8.23; Это директива для компилятора, указывающая версию языка Solidity, для которой написан контракт. В данном случае указывается, что код совместим с версиями Solidity начиная с 0.8.23, но меньше чем 0.9.0.

  4. Комментарии в коде объясняют различные виды переменных:

    • local - локальная переменная, объявленная внутри функции и не сохраняющаяся в блокчейне.
    • state - переменная состояния, объявленная вне функций и сохраняющаяся в блокчейне.
    • global - глобальная переменная, предоставляющая информацию о блокчейне (например, block.timestamp или msg.sender).
  5. contract Variables { ... } Объявление смарт-контракта с именем Variables.

  6. Переменные состояния:

    • string public text = "Hello"; Публичная строковая переменная text, инициализированная значением "Hello".
    • uint public num = 123; Публичная целочисленная беззнаковая переменная num, инициализированная значением 123.
  7. Функция doSomething:

    • function doSomething () public { ... } Публичная функция, которая не принимает аргументов и не возвращает значений.
    • Внутри функции объявляется локальная переменная i типа uint с инициализацией значением 456.
    • Также в функции используются две глобальные переменные:
      • uint timestamp = block.timestamp; Получает таймштамп (временной метки) текущего блока.
      • address sender = msg.sender; Получает адрес отправителя текущего сообщения/транзакции.

Этот код представляет собой простой смарт-контракт, демонстрирующий использование переменных различных типов в Solidity.