Блокчейн/Уровень VII · Эволюция/7.1 Ethereum: мировой компьютер/Урок 2
Учетные записи и глобальное состояние
От дискретных монет к единому изменяемому глобальному состоянию
МатериалыЖелтая книга Ethereum (Г. Вуд)Белая книга Ethereum Виталика Бутерина (2013/2014)Доступ к Etherscan или другому исследователю блоков Ethereum
Любопытство
- Почему отслеживание богатства как совокупности невыпущенных ресурсов затрудняет создание универсальных программ?
- Какие механические последствия возникают при возможности для любой транзакции читать и записывать всю память сети?
- Как модель, основанная на счетах, влияет на стоимость проверки истории по сравнению с набором UTXO?
Исследование
- Биткойн отслеживает свою стоимость посредством неиспользованных результатов транзакций, или UTXO. Каждая транзакция использует определенные входящие ресурсы и создает новые выходящие ресурсы; процедура проверки учитывает только те монеты, которые тратятся (учебный материал 2.2.1). Эта модель является локальной и дискретной. Ethereum, запущенный в июле 2015 года Виталиком Бутерином и его сооснователями, включая Гэвина Вуда, использует машину состояний, основанную на счетах. Каждый адрес имеет свой баланс, который обновляется непосредственно внутри системы. Вся история сети сводится к одному глобальному объекту состояния: текущему балансу всех счетов и информации о хранилищах всех развернутых контрактов.
- В этой модели существуют два типа счетов: счета, находящиеся в частной собственности (EOA), которые управляются приватными ключами, и контрактные счета, которые управляются кодом. Счет EOA инициирует транзакции; контракт выполняет свою логику только при вызове. Функция перехода состояния принимает текущее глобальное состояние и транзакцию, после чего формирует новое глобальное состояние. Поскольку каждый узел вычисляет этот переход детерминистично, исходя из одинаковой отправной точки, консенсус достигается без необходимости доверия. Такая структура позволяет осуществлять универсальные вычисления, поскольку любой счет может хранить в своей памяти произвольные данные.
- Выразительность модели счетов позволяет создавать сложные приложения, такие как децентрализованные биржи и протоколы кредитования. Контракт может представлять собой активы стоимостью в миллиарды и выполнять сложную логику на основе глобальных условий. Однако такая мощность приводит к уязвимости. Поскольку состояние контракта изменяемо и общедоступно, одна ошибка в коде может привести к полной потере всего баланса или к повреждению связанных с ним контрактов. Уязвимость ре-энтранса, использованная при хакерской атаке на The DAO (июнь 2016 года), показала, как локальный дефект может повлиять на глобальное состояние системы, что привело к созданию новой версии проекта под управлением сообщества.
- Рост состояния является неотъемлемым следствием такой архитектуры. Набор UTXO в Bitcoin также увеличивается, но каждая запись в нем имеет небольшие размеры и удаляется после использования; хранилище контрактов в Ethereum постепенно заполняется. Каждая операция `SSTORE` добавляет данные, которые сохраняются бесконечно долго, если только их не сбросить до нуля (что также требует затрат энергии). Такой безграничный рост делает работу полного узла все более ресурсоемкой с точки зрения дискового пространства и памяти. Узлы должны хранить всё глобальное состояние для проверки транзакций, что создает компромисс между вычислительной мощностью и затратами на верификацию.
- Желтая книга Ethereum формализует это как детерминистическую функцию перехода состояния. EVM обрабатывает инструкции с помощью стековой машины: операции вроде `ADD` или `SLOAD` изменяют локальный контекст выполнения и при необходимости обновляют глобальное хранилище данных счетов. Такая архитектура обеспечивает тьюринговую полноту, но для завершения работы требуется ресурс «gas». Каждая операция потребляет «gas», что предотвращает бесконечные циклы и ограничивает вычислительную стоимость любой транзакции в отношении лимита «gas» блока.
- Откройте инструмент для анализа блокчейн-данных, такой как Etherscan, и изучите недавнюю операцию с контрактом. Обратите внимание на вкладку «Storage» на странице контракта — здесь перечислены пары «ключ-значение», составляющие постоянное состояние счета. Заметьте, как эти значения меняются после каждой транзакции, связанной с этим адресом. Этот вид представления показывает конкретную реальность глобального состояния: код не только выполняется, но и сохраняется, а его данные остаются в течение множества транзакций и со временем увеличиваются.
Ключевые факты
- Этериум использует модель, основанную на счетах, при которой балансы обновляются непосредственно, в отличие от системы UTXO у Биткоина.
- Глобальное состояние включает все остатки счетов и хранение контрактов, к которым любая транзакция может читать или записывать данные.
- Учетные записи по контрактам управляются кодом, а учетные записи, находящиеся в частной собственности, — приватными ключами.
- Рост государства неограничен, поскольку хранение контрактов продолжается бесконечно, что увеличивает требования к аппаратному обеспечению узлов.
- Одна ошибка в умном контракте может привести к исчерпанию всего его баланса из-за изменяемой природы глобального состояния.
- EVM выполняется детерминистично на каждом узле, обеспечивая консенсус за счёт идентичных переходов состояния.
Упражнение девять, шесть, три, один
9СобратьПеречислите 9 конкретных различий между моделью UTXO биткоина и машиной состояния на основе счетов этериума в отношении структуры данных, объема проверок и роста объема хранения.
6СгруппироватьСгруппируйте эти 9 элементов в 6 категорий: сохранение данных, вычислительная сложность, последствия для безопасности, потребление ресурсов узла, механизмы консенсуса и пользовательский опыт разработчика.
3Выделить главноеСократите 6 кластеров до 3 основных причин, по которым модель аккаунта позволяет выполнять универсальные вычисления за счет увеличения размера состояния.
1КристаллизоватьИзменяемое глобальное состояние позволяет осуществлять сложные взаимодействия между контрактами, что затруднено в системе UTXO.
Проверка фактов
Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.