# zkSync: Как завернуть блокчейн

By [Solodan](https://paragraph.com/@solodan) · 2023-11-10

---

О **масштабировании** Эфириума слышно из каждого угла — во всей обрушившейся на пользователя криптовалют терминологии легко запутаться: L2, Rollup, доказательства корректности, SNARK, и это только начало. В этом гайде мы дадим самое техническое нетехническое объяснение zkSync, ключевого решения для масштабирования Эфира, максимально детально разобрав всю суть. Впрочем попытаемся дать более популярное объяснение, чем в технической документации.

**О технологиях**
-----------------

### `Проблема масштабирования`

Если вы хоть раз пользовались Эфиром, то хорошо понимаете, зачем все это масштабирование нужно. Транзакции соревнуются за ограниченную вычислительную мощность, а значит, за них приходится платить высокие комиссии, если важно обработать их быстро. Комиссии в тысячах долларов — не предел. Эту проблему призваны устранить L2.

### `Блокчейн поверх блокчейна`

Очевидное решение — обрабатывать транзакции вне Эфириума. Затем их можно **связывать воедино** и отправлять на основную сеть в сжатой форме или вместо транзакций отправлять доказательства корректности.

Для обеспечения должной безопасности транзакции обрабатываются на блокчейнах, называемых сетями второго уровня (L2). Эти сети принимают транзакции, выполняют вычисления и обрабатывают их. Затем они их "сворачивают” (roll up) в одну и передают в основную сеть.

Такой подход, называемый Rollup, позволяет избежать обработки каждой транзакции в Эфириуме. Однако, окончательное подтверждение происходит именно в основной сети. Комиссия же распределяется между индивидуальными транзакциями в связке.

`Оптимизм против пессимизма`
----------------------------

Существует два вида Rollup: **Optimistic Rollups** и **zkRollups.** В чем разница, скажете?

Один аспект, который мы нагло проигнорировали, — это вопрос валидации (проверки и подтверждения) транзакций, обрабатываемых на L2. Естественно, если валидация имеет место только в L2-блокчейне, то безопасность Эфира не используется, а сам L2 уже никакой не L2.

Основа любой сети второго уровня — набор смарт-контрактов в основной сети, которые проверяют утрамбованные в связку транзакции с L2. Но сначала кое-что должно произойти на самом дочернем блокчейне.

Если оптимизм вообще уместен в финансах, то можно предложить следующее решение — изначально предполагать, что все транзакции валидные и производить проверку в основной сети. Такие блокчейны заработали себе название **Optimistic Rollups**. L2, построенные на этом типе Rollup, используют доказательства подлога (Fraud Proofs), которые принимаются в течение фиксированного промежутка времени. При использовании данного решения на основную сеть отправляются подробные данные о транзакциях, хотя и в ужатой форме.

А что предлагают пессимисты? Альтернативный подход заключается в предварительной проверке транзакций на L2 до подачи на основную сеть обобщенных данных о транзакциях и доказательств корректности (Validity Proofs). Доказательства показывают, что новое состояние сети является корректным продолжением предыдущего состояния при проведении выполненных транзакций. Такие L2 называю **zkRollups**.

`А почему бы просто не обмануть систему?`
-----------------------------------------

Эфир служит **уровнем расчетов** для L2, верифицируя итоговое состояние каждой связки транзакций и вычленяя некорректные блоки. То есть, сеть безопасна, поскольку окончательное решение о валидации транзакции принимается в Эфире.

Кроме того, L2 используют такой механизм Proof of Stake как **слешинг** (slashing), который помогает гарантировать, что узлы предоставляют верные данные. Валидаторы предоставляют залог, который ликвидируется, если они пытаются подделывать данные.

Из-за этого у валидаторов есть экономическая мотивация предоставлять верные данные.

### `ZK-SNARK/ZK-STARK`

**Доказательства корректности** с нулевым разглашением (Zero Knowledge — ZK) позволяют проверить, корректна ли транзакция без разглашение каких-либо деталей о ней. Любой может удостовериться в легитимности транзакции без доступа к самим данным.

Другими словами, ZK-доказательства могут показать, что какое-либо утверждение верно без необходимости знать само утверждение. Например, можно доказать, что вы знаете какое-то число, не называя самого этого числа.

zkRollup сети используют доказательства для подтверждения верности транзакций без их обработки в сети Ethereum. Конкретно они применяют протокол ZK-SNARK.

**ZK-SNARK** — протокол, генерирующий лаконичные и оптимальные ZK-доказательства. Однако, он использует публичные параметры, которые могут быть использованы злоумышленниками для создания фальсифицированных доказательств — если им будет доступна информация, на основе которой были сгенерированы те или иные параметры.

Для устранения этой уязвимости несколько участников (доверенных сторон) предоставляют случайные значения, слушающие непредсказуемым элементов в генерации параметров. Если хотя бы один из участников уничтожает данные о своем случайном значении, то исходную информацию становится невозможно восстановить.

**ZK-STARK** — похожее решение, но более безопасное, поскольку в нем не принимают участия доверенные стороны. Вместо публичных параметров в протоколе применяется публично проверяемая случайная функция. Тем не менее, доказательства генерирует он объемные.

Протокол также дает больше возможностей для масштабирования и даже обеспечивают квантовую безопасность, без которой нам не обойтись — в году, этак, 2370.

**ZKSync**
----------

zkSync, разрабатываемый Matter Labs, — L2-решение, созданное на базе Эфириума и использующее технологию zkRollups. Создать zkRollup гораздо сложнее, чем Optimistic Rollup, но зато данное решение дает лучшие гарантии безопасности. Причина в том, что безопасность Optimistic Rollup исходит из теории игр, законов человеческого поведения, а безопасность zkRollup обеспечивается строгой математикой.

Прогнозируемый пиковый показательTPS для zkSync составляет около 2000, что выше, чем у блокчейнов, использующих Optimistic Rollup. Если к нему добавить zkPorter, решение для хранения данных офф-чейн, zkSync может достичь примерно 20 000 TPS.

Существуют две версии zkSync: zkSync 1.0 (Lite), которую выпустили еще в 2020 году, и zkSync 2.0 (Era), релиз которой состоялся совсем недавно.

Сейчас расскажем, почему разработка второй сети заняла столько времени и зачем вообще нужны два блокчейна, но сначала разберемся с проблемой **программируемости**.

### `Программируемость: что такое zkEVM?`

Создать блокчейн с базовыми возможностями — это одно, а вот сеть, которая может выполнять произвольные программы? Далеко не просто. Тем более, если нужны и безопасность, и высокая пропускная способность.

Для сети со смарт-контрактами нужна **виртуальная машина** (как EVM) — абстрактная среда, в которой живет состояние сети.

Для того, чтобы эффективно выполнять программы на Solidity и других языках для EVM в L2-блокчейне, нужно полностью переработать структуру виртуальной машины. Основная трудность разработки — создать zkEVM, быстрый и дешевый блокчейн со смарт-контрактами.

### `zkSync Era и zkSync Lite: в чем разница?`

При создании zkSync 1.0 (Lite) разрабатывалась в первую очередь быстрая и недорогая L2 для базовых транзакций и с минимальной поддержкой смарт-контрактов. По сути, на ней можно только отправлять средства.

zkSync 2.0 (zkSync Era) — это **zkEVM**, то есть сеть с полноценной виртуальной машиной, позволяющей выполнять смарт-контракты.

Matter Labs **не** заявляли о прекращении поддержки zkLite, но сейчас компания явно фокусируется на второй версии сети — неудивительно, учитывая ее большие возможности.

### `Суперсилы zkSync Era`

Часть характеристик zkSync Era унаследовала от zkSync Lite. К ним относятся:

*   **Моментальные транзакции** — Валидаторы предоставляют значительный залог. Консенсус из 2/3 узлов подтверждает, какая транзакция будет входить в следующий блок, т.е. выполняет транзакцию в L2. Происходит это быстро, за доли секунды. Как же гарантируется безопасность? Если транзакция не попадает в следующий блок, то сумма **слешится**, часть идет на компенсацию пользователя, а оставшаяся часть сжигается.
    
*   **Безопасность, устойчивость к цензуре** — Сеть делит узлы на две роли: валидаторы, обрабатывающие транзакции и производящие zk-доказательства, и защитники (Guardians), следящие за активностью в сети. Защитники обнаруживают недобросовестную активность и могут запустить процесс **слешинга**.
    
*   **Еще больше безопасности с новым zk-SNARK** — zkSync разработали и используют SNARK, называемый RedShift, который, в отличие от протоколов STARK, производит короткие доказательства, но при этом **не нуждается в доверенных сторонах**. Более того, RedShift универсален, то есть работает для любого вычисления, и, вероятно, не уязвим перед квантовыми компьютерами.
    

А что привносит новая сеть?

*   **Еще быстрее из-за мощного LLVM-компилятора** — LLVM компилятор дополнительно оптимизирует выполнение кода на языках для EVM.
    
*   **Дешевле из-за улучшенного сжатия данных** — Данные — одна из главных причин высокого газа на L2. zkEVM отправляет на Эфириум сжатые данные об изменении состояния, а не данные транзакций, что уменьшает комиссии.
    
*   **Улучшенный интерфейс из-за встроенной абстракции аккаунта** — Абстракция аккаунта предполагает появление у аккаунта возможностей, которых нет у обычного адреса на Эфире. Например, возможность платить комиссии в произвольном токене. Данная функция позволяет реализовать более удобный интерфейс.
    

### `zkPorter и амбиции zkSync`

zkPorter — дополнительное решение, разрабатываемой Matter Labs, призванное предоставить возможность **офф-чейн хранения данных**. Корректность данных обеспечивается защитниками, надежность надзора которых гарантируется слешингом. zkPorter жертвует часть децентрализации по сравнению с хранением данных на Эфириуме, но позволяет сделать транзакции намного более быстрыми и дешевыми.

Источник: Matter Labs

Использование zkRollup обеспечивает только 100-кратное улучшение масштабируемости, но этого недостаточно для многих финансовых случаев использования. Повышенная активность пользователей неизбежно приведет к росту комиссий. Доступность данных через zkPorter позволяет избежать этих ограничений, минимально жертвуя безопасностью или децентрализацией.

При использовании zkPorter газ может составлять всего $0,03, поскольку большая часть комиссии за транзакцию связана с затратами на доступность данных в Эфириуме.

Цель zkSync — создать спектр решений, сбалансированных по скорости, стоимости, степени безопасности и децентрализации. Пользователи могут выбирать быстрые и недорогие транзакции zkPorter или более децентрализованные и безопасные транзакции на zkSync Era в зависимости от своих потребностей. **Массовое внедрение технологий блокчейна потребует и того, и другого.**

`К чему ажиотаж?`
-----------------

zkSync превосходит в плане безопасности решения, основанные на Optimistic Rollups, такие как Optimism и Arbitrum, поскольку он использует криптографические доказательства, а не на теорию игр и поведенческие паттерны. Новый zkSNARK от zkSync, RedShift, устраняет необходимость в доверенных сторонах, но при этом, в отличие от zkSTARK, все еще генерирует короткие доказательства. В сочетании с применением zkPorter для офф-чейн хранения данных zkSync будет иметь гораздо более низкие комиссии и сможет достигнуть 20 000 TPS. А при реализации шардинга в Эфире решение сможет обеспечить 100 000 TPS.

[По мнению Бутерина](https://vitalik.ca/general/2021/01/05/rollup.html), хотя Optimistic Rollups могут иметь некоторые специфические преимущества, zkRollups выиграют в долгосрочной перспективе.

zkSync конкурирует с другими zkRollup-решениями, такими как Polygon zkEVM, Polygon Zero, Aztec Network, StarkNet и Loopring. Выделить фаворита на такой ранней стадии нелегко, но у zkSync есть ряд очевидных преимуществ:

*   Один из первых — zkSync входит в число первых появившихся zkRollup, в сети уже обработано более 16 млн. транзакций, а TVL превосходит 100 млн.
    
*   Снижение комиссий с помощью zkPorter — размещение данных офф-чейн дает возможность сделать комиссии мизерными
    
*   Использование zkSNARK без доверенных сторон — zkSNARK от zkSync в отличие от StarkNet генерирует короткие доказательства, но при этом не нуждается в доверенных сторонах для создания доказательств
    
*   Встроенная абстракция аккаунта — позволяет реализовывать приложения с комфортным UX, подобным финтех-кошельками и банковским приложениям
    

**Источники**
-------------

1.  [Introducing zkSync: the missing link to mass adoption of Ethereum](https://blog.matter-labs.io/introducing-zk-sync-the-missing-link-to-mass-adoption-of-ethereum-14c9cea83f58) by Alex Gluchowski
    
2.  [zkSync 2.0: Hello Ethereum!](https://blog.matter-labs.io/zksync-2-0-hello-ethereum-ca48588de179) by Matter Labs
    
3.  [gm zkEVM!](https://blog.matter-labs.io/gm-zkevm-171b12a26b36) by Matter Labs
    
4.  [zkPorter: a breakthrough in L2 scaling](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf) by Matter Labs
    
5.  [The zkEVM World: An Overview of zkSync](https://research.binance.com/static/pdf/the-zkevm-world-an-overview-of-zksync.pdf) by Binance Research
    
6.  zkSync Era Basics, zkSynk Docs
    
7.  [Validity Proofs vs. Fraud Proofs Strike Back](https://medium.com/starkware/validity-proofs-vs-fraud-proofs-strike-back-4d0bf90eed15) by StakWare’s Avihu Levy & Uri Kolodny
    
8.  [Layer 2](https://ethereum.org/en/layer-2/) by Ethereum Foundation
    
9.  [ZERO-KNOWLEDGE ROLLUPS](https://ethereum.org/en/developers/docs/scaling/zk-rollups/) by Ethereum Foundation’s contributors
    
10.  [OPTIMISTIC ROLLUPS](https://ethereum.org/en/developers/docs/scaling/optimistic-rollups/) by Ethereum Foundation’s contributors
    
11.  [An incomplete Guide to Rollups](https://vitalik.ca/general/2021/01/05/rollup.html) by Vitalik Buterin

---

*Originally published on [Solodan](https://paragraph.com/@solodan/zksync)*
