Данкшардинг
Данкшардинг — это то, как Ethereum становится по-настоящему масштабируемым блокчейном. Но есть несколько улучшений протокола, которые для этого потребуются. Протоданкшардинг — промежуточный шаг на этом пути. Оба стремятся сделать транзакции на уровне 2 как можно дешевле для пользователей и должны масштабировать Ethereum до > 100 000 транзакций в секунду.
Что такое протоданкшардинг?
Протоданкшардинг (EIP-4844(opens in a new tab)) позволяет роллапам снизить стоимость данных, добавляемых в блоки. Название происходит от двух исследователей, которые предложили идею: Protolambda и Dankrad Feist. Раньше роллапы не позволяли удешевить стоимость транзакций для пользователей, так как они публиковали свои транзакции в пространстве CALLDATA
.
Это дорого, потому что они обрабатываются всеми узлами Ethereum и остаются в цепочке навсегда, несмотря на то, что данные роллапам нужны только в течение короткого времени. Протоданкшардинг добавляет BLOB-объекты с данными, которые можно отправлять и прикреплять к блокам. Данные в этих BLOB-объектах не доступна виртуальной машине Ethereum и автоматически удаляется через определенное время (на момент написания это время составляет 4096 эпох, или 18 дней). Это означает, что роллапы могут отправлять свои данные гораздо дешевле, что в свою очередь удешевит транзакции для конечных пользователей.
Как проверяются данные BLOB-объектов?
Роллапы размещают выполняемые транзакции в BLOB-объектах с данными. Они также размещают в данных фиксацию. Для этого они подгоняют данные под полиномиальную функцию. Затем эту функцию можно оценить в различных точках. Например, если мы определим чрезвычайно простую функцию f(x) = 2x – 1
, то сможем оценить эту функцию для x = 1
, x = 2
, x = 3
, получив результаты 1, 3, 5
. Проверяющий применяет ту же функцию к данным и оценивает их в тех же точках. Если исходные данные будут изменены, функция не будет идентичной, как и значения оценки в каждой точке. На практике фиксация и доказательство являются более сложными процессами, так как они упакованы в криптографические функции.
Что такое KZG?
KZG (Kate-Zaverucha-Goldberg) — это первые буквы имен трех авторов(opens in a new tab) схемы, которая уменьшает BLOB-объект с данными до небольшой криптографической фиксации(opens in a new tab). BLOB-объект с данными, отправленный роллапом, необходимо проверить, чтобы убедиться, что в нем нет нарушений. Этот процесс подразумевает повторное выполнение транзакций в BLOB-объекте для проверки действительности фиксации. Концептуально этот процесс аналогичен проверке действительности транзакций Ethereum на уровне 1 с помощью доказательств Меркла. KZG — это альтернативное доказательство, которое подгоняет данные под полиномиальное уравнение. Фиксация оценивает полином в некоторых секретных точках данных. Проверяющий подгоняет данные под тот же полином и оценивает его при тех же значениях, проверяя, совпадает ли результат. Этот способ проверки данных совместим с методами нулевого разглашения, используемыми некоторыми роллапами, а впоследствии и другими частями протокола Ethereum.
Что представляла собой церемония KZG?
В ходе церемонии KZG участники сообщества Ethereum могли совместно сгенерировать секретную случайную строку чисел, которую можно использовать для проверки некоторых данных. Очень важно, чтобы эта строка чисел не была известна и никто не мог ее воссоздать. Для этого каждый участник церемонии получал строку от предыдущего участника. Затем он создавал несколько новых случайных значений (например, разрешив браузеру отслеживать движение мыши) и смешивал их с предыдущим значением. Затем он отправлял значение следующему участнику и удалял его на своем локальном компьютере. Если хотя бы один человек на церемонии сделал это честно, конечный результат не будет известен злоумышленнику.
Церемония KZG EIP-4844 была открытой для всех и десятки тысяч участников добавили свою собственную энтропию. Всего было сделано более 140 000 пожертвований, благодаря чему эта церемония стала крупнейшей в мире в своем роде. Чтобы эта церемония была сорвана, 100 % участников должны были бы быть активно нечестными. С точки зрения участников нет необходимости доверять другому человеку, если они знают, что сами были честны, и понимают, как обезопасили церемонию (они самостоятельно выполнили требование по наличию хотя бы одного честного участника).
Что такое данкшардинг?
Данкшардинг — это полная реализация масштабирования роллапами, которая началась с протоданкшардинга. Данкшардинг принесет огромное количество места в Ethereum для роллапов, чтобы сбросить их сжатые данные транзакций. Это означает, что Ethereum сможет с легкостью поддерживать сотни отдельных роллапов, а миллионы транзакций в секунду станут реальностью.
Для этого количества BLOB-объектов, прикрепленных к блокам, будет увеличено с шести (6) в протоданкшардинге до 64 в полном данкшардинге. Остальные необходимые изменения — это все обновления того, как работают клиенты консенсуса, чтобы они могли обрабатывать новые большие BLOB-объекты. Некоторые из этих изменений уже на дорожной карте для других целей, независимо от данкшардинга. Например, данкшардинг требует реализации разделения предлагающих и строителей. Это обновление, которое разделяет задачи по строительству и предложению блоков между различными валидаторами. Аналогично, выборка доступности данных необходима для данкшардинга, но она также необходима для разработки очень легких клиентов, которые не хранят много исторических данных («клиенты без состояния Ethereum»).
Текущий прогресс
Полный данкшардинг наступит через несколько лет. Тем временем в ходе церемонии KZG было добавлено более чем 140 000 наборов значений, и был разработан EIP(opens in a new tab) для протоданкшардинга. Это предложение было полностью реализовано во всех тестовых сетях и запущено в основной сети в ходе обновления Cancun-Deneb («Dencun») в марте 2024 года.
Дополнительная литература
- Записки о протоданкшардинге(opens in a new tab) — Виталик Бутерин
- Записки Данкрада о данкшардинге(opens in a new tab)
- Данкрад, Прото и Виталик Бутерин обсуждают данкшардинг(opens in a new tab)
- Церемония KZG(opens in a new tab)
- Речь Карла Бихуйзена на Devcon о настройках с доверием(opens in a new tab)
- Подробнее о выборке доступности данных для BLOB-объектов(opens in a new tab)
- Данкрад Фейст об обязательствах и доказательствах в KZG(opens in a new tab)
- Полиномиальные обязательства KZG(opens in a new tab)