Полный курс по блокчейну: от криптографии до DeFi

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

1. Криптографические примитивы и устройство распределенного реестра

Введение в курс: Блокчейн как технология доверия

Добро пожаловать в «Полный курс по блокчейну: от криптографии до DeFi». Мы начинаем наше путешествие с фундаментальных основ. Многие считают блокчейн сложной магией или просто инструментом для спекуляций, но в его основе лежит строгая математика и элегантная логика.

В этой первой статье мы разберем «кирпичики», из которых строится любой блокчейн: криптографические хеш-функции, пары ключей и структуру связанных блоков. Без понимания этих примитивов невозможно разобраться ни в биткоине, ни в смарт-контрактах Ethereum.

Что такое криптографический примитив?

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

Хеш-функции: Цифровой отпечаток пальца

Самым важным понятием в блокчейне является хеширование. Хеш-функция — это математический алгоритм, который преобразует входные данные произвольного размера в строку фиксированной длины.

!Иллюстрация того, как любые данные преобразуются в строку фиксированной длины.

Математически это можно записать так:

Где — это полученный хеш (результат), — сама хеш-функция, а — входное сообщение (данные).

Ключевые свойства хеш-функций для блокчейна:

  • Детерминированность: Одно и то же входное сообщение всегда дает одинаковый хеш . Если вы измените хоть одну запятую в «Войне и мире», хеш изменится до неузнаваемости. Это называется лавинообразным эффектом.
  • Однонаправленность: Зная хеш , вычислительно невозможно восстановить исходное сообщение . Это как провернуть фарш назад и получить корову.
  • Устойчивость к коллизиям: Крайне сложно найти два разных сообщения и , которые дадут одинаковый хеш ().
  • В большинстве блокчейнов (например, в Bitcoin) используется алгоритм SHA-256. Он выдает строку длиной 256 бит (64 символа в шестнадцатеричном формате).

    Асимметричная криптография: Ключи от всех дверей

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

    Асимметричная криптография решает эту проблему, используя пару ключей:

    * Закрытый ключ (Private Key): Хранится в строжайшем секрете. Это ваша «подпись» и доступ к средствам. * Открытый ключ (Public Key): Можно показывать всем. Это ваш «адрес» или «номер счета».

    !Визуальная метафора работы пары ключей: шифрование и цифровая подпись.

    Электронная цифровая подпись (ЭЦП)

    В блокчейне мы редко шифруем данные (они обычно публичны). Мы используем ключи для аутентификации. Когда вы отправляете транзакцию, вы должны доказать сети, что эти биткоины принадлежат вам, не раскрывая свой закрытый ключ.

    Процесс создания подписи выглядит так:

    Где — цифровая подпись, — алгоритм подписи, — сообщение (детали транзакции), а — ваш закрытый ключ.

    Любой участник сети может проверить вашу подпись, используя ваш открытый ключ:

    Где — результат проверки (истина или ложь), — алгоритм проверки, — сообщение, — подпись, — открытый ключ. Если равно «истина», значит, транзакция действительно подписана владельцем закрытого ключа.

    Устройство распределенного реестра (DLT)

    Теперь, когда у нас есть инструменты (хеши и ключи), мы можем построить структуру данных. Блокчейн — это частный случай технологии распределенного реестра (Distributed Ledger Technology).

    Представьте обычную банковскую книгу (реестр). В ней записано: «Алиса перевела Бобу 100 рублей». Эта книга хранится на сервере банка. Если хакер взломает сервер, он может переписать историю.

    В блокчейне копия этой «книги» хранится у тысяч участников одновременно. Но как убедиться, что у всех записано одно и то же?

    Анатомия блока

    Данные в блокчейне группируются в блоки. Блок — это контейнер для транзакций. У каждого блока есть заголовок, который содержит метаданные.

    !Схематичное изображение содержимого блока и его связи с предыдущим.

    Основные элементы заголовка блока:

  • Версия: Версия протокола.
  • Timestamp: Время создания блока.
  • Merkle Root (Корень Меркла): Один единственный хеш, который «сжимает» все транзакции в блоке. Если изменить хоть одну транзакцию, изменится этот корень.
  • Previous Block Hash (Хеш предыдущего блока): Самый важный элемент для связности.
  • Цепочка блоков (The Chain)

    Именно поле Previous Block Hash превращает набор блоков в цепочку (chain). Каждый новый блок содержит в себе цифровой отпечаток предыдущего.

    Математически связь блоков можно описать рекурсивно:

    Где — хеш текущего блока , — хеш-функция, — данные текущего блока, а — хеш предыдущего блока .

    Почему это гарантирует неизменность?

    Представьте, что злоумышленник хочет удалить транзакцию из блока №10, когда сеть уже строит блок №100.

  • Он меняет данные в блоке №10.
  • Из-за свойства хеш-функции (лавинообразный эффект) хеш блока №10 полностью меняется.
  • Блок №11 содержит хеш блока №10. Поскольку хеш №10 изменился, он больше не совпадает с записью внутри блока №11. Связь разрывается.
  • Чтобы починить цепь, злоумышленнику нужно пересчитать хеш блока №11.
  • Но это изменит хеш блока №11, что сломает связь с блоком №12.
  • Таким образом, изменение старой записи требует пересчета всех последующих блоков. В системах с защитой Proof-of-Work (о которой мы поговорим в следующих статьях) это требует колоссальных вычислительных мощностей, что делает атаку экономически бессмысленной.

    Заключение

    Мы разобрали фундамент: * Хеш-функции гарантируют целостность данных. * Цифровые подписи гарантируют аутентичность (авторство) транзакций. * Связанный список блоков делает историю неизменяемой.

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

    2. Механизмы консенсуса и функционирование виртуальных машин блокчейна

    Механизмы консенсуса и функционирование виртуальных машин блокчейна

    В предыдущей статье мы разобрали «анатомию» блокчейна: как хеш-функции связывают блоки в неразрывную цепь и как криптографические ключи позволяют пользователям владеть активами. Но у нас остался один фундаментальный вопрос: если нет центрального банка или сервера, кто решает, какие транзакции попадут в следующий блок?

    Как тысячи независимых компьютеров (узлов), разбросанных по всему миру, приходят к единому мнению о состоянии реестра? Эта проблема известна в информатике как Задача византийских генералов. Решением этой задачи являются механизмы консенсуса.

    Проблема двойной траты и необходимость консенсуса

    В цифровом мире любой файл можно скопировать. Если у вас есть файл с фотографией, вы можете отправить его другу и оставить копию себе. Но с деньгами так делать нельзя. Если у Алисы есть 1 цифровой токен, она не должна иметь возможность отправить его Бобу и одновременно Чарли. Это называется проблемой двойной траты (Double Spending).

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

    Proof-of-Work (PoW): Доказательство работы

    Первым и самым известным алгоритмом консенсуса стал Proof-of-Work, реализованный в Биткоине. Идея заключается в том, чтобы сделать добавление блока затратным процессом, требующим реальных ресурсов (электричества и оборудования).

    Как это работает: Майнинг

    Майнеры — это участники сети, которые соревнуются за право добавить новый блок. Чтобы сделать это, они должны решить сложную математическую задачу. Эта задача сводится к перебору случайного числа, называемого nonce (number used once).

    Математически условие для нахождения валидного блока выглядит так:

    Где — криптографическая хеш-функция (например, SHA-256), — заголовок блока (содержащий транзакции и хеш предыдущего блока), — искомое число nonce, а — целевое значение сложности (Target).

    Майнер меняет миллионы раз в секунду, пока полученный хеш не станет меньше или равен числу . Чем меньше , тем сложнее найти решение (тем больше нулей должно быть в начале хеша).

    !Визуализация процесса подбора Nonce для нахождения красивого хеша.

    Экономика PoW

  • Затраты: Майнер тратит электричество.
  • Награда: Если майнер находит блок первым, он получает награду (новые монеты) и комиссии транзакций.
  • Безопасность: Чтобы переписать историю, злоумышленнику нужно обладать мощностью большей, чем у всех остальных майнеров вместе взятых (атака 51%). Это экономически невыгодно.
  • Proof-of-Stake (PoS): Доказательство доли

    Proof-of-Work критикуют за огромное энергопотребление. Современной альтернативой является Proof-of-Stake (используется в Ethereum с 2022 года, Solana, Cardano).

    Здесь нет майнеров, есть валидаторы. Вместо покупки видеокарт, валидаторы блокируют (стейкают) свои монеты в смарт-контракте сети в качестве залога.

    Алгоритм выбора лидера

    Право создать следующий блок разыгрывается в лотерею. Шанс стать создателем блока пропорционален размеру стейка.

    Упрощенная формула вероятности выбора валидатора:

    Где — вероятность выбора конкретного валидатора , — количество монет в стейке у этого валидатора, а — общее количество застейканных монет во всей сети.

    Nothing at Stake и Slashing

    В PoW майнеру невыгодно майнить две параллельные цепи — придется делить мощность. В PoS валидатору ничего не стоит подписать две версии истории. Чтобы предотвратить это, введен механизм Slashing (штрафы). Если валидатор ведет себя нечестно (подписывает два конфликтующих блока или находится оффлайн), часть его стейка сжигается.

    | Характеристика | Proof-of-Work (PoW) | Proof-of-Stake (PoS) | | :--- | :--- | :--- | | Ресурс | Вычислительная мощность, электричество | Капитал (криптовалюта) | | Участники | Майнеры | Валидаторы | | Риск атаки | Требуется 51% хешрейта (дорогое оборудование) | Требуется 51% всех монет (огромный капитал) | | Экологичность | Низкая | Высокая |

    Виртуальные машины: От калькулятора к компьютеру

    Блокчейн Биткоина был создан для одной цели: передача ценности. Его язык программирования (Script) намеренно ограничен. Он не поддерживает циклы и сложные вычисления, чтобы избежать зависания сети. Это похоже на программируемый калькулятор.

    С появлением Ethereum концепция изменилась. Виталик Бутерин предложил создать блокчейн, который является Тьюринг-полным. Это значит, что на нем можно запустить программу любой сложности. Так родилась концепция «Мирового компьютера» и EVM (Ethereum Virtual Machine).

    Что такое EVM?

    EVM — это среда выполнения смарт-контрактов. Она существует на каждом узле сети Ethereum. Когда вы отправляете транзакцию со смарт-контрактом, каждый узел запускает этот код в своей локальной копии EVM, чтобы обновить состояние сети.

    !Архитектура виртуальной машины Ethereum, обрабатывающей транзакцию.

    Смарт-контракты

    Смарт-контракт — это просто код (программа), который живет в блокчейне по определенному адресу. У него есть: * Баланс: Он может владеть деньгами. * Хранилище: Он может запоминать данные (например, кто владеет токеном). * Код: Функции, которые можно вызвать извне.

    Проблема остановки и Газ (Gas)

    Если мы разрешаем запускать любой код, что помешает злоумышленнику написать бесконечный цикл while(true) и повесить все компьютеры в сети, которые обязаны выполнить этот код?

    Решение проблемы — концепция Газа.

    Каждая операция в EVM (сложение, запись в память, хеширование) стоит определенное количество единиц газа. Газ — это мера вычислительной работы.

    Стоимость транзакции рассчитывается по формуле:

    Где — итоговая комиссия, которую платит пользователь (в ETH), — количество единиц газа, затраченных на выполнение операций, а — цена одной единицы газа, которую пользователь готов заплатить (обычно определяется рынком).

    Если у пользователя заканчивается газ в процессе выполнения транзакции, выполнение останавливается, изменения откатываются, но комиссия не возвращается (так как работа майнерами/валидаторами уже была проделана).

    Состояние (State) и переходы

    Блокчейн с виртуальной машиной можно описать как машину состояний (State Machine). В любой момент времени существует глобальное состояние (балансы всех счетов, код всех контрактов, данные всех приложений).

    Блок транзакций — это набор инструкций по изменению состояния.

    Где — новое состояние системы, — функция перехода состояния (выполнение всех транзакций в блоке через EVM), — текущее состояние, — новый блок.

    Именно детерминированность EVM гарантирует, что если 10 000 узлов возьмут состояние и применят блок , они все получат абсолютно одинаковое состояние .

    Заключение

    Мы разобрали два столпа, на которых держатся современные децентрализованные приложения:

  • Механизмы консенсуса (PoW/PoS) позволяют сети согласовывать единую историю правды без центрального управляющего.
  • Виртуальные машины (EVM) позволяют этой сети не просто хранить записи о переводах, а выполнять сложные программы — смарт-контракты.
  • Эти технологии открыли дверь для создания DeFi (децентрализованных финансов), о которых мы начнем говорить в следующих модулях. Но перед этим нам нужно разобраться, что именно мы передаем в этих сетях. Следующая тема — «Нативные монеты и стандарты токенов (ERC-20, ERC-721)».

    3. Разработка и развертывание смарт-контрактов: стандарты токенов

    Разработка и развертывание смарт-контрактов: стандарты токенов

    В предыдущих модулях мы разобрали, как работает «двигатель» блокчейна — виртуальная машина (EVM), и как механизмы консенсуса обеспечивают безопасность сети. Теперь пришло время научиться управлять этим двигателем. Мы переходим от теории инфраструктуры к практике создания цифровых активов.

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

    Нативная монета vs. Токен: в чем разница?

    Прежде чем углубляться в стандарты, необходимо прояснить фундаментальное различие между «монетой» (Coin) и «токеном» (Token). В сети Ethereum (и ей подобных) существуют два типа ценностей:

  • Нативная монета (Ether, ETH): Это «кровь» сети. Она существует на уровне протокола. Балансы ETH хранятся непосредственно в учетных записях пользователей (EOA — Externally Owned Accounts). Именно в ETH оплачивается газ за транзакции.
  • Токен: Это смарт-контракт. Токены не существуют на уровне протокола блокчейна как самостоятельная сущность. Это просто запись в базе данных внутри конкретной программы (смарт-контракта).
  • !Визуализация различия уровней хранения нативной монеты и токенов.

    Когда вы отправляете другу 1 ETH, протокол просто вычитает число из вашего баланса и прибавляет к его. Когда вы отправляете другу 100 USDT, вы на самом деле отправляете команду смарт-контракту USDT: «Пожалуйста, измени во внутренней таблице запись напротив моего адреса и адреса друга».

    Зачем нужны стандарты?

    Представьте, что вы создаете биржу. Если бы каждый разработчик токена называл функцию перевода по-своему (один — sendMoney, другой — transfer, третий — give), вашей бирже пришлось бы писать уникальный код для интеграции каждого нового токена. Это невозможно.

    Стандарт токенов — это интерфейс. Это набор правил, который говорит: «Если вы хотите, чтобы ваш контракт считался токеном, он обязан иметь вот эти функции с вот такими названиями и аргументами».

    В экосистеме Ethereum стандарты предлагаются через механизм ERC (Ethereum Request for Comments). Самые известные из них — ERC-20 и ERC-721.

    ERC-20: Стандарт взаимозаменяемых токенов

    ERC-20 — это король DeFi. Он описывает взаимозаменяемые (fungible) токены. Взаимозаменяемость означает, что один токен ничем не отличается от другого. Мой 1 USDT абсолютно идентичен вашему 1 USDT, так же как одна купюра в 100 рублей эквивалентна другой такой же купюре.

    Структура данных ERC-20

    В основе любого ERC-20 контракта лежит простая математическая структура — отображение (mapping). На языке Solidity это выглядит так:

    Математически состояние токена можно описать как функцию, которая сопоставляет адрес кошелька с натуральным числом (балансом):

    Где — функция баланса, — адрес пользователя (20-байтовый идентификатор), а — количество токенов (целое неотрицательное число).

    Ключевые функции ERC-20

    Чтобы соответствовать стандарту, контракт должен реализовать 6 обязательных функций. Рассмотрим самые важные:

  • totalSupply(): Возвращает общее количество выпущенных токенов.
  • balanceOf(address account): Возвращает баланс конкретного адреса.
  • transfer(address recipient, uint256 amount): Переводит токены с адреса вызывающего на адрес получателя.
  • Логика функции transfer описывается изменением состояния двух ячеек памяти:

    Где — новый баланс после транзакции, — старый баланс, — отправитель, — получатель, — сумма перевода. Операция возможна только если .

    Механизм Approve и TransferFrom

    Это, пожалуй, самая сложная для понимания концепция для новичков, но она критически важна для DeFi. Смарт-контракты не могут сами «залезть» в ваш кошелек и забрать токены, даже если вы хотите обменять их на децентрализованной бирже (DEX).

    Вы должны дать им разрешение. Для этого существует система Approval (Одобрение).

  • approve(address spender, uint256 amount): Вы (владелец токенов) разрешаете адресу spender (например, контракту биржи Uniswap) тратить ваши токены в пределах суммы amount.
  • transferFrom(address sender, address recipient, uint256 amount): Эту функцию вызывает spender (биржа), чтобы забрать токены у вас и отправить их куда нужно.
  • !Схема взаимодействия пользователя, токена и DEX через механизм Approval.

    Без вызова approve ни один DeFi протокол не сможет взаимодействовать с вашими токенами.

    ERC-721: Стандарт невзаимозаменяемых токенов (NFT)

    Если ERC-20 — это деньги, то ERC-721 — это уникальные вещи (картины, недвижимость, игровые персонажи). Здесь токены не равны друг другу.

    Главное отличие в структуре данных. Вместо того чтобы хранить «сколько токенов у адреса», мы храним «кому принадлежит конкретный токен».

    Математически это обратная зависимость по сравнению с ERC-20:

    Где — функция владения, — уникальный идентификатор токена (Token ID), а — адрес владельца.

    В ERC-721 каждый токен имеет свой уникальный tokenId. Когда вы передаете NFT, вы передаете не «количество», а конкретный номер ID.

    Разработка и развертывание (Deployment)

    Как код превращается в работающий контракт? Процесс состоит из трех этапов:

    1. Написание кода (Solidity)

    Разработчик пишет код на языке высокого уровня, чаще всего на Solidity. Это человекочитаемый код.

    2. Компиляция

    Виртуальная машина (EVM) не понимает Solidity. Ей нужны машинные инструкции. Компилятор преобразует код в два артефакта:

    * Bytecode (Байт-код): Набор шестнадцатеричных символов (например, 0x60806040...), который будет выполняться EVM. Именно это хранится в блокчейне. * ABI (Application Binary Interface): Это JSON-файл, который служит «инструкцией по эксплуатации» или «картой» контракта. Он описывает, какие функции есть в контракте, какие аргументы они принимают и что возвращают.

    > ABI необходим для того, чтобы внешние приложения (кошельки, сайты, другие скрипты) знали, как «общаться» с байт-кодом, загруженным в сеть.

    3. Развертывание (Deployment)

    Развертывание — это отправка специальной транзакции в сеть. Эта транзакция не имеет получателя (поле to пустое), а в поле данных (data) содержится байт-код контракта.

    Когда майнер или валидатор включает эту транзакцию в блок, EVM выполняет код конструктора и выделяет контракту уникальный адрес. С этого момента контракт живет в блокчейне вечно (если не предусмотрена функция самоуничтожения).

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

    Развертывание контракта — одна из самых дорогих операций в Ethereum. Она потребляет много газа, так как вы занимаете место в глобальном хранилище блокчейна.

    Стоимость газа для транзакции можно выразить формулой:

    Где — общая стоимость в газе, — базовая стоимость транзакции (21000), — плата за каждый байт кода, который вы загружаете, — плата за выполнение логики конструктора.

    Заключение

    Мы разобрали, что токены — это стандартизированные смарт-контракты. ERC-20 позволяет создавать валюты, а ERC-721 — уникальные активы. Механизм approve дает возможность приложениям взаимодействовать с вашими средствами, а ABI служит мостом между непонятным байт-кодом и удобными интерфейсами кошельков.

    Теперь, когда мы понимаем, как создаются активы, мы готовы погрузиться в мир, где эти активы используются. В следующей статье мы начнем изучать DeFi (Decentralized Finance) и разберем, как работают децентрализованные биржи (DEX) и автоматические маркет-мейкеры (AMM).

    4. Основы DeFi: пулы ликвидности, AMM и фарминг доходности

    Основы DeFi: пулы ликвидности, AMM и фарминг доходности

    В предыдущей статье мы научились создавать собственные токены стандартов ERC-20 и ERC-721. Теперь представьте, что вы выпустили свой токен, но он лежит у вас на кошельке мертвым грузом. Чтобы актив обрел ценность, он должен торговаться. Ему нужен рынок.

    В традиционных финансах (TradFi) для этого существуют биржи (NYSE, NASDAQ). Но как организовать торговлю в децентрализованной сети, где нет серверов, а каждая операция стоит денег (газ)?

    В этой статье мы разберем революционную концепцию DeFi (Decentralized Finance), которая отказалась от старых биржевых книг в пользу чистой математики. Мы узнаем, как работают автоматические маркет-мейкеры (AMM), откуда берется ликвидность и какие риски несет в себе «фермерство» доходности.

    Проблема традиционных бирж: Книга ордеров

    Чтобы понять гениальность DeFi, нужно сначала посмотреть на то, как работают обычные биржи (например, Binance или Московская биржа). Они используют модель Книги ордеров (Order Book).

    В книге ордеров есть два типа участников:

  • Мейкеры (Makers): Создают лимитные ордера («Куплю 1 BTC за 60 000 комиссии, чтобы просто выставить заявку, экономически бессмысленно.
  • * Скорость: Блокчейн работает блоками (в Ethereum — 12 секунд). Это слишком медленно для высокочастотного трейдинга, необходимого для поддержания ликвидности.

    Индустрии требовалось решение, которое не требует активного участия маркет-мейкеров и постоянного обновления заявок. Этим решением стал AMM.

    Автоматический маркет-мейкер (AMM)

    AMM — это смарт-контракт, который позволяет пользователям торговать активами не друг с другом, а с самим контрактом (пулом). Здесь нет книги ордеров. Цена определяется математической формулой.

    Самый популярный алгоритм AMM, используемый биржей Uniswap, называется Constant Product Market Maker (Маркет-мейкер с постоянным произведением).

    Пулы ликвидности

    Пул ликвидности — это смарт-контракт, в котором заблокированы два типа токенов. Например, пул ETH/USDT. Представьте это как большую корзину, куда одни люди (поставщики ликвидности) положили кучу денег, чтобы другие могли приходить и менять одни деньги на другие.

    !Визуализация работы пула ликвидности: обмен одного актива на другой через смарт-контракт.

    Формула постоянного произведения

    Сердце AMM описывается элегантной формулой:

    Где — количество токенов первого типа в пуле (например, ETH), — количество токенов второго типа (например, USDT), а — константа, которая должна оставаться неизменной во время сделки.

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

    Пример сделки

    Давайте разберем на цифрах. Допустим, в пуле лежит: * 10 ETH () * 20 000 USDT ()

    Рассчитаем константу:

    Где — инвариант пула (200 000), который смарт-контракт будет пытаться сохранить.

    Текущая рыночная цена ETH в этом пуле:

    Где — цена одного эфира, — количество USDT, — количество ETH.

    Теперь приходит Алиса и хочет купить 1 ETH. Она отправляет в пул какое-то количество USDT, чтобы забрать 1 ETH.

  • В пуле останется ETH: ETH.
  • Чтобы осталось равным 200 000, количество USDT в пуле должно стать:
  • Где — новое количество USDT после сделки, — константа, — новое количество ETH.

  • Изначально в пуле было 20 000 USDT. Теперь должно стать 22 222.22 USDT. Разницу должна внести Алиса:
  • Где — стоимость покупки для Алисы.

    Обратите внимание: Хотя начальная цена была 2000 USDT, Алиса заплатила 2222.22 USDT. Почему? Потому что она купила огромную часть пула (10%). Это явление называется проскальзыванием (Slippage).

    !График кривой связывания (Bonding Curve) в AMM, демонстрирующий зависимость цены от количества активов.

    Чем больше ликвидности в пуле (чем больше ), тем меньше проскальзывание при сделках одного и того же размера.

    Поставщики ликвидности (Liquidity Providers, LP)

    Откуда берутся деньги в пуле? Их предоставляют обычные пользователи, которых называют Поставщиками ликвидности (LP).

    Зачем кому-то блокировать свои деньги в смарт-контракте? Ради комиссий. Каждый раз, когда кто-то торгует через Uniswap, он платит комиссию (обычно 0.3%). Эта комиссия распределяется между всеми поставщиками пропорционально их доле в пуле.

    Когда вы вносите средства в пул, смарт-контракт выдает вам специальные LP-токены. Это как квитанция из гардероба. Если вы владеете 1% ликвидности пула, у вас на руках будет LP-токенов на 1% от общей эмиссии этих «квитанций».

    Непостоянная потеря (Impermanent Loss)

    Быть поставщиком ликвидности — это не просто пассивный доход. Существует серьезный риск, называемый Impermanent Loss (IL).

    IL возникает, когда цена токенов в пуле меняется по сравнению с моментом, когда вы их внесли. Из-за механизма арбитража пул всегда будет продавать актив, который растет в цене, и покупать актив, который падает.

    Пример:

  • Вы внесли 1 ETH и 2000 USDT (всего 4000.
  • Арбитражники выкупают дешевый ETH из вашего пула, пока цена в пуле не сравняется с рыночной.
  • Теперь в вашей доле пула меньше ETH (например, 0.7 ETH), но больше USDT.
  • Если вы заберете деньги сейчас, ваша общая стоимость в долларах будет меньше, чем если бы вы просто держали 1 ETH и 2000 USDT на кошельке и ничего не делали.

    Потеря называется «непостоянной», потому что если цена ETH вернется к 2000x \cdot y = k$ любой человек может стать маркет-мейкером и зарабатывать на комиссиях, а любой трейдер получает гарантированную ликвидность без посредников.

    Мы разобрали: * AMM заменяют книгу ордеров математической функцией. * Пулы ликвидности позволяют обменивать активы децентрализованно. * Поставщики ликвидности зарабатывают комиссии, но рискуют получить Impermanent Loss. * Фарминг — это способ получения дополнительной доходности за счет токенов проектов.

    В следующей статье мы рассмотрим другую важнейшую часть DeFi — рынки кредитования (Lending & Borrowing), и узнаем, как взять кредит без справки о доходах и общения с менеджером банка.

    5. Аудит безопасности и управление рисками в децентрализованных финансах

    Аудит безопасности и управление рисками в децентрализованных финансах

    Мы прошли долгий путь: от понимания хеш-функций до создания собственных токенов и изучения механики AMM. Теперь, когда вы знаете, как строить финансовые лего-конструкторы, пришло время поговорить о том, как не дать им развалиться.

    DeFi часто называют «Диким Западом» финансов. Здесь нет банковской страховки, нет службы поддержки, которая отменит транзакцию, и нет регулятора, который вернет украденные средства. В этом мире «Код — это закон» (Code is Law). Но что происходит, когда в законе есть опечатка?

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

    Цена ошибки в неизменяемом реестре

    В традиционной разработке (Web2) баги — это неприятность. Если Facebook упадет на час, пользователи расстроятся, но никто не потеряет свои сбережения. В Web3 баги фатальны.

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

    Векторы атак

    Существует бесконечное множество способов взломать DeFi-протокол, но большинство крупных краж сводятся к нескольким паттернам. Рассмотрим самые разрушительные из них.

    Атака повторного входа (Reentrancy)

    Это классика жанра. Именно из-за этой уязвимости в 2016 году рухнул The DAO, что привело к расколу Ethereum на ETH и Ethereum Classic.

    Суть атаки заключается в особенности работы виртуальной машины (EVM). Смарт-контракт может вызывать функции других контрактов. Если контракт отправляет эфир на адрес злоумышленника до того, как обновит его баланс во внутренней базе данных, злоумышленник может снова вызвать функцию вывода средств, пока первая транзакция еще не завершилась.

    !Визуализация циклического вызова функции вывода средств до обновления баланса.

    Представим логику баланса как простую арифметическую операцию:

    Где — новый баланс пользователя после вывода, — старый баланс, а — сумма вывода (Withdrawal).

    В безопасном контракте порядок действий такой:

  • Проверка:
  • Обновление:
  • Перевод денег.
  • В уязвимом контракте порядок нарушен:

  • Проверка:
  • Перевод денег (здесь управление передается хакеру, который снова вызывает шаг 1).
  • Обновление: (этот шаг откладывается).
  • Поскольку шаг 3 не выполняется сразу, при повторном входе проверка на шаге 1 снова проходит успешно, так как все еще равен исходной сумме.

    Защита: Использование паттерна Checks-Effects-Interactions (Проверки-Изменения-Взаимодействия). Сначала меняем состояние (обнуляем баланс), и только потом отправляем средства.

    Манипуляция оракулами и Flash Loans

    В предыдущей статье мы обсуждали AMM и формулу . Мы знаем, что цена актива в пуле зависит от соотношения токенов. Но что, если у вас есть бесконечное количество денег, чтобы временно изменить это соотношение?

    Flash Loan (Мгновенный займ) — это возможность взять в долг любую сумму (хоть 100 миллионов долларов) без залога, при условии, что вы вернете её в том же самом блоке.

    Атака происходит так:

  • Хакер берет мгновенный займ на огромную сумму.
  • Использует эти деньги, чтобы купить огромное количество токена A на децентрализованной бирже (DEX).
  • Цена токена A на этой бирже взлетает до небес.
  • Если какой-то другой протокол (например, лендинговый) использует текущую цену с этой биржи как истину, он будет считать, что токен A стоит очень дорого.
  • Хакер вносит небольшое количество токена A в лендинговый протокол и, благодаря завышенной цене, берет под залог огромный кредит в других активах.
  • Хакер продает токен A обратно, возвращает мгновенный займ и исчезает с прибылью от кредита.
  • Математически влияние на цену при покупке объема можно выразить так:

    Где — новая цена актива (выраженная в единицах второго актива), — количество второго актива в пуле, — исходное количество первого актива, — количество актива, которое хакер выкупает из пула.

    Если стремится к (хакер выкупает почти все), то знаменатель стремится к нулю, а цена стремится к бесконечности.

    Защита: Использование децентрализованных оракулов (например, Chainlink), которые усредняют цены с множества источников и не позволяют одной транзакции мгновенно изменить глобальную цену.

    Аудит смарт-контрактов

    Чтобы предотвратить подобные атаки, проекты заказывают аудит безопасности. Аудит — это процесс проверки кода независимыми экспертами.

    Этапы аудита

  • Автоматический анализ: Код прогоняют через специальные программы (статические анализаторы, например, Slither или MythX), которые ищут типовые ошибки.
  • Ручное тестирование: Аудиторы («белые хакеры») читают код строчка за строчкой, пытаясь найти логические ошибки, которые не видит машина.
  • Отчет: Компания выдает документ с классификацией найденных уязвимостей: от Critical (критическая угроза потери средств) до Informational (рекомендации по стилю кода).
  • > «Аудит не гарантирует отсутствие ошибок. Он лишь гарантирует, что конкретные эксперты потратили определенное время на их поиск.»

    Наличие бейджика «Audited» на сайте проекта не означает, что он на 100% безопасен. Многие взломанные протоколы имели по несколько аудитов.

    Управление рисками для пользователя

    Как вы, как пользователь или инвестор, можете защитить свои средства?

    1. Бесконечные одобрения (Infinite Approvals)

    В статье про токены мы разбирали функцию approve. Большинство DApps для удобства просят вас одобрить трату неограниченного количества токенов.

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

    Решение: Регулярно используйте сервисы типа Revoke.cash для отзыва разрешений у старых или подозрительных контрактов.

    2. Rug Pull (Выдергивание коврика)

    Это не технический взлом, а мошенничество разработчиков.

    * Ликвидность не заблокирована: Разработчик создает токен, кладет ликвидность в пул, ждет, пока люди купят токен, а затем забирает всю ликвидность обратно, обрушивая цену до нуля. * Бэкдоры в коде: В контракте может быть скрытая функция mint, позволяющая разработчику напечатать себе миллион токенов и продать их в рынок.

    !Метафорическое изображение мошенничества Rug Pull, когда создатели проекта забирают ликвидность.

    3. Диверсификация протоколов

    Не храните все яйца в одной корзине смарт-контрактов. Даже гиганты вроде Curve или Aave могут содержать скрытые баги. Распределяя средства между разными блокчейнами и протоколами, вы снижаете риск полной потери капитала.

    4. Страхование

    В DeFi существуют протоколы децентрализованного страхования (например, Nexus Mutual). Вы можете купить покрытие на случай взлома смарт-контракта. Это работает как обычная страховка: вы платите премию, и если происходит страховой случай (взлом), сообщество голосует за выплату компенсации.

    Формула расчета стоимости страховки часто зависит от оценки риска протокола:

    Где — стоимость страховки (Cost), — сумма покрытия (Amount), — коэффициент риска протокола (Risk factor, например, 2% годовых), — время покрытия (Time).

    Заключение

    Безопасность в DeFi — это бесконечная гонка вооружений между разработчиками защиты и хакерами. Понимание векторов атак, таких как Reentrancy и манипуляция оракулами, а также соблюдение цифровой гигиены (отзыв аппрувов, проверка аудитов) — это необходимый минимум для выживания в этой экосистеме.

    Мы завершили технический блок курса. Вы знаете криптографию, консенсус, смарт-контракты и основы DeFi безопасности. В следующих модулях мы перейдем к более глобальным темам: масштабируемости блокчейнов (Layer 2 решения) и будущему Web3.