April 28, 2022

используем Metamask, Uniswap, PancakeSwap, Tornado cash локально, или защита от возможных санкций

Последнее время часто видим информацию о том, что децентрализованные приложения закрывают доступ для кошельков под санкциями или даже для всех кошельков из определённых стран.

Делают это лишь на уровне сайтов (на уровне фронтенда), т. к. в смартконтракт такое не внедрить.

Поэтому наша задача - научиться использовать локальные версии DApps. Чем в этой статье и займёмся.

1. Metamask

Допустим, новая версия расширения будет блокировать пользователей по IP, причём не Нода это будет делать, а сам кошелёк.

Это означает, что нам придётся искать старую версию и скачивать её, после чего загружать в браузер...

Идём на https://metamask.io/

Находим ссылку Github - она ведёт на https://github.com/MetaMask/metamask-extension/

Переходим - попадаем на соответствующую страницу:

Смотрим блок "Releases" и выбираем версию. Если вы скачали последнюю, но проблемы сохраняются, скачиваете предыдущую. И так до тех пор, пока не найдёте рабочую версию без блокировок и прочей ерунды. Я выбираю последнюю - https://github.com/MetaMask/metamask-extension/releases/tag/v10.13.0

Выбираю "metamask-chrome-10.13.0.zip" в "Assets" и сохраняю.

Переходим в папку загрузок и распаковываем архив, но не в текущую папку, а в свою:

Идём в браузере в расширения:

Активируем режим разработчика:

Нажимаем "Загрузить распакованное расширение, выбираем папку с расширением и нажимаем Ok, после чего будет так:

А также появится страница Метамаска:

P. S. Подобным образом делается и с keplr, с Phantom и другими кошельками...

2. Uniswap и другие подобные ему DEX & 1INCH

Рассмотрим на примере Uniswap.

Для начала идём на https://uniswap.org/

Находим и кликаем по Github - попадём сюда: https://github.com/Uniswap

Здесь находим "Repositories":

И выбираем Interface - https://github.com/Uniswap/interface

Доходим до релизов и выбираем нужный нам (принцип тот же: идём к более старой версии, пока не будет блокировок, санкций и прочего бреда...):

На странице Выбираем "Source code (zip)", загружаем и переходим в папку загрузок, после чего распаковываем (можно в эту папку):

Переходим в папку:

Как видите, здесь нет index.html или чего-то подобного. Можно конечно зайти в public, но после открытия файла оттуда будет пустая страница, потому что это лишь шаблон...

Для установки нам нужен node.js: переходим на их сайт https://nodejs.org/en/download/

Выбираем версию для своей ОС, например, Windows Installer:

После скачивания запускаем и нажимаем "Next":

Читаем лицензионное соглашение, отмечаем и "Next":

"Next":

"Next":

Отмечаем флажок и "Next". Отмечаем, чтоб если какому-то DApp понадобятся устанавливаемые инструменты, не было ошибок (хотя для работы с указанными в статье примерами можно и не отмечать):

"Install":

Если появится подтверждение действий, делаем это.

Ждём. По окончании нажимаем "Finish":

Не пугаемся этого окна - нажимаем любую клавишу 2 раза:

Далее появится PowerShell, где пойдёт установка:

Ждём окончания. Если зависло надолго, просто нажимаете ctrl+c - окно закроется.

Возвращаемся в папку, по пустому месту кликаем правой кнопкой мыши и выбираем "Открыть PowerShell здесь":

Появится такое окно, где вводим yarn install

Ждём:

Вводим yarn start

Вводим в браузере http://localhost:3000/

В прочем, после запуска он откроется сам.

Жмём Connect wallet:

Metamask доступен - подтверждаю в кошельке подключение и вижу следующее:

Для остановки просто нажимаю ctrl+c и y в ответ на вопрос:

Страница не грузится:

Можно сделать build: в этом случае будет папка с html файлом, но в данном режиме почему-то Uniswap не ловит Metamask. Поэтому только через start...

В качестве альтернативы Uniswap можно использовать 1inch

Репозиторий https://github.com/1inch/desktop-dapp

Вот только здесь лишь одна версия: будут ли развивать её, не знаю... Ссылка на релиз: https://github.com/1inch/desktop-dapp/releases/tag/v1.0.1

Можно скачать .exe файл - вот он в папке:

Вот приложение открытое:

Но как оно взаимодействует с кошельками, без понятия... К сожалению, я в 1inch даже в браузере не могу подключить кошелёк...

Кстати, у PancakeSwap интерфейс https://github.com/pancakeswap/pancake-frontend

Здесь релизов нет - просто нажимаете "Code", а затем "Download ZIP":

Скаченный и распакованный архив:

Открывается PowerShell также. Сначала выполняем yarn install, после чего иную команду:

yarn build

Далее yarn start

После - доступ по localhost:3000 (естественно параллельно запустить оба приложения не получится).

3. Tornado cash

К сожалению, на официальных фронтендах и там есть ограничения для некоторых адресов, по сему и его надо скачать...

Для этого переходим на https://github.com/tornado-repositories/ui-minified

Также code -> download ZIP:

Архив распакован в текущую папку:

Переходим в папку:

Открываем PowerShell стандартным способом, после чего вводим команду:

npm install --global http-server

Установка завершена:

Вводим команду http-server

Сервер запущен:

Переходим на http://localhost:8080/

Я уже авторизовал Metamask для демонстрации работоспособности.

ctrl+c в PowerShell останавливает сервер:

Всё

Благодарю за внимание.

P. S. Я показал всё, как происходит в Windows, но в других ОС похожим способом.

Разве что в Linux командами больше, но для Линукса чаще всего инструкции пишут на сайтах, да и пользуются ими более опытные. Я же хотел создать инструкции для тех, кто находится в переходном периоде от простого пользователя Винды к пользователю Линукса.

Буду рад распространению статьи и подпискам на канал https://t.me/blind_dev

Есть вопросы? Пишите в https://t.me/blind_dev_chat