Proposal #30: Децентрализация исходников Tornado

Основная информация

В связи с санкционной ситуацией на текущий момент любые централизованные сервисы проекта находятся под угрозой: сайты могут быть заблокированы, что уже происходило с tornado.cash и tornadocash.site, а сервера, на который располагается инфраструктура проекта - Matrix, форум, git и так далее - могут быть отключены в любой момент без предупреждения со стороны хостера. Разумеется, бэкапы в любом случае сохраняются, однако полагаться на одного разработчика тоже ненадёжно.

Проблема с возможной недоступностью основных сайтов и документации решена давно с помощью добавления IPFS-хешей на одобренный DAO контент на ENS-домен Tornado Cash. Однако, это же можно сделать и со всеми git-репозиториями Tornado, чтобы даже при отключении централизованных репозиториев разработчик мог восстановить самые актуальные версии - и технология довольно проста.

Внесённые изменения

Необходимо создать множество ENS-поддоменов для tornadocash.eth, на которых будет сохранены IPFS-хеши исходников различных репозиториев Tornado Cash.

Сначала пройдёмся по основным поддоменам:

  1. sources.tornadocash.eth - основной, корневой домен для всех исходников. Для него будет установлен IPFS-хеш bafybeiebbyvxk2cf7clzhnqwyvvawwvznco2p5xh7x4tfagqliewtjeqfq, который ведёт на простой гайд для пользователей и разработчиков по использованию децентрализованного хранилища исходников.
  2. minified.sources.tornadocash.eth - корневой домен для минифицированных исходников основных сервисов для удобства пользователей (можно будет скачать доверенную версию classic-ui, nova-ui или tornado-cli для локального использования). IPFS-хеша для данного домена не предусмотрено.
  3. packages.sources.tornadocash.eth - корневой домен для исходников самописных библиотек, используемых в сервисах Tornado Cash. IPFS-хеша для данного домена не предусмотрено.
  4. download.sources.tornadocash.eth - домен, на который будет установлен IPFS-хеш скрипта для скачивания всех репозиториев с распределённого хранилища с помощью нескольких простых команд. Подробнее в README самого репозитория.
Полный список остальных доменов с IPFS-хешами (нажмите, чтобы открыть)
  • classic-ui.minified.sources.tornadocash.eth
    • IPFS: bafybeia4x75bn74prpmi6jqa6gbgmsfovunnke5s6oyrddxyopnz6kw5le
  • nova.minified.sources.tornadocash.eth
    • IPFS: bafybeihr5h2tfonjn2gybd4yhvchdwt4eyo25lf5twhhn6bnasdv2wwz7i
  • cli.minified.sources.tornadocash.eth
    • IPFS: bafybeicxxyqjgx5ggvujij4fnjdcwkep4nj5662yrxftb7y3pzwl77qntq
  • classic-ui.sources.tornadocash.eth
    • IPFS: bafybeifwosbjv4dxp4vyt3mwaiayj3tpat3m7uxlc5vnfnstwhzkkvr5ta
  • nova.sources.tornadocash.eth
    • IPFS: bafybeifvktxnfkn2i4arwz4q75wshuciaqm546fl64r6u6w2kxqwmt2zoy
  • docs.sources.tornadocash.eth
    • IPFS: bafybeifbidd4gx3pftds656wtnz5xkyuvqgm225gcgrzikbkykpqloezke
  • relayers-ui.sources.tornadocash.eth
    • IPFS: bafybeicgqr76vyi3e52ehdptelqbjycgkl7afg5ftn457eh27oqebotfka
  • torn-token.sources.tornadocash.eth
    • IPFS: bafybeih55yfwsbw6p5qbphceca64bp6umabdh43tpreowltspgcqs4h5si
  • classic-relayer.sources.tornadocash.eth
    • IPFS: bafybeic22dcz2x6mmdsim2vtp4ddjah7umc6xbg2cq4jjps3v37sxohjge
  • nova-relayer.sources.tornadocash.eth
    • IPFS: bafybeigjcbrcovykwfxghgw3l4c4zxq3gz5qat2yfydqbian7nkpsfagrq
  • cli.sources.tornadocash.eth
    • IPFS: bafybeigldv6kfpu4lv65xjenlqvvxmbhgwnmjqgpa5zspikmt77b3mcx4y
  • info-page.sources.tornadocash.eth
    • IPFS: bafybeibgtqjraefepfdu3awxsjwmcq4u2aoedp5uzwrdyjvkhxx5mwwu7y
  • websnark.packages.sources.tornadocash.eth
    • IPFS: bafybeibt7kdwuj2szqje73c4mhv63l3chnbkyuh7gsbsf6hqqgb4lkv3r4
  • circomlib.packages.sources.tornadocash.eth
    • IPFS: bafybeidgguu4pbgfoausenckca2yqskjgf6nlgsssfqm7ncxc4e57hdqle
  • snarkjs.packages.sources.tornadocash.eth
    • IPFS: bafybeihf22oyhuuwzbrdvinr75pz3xbsikiu34v5l4qmc2bpa7xasxog2q
  • oracles.packages.sources.tornadocash.eth
    • IPFS: bafybeiewrv73bqfytan4r3cgjyt22kuq54g3z5t56wmqjggzi4mpvhddme
  • gas-price-oracle.packages.sources.tornadocash.eth
    • IPFS: bafybeidt4d3fwygukucyv72p3gznborlq73c7nmqnfbtiombbwws2vhgcu
  • config.packages.sources.tornadocash.eth
    • IPFS: bafybeibnigpiqnfsr2fk7k7d37rz4plr6lahyoirzblcjctomwd373azli
  • anonymity-mining.packages.sources.tornadocash.eth
    • IPFS: bafybeicphu5i6cukdazgckepmajiit3umbp5paj5tlofeadyies7wh3hdq
  • trees.packages.sources.tornadocash.eth
    • IPFS: bafybeify5j3vgpgjwl2djowerwlnrpcida6mgnp5ojvyyxw7chp2g2ty3q
  • fixed-merkle-tree.packages.sources.tornadocash.eth
    • IPFS: bafybeidblwoqtbxi7vvcgnqv26jkodhvcjpbrcvifr2jhalklwb4hbfzeq
  • tx-manager.packages.sources.tornadocash.eth
    • IPFS: bafybeievfjmib6froxrca3tvak4ysfyqq5xczfyagfqww7w6ndhjstpkjm
  • merkle-root-updater.packages.sources.tornadocash.eth
    • IPFS: bafybeicmtvbto4pi5f6ozz4dgzvbnrwninl3n64uyzqcvegzrzkmif42hu

Предложение

https://git.tornado.ws/Theo/proposal-30-decentralize-sources

Код контракта предложения: 0x775Cf01c12D3E4296c7c9b52C8B835c071068F51

Тестирование и верификация

В принципе, всё аналогично proposal 27 - все IPFS-хеши и ноды ENS-доменов сгенерированы скриптами, которые любой может запустить в репозитории proposal-30 по ссылке выше и проверить.

Так же можно проверить скрипт загрузки или руками посмотреть, что станет, если предложение будет принято, на ENS-домене tornadotest.eth в сети Goerli. Однако, поскольку сайт по умолчанию показывает домены в сети Ethereum Mainnet, сначала надо подключить MetaMask и сменить сеть на Goerli Testnet.

1 Like