Переменные 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; // адрес входящего
}
}
-
// SPDX-License-Identifier: MIT
Это строка лицензии, указывающая, что код распространяется под лицензией MIT, что является стандартной практикой для открытых исходных кодов программного обеспечения. -
// 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. -
pragma solidity ^0.8.23;
Это директива для компилятора, указывающая версию языка Solidity, для которой написан контракт. В данном случае указывается, что код совместим с версиями Solidity начиная с 0.8.23, но меньше чем 0.9.0. -
Комментарии в коде объясняют различные виды переменных:
local
- локальная переменная, объявленная внутри функции и не сохраняющаяся в блокчейне.state
- переменная состояния, объявленная вне функций и сохраняющаяся в блокчейне.global
- глобальная переменная, предоставляющая информацию о блокчейне (например,block.timestamp
илиmsg.sender
).
-
contract Variables { ... }
Объявление смарт-контракта с именемVariables
. -
Переменные состояния:
string public text = "Hello";
Публичная строковая переменнаяtext
, инициализированная значением"Hello"
.uint public num = 123;
Публичная целочисленная беззнаковая переменнаяnum
, инициализированная значением123
.
-
Функция
doSomething
:function doSomething () public { ... }
Публичная функция, которая не принимает аргументов и не возвращает значений.- Внутри функции объявляется локальная переменная
i
типаuint
с инициализацией значением456
. - Также в функции используются две глобальные переменные:
uint timestamp = block.timestamp;
Получает таймштамп (временной метки) текущего блока.address sender = msg.sender;
Получает адрес отправителя текущего сообщения/транзакции.
Этот код представляет собой простой смарт-контракт, демонстрирующий использование переменных различных типов в Solidity.