Dash p2pool на windows
Создаём свою p2pool LTC ноду (Windows)
Поднять свою p2pool ноду под Windows не так сложно. как это может показаться.
Нам потребуется компьютер, который подключен к сети в режиме 24/7, имеет как минимум 2 Gb ОЗУ, достаточно мощный процессор, жесткий диск желательно ssd, холодный мозг и прямые руки. (Наличие одной или более мощной видеокарты от ATI только приветствуется)
В данном примере мы рассмотрим установку на Windows 8.1 x64 (остальные версии данной ОС тоже должны подойти)
Как установить систему на копьютер я не буду расказывать. это выходит за рамки этой статьи. да и рассказчиков на просторах интернета хватает.
1. Для начала установим GitHub для Windows
После установки на Рабочем столе должен появиться ярлык Git Shell
Откроем его, переместимся в корень диска C командой
2. Скопируем репозиторий со скриптом p2pool с GitHub
git clone https://github.com/forrestv/p2pool.git
Результат должен быть примерно такой:
C:\> git clone https://github.com/forrestv/p2pool.git
Cloning into ‘p2pool’.
remote: Reusing existing pack: 7885, done.
remote: Total 7885 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (7885/7885), 3.15 MiB | 647.00 KiB/s, done.
Resolving deltas: 100% (4848/4848), done.
Checking connectivity. done
Преимущества данного метода — Вы всегда будете имет свежую версию скрипта, достаточно зайти снова в git shell и выполнить следующие команды:
3. Далее нам надо уcтановить Python 2.7,Twisted, Zope.Interface, python win32 api, python win32 api wmi wrapper
Устанавливаем все по умолчанию, если вы не знаете, что делаете и как это потом исправить.
Также нам потребуется установить MinGW. В нем выбираем следующие пакеты:
- mingw-developer-toolkit
- mingw32-base
- mingw32-gcc-g++
- mingw32-gcc-objc
- msys-base
Установка так же по умолчанию, солашаемся со всем, прочитав предварительно лицезионные соглашения
Для MinGW надо установить пользовательсую переменную окружения, для этого перейдем в Панель управления — Система — Дополнительные параметры системы. В открывшемся окне выберем «Переменные среды» и создадим новую пользовательскую переменную с именем PATH и значением c:\MinGW\bin\ (необходим ребут!)
4. Для того, чтобы p2pool работал с сетью Litecoin нам необходимо дополнительно собрать и установить модуль ltc_scrypt, запускаем shell (cmd.exe):
C:\Python27\python.exe setup.py build —compile=mingw32 install
Скрипт готов к работе, теперь приготовим все необходимое для работы скрипта.
5. Нам необходимо скачать ( https://download.litecoin.org/litecoin-0.8.6.1/win32/litecoin-0.8.6.1-win32-setup.exe ) и запустить демона litecoind ( Внимание. Нам нужен только демон и в режиме отключенного кошелька, для вашей же безопасности )
По умолчанию он устанавливается в по следующем пути c:\Program Files (x86)\Litecoin\daemon\litecoind.exe или c:\Program Files\Litecoin\daemon\litecoind.exe
Запустим Litecoin-Qt, дождемся полной синхронизации кошелька и выйдем из программы. Далее нам необходимо создать файл конфигурации litecoin.conf он должен находится в следующих местах
XP C:\Documents and Settings\ \Application Data\Litecoin\litecoin.conf
Vista, 7, 8, 8.1 — C:\Users\ \AppData\Roaming\Litecoin\litecoin.conf
Файл конфигурации демона litecoin.conf должен обязательно содержать следующие строки:
Для запуска пула нам потребуются имя и пароль из этой конфигурации.
Убеждаемся в том, что демон запущен и функционирует. Для этого возвращаемся в shell:
cd «c:\Program Files (x86)\Litecoin\daemon\»
6. Ну вроде все необходимое сделали, приступаем к запуску.
c:\python27\python.exe run_p2pool.py —give-author 0.5 —net litecoin —bitcoind-rpc-port 9334 —bitcoind-p2p-port 9335 имя_из_конфига пароль_из_конфига -a LWmiQ2FTZctXZV6RDMAkaCdedhfK2jGAwS —fee 1
Разберём подробно строку запуска:
—give-autor 0.5 — пожервовать автору p2pool 0.5% от добытого, можно поставить 0, можно поставить 10, на производительность это не повлияет, а у forrestv будет дополнительный стимул для дальнейшей работы.
—net litecoin — указываем скрипту то, что мы собираемся майнить litecoin.
—bitcoind-rpc-port 9334 и —bitcoind-p2p-port — указываем скрипту какие порты будут использованны для обмена информацией из запроса заданий у демона litecoind, ранее мы их указывали в конфигурационном файле демона.
имя_из_конфига пароль_из_конфига — ну об этом я писал выше, думаю вопросов нет.
-a LWmiQ2FTZctXZV6RDMAkaCdedhfK2jGAwS — адрес кошелька, куда будут поступать начисления в случаях если подключенный к ноде майнер не указал в качестве имени адрес своего кошелька, а так же комиссия ноды, если указана (в данном случае указан мой номер кошелька, если оставите, то все добытое на Вашей ноде будет перечисляться мне 😉 Не забудьте поменять на свой!
—datadir c:\p2pool-data — путь к папке с данными и статистикой ноды, по умолчанию можно не указывать, но желательно создать отдельную папку, для хранения данных, может пригодиться при переносе ноды или восстановления. пару раз в день желательно её архивировать.
—fee 1 — комиссия ноды в %, число от 0 до 100 (в случае если Ваша нада будет в публичном доступе, Вы будете получать комиссию с майнеров, которые ведут добычу у Вас на адрес кошелька, который указан ранее)
Ну вот собственно и всё, Статистику ноды можно посмотреть по адресу http://127.0.0.1:9327
Майнер можно запустить на этой же машине со следующими параметрами (на примере cgminer):
cgminer —scrypt -o http://127.0.0.1:9327 -u номер_вашего_лайткоин_кошелька -p любой
Если с другого компьютера то:
cgminer —scrypt -o http://IP_адрес_компьютера_с_нодой:9327 -u номер_вашего_лайткоин_кошелька -p любой
Обязательно проверьте, если у Вас стоит роутер, что порт 9338 и 9327 открыт и проброшен на компьютер с нодой.
Обзор пула для майнинга P2Pool: безопасность, настройка, плюсы и минусы
Данный пул является децентрализованным. Позволяет майнерам вести добычу с высоким уровнем безопасности на платформе с широким функционалом.
Сеть P2Pool представляет собой связанные между собой ноды, каждая из которых является отдельным оператором, управляющим программным приложением.
Все вместе ноды соединены в сеть p2p, которая по своей сути очень похожа на сеть биткоина. Здесь не существует иерархии или нод, которые имеют больший либо меньший вес. Информация о состоянии сети передается между отдельными узлами.
Однако, в отличие от биткоина, нодам не доступна вся информация о сети.
В них хранится лишь 8640 долей (которые были получены за последние три дня).
Делается это с целью предотвращения возможных атак со стороны пользователей пула.
Содержание:
Как распределяется вознаграждение внутри P2Pool сети
Те 12,5 биткоина, которые получает пул, распределяются по следующей схеме. 99,5% процентов всей прибыли распределяется между майнерами в зависимости от того, какую именно работу проделал каждый из них.
Участие в проекте
Майнеры могут присоединиться к любой из уже доступных нод P2Pool или настроить свою собственную с последующим ее присоединением к сети.
Для этого необходимо запустить специальное приложение p2pool на сетевом хосте.
Настройка и подключение ноды проводится бесплатно. Программное обеспечение также предоставляется на безвозмездной основе. Причем оно поставляется с открытым кодом, так что каждый желающий может внести свои интересные идеи.
С учетом всех преимуществ системы, P2Pool обеспечивает майнеров одними из лучших условий в сравнении с другими пулами, а также теми, кто предпочитает работать самостоятельно.
Кстати, здесь можно выбирать между самостоятельной добычей криптовалюты и участием в пуле. В первом случае, оператор ноды несет ответственность за свою работу сам и настраивает программу и оборудование по своему усмотрению.
Конечно, это не значит, что группа майнеров не может работать вместе на одной ноде. Но здесь вопрос лежит в плоскости безопасности всей сети и доверия. Решение каждый принимает самостоятельно.
Как работает система
Пул P2Pool дает каждому присоединенному майнеру несложную задачу. По завершению каждого этапа пользователь получает свою долю.
Последние распределяются между всеми нодами сети и собираются в так называемую цепочку долей (или sharechain). Примерно также построена работа сети биткоин.
Доли и выплаты
Термин «доля» отражает всю систему с точки зрения производства и выплат.
Пул P2Pool позволяет всем присоединившемся майнерам объединить хешрейт и вместе работать над созданием новых блоков.
Каждая нода получает свою долю в зависимости от того, какой процент вклада в добычу она сделала.
Как только открывается новый блок, каждый майнер получает свою долю от общей стоимости вознаграждения за блок.
В пуле P2Pool реализована система вознаграждения PPLNS.
Платежи отправляются непосредственно на кошелек майнера без предварительного зачисления в некий общий фонд или хранилище.
Безопасность P2Pool
В отличие от других пулов где нет разделения на доли, P2Pool является более защищенным. Здесь прогресс в создании блоков, равно как и владение долями распределено по сети. То есть найти уязвимость в такой системе практически невозможно.
Причем каждая отдельная нода является надежной и это приводит к высокому уровню защиты всей сети.
Соответственно, такой подход с использованием децентрализованных узлов является существенным преимуществом.
В том случае, если злоумышленники все-таки смогут каким-то образом нанести ущерб одному из узлов, они не похитят данные о добыче и не уничтожат их.
Оператор ноды сможет ее переустановить. При этом, вся информация, касающаяся этого узла, хранится в публичной сети долей.
После переустановки, оператор сможет снова присоединиться к сети и получить свою долю, а также все необходимые сведения от сети долей за считанные минуты.
Это еще один большой плюс именно децентрализованной системы. Дело в том, что взлом централизованной сети остановит всю дальнейшую работу.
Что касается информации, в большинстве случаев она либо уничтожается, либо теряется безвозвратно. Вот одна из причин, по которой сеть биткоин также является децентрализованной.
На практике, это означает, что даже если 100% майнеров использовали бы P2Pool, захватить преимущество в сети биткоина было бы невозможно именно благодаря P2P.
Вывод средств
Для того, чтобы вывести заработанные деньги из системы, необходимо подождать в течение 20 часов.
Собственный баланс пользователь может видеть в разделе
Процедура настройки P2Pool
Предлагаем пошаговую инструкцию по настройке:
Затем необходимо перезапустить приложение.
После завершения настройки, пользователи обычно подписываются на уведомления, среди которых могут быть важные новости о статусе работы и апдейта пула.
Поднимаем свою Vertcoin ноду P2Pool *c merged-ом и плюхами
Проснулся утром, сравнил статистику начислений честно намайненных монет в кабинете пула с показателями калькулятора, и окончательно убедился в том что пул недоначисляет?
Надоело платить комиссии «не за что»?
Или решил поддержать децентрализацию сети и уйти с крупного пула?
А может просто захотелось «поднять» что-то своё?
Не важно какова причина, важно другое — в голове засело едкое, ослепляющее желание что-то поменять, и прекращать майнить «через дядю».
И между ней и тобой появляется один простой, но в то же время очень резонный вопрос — «Как?».
Ответ на него такой же простой — «Легко!».
Чем же так хорош P2Pool и как его едят?
Во-первых — это open source, со всей вытекающей от сюда прозрачность. В любом случае всегда можно самостоятельно проверить интересующие моменты.
Во-вторых — майнинг на п2пуле эквивалентен соло майнингу с финансовой точки зрения, разумеется на некотором промежутке времени.
В третьих — он способствует децентрализации сети.
И если в первом пункте вопросов не возникает, то последние два требуют базового понимая что же из себя представляет п2пул.
Если говорить очень грубо и кратко, то это множество узлов(нод), работающих скоординированно и в то же время независимо. На каждой ноде админ вправе установить свои параметры, как комиссий, так и генерации блоков, которые будут иметь силу только для майнеров на данной ноде. В то же время найденный на одной ноде блок распределяется всем участникам п2пула, пропорционально ихнему вкладу в общее дело. Всё это закреплено и учитывается через собственные шары пониженной сложности и блокчейн п2пула (sharechain). Такой себе военно-политический альянс независимых нод, выступающих единым фронтом. О P2Pool, нежно и подробно.
Возвратимся к нашим пунктам. При нулевых комиссия (нода ведь наша собственная — зачем нам ставить самим себе комиссии, и потом их же получать?) мы получаем пропорциональное нашему вкладу количество монет от найденного блока genereted транзакцией напрямую. Более того — помимо базового значения монет в блоке, распределяются и включённые в блок комиссии. Всё как при соло майнинге, только в меньших количествах, но на порядок чаще.
Говоря об краеугольном камне децентрализации, об который между прочим уже чиркнули днищами такие лайнеры как Bitcoin и Litecoin и «атаке 51 процента», когда один пул может единолично решить, какие транзакции ему обрабатывать, а какие нет, можно высказываться в довольно широком спектре — начиная от панически истерического, и заканчивая пофигистически нейтральным. Но то что это «не есть хорошо», ясно всем. И пусть пока обошлось без эксцессов и крупные пулы выступают о недопущении «атаки 51 процента», повод для тревоги есть — дядя Адя тоже много говорил и ему тоже верили, правда до тех пор пока не стало уже слишком поздно. В случае же если же P2Pool займёт 51% хешрейта сети, или даже 70% — без разницы, существенно влиять на выборочность обработки транзакций у него не выйдет — не забываем что P2Pool состоит из независимых нод, каждая из которых сама и только для себя устанавливает правила и критерии принимаемых на обработку транзакций.
В данном примере будет использовать сервер с установленным на него Debian 7, и криптовалюта Vertcoin(сайт, форум, реддит). Почему именно vertcoin? По тому что данный форк не только взял самое лучшее от своих предшественников, биткоина и лайткоина, но и добавил много своего — стелс транзакции (Stealth Payments), защищённость от специализированного оборудования для майнинга, т.е. ASIC-ов, за счёт меняющегося со временем алгоритма (а если быть точным, то изменяется параметр хеш функции), а еще верткоин вырастет в цене во много-много-много раз, и все нынешние майнеры станут миллионерами. В прочем хватит о верткоине — статья не о нём, и всё написанное имеет место быть для подавляющего большинства остальных криптовалют, разумеется при некоторых особенностях и соответствующей адаптации действий под конкретно взятую криптовалюту и ОС.
Закладываем основу: бинарники и скрипты
И так, приступаем.
Первым делом следует обновить имеющийся софт
Далее возможны два варианта — скачать готовый исполняемый файл кошелька, либо самостоятельно скомпилировать его на сервере. Если решаем скачать уже готовый бинарник, то можно сразу переходить к следующему пункту. Ниже будет рассмотрен второй вариант, как более общий и универсальный.
Загружаем на сервер необходимые пакеты, для сборки бинарника и git (актуальный список всегда можно посмотреть в документации):
Сливаем исходники с репозитория гитхаба и собираем бинарник в максимальной «комплектации» и защищённостью:
Подробнее об параметрах можно посмотреть там же на странице документации.
Если на сервере стоит многоядерный процессор(что крайней рекомендуется), можно также добавить параметр -jN, где N — количество ядер. Это позволит собирать в указанное количество потоков и значительно сократить время компиляции. Например, для двухъядерной системы строка будет выглядеть следующим образом:
Если всё прошло успешно, то на выходе получаем бинарник vertcoind.
Теперь займёмся скриптом p2pool-а, скопируем и установим его:
Теперь можно создать файл конфигурации для кошелька и внести в него необходимые данные
После чего запустить в одном окне клиент кошелька, а в другом скрипт p2pool-а
И в принципе худо-бедно нода начнёт работать, можно нацеливать на неё свою ферму, и начинать пиарить на всех ресурсах своё творение. Но мы этого пока-что делать не будем по одной простой причине — «А где же обещанные плюхи?».
Создаём для наших целей отдельного пользователя
Вещь хоть в принципе и логичная, но далеко не очевидная, как минимум для человека до этого не сильно сталкивавышемся с администрированием серверов. Создадим домашний каталог нового пользователя, и перенесём на «правильные» места ранее полученные компоненты
Для добавления нового пользователя в систему я использовал команду adduser. Сначала создадим новую группу для пользователя (в примере её имя — vtc), потом создадим нового пользователя (не будем изощряться с фантазией, и назовём пользователя так же — vtc) и добавим его в данную группу. Полный список команд можно посмотреть, запустив утилиту adduser с параметром —help.
Добавлю несколько комментариев, касательно вышенаписанного, по строкам:
- Создаем группу с названием vtc и идентификатором 1000.
- Создаём уже пользователя с именем vtc, идентификатором 1000, указываем путь к его домашнему каталогу и то что его создавать не нужно(мы его создали шагом ранее), а так же указываем какая программа будет отвечать до доступ к шеллу, при попытке SSH подключения под данным пользователем. В качестве программы выбран простой бинарник, который в любом случае возвращает логическую «ложь» — другими словами, подключиться через SSH под данным аккаунтом не выйдет. Сделано это в целях безопасности. Среди вопросов, задаваемых в процессе добавления юзера, достоин ответа только пароль. Остальные можно прощелкивать энтером.
- Добавляем пользователя с именем vtc в группу с названием vtc.
Проверить корректность проделанных манипуляций можно просмотрев содержимое системных файлов passwd и group, которые лежат в папке /etc. Делается это следующими командами через стандартный редактор nano(либо любой другой):
Там же можно внести и косметические правки, например изменить программу доступа по SSH, или удалить назойливые запятые в описании пользователя (которые по идее должны разделять имя/фамилию/название фирмы/etc, в случае если эти данные вводились).
На окончание указываем владельца нашей директории /home/vtc — очевидно что им будет наш новый пользователь vtc. Флаг -R указывает, что данное имеет место быть и для всех вложенных каталогов и файлов.
Так же, установив на сервер FTP клиент, например vsFTPd (легко ставится пакетом через apt-get, немного геморно настраивается, но зато довольно хорош в плане безопасности — а когда речь идёт о криптовалютах, безопасность никогда не бывает чрезмерной), можно коннектится к серверу под данным пользователя vtc.
Теперь можно приступить к настройке клиента верткоина. Создадим скрытый каталог .vertcoin и в нём файл конфигурации vertcoin.conf со следующими параметрами:
- server — указывает на то, что этот узел будет являться «серверным». Понимаем как-то так на интуитивном уровне.
- gen — отключает автоматический майнинг монет на процессоре, из-за его крайней неэффективности.
- rpcport/allowip/user/password — задаёт значения для коммуникации и приём/отдачу команд кошельком. Менять первый два параметра крайне не рекомендуется. Имя/пароль устанавливаем на своё усмотрение, последний — чем длиннее и нетривиальней, тем лучше. Рекомендуемая длина — от 20 знаков.
- Последние два параметра имеют отношение к комиссиям — минимальное значение комиссий от транзакции, необходимое для включение её в сгенерированный нодой блок и минимальное значение, при котором нода передаст информацию о комиссии дальше по сети. Хотим больше зарабатывать — увеличиваем значение. Хотим поддержать сеть — ставим ноль.
Сохраняем и закрываем редактор. После чего изменяем права доступа к созданному файлу на «только чтение для владельца» (если ты параноик, то это еще не значит, что твои монеты никто не хочет украсть), и опять же обновляем владельца каталога /home/vtc:
Теперь залогинимся под нашим пользователем и запустим кошелёк. Ключ -s указывает, какой именно шелл использовать (помните мы указали бинарник false в качестве шелла для пользователя? простой логин под юзером vtc просто завершит сеанс)
В ответ должны получить фразу о том, что сервер стартовал. Получать текущую информацию можно командой getinfo:
В принципе большинство полей в описании не нуждаются. Максимум на чём можно остановить внимание, это blocks. Сейчас клиент скачивает с сети всю историю транзакций, а соответственно и блоков, что может занять не один час — на момент написания данной строки в системе было 121578 блоков. Когда клиент получит последний текущий блок (можно легко посмотреть по любому block explorer-у для данной валюты, либо когда спадёт постоянная нагрузка на CPU сервера), наш клиент станет полноценным участником сети.
Если спустя несколько минут количество соединений (connections) так и будет нуль, это может означать что клиент не смог самостоятельно найти другие узлы сети, по крайней мере за приемлемое время. В этом случае можно либо просто ждать его «прозрения», либо добавить вручную действующие узлы в файл конфигурации (список работающих узлов зачастую публикуется в первом сообщении темы об монете на форумах, вместе с остальной общей информацией) через команду addnode:
Разлогиниваемся из под юзера vtc, оставляя клиент спокойно делать своё непростое дело.
Merged mining: вступление
Приступим к созданию основы для merged майнинга. Если говорить кратко, то это позволяет параллельно майнить несколько валют, используя при попытке создать блоки для двух и более валют, одни и те же данные — майним и получаем одну основную валюту, а к ним бонусом еще и другие. Конечно можно самостоятельно майнить merged валюты как основные, но с финансовой точки зрения это бесперспективно.
Далеко и далеко не все валюты возможно майнить таким образом — есть основная валюта и есть merged валюта, которую можно майнить совместно с основной. Данное отношение не является симметричным. Разумеется, merged валюта никогда не выходит из тени своего старшего брата, по этому целесообразность их будущего под вопросом.
В данном примере основная валюта — верткоин, merged валюты к нему — Monocle(сайт и форум) и Parallaxcoin(форум).
Несколько слов об них:
- Монокли — монета от разработчиков верткоина. Задумана как испытательный полигон для тестирования нововведений, перед введением их на верте.
- Параллаксы —
говнофорк, который может параллельно майнится сразу с несколькими другими монетами,в том числе и с другими говнофорками. В последнее время соскамился чуть более чем полностью, и представляет чисто академическую ценность.
Так же, примером совместного майнинга является пара bitcoin и namecoin (последний можно майнить параллельно с BTC). Для litecoin тоже есть свои merged валюты.
Описывать еще раз для каждой из монет вышеописанные шаги по сборке и настройки не буду, а просто приведу порядок действий:
- Скачиваем исходники с GitHub-а — монокли/параллаксы.
- Собираем бинарники.
- Переносим их в «правильное» место — /usr/bin/ в данном случае.
- Создаём служебные каталоги и файлы конфигурации для обоих монет — .monocle & monocle.conf и parallaxcoin & parallaxcoin.conf соответственно, всё в том же каталоге /home/vtc. Ниже будет приведён пример содержимого данных файлов. Выставляем права доступа конфигурационных файлов и еще раз обновляем владельца содержимого каталога /home/vtc/, ради новых файлов и каталогов.
- Заходим под нашим пользователем, и запускаем кошельки на синхронизацию с сетью.
monocle.conf
* комиссия в 0.01 монеты является для моноклей обязательной и минимально возможным. Без неё транзакция просто не будет восприниматься всей остальной сетью.
parallaxcoin.conf
В скором времени должен стартовать еще один говнофорк — Umbrella, а если быть точным — то целых четыре: форки биткоина и лайткона стартуют уже сегодня, а верта и дарка — 1 августа. Если это всё-таки произойдёт, то в дополнение к текущему набору монет на ноду можно будет добавить еще и merged майнинг «зонтиков».
Улучшаем «производительность» ноды
В одноранговой сети, коей формально и является любая криптовалюта, главных и каких либо регуляторов нету как таковых. По этому «прав» будет тот, кто кричит о своей «правоте» «раньше» и «громче». Да да, речь идёт как раз о тех случаях, когда два узла находят один и тот же блок одновременно — кто раньше и быстрее успел всех оповестить об этом, тот и в выигрыше. Проигравший же остаётся с ничем (а если быть полностью корректным — то с орфаном (orphan)). Такая себе битва за время, где каждая миллисекунда на счету. По этому будем учить наш узел сообщать об собственных успехах быстро и на максимальное количество других узлов, тем самым повышая вес нашей ноды в сети.
«Скорость»
1). Одним из критериев, который влияет на скорость сборки и дальнейшей передачи блока по сети, является его размер. Стандартный максимальный размер блока, который может сгенерировать узел, равен 250000 байтам. Что-бы ускорить вышеназванные процессы мы уменьшим его размер в два раза. В теории это конечно может понизить нашу прибыль, за счёт не включения в блок большего количества транзакций (а следовательно и комиссий за них), но лично моё мнение что выигрыш от увеличения скорости будет больше. Делается это добавлением следующей строки в файл конфигурации клиента всех наших трёх монет (тот что *.conf)
2). Так же важным параметром, влияющим на скорость, является распределение процессов между ядрами. Это будет рассмотрено ниже в части про настройку демонов.
«Громкость»
1). Увеличим максимальное количество возможных соединений для нашего клиента, тем самым позволяя ему сообщать об найденных блоках на большее количество других узлов. Для этого снова дополняем файлы конфигурации наших клиентов строкой:
2). Снятие ограничений файрвола (зачастую им выступает iptables). Скажу сразу — на ОС Debian под OpenVZ данная возможность отсутствует по одной простой причине — ограничений нету в принципе, по крайней мере по заявлению моего хостера и некоторых людей на форумах. По этому данная часть будет несколько абстрактной, без чётких указаний «что и как» делать.
Нам нужно задать следующие правила для файрвола:
Данные правила следует задать для всех портов, через которые будет работать наша нода — как для портов, которые используют клиенты криптовалют, так и скрипт p2pool-а. Посмотреть кто какой порт слушает можно через команду
Эти правила должны автоматически загружаться и выгружать при старте/выключении системы. Делается это двумя способами — неправильным (через ручную загрузку правил, за что «другой сисадмин, пришедший на ваше место, будет очень долго вас материть»(с)) и правильным (через демона iptables-persistent). Нормальный how-to можно посмотреть тут.
Add: для возможности повышения этих ограничений в ядро должен быть включен модуль connlimit. Если же этот модуль не включен — нету и никаких ограничений, а значит и самой проблемы. by poiuty
Настройка демонов
Приступим к ключевому моменту всех наших изысканий — правильным автозапуском клиентов и скрипта p2pool-а с merged майнинга при старте системы. Осуществляться это будет стандартными способами — через создание и настройку демонов. Для этого в системе есть специальной каталог, где лежат все «сценарии управления» — /etc/init.d/. В данном каталоге лежит шаблон — skeleton, по образу и подобию которого мы будем делать свои сценарии. Перейдём в данный каталог и скопируем шаблон:
Откроем файл для редактирования, и внесём изменения:
А теперь, что же мы собственно сделали:
- Provides — задаём название
- Short-Description/Description — описание того что делает данный файл, на случай его вдруг сами «забудем» или разбираться во всём этом будут третьи лица
- DESC=«Vertcoin daemon» — описание сервиса
- NAME=vertcoind — задаём название исполняемого файла
- DAEMON=/usr/bin/$NAME — и его полное имя (помнишь мы ранее скопировали их в этот каталог?)
- DAEMON_ARGS=»-daemon» — задаём аргументы запуска: кошелёк должен стартовать в фоновом режиме демона
- DAEMON_LOADER=»/usr/bin/taskset 0x1 «$DAEMON — как уже говорилось ранее, настоятельно рекомендуется распределять между ядрами процессы самих клиентов и скрипта p2pool-a, для повышения скорости работы ноды в целом. В данном случае мы с помощью утилиты taskset указываем что клиент будет выполняться исключительно на первом ядре. В наличии у меня двухъядерный сервер, по этому было решено все три клиента спихнуть на одно ядро(первое), а скрипт p2pool-а на другое(второе).
В случае когда у вас под рукой только одноядерный сервер, то данную строку можно упразднить, убрав часть относящуюся к taskset-у, оставив только $DAEMON.
В случае когда у вас сервер с более чем двумя ядрами, задача немного усложняется, и для правильной конфигурации нужно будет таки изучить принцип работы утилиты taskset. Внимание! Основная идея не в том, что-бы равномерно раскидать нагрузку между ядрами, а что-бы разграничить между ядрами выполнение клиентов и скрипта p2pool-a, и при возможности отдать больше ресурсов основной валюте. Так например в случае какой-либо трёхъядерной экзотики нам следует на первое ядро повесить клиент верткоина, на второе скрипт p2pool-а, а на третье — всё остальное. - CHUID=vtc:vtc — задаём юзера и группу, от имени которых будет стартовать исполняемый файл.
- start-stop-daemon —start_blah_blah — вносим соответствующие изменения в саму команду запуска демона.
Сохраняем и закрываем файл, предоставляем ему права на исполнение и копируем его как заготовку для двух других клиентов и скрипта p2pool-а:
Корректируем содержимое файлов monocled и parallaxcoind. Они в принципе аналогичны vertcoind, за исключением того что имеют отношение к другим исполняемым файлам (пункты 1-4 выше) — меняем vertcoind на monocled и parallaxcoind соответственно. В моноклях так же в пункте 6 добавляем значение минимальной комиссии, что является особенность конкретно этой монеты, так что строка принимает следующий вид:
Отдельно остановимся на файле p2pool_vtc. Ниже приведён его конечный вид в местах, с отличных от vertcoind:
Касательно самих изменений:
- Provides — опять же название
- Required-Start: $all — так как скрипт p2pool-а для своей корректной и полноценной работы требует уже запущенные три(в данном случае) клиента криптовалют, то указываем что для старта данного демона необходимо подождать до того, пока все остальные демоны пойдут на выполнение (в том числе и три наших).
- Short-Description/Description/DESC — задаём соответствующие описания
- NAME=python — так как p2pool не является самостоятельной программой, а всего лишь скриптом, написанный на питоне, то исполняемым файлом нашего демона будет именно питон.
- DAEMON_ARGS=blah-blah-blah — и уже в качестве аргумента демона мы подсовываем питону полное название нашего скрипта p2pool-а(/home/vtc/p2pool-n/run_p2pool.py) и его собственные параметры запуска. Рассмотрим их подробней:
- a). —net vertcoin — задаём с какой именно сетью будет работать p2pool. В данном примере используется основная p2pool сеть верткоина. Для общности информации скажу, что есть так-же вторая и третьи сети верткоина, а так-же — как минимум по одной сети у всех уважающих себя криптовалют.
- b). -a your_wallet_name — задаём кошелёк по умолчанию, на который будут капать монеты. Если или ты, или другой майнер на нашей ноде неправильно укажет, или не укажет вовсе, кошелёк для получения монет. Если данный параметр не указывать, то монеты будут капать на кошелёк нашего узла на сервере, что не есть хорошо. Как сказал один умный человек —
Big fat wallets on a public server are not a good idea
Теперь, когда почти всё готово, мы можем управлять нашими демонами вручную через удобные команды, без всякой процедуры логина под пользователем и прописыванием аргументов. Первая команда выдаст нам возможный список действий, вторая же — запустит скрипт p2pool-а(разумеется при условии что наши узлы уже синхронизировались с сетью, загрузив всю историю блоков, и работают):
Последняя команда «оживит» нашу ноду, и она начнёт синхронизацию с сетью p2pool-a. Вскоре станет доступна статистика нашей ноды, в данном случае моей, по которой писался данный мануал — http://91.234.32.241:9171/static/. Нода создана «исключительно для примера», так что ломать её, пытаясь заполучить сотни биткоинов не стоит.
Последним штрихом обновляем список автозагрузки на сервере, что-бы наши демоны автоматически стартовали при запуске сервера, и перезагружаем сервер, дабы проверить успешность наших действий:
После ребута всё запустилось? Вот и хорошо!
Вместо заключения или «допиливаем надфилем»
Первым делом сделаем статистику нашей ноды более человеко-пригодной. Для этого будем использовать сторонний frond-end, например этот или этот. За одно можно будет и удалить весь мусор, если не сделали этого раньше:
Так же можно через диспетчер задач htop можно удостоверится, что все наши четыре демона успешно стартовали под юзером vtc, а так же работают на разных ядрах процессора (узнаётся это с помощью той же утилиты taskset и pid запущенных процессов).
Там же можно увеличить приоритет данных процессов(nice), задав его равным «-10»: выбираем нужный процесс и жмём F7. Реализовать это в автоматическом режиме через те же файлы запуска демонов мне не удалось, по этому этот момент нужно будет делать «ручками» после каждого ребута сервера. Повышение приоритета так же положительно сказывается на быстродействии ноды.
Еще одно узкое место — отсутствие проверки во время работы, не самозавершился ли какой-то из наших процессов, другими словами — «не упала ли нода?». По хорошему здесь должен быть некий скрипт, который бы по крону проверял наличии тех или иных процессов, и в случае отсутствия оных, перезагружал бы сервер. Но так как моя ферма находится у меня за спиной, то о падении (коих наверное за месяца четыре было всего буквально пару штук) я узнавал сразу-же по исчезновению шума в помещении. Если же ты хочешь автоматизировать всё до такой степени, что-бы про ноду можно было б забыть на пару месяцев, то об этом таки стоит задуматься.
Нацеливается ферма на ноду очень просто:
-o stratum+tcp://your_ip_or_node_domain:9171 -u wallet_name -p any_password -Q 0 -s 1 -E 1
Разумеется можно добавлять и конкретно свои параметры, но оптимизация и настройка майнера не является темой данного топика.
Значения параметров Q,s и E являются рекомендуемыми для p2pool-а, и способствуют более «резвому» обмену заданиями между нодой и фермой:
- -Q|—queue — длина очереди запрошенных работ. По умолчанию равно 1. Рекомендуемое значение — 0.
- -s|—scan-time — лимит времени, для сканирования текущего задания. По умолчанию равно 60. Рекомендуемое значение — 1
- -E|—expiry — верхняя граница времени, которая позволительна после получения работы, на рассмотрение её «запоздавшести»(stale). Значение по умолчанию — 120. Рекомендуемое значение — 1.
Последим абзацем хочется просветить судьбу намайненных merged валют. Они майнятся в режиме «соло» клиентом на нашей ноде. Соответственно, блоки монет начисляются на него же. Как быстро наша нода будет находить блоки и получать за них вознаграждение, целиком и полностью зависит её общего хешрейта. Что-бы получить монеты на свой кошелёк(к примеру тот, который установлен на рабочем ПК/ноутбуке, и с которого используя графический интерфейс ими можно легко распоряжаться), нам нужно залогиниться под нашим пользователем vtc, проверить наличие положительно баланса на кошельках(нашелся блок, или нет), и после перевести их майнерам ноды, пропорционально их хешрейту(на примере моноклей):
Синтаксис команды sendmany, как в прочем и список всех остальных параметров и команд, можно посмотреть запустив клиент/скрипт p2pool-а с ключем —help/-h, соответственно.
Данный материал был написан человеком, ранее не имевшим опыта системного администрирования. На случай, если у бородатых сисадминов от написанного начнёт жечь в глазах: лучший способ доказать свою правоту — указать на ошибки в комментариях. Конструктивная критика всегда приветствуется.
Использованная, но не упомянутая литература:
1). Топик на реддите, по которому в своё время поднимал свою первую ноду.
2). Замечательная тема на Bitcointalk, про тонкую настройку p2pool-а от Гуру этого ремесла.
3). Руководство по созданию суперноды для лайткоина.