Твердость - переменные

Solidity поддерживает три типа переменных.

  • State Variables - Переменные, значения которых постоянно хранятся в контрактном хранилище.

  • Local Variables - Переменные, значения которых присутствуют до выполнения функции.

  • Global Variables - В глобальном пространстве имен существуют специальные переменные, используемые для получения информации о блокчейне.

Solidity - это язык со статической типизацией, что означает, что во время объявления необходимо указать тип состояния или локальной переменной. Каждая объявленная переменная всегда имеет значение по умолчанию в зависимости от ее типа. Нет понятия «неопределенный» или «нулевой».

Переменная состояния

Переменные, значения которых постоянно хранятся в хранилище контрактов.

pragma solidity ^0.5.0;
contract SolidityTest {
   uint storedData;      // State variable
   constructor() public {
      storedData = 10;   // Using State variable
   }
}

Локальная переменная

Переменные, значения которых доступны только внутри функции, в которой они определены. Параметры функции всегда являются локальными для этой функции.

pragma solidity ^0.5.0;
contract SolidityTest {
   uint storedData; // State variable
   constructor() public {
      storedData = 10;   
   }
   function getResult() public view returns(uint){
      uint a = 1; // local variable
      uint b = 2;
      uint result = a + b;
      return result; //access the local variable
   }
}

пример

pragma solidity ^0.5.0;
contract SolidityTest {
   uint storedData; // State variable
   constructor() public {
      storedData = 10;   
   }
   function getResult() public view returns(uint){
      uint a = 1; // local variable
      uint b = 2;
      uint result = a + b;
      return storedData; //access the state variable
   }
}

Запустите указанную выше программу, следуя инструкциям в главе « Первое приложение Solidity» .

Вывод

0: uint256: 10

Глобальные переменные

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

имя Возврат
blockhash (uint blockNumber) возвращает (bytes32) Хеш данного блока - работает только с 256 последними блоками, исключая текущие.
block.coinbase (адрес оплачивается) Текущий адрес майнера блока
block.difficulty (uint) Текущая сложность блока
block.gaslimit (uint) Текущий блок gaslimit
block.number (uint) Текущий номер блока
block.timestamp (uint) Временная метка текущего блока в секундах с эпохи unix
gasleft () возвращает (uint256) Оставшийся газ
msg.data (байты calldata) Полная Calldata
msg.sender (адрес оплачивается) Отправитель сообщения (текущий абонент)
msg.sig (bytes4) Первые четыре байта calldata (идентификатор функции)
msg.value (uint) Количество вэй, отправленных с сообщением
сейчас (uint) Отметка времени текущего блока
tx.gasprice (uint) Цена сделки на газ
tx.origin (адрес оплачивается) Отправитель транзакции

Имена переменных Solidity

Называя переменные в Solidity, помните о следующих правилах.

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

  • Имена переменных Solidity не должны начинаться с цифры (0-9). Они должны начинаться с буквы или символа подчеркивания. Например, 123test - недопустимое имя переменной, но _123test - допустимое.

  • Имена переменных Solidity чувствительны к регистру. Например, Name и name - две разные переменные.