Доказательство работы (PoW)
Последнее редактирование: @wackerow(opens in a new tab), 29 марта 2024 г.
Ethereum, как и Bitcoin, в настоящий момент использует протокол доказательства работы (Proof-of-work, PoW)(opens in a new tab). Он позволяет узлам сети Ethereum согласовать состояние всей информации, зарегистрированной в блокчейне Ethereum, а также предотвращает некоторые виды экономических атак.
В течение следующего года доказательство работы будет заменено на доказательство владения (Proof-of-Stake, PoS). Переход на доказательство владения также приведет к постепенному отказу от майнинга Ethereum. Подробнее о слиянии.
Прежде чем начать
Для лучшего понимания этой страницы мы рекомендуем сначала почитать о транзакциях, блоках и механизмах консенсуса.
Что такое доказательство работы (PoW)?
Доказательство работы — это механизм, который позволяет децентрализованной сети Ethereum прийти к консенсусу или согласованности таких вещей, как остатки на счетах и порядок транзакций. Это предотвращает «двойное расходование» пользователями своих монет и гарантирует, что цепочку Ethereum чрезвычайно сложно атаковать или подвергнуть манипуляциям.
Доказательство работы и майнинг
Доказательство работы — это алгоритм, который устанавливает сложность и правила работы майнеров. Майнинг – это и есть сама «работа». А именно — добавление правильных блоков в блокчейн. Это важно, потому что длина цепочки помогает сети следовать правильной цепи Ethereum и понимать текущее состояние Ethereum. Чем больше «работы» было завершено, тем длиннее цепочка и больше номер блока и тем более определенным становится текущее состояние сети.
Как работает доказательство работы в сети Ethereum?
Транзакции в Ethereum обрабатываются в блоках. У каждого блока есть:
- Сложность блока, например: 3 324 092 183 262 715
- MixHash, например:
0x44bca881b07a6a09f83b130798072441705d9a665c5ac8bdf2f39a3cdf3bee29
- Nonce, например:
0xd3ee432b4fb3d26b
Данные этого блока напрямую относятся к доказательству работы.
Работа в системе с доказательством работы
Протокол доказательства работы (Ethash) требует, чтобы майнеры прошли через сложные вычисления и методом проб и ошибок нашли уникальное число Nonce для блока. В цепочку можно добавлять только блоки с верным числом Nonce.
При создании блока майнер неоднократно хэширует набор данных, который вы можете получить только от загрузки и запуска всей цепочки (что и делает майнер), с помощью математической функции. Набор этих данных используется для генерации mixHash ниже целевого числа Nonce, что продиктовано сложностью блока. Лучший способ найти mixHash — это метод проб и ошибок.
Сложность определяет, как долго будет искаться нужный хэш. Чем ниже целевое значение, тем меньше набор допустимых хэшей. Однажды сгенерированный хэш невероятно легко проверяется другими клиентами и майнерами. Даже если изменена будет одна транзакция, хеш окажется совершенно другим, тем самым сигнализируя о мошенничестве.
Хеширование позволяет легко обнаружить мошенничество. Но доказательство работы как процесс сам по себе является большим сдерживающим фактором для атаки на цепь.
Доказательство работы и безопасность
Майнеры стимулируются на работу над основной цепочкой Ethereum. Мало стимулов для того, чтобы подгруппа майнеров начинала свою собственную цепь: это подрывает систему. Блокчейны полагаются на то, что есть только одно верное состояние системы. И пользователи всегда будут выбирать самую длинную и «тяжелую» цепочку.
Цель доказательства работы — увеличить эту цепочку. Самая длинная цепочка является верной, потому что в ней было выполнено больше всего вычислительной работы. В системе с доказательством работы Ethereum почти невозможно создавать новые блоки, которые стирают транзакции, создают поддельные или поддерживают вторую цепочку. Это связано с тем, что злоумышленнику-майнеру нужно будет всегда решать одноразовый номер блока Nonce быстрее, чем все остальные.
Чтобы постоянно создавать вредоносные, но действительные блоки, вам потребуется более 51 % мощности сети майнинга, чтобы превзойти всех остальных. Вам понадобится много вычислительных мощностей, чтобы выполнить это количество «работы». И потраченная энергия может даже перевесить выигрыш, который вы получите в результате атаки.
Экономика доказательства работы
Доказательство работы также отвечает за выпуск новой валюты в систему и стимулирование майнеров к выполнению работы.
Майнеры, успешно создавшие блок, получают вознаграждение в виде двух только что отчеканенных ETH, но более не получают все транзакционные комиссии, так как базовая комиссия сгорает, пока чаевые и вознаграждение за блок переходят к майнеру. Майнер также может получить 1,75 ETH за Uncle-блок. Uncle-блоки — это действительные блоки, созданные майнером практически в то же время, когда другой майнер добыл успешный блок. Uncle-блоки обычно появляются из-за задержки в сети.
Финальность
Транзакция имеет «финальность» в Ethereum, когда она является частью блока, который не может быть изменен.
Поскольку майнеры работают децентрализованно, два действительных блока могут быть добыты одновременно. Это на время создает ветвление. В конце концов одна из этих цепочек станет основной, и это произойдет после того, как следующий блок будет добыт и добавлен в эту цепь, что сделает ее длиннее.
Но что еще больше усложняет ситуацию — транзакции, отклоненные на временном ответвлении, могли быть включены в принятую цепочку. Это означает, что блок может быть отменен. Таким образом, финальность означает время, которое вы должны подождать, прежде чем считать транзакцию необратимой. Для Ethereum рекомендуемое время составляет 6 блоков (или чуть больше 1 минуты). После шести блоков можно с относительной уверенностью сказать, что транзакция прошла успешно. Для большей уверенности в этом вы можете подождать дольше.
Финальность следует иметь в виду при разработке децентрализованных приложений. Будет неудобно сообщать пользователям неверную информацию о транзакции, особенно если транзакция имеет большую ценность.
Помните, что это время не включает время ожидания, пока майнер использует транзакцию в блоке.
Энергопотребление в системе с доказательством работы
Основной аспект критики доказательства работы — это количество энергии, необходимое для обеспечения безопасности сети. Для обеспечения безопасности и децентрализации Ethereum потребляет 73,2 ТВт в год, что эквивалентно потреблению энергии такой страны среднего размера, как Австрия.
Преимущества и недостатки
Преимущества | Минусы |
---|---|
Доказательство работы нейтрально. Вам не нужен ETH, чтобы начать, а вознаграждения за блок позволяют вам перейти от 0 ETH к положительному балансу. Для начала работы с доказательством владения вам понадобится ETH. | Доказательство работы потребляет много энергии, что вредно для окружающей среды. |
Доказательство работы — это испытанный и проверенный механизм консенсуса, который на протяжении многих лет обеспечивает безопасность и децентрализацию Bitcoin и Ethereum. | Если вы хотите майнить, вам нужно специальное оборудование, а это большие инвестиции. |
По сравнению с доказательством доли довольно легко внедрить. | Из-за растущих потребностей в вычислениях майнинговые пулы потенциально могут доминировать среди майнеров, что ведет к централизации и рискам безопасности. |
Сравнение с доказательством владения
В конечном счете доказательство владения имеет ту же цель, что и доказательство работы: безопасно помочь децентрализованной сети в достижении консенсуса. Но есть некоторые различия в процессе и персонале.
- Доказательство владения устраняет важность вычислительной мощности для стейкинга ETH.
- Доказательство владения заменяет майнеров валидаторами. Валидаторы поставляют ETH для активации способности создавать новые блоки.
- Валидаторы не участвуют в создании блоков, вместо этого они выбираются произвольно с помощью алгоритма.
- Финальность более ясна: если на определенных контрольных точках 2/3 валидаторов соглашаются с состоянием блока, это считается окончательным. Валидаторы должны поставить на это все свои ставки, поэтому попытка мошенничать приведет к потере всей своей ставки.
Подробнее о доказательстве владения