Синхронизация кошельков Zcash
Кратко
- Поскольку защищённые транзакции Zcash скрывают свои детали, сервер не может просто узнать баланс кошелька так же, как для прозрачных монет вроде Bitcoin или Ethereum.
- Лёгкие кошельки загружают небольшие «компактные блоки» со специализированного сервера (lightwalletd) и самостоятельно расшифровывают релевантные данные с помощью своих приватных ключей.
- Расшифровка и обработка этих блоков занимает время, поэтому кошельки используют более быстрые методы синхронизации, позволяющие быстрее воспользоваться средствами.
- Примечательные подходы: Warp Sync (YWallet), Spend-before-sync (Zcash Mobile Wallet SDK V2), Blaze Sync (Zecwallet) и предлагаемый DAGSync.
- Эти методы обычно обменивают дополнительную память или вычислительную мощность на более быструю синхронизацию.
Основное объяснение
Как работает синхронизация Zcash
Zcash использует доказательства с нулевым разглашением, чтобы скрывать детали транзакций от неавторизованных сторон. Эта конфиденциальность усложняет синхронизацию для лёгких кошельков, поскольку они не хранят полную блокчейн-цепочку локально и вместо этого полагаются на сервер в получении необходимой информации. В Bitcoin или Ethereum серверы могут индексировать блокчейн и быстро возвращать данные аккаунта. Но в Zcash сервер не видит деталей транзакций. Так как же лёгкий кошелёк может синхронизировать свой баланс и историю, не загружая и не расшифровывая самостоятельно весь блокчейн?
Zcash решает эту проблему, объединяя несколько подходов. В нём есть специализированный сервер lightwalletd, который фильтрует данные полного узла и сохраняет только то, что нужно для идентификации транзакций. Эти данные называются компактными блоками, и они намного меньше исходных блоков. Лёгкие кошельки сначала загружают эти компактные блоки с сервера lightwalletd, а затем расшифровывают их своими приватными ключами.
Даже расшифровка и обработка этих компактных блоков может занимать значительное время, особенно если в блоке много транзакций. Поэтому кошельки используют разные методы, чтобы ускорить синхронизацию и позволить вам воспользоваться средствами как можно скорее.
Визуализация / Аналогия
Представьте блокчейн как огромную почтовую комнату, полную запертых ящиков. В случае прозрачной монеты служащий почтовой комнаты может прочитать ярлыки и сразу сказать, какие ящики ваши. В Zcash ярлыки скрыты — поэтому вашему кошельку приходится взять ключи и незаметно проверять ящики самостоятельно, чтобы найти те, которые он может открыть. Описанные ниже методы синхронизации — это разные стратегии более быстрой проверки этих ящиков.
Подробный разбор
Warp Sync
Warp Sync — функция YWallet, которая пропускает промежуточные этапы расшифровки и обработки каждого компактного блока, сразу переходя к конечному результату.
Для этого она использует математику и криптографию, чтобы вычислить конечный результат, не проходя каждый шаг.
Warp Sync может обрабатывать тысячи блоков в секунду, намного быстрее обычного метода синхронизации. Это означает, что пользователи YWallet могут наслаждаться быстрой и плавной работой даже при сотнях тысяч транзакций и полученных нот в своих аккаунтах.
Помимо этой техники пропуска этапов, YWallet может одновременно обрабатывать несколько блоков, распределяя нагрузку по доступному оборудованию, чтобы ещё больше ускорить процесс.
Подробнее о Warp Sync
Здесь Warp Sync описан как техника синхронизации. Сам Ywallet больше не поддерживается и не будет обновлён для Ironwood, поэтому сегодня это не тот кошелёк, который стоит устанавливать.
Spend-before-sync
Spend-before-sync — новая функция в Zcash Mobile Wallet SDK V2, которая позволяет пользователям мгновенно тратить средства при открытии кошелька, не дожидаясь полной синхронизации. Эта функция ускоряет определение доступного для траты баланса кошелька и улучшает пользовательский опыт.
Spend-before-sync работает с помощью алгоритма синхронизации компактных блоков, который обрабатывает блоки с сервера lightwalletd в нелинейном порядке. Это означает, что вместо ожидания полной обработки одного блока перед переходом к следующему кошельки могут использовать немного больше памяти и вычислительной мощности для сканирования разных разделов блокчейна. Обычно метод сканирует разные диапазоны, ища более новые транзакции, пока старые блоки загружаются и обрабатываются. Если обнаружена недавняя непотраченная нота, она сразу становится доступной.
Blaze Sync
Разработанный командой Zecwallet, Blaze Sync — алгоритм синхронизации лёгких кошельков, который сканирует блокчейн в обратном направлении: начиная с самого высокого, последнего блока и двигаясь назад.
Это позволяет кошельку находить потраченные ноты раньше полученных, при этом делая ранее непотраченные ноты доступными, не дожидаясь завершения полного процесса синхронизации.
Кроме того, он использует Out-of-Order Sync, разделяя компоненты синхронизации друг от друга — загрузку блоков, выполнение пробных расшифровок и обновление свидетелей — и обрабатывая их параллельно. Это требует больше памяти и ресурсов CPU, но увеличивает скорость синхронизации в 5 раз.
DAGSync
DAGSync — предлагаемый алгоритм синхронизации, направленный на улучшение пользовательского опыта защищённых кошельков Zcash за счёт ускорения синхронизации.
Он использует ориентированный ациклический граф (DAG) для представления зависимостей между нотами, свидетелями и нуллификаторами в кошельке Zcash.
DAG — это структура данных, состоящая из узлов и рёбер, где каждое ребро имеет направление, указывающее на связь между двумя узлами. В DAG нет циклов, то есть невозможно начать с узла и пройти по рёбрам обратно к тому же узлу.
Практические последствия
Интересно, что все эти механизмы стремятся ответить на вопросы, поднятые Zcash Security в публикации о масштабируемом приватном обмене сообщениями и его связи с приватными платёжными системами. Некоторые даже идут дальше, загружая с серверов все данные memo, кроме данных, эксклюзивных для адреса, повышая конфиденциальность ценой небольшого дополнительного расхода ресурсов.
Кроме того, Zcash Foundation изучает другие альтернативы для улучшения производительности лёгких кошельков. Так обстоит дело с Oblivious Message Retrieval (OMR) — конструкцией, которую фонд изучает, «чтобы определить, предлагает ли она потенциальное решение недавних проблем с производительностью, затронувших пользователей кошельков Zcash».
Распространённые ошибки
Предполагать, что сервер lightwalletd знает ваш баланс. Сервер лишь передаёт компактные блоки; ваш кошелёк расшифровывает и интерпретирует их локально, используя ваши собственные ключи.
Останавливать синхронизацию слишком рано. Некоторые методы делают недавно доступные для траты средства доступными до завершения полной синхронизации, но обработка более старой истории и нот всё ещё может продолжаться.
Сравнивать синхронизацию Zcash напрямую с синхронизацией прозрачных цепочек. Более медленный процесс может быть ценой сохранения конфиденциальности, а не недостатком — кошелёк выполняет работу, которую сервер публичной монеты иначе сделал бы, открыто читая данные вашего аккаунта.
Связанные страницы
- Узлы Lightwallet — инфраструктура lightwalletd, на которую полагаются лёгкие кошельки.
- Ключи просмотра — ключи, которые кошельки используют для обнаружения и расшифровки собственных нот.
- Pepper Sync — ещё один подход к синхронизации кошельков Zcash.
- FROST — распределённые полномочия подписи для защищённых ZEC.