XMR WASP это Websocket и(And) Stratum прокси(Proxy) для манинга Monero (XMR). Он принимает соединения от майнеров через websocket и обычные TCP сокеты используя monero stratum протокол. Написан на Go и частично вдохновлен XMRig-Proxy.
- Запуск майнинга в браузере сознательным путем
- Просвящать владельцев сайта и пользователей майнингу в браузере через пример сайта, который использует данный проект в качестве прокси.
- Легко использовать - просто сконфигурируйте и запустите бинарный файл.
- Нет зависимостей.
- Конфигурирование как через окружение ОС так и через JSON файл.
- Низкие системные накладные расходы на каждое соединение.
- Работает с большинством майнеров, включая браузерные майнеры!
- Снижает загрузку пула используя одно соединения на много майнеров.
- Выпущены сборки для многих платформ(не все тщательно протестированны)
Бинарные выпуски доступны для большинства платформ
Желательно разместить в папке, определенной в переменной окружения PATH вашей системы.
Пока вы не передадите флаг -d
, go get
также установит и пакет.
go get github.com/trey-jones/xmrwasp
docker pull treyjones/xmrwasp
Для использования XMR WASP просто запустите бинарный файл как в примерах(unix):
xmrwasp -c example/example.config.json &
XMRWASP_URL='xmrpool.eu:3333' \
XMRWASP_LOGIN='47sfBPDL9qbDuF5stdrE8C6gVQXf15SeTN4BNxBZ3Ahs6LTayo2Kia2YES7MeN5FU7MKUrWAYPhmeFUYQ3v4JBAvKSPjigi.250+env_example' \
XMRWASP_PASSWORD='x' \
xmrwasp
Для запуска в фоновом режиме и записи журнала в файл, вместо вывода в stdout:
XMRWASP_URL='xmrpool.eu:3333' \
XMRWASP_LOGIN='47sfBPDL9qbDuF5stdrE8C6gVQXf15SeTN4BNxBZ3Ahs6LTayo2Kia2YES7MeN5FU7MKUrWAYPhmeFUYQ3v4JBAvKSPjigi.250+env_example' \
XMRWASP_PASSWORD='x' \
XMRWASP_LOG='xmrwasp.log' \
xmrwasp &
tail -f xmrwasp.log
docker run --rm -e 'XMRWASP_URL=xmrpool.eu:3333' \
-e 'XMRWASP_LOGIN=47sfBPDL9qbDuF5stdrE8C6gVQXf15SeTN4BNxBZ3Ahs6LTayo2Kia2YES7MeN5FU7MKUrWAYPhmeFUYQ3v4JBAvKSPjigi.250+env_example' \
-e 'XMRWASP_PASSWORD=x' \
treyjones/xmrwasp
docker run --rm -v $(pwd)/example.config.json:/config/config.json \
treyjones/xmrwasp -c config.json
cd example
docker-compose up
Настройка может быть выполнена через переменные окружения или через вызов xmrwasp
с флагом -c
, в который передать путь к JSON файлу конфигурации.
Окружение | JSON | Описание |
---|---|---|
XMRWASP_URL | url | Адрес майнингового пула, к которому вы подключитесь. Без указания протокола. |
XMRWASP_LOGIN | login | Логин (обычно адрес monero кошелька) используется для подключения к майнинговому пулу. |
XMRWASP_PASSWORD | password | Пароль используется для подключения к майнинговому пулу. |
Окружение | JSON | Значение по умолчанию | Описание |
---|---|---|---|
XMRWASP_NOWEB | noweb | false | Не работать с websocket соединениями. |
XMRWASP_NOTCP | notcp | true | Не работать с stratum+tcp соединениями. |
XMRWASP_WSPORT | wsport | 8080 | Порт для websocket соединений. |
XMRWASP_STRPORT | strport | 1111 | Порт для stratum+tcp соединений. |
XMRWASP_WSS | wss | false | Если true, пробовать обрабатывать websocket соединения с TLS шифрованием. |
XMRWASP_TLSCERT | tlscert | "" | Путь к файлу сертификата TLS. Необходим если wss = true |
XMRWASP_TLSKEY | tlscert | "" | Путь к закрытому ключу, который использовался для создания вышеуказанного сертификата. Необходим если wss = true |
XMRWASP_STATS | stats | 60 | XMR WASP будет печатать отчет в журнал с этим интервалом (в секундах) |
XMRWASP_LOG | log | STDOUT | Путь к файлу журнала. При необходимости будет создан. Имеет приоритет над nolog |
XMRWASP_NOLOG | nolog | false | Если true, не будет сгенерированого никакого журнала и вывода в STDOUT. |
XMRWASP_DONATE | donate | 2 | Процент времени майнинга на сервер пожертвований. |
XMRWASP_DEBUG | debug | false | Вывод отладочных сообщений в журнал. |
В примере используется CryptoNoter в качестве браузерного майнера. Поскольку майнер Monero в этой библиотеке взят напрямую из CoinHive, последний тоже можно использовать. Если есть другие браузерные майнеры, для которых вы хотите совместимость, можете создать issue здесь и я сделаю все возможное чтобы он заработал.
То же самое касается другого ПО для майнинга. Большинство майнеров, которые могут подключиться к stratum майнинговому пулу, смогут подключиться и к этому прокси, кроме Claymore, на данный момент. Этот прокси также может подключаться к другому экземпляру самого себя, таким образом работает пожертвование. Если у вас есть проблемы совместимости, дайте мне знать!
Я также заинтерисован в отличной совместимости с майнинговыми пулами. Мне хотелось бы знать, если вы найдете пул, который не работает с этим прокси. Если вы оператор пула, я бы хотел обсудить как мне лучше обрабатывать ошибки и т.д. Операторы пулов возможно смогут получить улучшение от пользователей подключающихся через прокси, поскольку это снижает число соединений, которые должны быть обслужены пулом (в данном случает до 1000).
Одна из основных особенностей этой части программного обеспечения связана с возможностью использования майнинга Monero в браузере. Автор этого проекта верит, что браузерный майнинг может быть взаимовыгодным(win-win). Даже троекратновыгодным(win-win-win) (пользователи, владельцы сайтов, и blockchain). Пользователи могут выйграть избавлясь от рекламы, если браузерный майнинг окажется достаточно прибыльным для того чтобы владелец сайта остался на плаву. Но они также могут проиграть и очень сильно, если владелец сайта не проявляет некоторую сдержанность в отношении этой возможности. Вот несколько вещей, которые вы, как владелец сайта, возможно знаете, но можете забыть от соблазна получить несколько дополнительных Moneroj:
- Не используйте майнинг на мобильных устройствах, чтобы не уничтожить их аккумулятор и возможность просматривать ваш сайт.
- Не используйте майнинг не рассказав вашим пользователям о том что вы делаете это.
- Сообщите своим пользователям учавствуют ли они в майнинге и насколько.
- Установление ограничений браузерному майнеру это хорошая идея для всех.
- максимальный lifetime соединения и возможный spindown
- Web Интерфейс, отображающий текущее состояние и историю
- Настройка нескольких пулов для отказоустойчивости
- Улучшения производительности: более быстрое освобождение памяти на сломанных соединениях
- Отзывы пользователей?
- Поддержка TLS для stratum + tcp
- Просто тонны мелочей, которые могли бы быть лучше
- Linux package manager repositories?
Проект имеет встроенный механизм пожертвований. По умолчанию жертвуется 1 минута 12 секунд (donate=2) каждый час. Это происходит без прерывания подключений к вашему пулу. Это может быть снижено настройкой до 36 секунд (donate=1) каждый час. Или увеличено если вы чувствуете себя щедрым. Экономные пользователи конечно могут обнаружить, что можно отключить механизм пожертвований. Если вы так поступаете, расмотрите одноразовое пожертвование.
- Monero:
47sfBPDL9qbDuF5stdrE8C6gVQXf15SeTN4BNxBZ3Ahs6LTayo2Kia2YES7MeN5FU7MKUrWAYPhmeFUYQ3v4JBAvKSPjigi
- Bitcoin:
1NwemnZSLhJLnNUbzXvER6yNX55pv9tAcv
Я с удовольствием рассмотрю любые запросы на изменение, которые придут мне на ум. В частности, если хотите, можете взять один из следующих типов элементов, которые не очень хорошо соответствуют моему набору навыков и интересов:
- Сделать приложение пример более привлекательным
- Создание приятно выглядещей панели управления для будущего веб-интерфейса
- Создание нереально крутого логотипа\эмблемы для представления проекта.
- Улучшение ввывода журнала.
- Тестирование под Windows