Оглавление
На блоке 4 370 000 в сети Эфириума произведён технический хард-форк byzantium. Это первая половина масштабного обновления metropolis. В отличие от хард-форка Биткойна, при обновлении Byzantium появления новой валюты, ещё одного Эфириума, не ожидалось. И хотя с этим обновлением долгожданные анонимные транзакции и Proof-of-Stake ещё не вводятся, оно несёт в себе несколько интересных изменений, о которых нужно знать.
Сокращение вознаграждения за майнинг
Размер вознаграждения за намайненный блок будет уменьшен с 5 ETH до 3 ETH. Это изменение производится в рамках подготовки к переходу на алгоритм Proof-of-Stake, при котором pow-майнинг будет исключён полностью. При том что награда за майнинг была снижена, реализация прежнего плана по экспоненциальному увеличению интервала между блоками – так называемого «ледникового периода» – была отложена. Изначально этот «ледниковый период» был придуман как мера, стимулирующая принятие новых цепочек при выполнении хард-форков.
Подготовка к введению анонимных транзакций
Добавлены четыре нативных контракта, которые позволяют выполнять определённые дорогостоящие вычислительные операции непосредственно на том CPU, на котором запущена виртуальная машина Эфириума (EVM). Эти четыре функции (возведение в степень больших модулей, добавление эллиптической кривой, скалярное умножение эллиптической кривой и спаривание эллиптических кривых) необходимы для имплементации в сеть Эфириума zk-SNARK, криптографического решения, которое в один прекрасный день позволит проводить в ней анонимные транзакции.
При выполнении контрактов на EVM, они могут работать до тех пор, пока не израсходуют весь свой газ. Это ограничение по газу было введено для того, чтобы предотвратить бесконечные циклы. После введения четырёх перечисленных нативных контрактов, эти четыре операции становятся доступны по адресу смарт-контракта, однако после их вызова последовательность операций выполняется не на EVM, а на CPU машины, на которой запущен клиент Эфириума, что позволит значительно сократить потребление газа zk-SNARK при их последующей реализации.
Коротко: некоторые из основных вычислений, необходимых для анонимных транзакций, теперь требуют меньшего расхода газа и производятся вне EVM.
Увеличение скорости обработки транзакций
Раньше каждая выписка о выполненной транзакции содержала информацию о корне дерева состояния транзакции. То есть сразу после выполнения этой транзакции корень дерева Меркла добавлялся к дереву. Корень дерева состояний – это одна из немногих зависимостей, которые есть у одной транзакции по отношению к другим транзакциям в блоке. В результате удаления этой зависимости и добавления нескольких дополнительных параметров, транзакции теперь могут обрабатываться параллельно.
«Корневой» параметр по-прежнему будет содержаться в выписке с информацией о транзакции, но его значение будет заменено двоичной цифрой: 0x0 для транзакций, завершившихся неудачей, и 0x1 для успешно выполненных транзакций.
Вкратце: теперь транзакции могут обрабатываться параллельно.
Усовершенствования смарт-контрактов
Раньше для досрочной остановки выполнения операций смарт-контракта разработчики использовали команду ‘throw'. Она, по сути, запускает бесконечный цикл, который воспроизводится до тех пор, пока не будет израсходован весь газ и выполнение контракта не будет прервано. У такого решения есть два недостатка:
- В процессе прекращения операций контракта вы теряете весь остаток газа.
- Израсходовав весь остающийся газ, контракт не может вернуть сообщение об ошибке.
То есть вы не только теряете свой газ, но и не узнаёте о причине сбоя выполнения контракта и его остановки. В Byzantium у разработчиков появилась возможность останавливать выполнение контракта, не сжигая остаток газа, путём введения кода операции REVERT. Это позволяет контракту потенциально возвращать сообщение об ошибке.
Коротко: смарт-контракты стали ещё немного умнее.
Прочее
В Byzantium присутствуют и другие исправления и изменения, но именно перечисленные выше я считаю наиболее значимыми. Получить более подробную техническую информацию, а также полный список обновлений, вы можете, ознакомившись с предложениями по улучшению Эфириума.