Технология
Last updated
Last updated
zkSync - это протокол L2, основанный на архитектуре ZK rollup. ZK rollup - это одна из разновидностей более крупного семейства "rollup". Для получения более подробной информации мы рекомендуем .
Все средства хранятся в смарт-контракте на основной цепочке, а вычисления и хранение осуществляются вне цепочки. Основная идея заключается в том, что вместо проверки каждой транзакции отдельно, транзакции "сворачиваются" в один элемент (блок rollup), который затем проверяется, одобряя их все одновременно.
Неформально это работает следующим образом:
Пользователи подписывают транзакции и отправляют их валидаторам.
Валидаторы сворачивают тысячи транзакций в один блок и передают криптографическое обязательство (корневой хэш) нового состояния смарт-контракту в основной сети вместе с криптографическим доказательством (SNARK) того, что это новое состояние действительно является результатом применения некоторых правильных транзакций к старому состоянию.
Помимо доказательства, состояние ∆ (небольшой объем данных для каждой транзакции) публикуется в основной сети как дешевые данные вызова.
Это позволяет любому человеку восстановить состояние в любой момент. Доказательство и состояние ∆ проверяются смарт-контрактом, таким образом проверяется как достоверность всех транзакций, включенных в блок, так и доступность данных блока.
Проверка SNARK намного дешевле, чем проверка каждой транзакции по отдельности, а хранение состояния вне цепи значительно дешевле, чем хранение на EVM. Таким образом, достигается огромный прирост масштабируемости (~100-200-кратное увеличение мощности основной сети) и экономия на стоимости tx.
Архитектура zkRollup обеспечивает следующие гарантии:
Валидаторы никогда не смогут испортить состояние или украсть средства ().
Пользователи всегда могут получить средства из смарт-контракта zkRollup, даже если валидатор(ы) прекратят сотрудничество, поскольку данные доступны (в отличие от Plasma).
Ни пользователям, ни отдельной доверенной третьей стороне не нужно находиться в сети для мониторинга блоков zkRollup, чтобы предотвратить мошенничество (в отличие от защищенных от мошенничества систем, таких как платежные каналы или Optimistic Rollups).
Другими словами, zkRollup строго наследует гарантии безопасности базового L1.
Вот несколько ссылок для изучения темы zkRollup:
Транзакции в zkSync достигают окончательности Ethereum после того, как доказательство SNARK блока zkSync будет сгенерировано и принято смарт-контрактом. Ожидается, что время генерации доказательства составит около 10 минут, то есть через 10 минут после отправки транзакция zkSync (доказательство) становится такой же окончательной, как и любая транзакция L1 Ethereum, включенная в тот же блок Ethereum, что и транзакция с доказательством. В настоящее время, когда пользователь отправляет транзакцию, мы ждем, пока блок заполнится, и поэтому не генерируем доказательство немедленно. При увеличении пропускной способности системы zkSync время между блоками будет уменьшаться.
В отличие от этого, решения для масштабирования на основе мошенничества (например, optimistic rollup) требуют как минимум двухнедельного периода блокировки для более-менее безопасной работы, что приводит к 2 неделям объективного* времени завершения tx.
Следует добавить, что Matter Labs и другие компании в области доказательств с нулевым разглашением (ZKP) постоянно работают над повышением эффективности передачи, что приведет к снижению времени окончательного завершения (потенциально до менее 1 минуты).
Несмотря на то, что время до завершения сделки составляет около 10 минут, это не влияет на удобство использования сети. Транзакции, отправленные пользователями в zkSync, мгновенно подтверждаются, мгновенно отображаются для принимающей стороны в пользовательском интерфейсе и API (хотя и помечаются как неподтвержденные), а переданные активы могут быть немедленно использованы для дальнейших переводов (которые могут даже оказаться в том же блоке zkSync).
В настоящее время мгновенные подтверждения - это обещание валидаторов zkSync включить транзакцию в следующий блок. Пользователи, не доверяющие валидатору, должны дождаться полного завершения, прежде чем считать активы полученными.
В будущем валидаторы добавят в zkSync залог безопасности. Это обеспечит мгновенные гарантии экономической окончательности. Это будет работать следующим образом.
Валидаторы, избранные для участия в производстве блоков zkSync, должны будут внести значительный залог в смарт-контракт zkSync в сети. Консенсус, проводимый валидаторами, за доли секунды подтверждает пользователю, что его транзакция будет включена в следующий блок zkSync, подписанный большинством (более чем) ⅔ участников консенсуса (взвешенным по доле).
Если новый блок zkSync создан и отправлен в основную сеть, он не может быть отменен. Однако если он не содержит обещанных транзакций, то залог безопасности пересечения подписавших оригинальную транзакцию и подписавших новый блок будет забран. Это пересечение гарантированно имеет более ⅓ доли. Это гарантирует, что по крайней мере ⅓ залога может быть срезано и что наказаны будут только злонамеренные валидаторы.
Часть забранных средств будет использована для компенсации получателю tx. Остальное будет сожжено.
В отличие от них, zkSync позиционируется исключительно, чтобы бесперебойно работать в условиях высокой загруженности.
Прежде всего, перегруженная сеть (подобно случаю целенаправленной DOS-атаки) никогда не может создать никакой угрозы для активов в zkSync. Любое перемещение средств внутри или из zkSync требует подтверждения достоверности с нулевым разглашением, и на него просто никак не влияет защита L1.
Во-вторых, нормальная работа zkSync также вряд ли будет нарушена, даже для небольших сумм. Узел валидатора настроен на автоматическое повышение цены газа до уровня выше среднего, чтобы блоки zkSync добывались с высоким приоритетом. Поскольку стоимость одной транзакции составляет ~1/100 от стоимости соответствующей обычной транзакции на L1, пользователи zkSync пострадают меньше всего.
После , которое принесло поддержку рекурсии в zkSync в основной сети, пропускная способность протокола ограничивается, по сути, только необходимостью публиковать изменения состояния для каждой транзакции через calldata Ethereum, чтобы обеспечить доступность данных. С текущим лимитом газа блоков в 12,5M, zkSync может обрабатывать более 2000 TPS.
Периодически чрезвычайные события приводят к очень высокой нагрузке на сети Ethereum (яркими примерами являются и ). Во время таких пиковых нагрузок цены на газ подскакивают, а перемещение криптоактивов может стать непомерно дорогим, что делает некоторые сервисы неработоспособными или препятствует арбитражным возможностям.
Более того, некоторые системы могут выйти из строя в экстремальных обстоятельствах, что приведет к каскадным сбоям (недавний является отличным примером). Это особенно тревожно для решений масштабирования, основанных на защите от мошенничества (платежные каналы, оптимистичные роллапы), поскольку существует риск, что их автоматизированные системы безопасности не смогут добывать защищенные от мошенничества транзакции в случае атаки во время высокой перегрузки, что поставит под угрозу безопасность всех активов, находящихся под контролем таких систем. Что усугубляет проблему для этих систем, вы никогда не можете знать, пока ситуация не произойдет (как это случилось с ).