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

  1. Объявление переменных в Solidity: В Solidity переменные объявляются с использованием ключевого слова type, за которым следует имя переменной. Например:
uint256 public myVariable;

Это объявляет переменную с именем myVariable типа uint256, которая представляет собой целое число без знака, способное хранить 256 бит данных. Ключевое слово public — это модификатор, который мы обсудим позже.

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

2.1. Булева переменная: логическая переменная может хранить либо true, либо false. Например:

bool public isActivated = true;

2.2. Целочисленные типы: Solidity предоставляет различные целочисленные типы, такие как uint8, int256 и т. д., с разным размером бит и знаком. Например:

uint8 public myUint8 = 255;
int256 public myInt256 = -42;

2.3. Целочисленные типы без знака. Целочисленные типы без знака, обозначаемые ключевым словом uint, могут хранить только неотрицательные значения. Например:

uint public myUint = 123;

2.4. Адрес: тип address используется для представления адресов. Он может хранить как внешние адреса, так и адреса контрактов. Например:

address public myAddress = 0x1234567890123456789012345678901234567890;

2.5. Числа с фиксированной точкой: Solidity поддерживает числа с фиксированной точкой с различной точностью, используя ключевые слова fixed и ufixed. Например:

fixed public myFixed = 1.234;
ufixed public myUfixed = 0.567;

Числа с фиксированной точкой еще не полностью поддерживаются Solidity. Они могут быть объявлены, но не могут быть назначены или из.

2.6. Enum: перечисления позволяют определять пользовательские типы с конечным набором значений. Каждому значению присваивается индекс, начинающийся с 0. Например:

enum State { PENDING, APPROVED, REJECTED }
State public currentState = State.PENDING;

2.7. Байты и статические массивы. Тип bytes позволяет работать с байтовыми массивами произвольной длины, тогда как статические массивы имеют фиксированную длину. Например:

bytes public myBytes = "Hello, World!";
bytes32[5] public myStaticArray;

2.8. Динамические массивы. Динамические массивы могут иметь переменную длину, которую можно изменить во время выполнения. Например:

uint[] public myDynamicArray;

3. Ссылочные типы: Solidity также предоставляет ссылочные типы, которые позволяют работать со сложными структурами данных. Давайте рассмотрим некоторые из них:

3.1. Структуры: Структуры позволяют вам определять пользовательские структуры данных с несколькими полями. Например:

struct Person {
    string name;
    uint age;
}
Person public myPerson;

3.2. Сопоставления. Сопоставления — это хранилища ключей и значений, которые могут связывать значение с уникальным ключом. Например:

mapping(address => uint) public balances;

3.3. Массивы. Массивы могут хранить несколько значений одного типа. Они могут быть статическими или динамическими, как и типы значений. Например:

Person[] public people;

3.4. Строки. Тип string позволяет работать со строковыми данными переменной длины. Например:

string public greeting = "Hello, World!";

4. Модификаторы переменных. Модификаторы в Solidity предоставляют дополнительные функциональные возможности для переменных. Давайте рассмотрим некоторые часто используемые модификаторы:

4.1. Общедоступная: общедоступная переменная генерирует автоматическую функцию получения, позволяющую другим контрактам или пользователям получать доступ к ее значению. Например:

uint public myVariable;

4.2. Частная: доступ к частной переменной возможен только из текущего контракта. Например:

uint private myVariable;

4.3. Внутренний: доступ к внутренней переменной можно получить из текущего контракта и его производных контрактов. Например:

uint internal myVariable;

4.4. Внешний: доступ к внешней переменной возможен только извне, обычно через вызовы функций. Например:

uint external myVariable;

5. Постоянные и неизменяемые переменные: Solidity позволяет вам определять постоянные и неизменяемые переменные, которые инициализируются во время компиляции и не могут быть изменены впоследствии. Например:

uint256 constant public MY_CONSTANT = 42;
uint256 immutable public myImmutable = block.timestamp;

6. Ключевые слова «Память» и «Хранилище». В Solidity вам часто нужно указать, должна ли переменная храниться в памяти или в хранилище. Ключевое слово memory используется для временных данных, которые исчезают после выполнения функции, а ключевое слово storage относится к постоянному хранилищу контрактов. Например:

function myFunction() public {
    uint[] memory myArray;  // Declares an array in memory
    myArray.push(42);
}

7. Глобальные переменные: Solidity предоставляет несколько глобальных переменных, доступ к которым можно получить на протяжении всего контракта. Давайте рассмотрим некоторые из них:

7.1. msg: глобальная переменная msg предоставляет информацию о текущей транзакции. Например:

address public sender = msg.sender;
uint public value = msg.value;

7.2. блок: глобальная переменная block предоставляет информацию о текущем блоке. Например:

uint public blockNumber = block.number;
uint public blockTimestamp = block.timestamp;

7.3. tx: глобальная переменная tx предоставляет информацию о текущей транзакции. Например:

bytes32 public txHash = tx.hash;
address public origin = tx.origin;

7.4. сейчас: глобальная переменная now возвращает текущую метку времени. Например:

uint public currentTime = now;

Заключительные слова:

В этом сообщении блога мы рассмотрели основы переменных ключевых слов в Solidity для разработчиков Web3. Углубляясь в типы значений, ссылочные типы, модификаторы переменных, постоянные и неизменяемые переменные, ключевые слова памяти и хранилища, а также глобальные переменные, мы стремились обеспечить полное понимание того, как эффективно использовать переменные в ваших смарт-контрактах. Не стесняйтесь экспериментировать и исследовать более продвинутые функции, продолжая свое путешествие.

Если вы нашли эту статью информативной и полезной, подпишитесь на меня, чтобы получать больше материалов, связанных с блокчейном и криптовалютой. Вы также можете подписаться на мою рассылку, чтобы получать новости о моих последних статьях и проектах.