Смарт-контракты. Что такое смарт-контракт и как его создать в Solidity. С подробным разбором кода. Артем Демиденко. Читать онлайн. Newlib. NEWLIB.NET

Автор: Артем Демиденко
Издательство: Автор
Серия:
Жанр произведения:
Год издания: 2023
isbn:
Скачать книгу
создавать пользовательские типы данных, объединяя различные поля. Это удобно, когда нужно хранить связанные данные в одной переменной.

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

      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) {

      ........totalSupply = initialSupply;

      ........balances[msg.sender] = initialSupply;

      ....}

      ....function transfer(address to, uint256 amount) public {

      ........require(balances[msg.sender] >= amount, "Not enough balance");

      ........balances[msg.sender] -= amount;

      ........balances[to] += amount;

      Конец ознакомительного фрагмента.

      Текст предоставлен ООО «ЛитРес».

      Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.

      Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wgARCAhhBdwDASIA AhEBAxEB/8QAGwABAQADAQEBAAAAAAAAAAAAAAECAwQFBgf/xAAaAQEBAQEBAQEAAAAAAAAAAAAA AQIDBAUG/9oADAMBAAIQAxAAAAHmhw/UABaAAAAAAAAACBAAWgAABICgBQAAAAAIAAAAEBQQAAFA ABAAApFEURRFEURRFEVUUSgAAAAAAAEJRFEAAAAAAAAAFAAAAABAAAKCBRRFAAQAAFBEChQAABu9 a8fD2exrY5duvSdbkh2OMdjjp1uQdbkHW5B1uQdbkHW46dbkHW5B1uQdbkHW5B1uQdbkHW5B1uQd bkHW5B1uQdbkHW5B1uQdbkHW5B1uQdbkHW5B1uQdbkHW5B1uQdbkHW5B1uQdbkHW5B1uQdbkHW5B 1uQdblHVeQdbkHW5B1OUdTlHVeQdc5R1OUdTlHU5R1XkHXOUdV5B1zlHU5B1uQdbkHW5B1uQdbkH W5B1uQdbkHW5B1uQdbkHW5B1uOnW5B1uQdbkHW5B1uQdbkHW5B06G9PPntZnhPV8udYJ0ACgBTEK AAOpnn9rZ4d83q+RinYHUAAAJAAAtACAAAoAJAAAAAoAAAAAAAAUigIAAAAAAAAAACggKACAoAAA AAAAAAIACgAgAAAAAAAKSwAAAAAAFJSEolKiiUjo9bwV4+l5vd6F5+CsnqACFggUKG5N3fl4V8oT 1AoAASAAAAoAAUAEAgAAAUEAAAAAABQAAFAAAAAAAEABQAQFFEURRFEURRFEURRFEURRFEUQpFRA BQAAAAAAAAAACWAAQAAAsFSgAAAADdpJ9B4Ofta8vgLJ6wgKgUB9Bx898nJCeoFACAQAKBQgAAAA EAFIspYgAAAAKFIoiiKIolCUAAAgAKAACAAAoUi