Основная информация
Последние месяцы шла активная работа по исправлению ошибок, улучшению и добавлению новых возможностей на сервисы Tornado, такие как основной сайт, Nova, сайт для релееров и софт для них и так далее. Документация так же обновлялась в соответствии с текущим прогрессом, однако накопилась критическая масса изменений, которая вскоре сделает невозможной совместимость со старыми версиями, доступными по IPFS в блокчейне (посмотреть текущий хеш для основного сайта можно в документации или в записях tornadocash.eth на ENS, а получить доступ - с помощью публичных IPFS gateaways или резолверов по типу tornadocash.eth.link или tornadocash.eth.limo).
Внесённые изменения
Все изменения, которые предлагается добавить в этом proposal в сервисы Tornado, находятся в отдельных ветках в соответствующих репозиториях на git.tornado.ws.
-
Изменения в classic UI (на основном сайте):
- Добавление Tornado RPC для каждой сети со стопроцентным аптаймом, без логгирования и цензуры;
- Изменение источника ключевых зависимостей на независимый self-hosted сервис;
- Изменён метода расчёта gas, благодаря которому понизятся комиссии на некоторых sidechains (Arbitrum, Optimism), и перестанут возникать ошибки вывода через релееров;
- Многие ссылки и переводы обновлены и изменены с недоступных на актуальные;
- Исправлены предсказание и обработка gas price, а также загрузка событий на “быстрых” сетях, таких как Avalanche C, и теперь депозиты и выводы без всяких проблем будут доступны через сайт на любых sidechains;
- Общее исправление системы загрузки и обработки событий, требуемых для построения SNARK-доказательства, необходимого для вывода, а также обновление и загрузка нового кеша для сетей, где он отсутствовал - это сильно ускорит время ожидания перед выводом;
- Решение проблемы с бесконечной загрузкой при использовании аккаунта с зашифрованными notes на блокчейне - теперь практически на любой сети можно хранить в блокчейне зашифрованные особым ключом notes, не копируя их на локальное устройство (подробная статья тут);
- Изменена проверка версий релеера - поскольку изменения в системе расчёта gas для транзакции вывода изменятся и для пользователей, и для релееров одновременно, релееры со старыми версиями программного обеспечения во избежание ошибок не будут допущены в UI (подробнее - отдельно);
- Добавлен рабочий WalletConnect Bridge - поскольку 28 июня этого года официальная поддержка WalletConnect V1 была прекращена и сервер был отключён;
- Оставшиеся небольшие необходимые обновления - замена адреса контракта Staking после исполнения proposal 22, косметические исправления на сайте и так далее.
-
Изменения в Nova:
- Добавлена пересборка workers при каждом билде, чтобы обновления работали корректно;
- Исправлена проблема в зависимости gas-price-oracle, приводившая к невозможности создания доказательства для вывода из-за отсутствия доступа к offchain gas station для Gnosis, для этого была исправлена сама библиотека и выложена с обновлённой версией на Tornado git;
- Запущен собственный мониторинг Arbitrary Message Bridge для Gnosis, который используется для отслеживания кроссчейн-транзакций при выводах и депозитах в Nova: https://alm-xdai.tornado.ws;
- И, разумеется, все ссылки, RPC и explorers обновлены на актуальные и работающие.
-
Изменения в UI для релееров и программном обеспечении для них:
- Исправлена проверка принадлежности ENS-домена релееру с учётом недавно добавленного по умолчанию ENS Name Wrapper;
- Программное обеспечение для релееров разделено на три версии: v4 - текущий актуальный патч до proposal 27, v5 - версия с исправленной калькуляцией gas, совместимая с classic UI и CLI после принятия proposal 27 и v6 - улучшенная и более удобная новая версия, тоже с новым вычислением gas, однако на данный момент находящаяся в бете (не полностью проверена и может быть нестабильна);
- Добавлен скрипт на bash, инструкции для docker-compose и написана полная инструкция, как установить релеера одной командой (далее потребуется лишь заполнить файлы с данными для релеера и запустить тоже одной командой);
- Создана сильно более удобная шестая версия программного обеспечения, работающая одновременно и для Mainnet, и для Goerli, и для sidechains, а также оповещающая релеера о важных изменениях (недостаток баланса для обработки транзакций, недостаток застейканного TORN для нахождения в UI и так далее).
-
Изменения в документации - обновление ссылок, адресов и актуализация изменённого в предыдущих proposals, а также переработка репозитория для последующего легкого изменения и деплоя на IPFS.
-
Tornado CLI так же подверглось множественным изменениям, однако к данному proposal относятся только те, которые связаны с механизмом расчёта gas, поскольку CLI не имеет IPFS версии и обновление в блокчейне не требуется (кстати, возможно, это будет исправлено в дальнейшем).
Предложение
https://git.tornado.ws/Theo/proposal-27-update-ipfs
Код контракта: etherscan
Новые IPFS хеши (кликабельны, редирект на IPFS gateaways):
- Основной сайт:
bafybeiebetfka2uede3rwhjovoiyagixe7i44daigklvgyxxpjtzzzquwy
- Nova:
bafybeidjmsfqt6363gujziktuaalzda37avhpemvuzagbhqvcdodnqulw4
- UI для релееров:
bafybeib5mg7naza5prj5l4bwwzci7hkflltobtw2irldacktnijokhksz4
- Документация:
bafybeiaixjmhtekecm2vfehdzbluqjpxucpftkmafjp22hw7wphgut4clm
Тестирование и верификация
Поскольку в самом коде proposal используются уже сформированные в специальный вид данные, чтобы ENS корректно отображал IPFS-хеши. В соответствии со спецификацией EIP-1062 и EIP-1577, для проверки корректности данных используются два скрипта: первый генерирует из v0 IPFS CIDs, закодированных в base58, данные для установки в качестве contenthash для доменов ENS, второй - доказывает эквивалентность v0 CID и v1 CID IPFS, которые показываются на ENS и указаны выше в этом посте.
Предлагаю каждому запустить скрипты для верификации и сверить результаты.
Кроме того, любой может воспользоваться тестовым контрактом на Goerli - установить на домен tornadotest.eth новый IPFS хеш от Nova, основного сайта, UI для релееров или документации и проверить, что они совпадают с указанными в контракте и этом посте данными.
А также, так как обновлённый сайт отбрасывает всех релееров с текущей версией, если кто-то хочет проверить депозиты или выводы средств, можно воспользоваться специально запущенными мной тестовыми релеерами (будут отключены сразу же, как появится первый реальный релеер новой версии):
- test-relayer-eth.tornado.ws - Ethereum Mainnet
- test-relayer-bsc.tornado.ws - Binance Smart Chain
- test-relayer-arbitrum.tornado.ws - Arbitrum
- test-relayer-optimism.tornado.ws - Optimism
Важная информация для релееров
Если текущее предложение будет принято и исполнено, актуальная на данный момент версия программного обеспечения для релееров (4.1.4 для Ethereum Mainnet, 5.0.0.beta для sidechains) будет помечена как устаревшая и релееры с текущей версией не будут допущены в UI (не будут выбираться на сайте).
За пару часов до выполнения proposal релеерам будет необходимо обновиться на новую версию (ни в коем случае не надо делать этого сейчас, она несовместима с текущей версией сайта) - программное обеспечение устанавливается по этой ссылке одной командой на чистый linux-сервер, желательно Ubuntu 22. Перед запуском старое программное обеспечение необходимо отключить, и обратите внимание, что формат .env-файлов немного изменился, и просто скопировать старые нельзя.
На обсуждение предложения даются одни сутки (желательно - в английской теме), далее оно выносится на голосование.