Установка Open Ethereum Mining Pool

Я уже экспериментировал в разными блокчейн-технологиями и ранее — раз и два. В этот раз будем разбираться с Ethereum, а точнее — с пулом майнинга на базе Open Ethereum Mining Pool.

Выбор пула для майнинга или для зароботка на хостинге пула — достаточно ответственная задача. Выбор на Open Ethereum Mining Pool пал по причине богатого списка возможностей, а именно:

  • поддержка http и stratum майнинга
  • поддержка нескольких узлов ethereum для беспрерывной работы
  • хорошая статистика в том числе и по отдельным «worker»-ам, что позволяет оценить их производительность
  • имеет внешний JSON-API для статистики, что позволяет использовать его совместно с другими фронтэндами

Кроме того автор этого пула поддерживает свой майнинг-прокси для распределенного майнинга.

Предварительная установка

Задача установки майнинг пула разделена на несколько меньших. Первое — это сборка и конфигурирование узла ethereum, самого пула, который написан на go, и сборка и конфигурирование его фронтэнда. Перед запуском пула необходимо установить официальный клиент go-ethereum. Я предпочитаю сборку клиента вручную. Для этого возьмем свежую стабильную версию golang

wget https://dl.google.com/go/go$VERSION.$OS-$ARCH.tar.gz

Вместо $VERSION и $OS-$ARCH подставьте свою предпочитаемую версию и архитектуру компилятора go. Далее распакуем ее и поместим в нужный каталог, чтобы все могли его использовать. Я не ставлю go из репозитария ОС, т.к. в той же Ubuntu версия go очень старая и нам не подходит:

tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz

Добавляем исполняемый файл в пути по умолчанию в файл /etc/profile:

export PATH=$PATH:/usr/local/go/bin

Ставим инструменты сборки

sudo apt-get install -y build-essential

Клонируем go-ethereum и собираем его:

mkdir work && cd work
git clone https://github.com/ethereum/go-ethereum
cd go-ethereum
make geth

Исполняемый файл geth в папке go-ethereum/build/bin/ копируем например в /usr/local/bin. После чего необходимо запустить и синхронизировать узел ethereum. Для работы пула необходимо, чтобы клиент как минимум был синхронизирован в режиме fast full, т.к. иначе пул не сможет получить информацию о том, какое количество вычислений нужно для получения блока:

geth --datadir /opt/ethereum --syncmode fast --rpc

Опция --rpc включает локальный RPC-сервер необходимый для работы пула. После синхронизации узла необходимо создать аккаунты, необходимые для выплаты и т.д., что хорошо описано здесь.

Установка Mining Pool

Клонируем и собираем open-ethereum-pool:

cd ..
git clone https://github.com/sammy007/open-ethereum-pool.git
cd open-ethereum-pool
make

И так же — копируем файл open-ethereum-pool в папке open-ethereum-pool/build/bin в /usr/local/bin

Следующим шагом — устанавливаем redis-server и nodejs. В Ubuntu 16.04 LTS redis-server имеет достаточную версию, поэтому ставим его как обычно:

apt-get install redis-server

Копируем файл config.example.json из open-ethereum-pool в любое место с именем config.json и правим его в соответствии с рекомендациями разработчика. Запуск самого пула нужно производить либо из папки где содержится файл config.json либо указать ему путь до файла конфигурации. При конфигурировании я рекомендую обратить внимание на параметр difficulty — он управляет сложностью майнинга. По-умолчанию установлена очень большая сложность майнинга, я рекомендую сделать ее минимум на три порядка меньше. Так же обратите внимание на документ docs/PAYOUTS.md в нем описана процедура настройки выплат участникам. Главная особенность open-ethereum-pool в том, что у него много независимых модулей, каждый из которых может быть запущен в виде отдельного экземпляра. Одним из таких модулей может быть модуль выплат, который лучше всего запускать отдельно. Остальные подробности можно почерпнуть из упомянутого документа.

Установка фронтэнда

Теперь переходим к сборке конфигурированию фронтэнда. Для этого нужен nodejs и npm. С установкой nodejs можно поступить по разному. Например можно воспользоваться бинарными сборками отсюда. Далее переходим в папку open-ethereum-pool/www и правим config/environment.js. В частности заменяем ApiUrl: '//example.net/' на свой. Далее в папке фронтэнда выполняем установку нужных пакетов npm и собираем наш фронтэнд:

npm install -g ember-cli@2.9.1
npm install -g bower
npm install
bower install
./build.sh

После окончания сборки копируем содержимое www/dist в корневую директорию веб-сервера. Разработчик рекомендует использовать в качестве веб-сервера nginx. Для работы фронтэнда необходимо добавить следующие настройки в конфигурационный файл веб-сервера:

upstream api {
    server 127.0.0.1:8080;
}

А внутри location / добавить проксирование на интерфейс пула:

location /api {
    proxy_pass http://api;
}

Если все сделано верно, то по адресу домена ApiUrl упомянутому выше сможете увидеть тот самый веб-интерфейс.

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.