Solidity и смарт-контракты Ethereum, урок #1 | Введение, Remix IDE, аккаунты, газ, первый контракт

YOUTUBE · 16.11.2025 07:55

Ключевые темы и таймкоды

Введение

0:00
  • Илья начинает серию уроков по написанию смарт-контрактов для Ethereum на языке Solidity.
  • Призывает подписаться на канал и вступить в чат Telegram.
  • Упоминает о возможности спонсорства и проблемах с доступом в некоторых странах.

Централизованные и децентрализованные приложения

0:58
  • Централизованные приложения контролируются одной организацией или группой лиц.
  • Примеры централизованных приложений: социальные сети, почта, онлайн-банкинг.
  • Децентрализованные приложения используют технологию блокчейна и распределённую логику.

Принцип работы блокчейна

2:55
  • Блокчейн хранит данные в виде связанных блоков, каждый из которых ссылается на предыдущий.
  • Изменение данных на одном узле не остаётся незамеченным другими узлами сети.
  • Для взлома требуется контроль более 50% узлов сети.

Применение децентрализованных приложений

4:54
  • Децентрализованные приложения удобны для электронных голосований и бронирования билетов.
  • Ethereum позволяет записывать информацию о транзакциях и хранить смарт-контракты в блокчейне.
  • Смарт-контракты — это блоки кода, которые могут быть исполнены в блокчейне.

Пример смарт-контракта

5:52
  • Пример смарт-контракта: приём денежных средств от клиентов и вывод их владельцем.
  • Взаимодействие со смарт-контрактами возможно через библиотеки, например, Web3.

Язык Solidity

7:42
  • Solidity — язык для написания смарт-контрактов с особенностями, вытекающими из работы Ethereum и блокчейна.
  • Статическая типизация и компиляция в байт-код.
  • Виртуальная машина Ethereum Virtual Machine EVM обрабатывает байт-код.

Среда разработки Remix

9:36
  • Remix — интегрированная среда разработки для работы с Solidity.
  • Доступна онлайн и локально на GitHub.
  • Включает компилятор и возможность тестирования смарт-контрактов.

Интерфейс Remix

10:34
  • Первая вкладка: список файлов в выбранной директории.
  • Вторая вкладка: Solidity Compiler, встроенный компилятор.
  • Возможность выбора версии компилятора из выпадающего списка.

Введение в Solidity

11:33
  • Solidity — молодой и активно развивающийся язык.
  • Между версиями могут быть значительные изменения.
  • В видео используется версия 0.8, но возможны корректировки при выходе новых версий.

Настройка среды разработки

12:31
  • Выбор версии виртуальной машины и языка Solidity.
  • Возможность включения автокомпиляции и других опций.
  • Платформа Prochort Hat не обязательна для начала работы.

Выбор среды для тестирования

13:30
  • Использование JavaScript-виртуальной машины для тестирования контрактов.
  • Аккаунты в виртуальной среде не имеют реальной ценности.

Создание аккаунтов и ключей

14:28
  • Аккаунт идентифицируется адресом, который начинается с «0x».
  • Открытый ключ виден всем, закрытый ключ известен только владельцу.
  • В реальном блокчейне закрытый ключ должен быть защищён.

Газ и транзакции

15:26
  • Газ оценивает вычислительные мощности, потреблённые транзакцией.
  • Каждая транзакция стоит денег, которые зависят от газа.
  • Стоимость газа варьируется и зависит от множества факторов.

Стоимость газа

17:16
  • Единица газа неизменяемая, но его стоимость может меняться.
  • Пример: создание смарт-контракта стоит 32 тысячи газа.
  • Стоимость газа можно узнать на сайте Ethereum Price.

Работа с контрактами

19:13
  • Развёртывание контракта в выбранном блокчейне.
  • Редактор Remix удобен для работы со смарт-контрактами.

Создание нового контракта

20:10
  • Создание нового файла с расширением .sol.
  • Добавление лицензии для опенсорс проектов.
  • Указание версии языка Solidity.

Объявление контракта

21:09
  • Объявление контракта с именем в формате CamelCase.
  • Объявление тела контракта в фигурных скобках.

Вложенность и переменные в контракте

22:07
  • Для вложенности используются четыре пробела.
  • Внутри контракта можно создавать переменные, константы и функции.
  • Переменная «оунер» типа «адрес» используется для хранения информации о владельце контракта.

Область видимости переменных

23:02
  • Переменная «оунер» по умолчанию закрыта и недоступна извне.
  • Для доступа к переменной извне используется ключевое слово «паблик».
  • Конструктор автоматически вызывается при размещении контракта в блокчейне.

Установка владельца в конструкторе

23:56
  • В конструкторе устанавливается владелец контракта на основе адреса отправителя транзакции.
  • Адрес отправителя можно получить через свойство «сендер» объекта «месседж».
  • Данные сохраняются в блокчейне и остаются там до его уничтожения.

Функция для приёма денежных средств

24:54
  • Создаётся функция «пэй форм» для приёма платежей.
  • Функция помечается как «пойбл», чтобы она могла принимать деньги.
  • Зачисление и списание средств происходит автоматически.

Хранение информации о плательщиках

26:52
  • Используется хранилище «мэпинг» для учёта информации о плательщиках.
  • Ключи «мэпинга» — адреса отправителей, значения — целые числа без знака.
  • Информация о сумме платежа хранится в транзакции.

Функция для списания средств

29:42
  • Создаётся функция для списания средств с контракта.
  • Для перевода средств используется метод «трансфер».
  • Создаётся временная переменная для адреса владельца, помеченная как «пойбл».

Получение баланса контракта

31:35
  • Используется ключевое слово «в» для обращения к текущему контракту.
  • Полученный адрес контракта используется для получения его баланса.
  • Баланс контракта можно получить через атрибут адреса.

Работа с контрактом и безопасность

33:30
  • Перевод средств с контракта на указанный адрес.
  • Баланс контракта после перевода становится равным нулю.
  • Необходимость проверки доступа только для владельца контракта.

Компиляция и развёртывание контракта

34:28
  • Проверка выбранной среды и аккаунта для развёртывания.
  • Развёртывание контракта в демонстрационный блокчейн.
  • Просмотр журнала событий и количества потраченного газа.

Стоимость развёртывания

35:27
  • Развёртывание контракта требует оплаты.
  • При внесении изменений в код контракта его нужно переразворачивать.

Вызов функций извне

36:23
  • Разноцветные кнопки для вызова функций.
  • Синие кнопки обозначают считывание информации без оплаты.
  • Красные кнопки указывают на функции, которые могут принимать деньги.

Отправка денег через контракт

38:24
  • Ввод значения и выбор валюты для отправки денег.
  • Отправка одного эфира и оплата комиссии за транзакцию.
  • Проверка поступления денег на контракт.

Получение денег

40:20
  • Вызов функции для получения денег.
  • Оплата комиссии за списывание средств.
  • Фиксация факта перевода денег в блокчейне.

Заключение

42:17
  • Подведение итогов урока.
  • Анонс будущих уроков о переменных, типах данных и модификаторах.
  • Призыв к комментариям и подписке на канал.