MSTR Cat

Блокчейн/Уровень VI · После биткоина/6.3 Ethereum и смарт-контракты/Урок 1

Whitepaper Ethereum и EVM

Машина состояний, которая работает на каждой ноде и питается газом

МатериалыТекст whitepaper Ethereum (2014)Yellow Paper Ethereum (Гэвин Вуд, 2014)Доступ к блок-эксплореру, например Etherscan

Любопытство

  1. Зачем компьютеру, реплицированному на тысячах машин, взимать плату за каждую отдельную инструкцию?
  2. Что сломается, если код на этих машинах сможет выполняться в бесконечном цикле без всякого штрафа?
  3. Как две разные модели учёта — UTXO и балансы, обновляемые на месте, — могут по-разному представлять одни и те же средства?

Исследование

  1. Виталик Бутерин, которому тогда было девятнадцать, в конце 2013 года написал whitepaper Ethereum, где предложил платформу для вычислений общего назначения, а не отдельную валюту. Проект был публично анонсирован в январе 2014 года; в число его сооснователей вошли Гэвин Вуд, Джозеф Любин, Чарльз Хоскинсон, Энтони Ди Иорио и Михай Алисие. С июля по август 2014 года проходил краудсейл, в ходе которого на проект было собрано около 31 500 BTC. Сеть была официально запущена 30 июля 2015 года — это ознаменовало переход от ограниченных скриптовых возможностей биткоина к полностью программируемой среде, в которой разработчики могут создавать сложные приложения прямо в блокчейне.
  2. Ядро этой архитектуры — виртуальная машина Ethereum (EVM), тьюринг-полная машина состояний, реплицированная на каждой полной ноде. В отличие от UTXO-модели биткоина, которая отслеживает отдельные непотраченные выходы, Ethereum использует модель аккаунтов, в которой балансы обновляются на месте. Каждый аккаунт — управляется ли он приватным ключом или кодом — хранит nonce и баланс. При выполнении транзакции EVM обрабатывает её детерминированно: каждая нода самостоятельно вычисляет один и тот же результат, что обеспечивает консенсус без необходимости доверять другим участникам.
  3. Смарт-контракты — это программы, написанные на высокоуровневых языках вроде Solidity и скомпилированные в низкоуровневые опкоды, которые выполняет EVM. Такие контракты одновременно хранят ценность и содержат логику. Контракт может хранить эфир, исполнять сделки по условиям или управлять голосованиями на основе входных данных от других аккаунтов. Поскольку выполнение детерминировано, а исходный код многих контрактов опубликован, любой может проверить логику до взаимодействия с контрактом. Такая прозрачность во многих финансовых приложениях устраняет необходимость в доверенных посредниках: правила обеспечиваются программным кодом, а не усмотрением людей.
  4. Чтобы предотвратить бесконечные циклы и атаки типа «отказ в обслуживании», каждая операция EVM расходует «газ» — единицу вычислений, оплачиваемую в эфире. Отправитель заранее задаёт лимит газа; если в ходе выполнения этот запас исчерпывается, изменения состояния откатываются, но израсходованный газ всё равно списывается. Это экономическое ограничение вынуждает разработчиков писать эффективный код и защищает сеть от вредоносных или содержащих ошибки контрактов, которые иначе могли бы парализовать блокчейн. Цена газа растёт и падает вместе со спросом: изначально пользователи просто назначали свою цену, а с 2021 года базовая комиссия, заданная протоколом, корректируется автоматически, и сверху к ней добавляются чаевые (об этом — в одном из следующих уроков).
  5. Проектные решения EVM отражают компромисс между выразительностью и безопасностью. Тьюринг-полнота позволяет выполнять произвольные вычисления, но добавляет сложность, в которой могут скрываться уязвимости. Модель аккаунтов делает некоторые программы проще, чем UTXO, однако контракты, вызывающие друг друга, нужно писать очень внимательно, чтобы избежать ошибок вроде повторного входа (reentrancy) — уязвимости, стоявшей за взломом The DAO (об этом — в одном из следующих уроков). Стандартизация EVM позволила сложиться обширной экосистеме инструментов и аудиторов, знакомых с этим набором инструкций.
  6. Откройте блок-эксплорер, например Etherscan, и изучите любую недавнюю транзакцию, которой был развёрнут смарт-контракт. Обратите внимание на статус «Contract Creation» и на количество израсходованного газа в сравнении с лимитом газа. Заметьте, что входные данные транзакции содержат скомпилированный байткод, который сохраняется по новому адресу. Этот конкретный шаг показывает механику развёртывания: код загружается, проверяется каждой нодой и закрепляется в машине состояний блокчейна, готовый к выполнению при будущих взаимодействиях.

Ключевые факты

  • Виталик Бутерин написал whitepaper Ethereum в конце 2013 года; проект был анонсирован в январе 2014 года.
  • Краудсейл в июле–августе 2014 года принёс фонду разработки Ethereum около 31 500 BTC.
  • Основная сеть Ethereum была запущена 30 июля 2015 года и принесла с собой тьюринг-полную виртуальную машину.
  • Каждая операция EVM расходует газ, оплачиваемый в эфире, — это предотвращает бесконечные циклы и гарантирует завершение выполнения.
  • Ethereum использует модель аккаунтов с обновлением балансов на месте, в отличие от UTXO-модели биткоина.
  • Смарт-контракты обычно пишут на Solidity, который компилируется в детерминированный байткод EVM.

Упражнение девять, шесть, три, один

9СобратьПеречислите 9 технических ограничений или проектных решений из whitepaper Ethereum, которые отличают его от протокола Bitcoin.
6СгруппироватьСгруппируйте эти 9 пунктов в 6 категорий по их влиянию: управление состоянием, безопасность, стоимость выполнения, поддержка языков программирования, консенсус и управление протоколом (governance).
3Выделить главноеСведите 6 кластеров к 3 основным причинам, по которым тьюринг-полнота требует механизма газа.
1КристаллизоватьНапишите 1 предложение о том, как детерминированность EVM обеспечивает глобальный консенсус относительно переходов состояния.

Проверка фактов

Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.

Открыть в интерактивной академии →

EN PT ES ZH JA KO DE FR MS