PLONK:как вычисления в цепочке можно «доказывать», а не «воспроизводить»
В эти дни я изучаю эту систему доказательств PLONK: чем больше смотрю, тем больше ощущаю, что верификация в блокчейне она полностью переписывает логику
Сначала простой вопрос: как в цепочке подтвердить, что запись вычисления верна
Самый прямой способ — «пересчитать ещё раз»: каждый узел запускает одно и то же вычисление, если результаты совпадают — значит, всё верно. Этот метод хоть и туповат, но работает; проблема в том, что стоимость растёт линейно вместе с объёмом вычислений: чем сложнее вычисление, тем выше накладные расходы на повторную проверку во всей сети
Что делает PLONK, так это заменяет «пересчитать ещё раз» на «предъявить доказательство постоянного размера». Каким бы сложным ни было вычисление, размер доказательства, которое должен проверить верификатор, в основном остаётся на уровне константы — затраты почти не раздуваются в зависимости от масштаба вычислений. Это не оптимизация, а перестройка структуры затрат с самого основания
━━━━━━━━━━━━━━
В основе лежат KZG-полиномиальные коммитменты
PLONK сворачивает все ограничения схемы в несколько полиномов. Доказующему не нужно расписывать тебе подробности вычислений — достаточно доказать, что значения этих полиномов в некоторых точках корректны. Верификатор получает не «вычислительный процесс», а всего лишь несколько операций над группами, которые считаются очень легко. Огромная масса трасс выполнения сжимается в несколько лаконичных алгебраических проверок
Есть ещё ключевой дизайн: предварительная обработка (preprocessing)
Ту часть схемы, которая публична и фиксирована, можно заранее посчитать в офлайне — не нужно каждый раз делать это заново при каждой проверке в цепочке. Во время on-chain верификации остаётся обрабатывать лишь лёгкую часть, относящуюся к конкретному текущему доказательству. Именно поэтому PLONK позволяет добиться «универсальности и возможности обновления»: одна и та же рамка может обслуживать схемы разных размеров — не нужно заново проходить доверенную настройку при замене схемы
━━━━━━━━━━━━━━
Если перенести это на Dusk, то эта система доказательств напрямую вызывается CVM
После выполнения приватного смарт-контрактного кода не нужно «выбрасывать результат», чтобы другие заново перепроверяли верификацию — система сразу выдаёт доказательство. Само выполнение и есть процесс генерации доказательства
Именно в этом заключается самая суть различия между «доказуемостью» и «воспроизводимостью»: один подход опирается на то, что все захотят пересчитать ещё раз, а другой — на математику, благодаря которой тебе не нужно ничего считать, чтобы можно было доверять
@Dusk_Foundation $DUSK #dusk
В эти дни я изучаю эту систему доказательств PLONK: чем больше смотрю, тем больше ощущаю, что верификация в блокчейне она полностью переписывает логику
Сначала простой вопрос: как в цепочке подтвердить, что запись вычисления верна
Самый прямой способ — «пересчитать ещё раз»: каждый узел запускает одно и то же вычисление, если результаты совпадают — значит, всё верно. Этот метод хоть и туповат, но работает; проблема в том, что стоимость растёт линейно вместе с объёмом вычислений: чем сложнее вычисление, тем выше накладные расходы на повторную проверку во всей сети
Что делает PLONK, так это заменяет «пересчитать ещё раз» на «предъявить доказательство постоянного размера». Каким бы сложным ни было вычисление, размер доказательства, которое должен проверить верификатор, в основном остаётся на уровне константы — затраты почти не раздуваются в зависимости от масштаба вычислений. Это не оптимизация, а перестройка структуры затрат с самого основания
━━━━━━━━━━━━━━
В основе лежат KZG-полиномиальные коммитменты
PLONK сворачивает все ограничения схемы в несколько полиномов. Доказующему не нужно расписывать тебе подробности вычислений — достаточно доказать, что значения этих полиномов в некоторых точках корректны. Верификатор получает не «вычислительный процесс», а всего лишь несколько операций над группами, которые считаются очень легко. Огромная масса трасс выполнения сжимается в несколько лаконичных алгебраических проверок
Есть ещё ключевой дизайн: предварительная обработка (preprocessing)
Ту часть схемы, которая публична и фиксирована, можно заранее посчитать в офлайне — не нужно каждый раз делать это заново при каждой проверке в цепочке. Во время on-chain верификации остаётся обрабатывать лишь лёгкую часть, относящуюся к конкретному текущему доказательству. Именно поэтому PLONK позволяет добиться «универсальности и возможности обновления»: одна и та же рамка может обслуживать схемы разных размеров — не нужно заново проходить доверенную настройку при замене схемы
━━━━━━━━━━━━━━
Если перенести это на Dusk, то эта система доказательств напрямую вызывается CVM
После выполнения приватного смарт-контрактного кода не нужно «выбрасывать результат», чтобы другие заново перепроверяли верификацию — система сразу выдаёт доказательство. Само выполнение и есть процесс генерации доказательства
Именно в этом заключается самая суть различия между «доказуемостью» и «воспроизводимостью»: один подход опирается на то, что все захотят пересчитать ещё раз, а другой — на математику, благодаря которой тебе не нужно ничего считать, чтобы можно было доверять
@Dusk_Foundation $DUSK #dusk
