Чтение онлайн

на главную

Жанры

Смарт-контракты. Что такое смарт-контракт и как его создать в Solidity. С подробным разбором кода
Шрифт:

uint: беззнаковое целое число. Например, uint256 представляет целое число без знака, состоящее из 256 битов (32 байта).

int: знаковое целое число. Например, int8 представляет знаковое целое число, использующее 8 битов (1 байт).

Пример объявления и использования целочисленных переменных:

uint256 public totalSupply;

int8 public temperature;

totalSupply = 100000; //

Присвоение значения переменной

temperature = -10; // Присвоение другого значения переменной

Логический тип данных (bool)

Логический тип данных bool может принимать только два значения: true (истина) или false (ложь). Логические переменные часто используются для контроля потока выполнения программы при помощи условий.

Пример использования логической переменной:

bool public isActivated;

isActivated = true; // Присвоение значения переменной

if (isActivated) {

// Выполнить код, если isActivated равно true

}

Адрессный тип данных (address)

Тип данных address предназначен для хранения адресов кошельков Ethereum. С его помощью можно отслеживать владельцев аккаунтов и взаимодействовать с другими смарт-контрактами и адресами.

Пример использования адрессного типа данных:

address public owner;

owner = msg.sender; // Присвоение адреса отправителя транзакции переменной

address recipient = 0xAbCdEf0123456789; // Присвоение адреса переменной

Строковый тип данных (string)

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

Пример использования строковой переменной:

string public message;

message = "Hello, world!"; // Присвоение строки переменной

Массивы (array)

Массивы в Solidity позволяют объединять несколько значений одного типа в одной переменной. Они могут быть фиксированной длины (размер задается заранее) или динамической длины (размер определяется в процессе выполнения).

Примеры использования массивов:

uint256[5] public numbers; // Массив фиксированной длины

string[] public names; // Динамический массив строк

numbers = [10, 20, 30, 40, 50]; // Присвоение значений фиксированному массиву

names.push("Alice"); // Добавление значения в динамический массив

Структуры (struct)

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

Пример использования структуры:

struct Person {

string name;

uint256 age;

}

Person public alice;

alice = Person("Alice", 30); // Инициализация структуры

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

3.4.2 Хранилище данных

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

Переменные состояния и локальные переменные

Один из ключевых аспектов управления данными – это различие между переменными состояния (state variables) и локальными переменными (local variables).

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

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

Пример использования переменных состояния и локальных переменных

Давайте представим, что у нас есть смарт-контракт для управления простым токеном. Мы хотим хранить общее количество выпущенных токенов и балансы каждого адреса.

contract SimpleToken {

uint256 public totalSupply;

mapping(address => uint256) public balances;

constructor(uint256 initialSupply) {

Поделиться:
Популярные книги

Провинциал. Книга 4

Лопарев Игорь Викторович
4. Провинциал
Фантастика:
космическая фантастика
рпг
аниме
5.00
рейтинг книги
Провинциал. Книга 4

Пустоши

Сай Ярослав
1. Медорфенов
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Пустоши

Мужчина моей судьбы

Ардова Алиса
2. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.03
рейтинг книги
Мужчина моей судьбы

Царь поневоле. Том 1

Распопов Дмитрий Викторович
4. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Царь поневоле. Том 1

Боги, пиво и дурак. Том 4

Горина Юлия Николаевна
4. Боги, пиво и дурак
Фантастика:
фэнтези
героическая фантастика
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 4

Дайте поспать!

Матисов Павел
1. Вечный Сон
Фантастика:
юмористическое фэнтези
постапокалипсис
рпг
5.00
рейтинг книги
Дайте поспать!

Штуцер и тесак

Дроздов Анатолий Федорович
1. Штуцер и тесак
Фантастика:
боевая фантастика
альтернативная история
8.78
рейтинг книги
Штуцер и тесак

Вперед в прошлое 3

Ратманов Денис
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 3

Идеальный мир для Лекаря 17

Сапфир Олег
17. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 17

Академия проклятий. Книги 1 - 7

Звездная Елена
Академия Проклятий
Фантастика:
фэнтези
8.98
рейтинг книги
Академия проклятий. Книги 1 - 7

Случайная мама

Ручей Наталья
4. Случайный
Любовные романы:
современные любовные романы
6.78
рейтинг книги
Случайная мама

Камень. Книга 3

Минин Станислав
3. Камень
Фантастика:
фэнтези
боевая фантастика
8.58
рейтинг книги
Камень. Книга 3

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Назад в СССР: 1985 Книга 2

Гаусс Максим
2. Спасти ЧАЭС
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Назад в СССР: 1985 Книга 2