Синхронізація гаманців Zcash
TL;DR
- Оскільки захищені транзакції 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) для представлення залежностей між нотатками, свідками та nullifiers у гаманці Zcash.
DAG — це структура даних, що складається з вузлів і ребер, де кожне ребро має напрямок, який вказує на зв’язок між двома вузлами. DAG не має циклів, тобто неможливо почати з вузла й пройти ребрами назад до того самого вузла.
Практичні наслідки
Цікаво, що всі ці механізми мають на меті відповісти на питання, порушені Zcash Security у його дописі про масштабований приватний обмін повідомленнями, та його зв’язок із системами приватних платежів. Деякі навіть додатково завантажують із серверів усі дані memo, за винятком даних, призначених виключно для адреси, підвищуючи конфіденційність ціною трохи більших витрат ресурсів.
Крім того, Zcash Foundation розглядала інші альтернативи для покращення продуктивності легких гаманців. Таким є випадок Oblivious Message Retrieval (OMR), конструкції, яку фонд вивчає, «щоб визначити, чи пропонує вона потенційне рішення нещодавніх проблем із продуктивністю, що вплинули на користувачів гаманців Zcash».
Поширені помилки
Припускати, що сервер lightwalletd знає ваш баланс. Сервер лише доставляє компактні блоки; ваш гаманець розшифровує та інтерпретує їх локально за допомогою ваших власних ключів.
Зупиняти синхронізацію надто рано. Деякі методи роблять нещодавні доступні для витрачання кошти доступними до завершення повної синхронізації, але старіша історія та нотатки все ще можуть оброблятися.
Безпосередньо порівнювати синхронізацію Zcash із синхронізацією прозорих ланцюгів. Повільніший шлях може бути ціною збереження конфіденційності, а не недоліком — гаманець виконує роботу, яку сервер публічної монети інакше виконав би, відкрито читаючи ваш обліковий запис.
Пов’язані сторінки
- Вузли Lightwallet — інфраструктура lightwalletd, на яку покладаються легкі гаманці.
- Ключі перегляду — ключі, які гаманці використовують для виявлення та розшифрування власних нотаток.
- Pepper Sync — ще один підхід до синхронізації гаманців Zcash.
- FROST — розподілені повноваження підписання для захищених ZEC.