Чтение и запись в переменную состояния - 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;
contract SimpeStorage {
    // переменная состояния для хранениня числа
    uint public num;
    //отправляем транзакцию для записи в переменную состояния
    function set(uint _num) public {
        num = _num;
    }
    //считывать данные из переменной состояния можно без транзакций 
    function get () public view returns  (uint) {
        return num;
    }
}

Данный код представляет собой смарт-контракт на языке программирования Solidity, который используется для создания смарт-контрактов в экосистеме Ethereum. Этот определенный смарт-контракт называется SimpleStorage, и его основное назначение - простой пример, демонстрирующий запись и чтение значения целочисленной переменной. Давайте пошагово разберем каждую часть кода:

  1. // SPDX-License-Identifier: MIT

    Это комментарий для указания лицензии контракта. В данном случае используется MIT License, что дает право любому лицу свободно копировать, изменять, публиковать, использовать, компилировать, продавать или распространять этот код.

  2. pragma solidity ^0.8.23;

    Эта строка говорит компилятору, что код должен быть скомпилирован с версией Solidity 0.8.23 или выше, но ниже 0.9.0. Такое указание версий необходимо для обеспечения совместимости кода с определенной версией компилятора Solidity.

  3. contract SimpeStorage {

    Определение контракта с именем SimpeStorage (Похоже, это опечатка, и имелось в виду SimpleStorage).

  4. uint public num;

    Определение публичной переменной состояния num типа uint (беззнаковое целое число). Так как она объявлена как public, компилятор автоматически создает функцию доступа (getter), позволяющую любому участнику сети получить её значение.

  5. function set(uint _num) public {

    Определение функции set, которая принимает один параметр _num типа uint. Это публичная функция, которая позволяет записать новое значение в переменную num. Это требует выполнения транзакции, поскольку изменяет состояние контракта.

  6. num = _num;

    Внутри функции set происходит присвоение значения аргумента _num переменной состояния num. Эта строка именно и изменяет состояние контракта.

  7. }

    Конец определения функции set.

  8. function get() public view returns (uint) {

    Определение функции get, которая не принимает никаких входных параметров. Ключевое слово view говорит о том, что при вызове функции состояние контракта не будет изменено. Функция возвращает значение типа uint.

  9. return num;

    Возвращает текущее значение переменной состояния num.

  10. }

    Конец определения функции get.

  11. }

Конец определения контракта SimpleStorage.

Общий смысл этого контракта довольно прост - он дает возможность любому участнику сети сохранять целое число в блокчейне Ethereum, а затем получать его значение.