Перейти к публикации

igorwhite's блог

  • записи
    4
  • комментариев
    397
  • просмотров
    63 569

Об этом блоге

Прошивка Antminer S5

Записи в этом блоге

 

Ethcore Parity в качестве основного кошелька на примере Ethereum Classic

Всем привет.   Инструкция по использованию Parity в качестве основного кошелька Ethereum Classic.     Я знаю, что многие майнеры в том числе и кто майнит у меня на ПУЛАХ используют биржевые кошельки вместо локальных кошельков, но я не сторонник такого решения и особенно не рекомендую новичкам. Я уже пережил два уполовинивания Bitcoin и крах нескольких бирж Mt.Gox, Cryptsy с монетами пользователей. И еще биржа, которая почти на грани - BitFenix.   Parity быстрый легковесный кошелек в отличии от Mist (geth)     И так приступим. Инструкция для Windows. Для Linux и Mac OS аналогично.   Переходим на сайт https://ethcore.io/ скачиваем Parity или ниже прямая ссылка. parity-1.3.0-install-win64.exe   Устанавливаем. Установка займет несколько секунд.   Идем в папку с установленной Parity по пути: Program Files\Ethcore\Parity Создаем ярлык parity.exe и размещаем его на рабочем столе.   Идем в свойства ярлыка и дописываем параметры запуска Parity. --chain classic Поле объект должно выглядеть так: "Program Files\Ethcore\Parity\parity.exe" --chain classic Там же можно сменить значок ярлыка. Скриншот:   После этого можно запустить Parity через ярлык. Начнется синхронизация Parity. Это займет некоторое время. Если ждать лень то вот ссылки на блокчейн: Ethereum Ckassic от 10.09.2016 г. >>> MEGA Ethereum от 18.09.2016 г. >>> MEGA Распаковать архив в папку .parity Windows 10: Пользователи >> User >> .parity Дальше устанавливаем по умолчанию браузер Chrome. И идем по адресу: http://localhost:8080/ Загружаемся в наш кошелек Ethereum Classic Выполним рекомендации по proxy:   Идем в Настройки Chrome >> Показать дополнительные настройки >> Сеть >> Изменить настройки прокси-сервера. Откроются свойства интернет Идем - Настройка сети откроется Настройка параметров локальной сети Активировать: Использовать сценарий автоматической настройки и внести туда: http://localhost:8080/proxy/proxy.pac Сохраниться и выйти. Скриншоты:   После этого заходим в браузер: http://home.parity/ Создаем новый аккаунт >> Create Account:   Нужно внести пароль. Придумайте сложный пароль или воспользуйтесь Генератором Паролей. Не забудьте его..... Собственно все можно пользоваться. Можно еще добавить в ярлык запуска Parity ключи --dapps-user и --dapps-pass для дополнительной безопасности. Тогда привходе в браузере будет дополнительно запрашиваться Пользователь и Пароль. Пример: "Program Files\Ethcore\Parity\parity.exe" --chain classic --dapps-user user --dapps-pass pass Скриншот:   Полный список параметров Parity под спойлером:       И Добро Пожаловать ко мне на пулы Ethereum Classic и Ethereum Please Donate: ETH: 0xcD89f563637AfB40bc84AEb1951bF8FEbd8cD1B7 ETC: 0x4976f77C8D895A34F7C5141ed6b14a1457A8b8A4 BTC: 14RTSbmixwthDNvxcLhXvuAyQfBHGXEXTc

igorwhite

igorwhite

 

Создание собственного пула UNOMP+MPOS+Merged Mining.

Создание собственного пула UNOMP+MPOS+Merged Mining. Поддерживающий Stratum и Vardiff.   И так приступим к созданию собственного пула с мергедом и плюшками.   Тестовая версия пула будет основана на Bitcoin и Unobtanium.   Данная инструкция дает возможность настроить пул практически на любую монету с любым алгоритмом.   Внимание дальше очень много букафф и картинок! :o   Если обнаружите недочеты - пишите поправим.   Я использую Ubuntu Server 14.04.3 LTS -- скачать.   Для удобства навигации и редактирования в Ubuntu Server используйте программу mc Для удобства навигации и редактирования в Windows используйте программу WinSCP   Систему установили, обновляемся: $ sudo apt-get update$ sudo apt-get upgrade$ sudo apt-get dist-upgrade$ sudo reboot Установим необходимые пакеты и зависимости: $ sudo apt-get install build-essential libtool autotools-dev autoconf pkg-config libssl-dev$ sudo apt-get install libboost-all-dev git mc htop npm nodejs nodejs-legacy libminiupnpc-dev redis-server Установим nvm $ curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh$ source ~/.profile$ nvm install 0.10.25$ nvm use 0.10.25 Изменим лимиты в /etc/security/limits.conf $ sudo nano /etc/security/limits.conf# В конце перед end дописываем такие строки:* soft nofile 1000000* hard nofile 1000000# Сохраняемся "Ctrl+o" и "Ctrl+x"Должно получиться как на скриншоте.   Подредактируем (изменим размер буфера передачи) нашу сетевую карточку в /etc/rc.local $ sudo nano /etc/rc.local# В конце перед exit дописываем строку:/sbin/ifconfig eth0 txqueuelen 10000# Сохраняемся "Ctrl+o" и "Ctrl+x"Должно получиться как на скриншоте. Перезагружаем наш сервер $ sudo reboot Проверим наши изменения $ ulimit -n$ ifconfigДолжно быть как на скриншоте.   Проверим как работает redis server, для этого запустим его. $ redis-server Скорее всего редис выдаст ошибку как на скриншоте: "WARNING overcommit_memory is set to 0!"   Поправим это $ sudo nano /etc/sysctl.confВ конце дописываем строку:vm.overcommit_memory=1# Сохраняемся "Ctrl+o" и "Ctrl+x"Перезагружаем сервер$ sudo rebootПроверяем редис$ redis-serverОшибок не должно быть.Смотри скриншот.   Так с этим покончили, переходим к демонам наших криптомонет.   Устанавливаем Bitcoin $ sudo add-apt-repository ppa:bitcoin/bitcoin$ sudo apt-get update$ sudo apt-get install libdb4.8-dev libdb4.8++-dev$ sudo apt-get install bitcoind Создаем файл bitcoin.conf $ mkdir ~/.bitcoin$ nano .bitcoin/bitcoin.conf# Записываем туда:server=1daemon=1rpcuser=server ## Не забудьте поменять на свой более сложный логин! rpcpassword=ServerPass ## Не забудьте поменять на свой более сложный пароль!port=8333rpcport=8332rpcallowip=127.0.0.1upnp=0 Создаем скрипт авто-запуска демона Bitcoin Основа скриптов это файл "skeleton" находящийся по пути /etc/init.d $ cd /etc/init.d/$ sudo cp skeleton bitcoind$ sudo nano bitcoind# Далее вносим следующие изменения:#! /bin/sh### BEGIN INIT INFO# Provides: bitcoind# Required-Start: $network $local_fs# Required-Stop: $remote_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: Auto init bitcoind# Description: Auto init bitcoind via booting system# placed in /etc/init.d.### END INIT INFO# Author: Wzor <[email protected]>## Please remove the "Author" lines above and replace them# with your own name if you copy and modify this script.# Do NOT "set -e"# PATH should only include /usr/* if it runs after the mountnfs.sh scriptPATH=/sbin:/usr/sbin:/bin:/usr/binDESC="Bitcoin daemon"NAME=/usr/bin/bitcoindDAEMON=$NAMEDAEMON_ARGS="-daemon"CLI=/usr/bin/bitcoin-cliDAEMON_LOADER=$DAEMONPIDFILE=/var/run/$NAME.pidSCRIPTNAME=/etc/init.d/$NAMECHUID=server:server# Exit if the package is not installed[ -x "$DAEMON" ] || exit 0# Read configuration variable file if it is present[ -r /etc/default/$NAME ] && . /etc/default/$NAME# Load the VERBOSE setting and other rcS variables. /lib/init/vars.sh# Define LSB log_* functions.# Depend on lsb-base (>= 3.2-14) to ensure that this file is present# and status_of_proc is working.. /lib/lsb/init-functions## Function that starts the daemon/service#do_start(){ # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON_LOADER --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --chuid $CHUID --pidfile $PIDFILE --exec $DAEMON_LOADER -- \ $DAEMON_ARGS \ || return 2 # Add code here, if necessary, that waits for the process to be ready # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time.}## Function that stops the daemon/service#stop_daemon_by_cli(){ #[ ! -e "$PIDFILE" ] && echo "$DESC not running!" && return 0 start-stop-daemon --start --chuid $CHUID --exec $CLI -- -rpcwait stop return 0}do_stop(){ # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred stop_daemon_by_cli start-stop-daemon --stop --quiet --chuid $CHUID --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks # and if the daemon is only ever run from this initscript. # If the above conditions are not satisfied then add some other code # that waits for the process to drop all resources that could be # needed by services started subsequently. A last resort is to # sleep for some time. start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL"}## Function that sends a SIGHUP to the daemon/service#do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME return 0}case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; #reload|force-reload) # # If do_reload() is not implemented then leave this commented out # and leave 'force-reload' as an alias for 'restart'. # #log_daemon_msg "Reloading $DESC" "$NAME" #do_reload #log_end_msg $? #;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;;esac: Незабываем в CHUID изменить пользователя и группу на свои это от кого будет запускаться демон Bitcoin   Далее # Делаем скрипт исполняемым (находимся в папке /etc/init.d)sudo chmod +x bitcoind# Выходим из папки /etc/init.d и Запускаем скрипт:/etc/init.d/bitcoind# Должна появиться строка "{start|stop|restart|reload|force-reload}" нас интересует "start" и "stop"/etc/init.d/bitcoind start# Проверяем запустился демон Bitcoin утилитой "htop"sudo htop# Если видим как на скрине то все ОК если нет ищем ошибки!!!# Остановка нашего демона /etc/init.d/bitcoind stop # Если старт-стоп происходит без ошибок добавляем скрипт а автозагрузку sudo update-rc.d bitcoind defaults # С этого момента демон Bitcoin будет запускаться и останавливаться сам при включении или отключении сервера!!!# Если нужно удалить из автостарта то выполняем следующую команду sudo update-rc.d -f bitcoind remove   Устанавливаем Unobtanium $ sudo apt-get install libevent-dev$ git clone https://github.com/unobtanium-official/Unobtanium.git unobtanium$ cd unobtanium$ chmod +x autogen.sh$ chmod +x share/genbuild.sh$ chmod +x src/leveldb/build_detect_platform$ ./autogen.sh $ ./configure --enable-upnp-default --with-miniupnpc $ make # Можете для "make" использовать ключ -j для быстрой сборки демона. Например "make -j4" где "4" количество ядер процессора $ sudo make install # Если хотите установить в /usr/local/bin Создаем файл unobtanium.conf $ mkdir ~/.unobtanium$ nano .unobtanium/unobtanium.conf# Записываем туда:server=1daemon=1listen=1rpcuser=server1 ## Не забудьте поменять на свой более сложный логин! rpcpassword=ServerPass1 ## Не забудьте поменять на свой более сложный пароль!port=65534rpcport=65535rpcallowip=127.0.0.1addnode=104.131.25.221addnode=108.61.10.90addnode=137.135.57.119addnode=144.76.239.66addnode=144.76.64.123addnode=158.255.89.244addnode=162.216.4.199addnode=162.243.47.14addnode=167.114.156.87addnode=178.33.209.208addnode=178.62.145.250addnode=185.50.213.123addnode=188.138.33.239addnode=188.138.94.6addnode=192.95.29.153addnode=192.99.245.21addnode=195.117.180.229addnode=198.15.127.242addnode=199.192.77.162addnode=199.192.78.194addnode=203.206.142.19addnode=63.247.147.166addnode=64.156.193.100addnode=68.232.186.171addnode=69.197.61.58addnode=74.120.220.54addnode=74.131.163.95addnode=75.19.27.26addnode=79.251.172.84addnode=91.235.254.37addnode=92.3.42.66addnode=93.197.227.99addnode=94.23.32.109 По аналогии с Bitcoin создайте скрипт авто-запуска демона Unobtanium   Все с монетами покончили идем дальше.   Устанавливаем UNOMP пул. $ git clone https://github.com/UNOMP/unified-node-open-mining-portal.git unomp$ cd unomp$ sudo npm update Должно закончиться без ошибок. приблизительно как на скриншоте.   Приступаем к конфигурированию UNOMP пула. # Создаем config.json из config.json.example$ cp config.json.example config.json $ cd# Получаем номер своего кошелька Bitcoin. Он нам потребуется дальше.$ bitcoin-cli getnewaddress# Сохраняем его куда нибудь.$ cd unomp/pool_configs$ cp litecoin.json.example bitcoin.jsonРедактируем bitcoin.json (Для удобства в Windows можете отредактировать его через WinSCP или nano в Ubuntu)1. В "enabled" меняем false на true2. В "coin" меняем litecoin.json на bitcoin.json3. В "auxes" меняем lottoshares.json на unobtanium.jsonТам же в "port":, "user", "password" меняем на свои из unobtanium.conf4. В "address" меняем на свой ранее сгенерированный кошелек.5. В "rewardRecipients" я меняю указанные там значения на вскую ерунду например ставлю "111"6. В "minimumPayment" ставим 0.00017. В "daemon" где "port", "user", "password" меняем на свои из bitcoin.conf8. В "ports" порт 3032 меняем на 3333Там же в "maxDiff" ставим 4096 или больше 81929. В "daemons" где "port", "user", "password" меняем на свои из bitcoin.conf Должно получиться как на скриншотах   Приступаем к тестовому запуску UNOMP пула. # Перед запуском проверьте синхронизировались демоны наших монет!$ cd unomp$ sudo node init.js Если все OK то должно быть как на скриншоте:   Заходим на веб страничку пула http://ваш_ip_адрес_пула/ Должно быть как на скриншоте:   Можно начинать майнить: URL stratum+tcp://ваш_ip_адрес_пула:3333Worker ваш_кошелек_bitcoinпароль любой После устранения каких нибудь недочетов нам нужно чтобы в случае отвала node init.js она сама восстановила свою работу Для этого установим Forever $ cd$ cd unomp$ sudo npm install forever -g# Запускаем наш пул$ sudo forever start init.js# Чтобы остановить$ sudo forever stop init.js Вот у нас готовый UNOMP пул с Merged-ом! Можно на этом остановиться.   Но нам же все мало.... Нам давай там всякие Апачи, Базы данных MySQL, Регистрацию на пуле. Ну вообщем побольше геморроя... И так продолжаем....   Начнем с установки пароля для root он нам дальше понадобится. $ sudo passwd root# Вводим придуманный пароль два раза. Установим дополнительные пакеты и MySQL $ sudo apt-get install build-essential libboost-all-dev libcurl4-openssl-dev libdb5.1-dev libdb5.1++-dev mysql-server MySQL потребует ввести пароль рута. Смотри скриншоты:   Установим дополнительные пакеты для MPOS пула. И перезапустим apache $ sudo apt-get install memcached php5-memcached php5-mysqlnd php5-curl php5-json libapache2-mod-php5$ sudo apache2ctl -k stop; sleep 2; sudo apache2ctl -k start После данных действий, если вы зайдете на веб страничку вашего сервера должны увидеть как на скриншоте:   Дальше надо будет изменять конфигурационные файлы апач и устанавливать базу данных. Все это можно сделать так сказать руками, но не все могут работать в консоле так что для облегчения выполнения задания привлечем дополнительные графические программы это Webmin и phpMyAdmin   Установим Webmin. Webmin — это графический web интерфейс для управления сервером на базе Unix подобных операционных систем. То есть установив Webmin вы можете удалённо конфигурировать и управлять Linux сервер в удобном графическом интерфейсе.   Добавляем репозиторий Webmin, редактируем файл /etc/apt/sources.list: $ sudo nano /etc/apt/sources.list В самом конце добавляем строку: deb http://download.webmin.com/download/repository sarge contrib Сохраняем изменения Ctrl+o Enter и закрываем редактор Ctrl+x Устанавливаем GPG ключ: $ wget http://www.webmin.com/jcameron-key.asc$ sudo apt-key add jcameron-key.asc Устанавливаем Webmin для этого вводим команду: $ sudo apt-get update$ sudo apt-get install webmin Запустить Webmin можно через браузер для этого введите следующий адресу в строку url: https://ваш_ip_адрес_сервера:10000 Вводим логин root и пароль от рута. Смотри скриншот:   Дальше установим phpMyAdmin $ sudo apt-get install phpmyadmin# Выбираем apche2, далее будет предложено настроить базу данных соглашаемся, потом вводим пароль от рута Смотри скриншоты:   На всякий случай перезапустим Апач $ sudo service apache2 reload Заходим на веб страничку phpmyadmin http://ваш_ip_адрес_сервера/phpmyadmin Смотри скриншоты:   Если видим ошибку (Расширение mcrypt не найдено. Пожалуйста, проверьте ваши настройки PHP.) как выше на скрине. То проделываем следующие $ sudo php5enmod mcrypt$ sudo service apache2 restart Ошибка должна пропасть.   Переходим к установке MPOS пула. $ git clone https://github.com/MPOS/php-mpos.git mpos Установим базу данных. Заходим под рутом в phpmyadmin http://ваш_ip_адрес_сервера/phpmyadminДалее "Пользователи" Смотри скриншот: Создаем учетную запись.Я назвал "poolbitcoin"Генерируем пароль. # Запоминаем его.Ставим галочку где "Создать базу данных с именем пользователя в названии и предоставить на нее полные привилегии"Сохраняемся "OK"Подробности смотри скриншоты:   Скачаем себе на компьютер MPOS в виде архива > Распаковываем архив, нас там интересует папка "sql"> Дальше опять идем в phpmyadmin выбираем своего пользователя в данном примере это "poolbitcoin"> Нажимаем "Импорт"> Нажимаем "Выберите файл"> Выбираем нашу базу данных "000_base_structure.sql"> Нажимаем "OK"Подробности в скриншотах:   Дальше начинаем так сказать связывать наш UNOMP пул с MPOS пулом. Отредактируем файл "config.json" по пути unomp/config.json (как угодно через WinSCP или nano)$ cd$ nano unomp/config.json# Изменяем в "website" где "enabled" true на false# Сохраняем изменения Ctrl+o Enter и закрываем редактор Ctrl+xСмотри скриншот:   Отредактируем файл "bitcoin.json" по пути unomp/pool_configs/bitcoin.json (как угодно через WinSCP или nano) $ cd$ nano unomp/pool_configs/bitcoin.json# Изменяем в "paymentProcessing" где "enabled" true на false# Изменяем в "mposMode" где "enabled" false на trueТам же:В "user" меняем на то что регистрировали в phpmyadmin в данном примере это "poolbitcoin";В "password" пароль что ранее нам сгенерировал phpmyadmin в данном примере это "tbXJUvJ7THDVeHpQ";В "database" на название нашей базы в данном примере это "poolbitcoin";Меняем "checkPassword" с false на true # Сохраняем изменения Ctrl+o Enter и закрываем редактор Ctrl+xПодробности в скриншотах:   Если на пуле будет предусмотрена регистрация то надо подумать о почтовом сервере. Проще воспользоваться бесплатным почтовым ящиком от gmail.com Хороша и подробная инструкция по настройке postfix + gmail здесь   Приступаем к конфигурированию MPOS пула. MPOS пул мы скачали раньше. $ cd$ cd mpos# Установим разрешения для www-data$ sudo chown -R www-data templates/compile templates/cache logs Создадим файл global.inc.php из global.inc.dist.php находящийся по пути mpos/include/config/ $ cd$ cd mpos/include/config/$ cp global.inc.dist.php global.inc.php# Редактируем global.inc.php через nano или WinSCP вообщем как удобно.# Внимание для разных алгоритмов значения в этом файле будут разные!!!$ nano global.inc.php> Находим ['SALT'] и ['SALTY'] вносим туда рандомный набор цифр букв от 25 символов, причем ['SALTY'] должен быть на несколько символов больше.> В ['algorithm'] меняем на наш алгоритм в данном примере это "sha256d"> В Database configuration где ['user'], ['pass'], ['name'] вносим все данные что раньше нам выдал phpmyadmin> В Local wallet RPC где ['host'], ['username'], ['password'] все вписываем из bitcoin coinf> В Getting Started Config где ['coinname'] меняем на нашу крипто-валюту в данном случае на Bitcoin;['coinurl'] --- https://bitcoin.org;['stratumurl'] --- localhost или можно получить бесплатный домен DDNS и в писать туда доменное имя.> В Ticker API можно настроить вывод курса крипто-валюты.Где ['enabled'] меняем false на true;Где ['target'] прописываем API биржи в данном случае биржа btc-e "/api/2/btc_usd/ticker"> В Automatic Payout Thresholds где ['ap_threshold']['min'] меняем на 0.0001; в ['ap_threshold']['max'] на 100> В Minimum manual Payout Threshold где ['mp_threshold'] меняем на 0.0001> В Currency где ['currency'] меняем на свою крипто-валюту в данном примере "BTC"> В Coin Target где ['cointarget'] меняем на "600" Внимание у разных криптомонет это значение разное.> В TX Fees где ['txfee_auto'] и ['txfee_manual'] меняем на 0.0001> В Payout System где ['payout_system'] по умолчанию система выплат вознаграждений prop можно прописать pplns или pps> В Pool Fees где ['fees'] можно установить комиссию пула> В Block Reward где ['reward'] это количество монет в блоке меняем на "25"> В Confirmations где ['confirmations'] меняем на 101, и в ['network_confirmations'] меняем на "101" Это подтверждения. Внимание у разных криптомонет это значение разное.# Сохраняем изменения Ctrl+o Enter и закрываем редактор Ctrl+x   Так, отлично с этим справились идем дальше. Начинаем конфигурировать Apache. # Идем в Webmin https://ваш_ip_адрес_сервера:10000> дальше выбираем Servers > Apache Webserver > Virtual ServerТам дальше где Virtual Server Details меняем путь с /var/www/html на свой в моем примере это /home/server/mpos/publicСохраняемся нажимаем SAVEИдем в Global configuration > Edit Config Files там в конце файла вносим такие строки:<Directory /home/server/mpos/public> Options Indexes FollowSymLinks AllowOverride None Require all granted</Directory>## Обратите внимание что в место где server должен быть ваш пользователь.!!!Сохраняемся ----> SAVE и применим наши изменения Apply Changes# Подробности смотри скриншоты:   Урааа мы практически на финишной прямой. # Заходим через браузер на ip вашего сервера http://ваш_ip_адрес_сервера# Должна загрузиться стартовая страница MPOS пула# Смотри скриншот:# Если нет то повторите процедуру с установкой разрешений для www-data$ sudo chown -R www-data templates/compile templates/cache logs # Дальше регистрируем нового пользователя он же будет администратором.# Заходим под свои логином# Если не настраивали почтовый сервис то идем Admin Panel > System > Settings > System и в Disable e-mail confirmations меняем значение с NO на YES Сохраняемся ----> SAVEПодробности смотри скриншот: # Дальше для будущего теста создадим воркера# Идем My Account > My Workers содаем воркераСмотри скриншот:   Переходим к настройке Cronjob # Для этого вернемся в Webmin https://ваш_ip_адрес_сервера:10000# Дальше System > Scheduled Cron Jobs > Create a new scheduled cron job > в Execute cron job as выбираем пользователя в данном примере это server > в поле Command прописываем путь до наших cronjobs для:> run-statistics.sh> run-maintenance.sh> run-payout.sh# Только не все подряд, а по очереди после сохранения (Create)# Не забудьте в разделе Minutes выбрать вручную все минуты # Подробности смотри скриншоты: # Так сделали, теперь быстренько идем на свой пул http://ваш_ip_адрес_сервера# В раздел Admin Panel > System > Monitoring и должны увидеть что все Cronjob активны# Смотри скриншот:   Аллилуйя!!! начинаем тестовый запуск пула!!! $ cd unomp$ node init.js# Должно быть как на скриншоте:   Можно начать тестовый майнинг # Воркера мы создали раньше.# Настраиваем майнер> URL --- stratum+tcp://ваш_ip_адрес_сервера:3333> Логин --- вписываем свой воркер> Пароль --- пароль воркера# В системных настройках можно изменить вид отображения статистики сменить с Kh/s на Mh/s, Gh/s, Th/s и внести разные другие настройки.# Думаю что с этим вы сами разберетесь:)# Смотри скриншот:   После устранения всех недостатков и тонкой настройки пула запускаем его с Forever $ cd unomp# Запускаем наш пул$ forever start init.js# Чтобы остановить$ forever stop init.js И в заключении мы имеем пул UNOMP+MPOS поддерживающий Stratum и Vardiff Что я здесь пропустил так это настройки безопасности. Попозже это доделаю! :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :)   Если моя статья пригодилась и понравилась меня можно отблагодарить: (BTC) 14RTSbmixwthDNvxcLhXvuAyQfBHGXEXTc (LTC) LbkRrDVFyjUcxbkj4KvsrTXaosPn4faDfU (NMC) NHc9Nq5EbGzsWpX3S7WLw5GSZeaingkSd2 (DASH) Xd418fCGeKrGvCyi1SdudhNzTp1n6pnURg

igorwhite

igorwhite

 

Создание собственной ноды p2pool Bitcoin с объединенным майнингом (Super Node).

Создание собственной (Super Node) ноды p2pool Bitcoin с объединенным майнингом. Merged Mining.   Требование по железу ремендую: CPU - 4 Core ОЗУ - 8 GB HDD - SSD (это очень важно)   И так приступим.... Пишу очень много по памяти так что если где-то будут ошибки пишите поправим. Предупреждаю впереди очень многа букаф!!! :blink: И еще я не писатель, а больше читатель.   Делать будем все в Linux. Я рекомендую Linux на основе Ubuntu или Debian. Мои сервера работают на консольной версии Ubuntu. Но для наглядности и удобства можете начать с версии Lubuntu 14.04.01 Мне кажется самой стабильной на данный момент. Вся инструкция написана для Ubuntu Server 14.04.02 Нам нужен быстрый и легковесный сервер.   Кратко о Merged это дополнительный майнинг параллельных coins не влияющий на основной процесс майнинга. Добыча идет как бы в соло. ......... Так Linux поставили.   1. Сделаем обновление системы: sudo apt-get updatesudo apt-get upgradesudo rebootsudo apt-get dist-upgradesudo reboot 2. Установим зависимости и дополнительные программы "mc" и "htop": mc (Midnight Commander) для удобства навигации в консольной версии Linux. htop (top) расширенная версия утилиты "top" для мониторинга и тонкой настройки системы. sudo apt-get install build-essential libtool autotools-dev autoconf automake libssl-dev libboost1.55-all-dev libminiupnpc-dev libqt5gui5 libqt5core5a libqt5dbus5 libglib2.0-dev libglibmm-2.4-dev libdb5.1++-dev libcurl4-openssl-dev qttools5-dev qttools5-dev-tools libprotobuf-dev libqrencode-dev pkg-config libprotoc8 protobuf-compiler git screen htop mc software-properties-common python-software-properties python-rrdtool python-pygame python-scipy python-twisted python-twisted-web python-imaging python-dev 3. Установим демон Bitcoin(BTC): sudo add-apt-repository ppa:bitcoin/bitcoin sudo apt-get update sudo apt-get install bitcoind ​ 4. Приступим к компиляции наших Merged Коинов:   4.1 Namecoin(NMC): git clone https://github.com/namecoin/namecoin.git cd namecoin/srcmake# Скопируем namecoind в папку /usr/local/bin # У меня все демоны там, можно - любое sudo cp namecoind /usr/local/bin/namecoind Внимание если "git" будет ругаться на отсутствие доступа к папке ".coinfig" то смените владельца этой папки командой:   4.2 Unobtanium(UNO) (надо делать четко по инструкции иначе не c компилируется наш демон Unobtanium): git clone https://github.com/unobtanium-official/Unobtanium.gitcd Unobtaniumchmod +x autogen.shchmod +x share/genbuild.shchmod +x src/leveldb/build_detect_platform./autogen.sh./configuremake# Скопируем unobtanium-cli, unobtaniumd в папку /usr/local/bincd Unobtanium/srcsudo cp unobtanium-cli /usr/local/bin/unobtanium-clisudo cp unobtaniumd /usr/local/bin/unobtaniumd К стати после "make" можно добавить ключ -j2 или -j4 где цифра "2 или 4" количество ядер процессора, тогда демоны будут быстрее компилироваться.   4.3 IXCoind(IXC): git clone https://github.com/FrictionlessCoin/iXcoin.gitcd iXcoin/srcmake -f makefile.unix ixcoind# Скопируем ixcoind в папку /usr/local/binsudo cp ixcoind /usr/local/bin/ixcoind 4.4 Fusioncoin(FSC): git clone https://github.com/fusioncoin/fusioncoin.gitcd fusioncoin/srcmake -f makefile.unix fusioncoind# Скопируем fusioncoind в папку /usr/local/bin/sudo cp fusioncoind /usr/local/bin/fusioncoind 4.5 I0Coin(I0C): git clone https://github.com/rsnel/i0coin.gitcd i0coin/srcmake -f makefile.unix i0coind# Скопируем i0coind в папку /usr/local/bin/sudo cp i0coind /usr/local/bin/i0coind 4.6 Huntercoin(HUC): git clone https://github.com/chronokings/huntercoin.gitcd huntercoin/srcmake# Скопируем huntercoind в папку /usr/local/bin/sudo cp huntercoind /usr/local/bin/huntercoind 4.7 Devcoin(DVC): git clone https://github.com/coinzen/devcoin.gitcd devcoin/srcmake -f makefile.unix USE_PNP=1 devcoind# Скопируем devcoind в папку /usr/local/bin/sudo cp devcoind /usr/local/bin/devcoind Так с компиляцией мы покончили.   5. Приступаем к созданию конфигов наших демонов: Создаем папки: mkdir ~/.bitcoinmkdir ~/.namecoinmkdir ~/.unobtaniummkdir ~/.ixcoinmkdir ~/.fusioncoinmkdir ~/.i0coinmkdir ~/.huntercoinmkdir ~/.devcoin 5.1 Bitcoin(BTC): # Создаем файл bitcoin.conf nano ~/.bitcoin/bitcoin.conf# Копируем туда:server=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcport=8332port=8333rpcallowip=127.0.0.1disablewallet=1mintxfee=0.00001minrelaytxfee=0.00001# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x") 5.2 Namecoin(NMC): # Создаем файл namecoin.confnano ~/.namecoin/namecoin.conf# Копируем туда:server=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcport=8336port=8334rpcallowip=127.0.0.1# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x") 5.3 Unobtanium(UNO): # Создаем файл unobtanium.confnano ~/.unobtanium/unobtanium.conf# Копируем туда:server=1listen=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcport=65535port=65534rpcallow=127.0.0.1 addnode=104.131.25.221addnode=108.61.10.90addnode=137.135.57.119addnode=144.76.239.66addnode=144.76.64.123addnode=158.255.89.244addnode=162.216.4.199addnode=162.243.47.14addnode=167.114.156.87addnode=178.33.209.208addnode=178.62.145.250addnode=185.50.213.123addnode=188.138.33.239addnode=188.138.94.6addnode=192.95.29.153addnode=192.99.245.21addnode=195.117.180.229addnode=198.15.127.242addnode=199.192.77.162addnode=199.192.78.194addnode=203.206.142.19addnode=63.247.147.166addnode=64.156.193.100addnode=68.232.186.171addnode=69.197.61.58addnode=74.120.220.54addnode=74.131.163.95addnode=75.19.27.26addnode=79.251.172.84addnode=91.235.254.37addnode=92.3.42.66addnode=93.197.227.99addnode=94.23.32.109# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x") 5.4 IXCoin(IXC): # Создаем файл ixcoin.confnano ~/.ixcoin/ixcoin.conf# Копируем туда:server=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcport=8338port=8337rpcallowip=127.0.0.1addnode=24.34.40.175addnode=142.4.208.71addnode=24.42.148.53addnode=184.78.215.89addnode=62.75.167.48addnode=83.163.120.176addnode=123.203.84.34addnode=86.93.208.193# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x") 5.5 Fusioncoin(FSC): # Создаем файл fusioncoin.confnano ~/.fusioncoin/fusioncoin.conf# Копируем туда:server=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcport=18491port=8492rpcallowip=127.0.0.1miningalgo=sha256addnode=54.193.11.95addnode=54.255.130.210addnode=198.23.242.92addnode=121.199.12.227addnode=54.185.94.219# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x") 5.6 I0Coin(I0C): # Создаем файл i0coin.confnano ~/.i0coin/i0coin.conf# Копируем туда:server=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcport=7332port=7333rpcallowip=127.0.0.1addnode=85.17.248.211:7333addnone=198.154.60.61:7333addnode=188.165.216.59:7333# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x") 5.7 Huntercoin(HUC): # Создаем файл huntercoin.confgedit ~/.huntercoin/huntercoin.conf# Копируем туда:server=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcallowip=127.0.0.1rpcport=8399port=8398algo=sha256daddnode=192.241.222.65addnode=192.81.209.210addnode=178.32.31.41addnode=162.243.175.205# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x") 5.8 Devcoin(DVC): # Создаем файл devcoin.confgedit ~/.devcoin/devcoin.conf# Копируем туда:server=1daemon=1rpcuser=userWzorDVCrpcpassword=FCvhzdhrwq1MiPZX88YhHyKjDVsJzXFl6uirpcport=6333port=6334rpcallowip=127.0.0.1# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x") # Не забываем сохранять внесенную информацию!!!   6. Так файлы конфигурации создали. Сделаем базовые настройки безопасности: Так как мы тут все параноики нам нужно защитить наши честно добытые коины.Применим chmod 600 или 400 (все зависит от состояния паранойи) к нашим файлам конфигурацииПример:chmod 400 ~/.bitcoin/bitcoin.conf На основе примера повторить с остальными конфигами. 6.1 Farewell sudo ufw enablesudo ufw allow 8333/tcp # bitcoin peer to peersudo ufw allow 8334/tcp # namecoin peer to peersudo ufw allow 65534/tcp # unobtanium peer to peersudo ufw allow 8337/tcp # ixcoin peer to peersudo ufw allow 6334/tcp # devcoin peer to peersudo ufw allow 7333/tcp # i0coin peer to peersudo ufw allow 8492/tcp # fusioncoin peer to peersudo ufw allow 8398/tcp # huntercoin peer to peersudo ufw allow 9333/tcp # P2pool peer to peersudo ufw allow 9332/tcp # P2Pool connections and Web interface# Не забываем открыть эти же порты на роутере если таковой есть. RPC порты ни где не открываем!!! # Если работаем по удаленке то открываем порт sshsudo ufw allow 22/tcp 7. Приступаем к запуску демонов. Первый запуск делаем в ручную потом добавим в автозагрузку. # Запускаем демоны в терминале по очереди:bitcoindnamecoindunobtaniumd # Внимание первый запуск Unobtanium делаем с ключом -reindexixcoindfusioncoindi0coindhuntercoinddevcoind#Демоны начинают синхронизироваться с сетью. Ждем минут 5-10 и проверяем наши демоны: bitcoin-cli getinfonamecoind getinfounobtanium-cli getinfoixcoin-cli getinfofusioncoind getinfoi0coind getinfohuntercoind getinfodevcoind getinfo   Демоны синхронизируется долго, несколько дней поэтому рекомендую поискать торренты с цепочкой блоков. Например Huntercoin находится здесь. И не забываем что эти файлы кроссплатформенные. Т.Е. если у вас уже есть кошельки можете перекинуть свои файлы на сервер только естественно без "wallet.dat и конфигов"   8. Создаем скрипты автостарта и остановки наших демонов: Основа скриптов это файл "skeleton" находящийся по пути /etc/init.d cd /etc/init.d/sudo cp skeleton bitcoindsudo nano bitcoind# Далее вносим следующие изменения:#! /bin/sh### BEGIN INIT INFO# Provides: bitcoind# Required-Start: $network $local_fs# Required-Stop: $remote_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: Auto start-stop bitcoind# Description: Auto start-stop bitcoind via booting system# placed in /etc/init.d.### END INIT INFO# Author: wzor <[email protected]>## Please remove the "Author" lines above and replace them# with your own name if you copy and modify this script.# Do NOT "set -e"# PATH should only include /usr/* if it runs after the mountnfs.sh scriptPATH=/sbin:/usr/sbin:/bin:/usr/binDESC="Bitcoin Daemon"NAME=/usr/local/bin/bitcoindDAEMON=$NAMEDAEMON_ARGS="-daemon"CLI=/usr/local/bin/bitcoin-cliDAEMON_LOADER="/usr/bin/taskset 0x4 "$DAEMONPIDFILE=/var/run/$NAME.pidSCRIPTNAME=/etc/init.d/$NAMECHUID=user:group# Exit if the package is not installed[ -x "$DAEMON" ] || exit 0# Read configuration variable file if it is present[ -r /etc/default/$NAME ] && . /etc/default/$NAME# Load the VERBOSE setting and other rcS variables. /lib/init/vars.sh# Define LSB log_* functions.# Depend on lsb-base (>= 3.2-14) to ensure that this file is present# and status_of_proc is working.. /lib/lsb/init-functions## Function that starts the daemon/service#do_start(){# Return# 0 if daemon has been started# 1 if daemon was already running# 2 if daemon could not be startedstart-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON_LOADER --test > /dev/null \|| return 1start-stop-daemon --start --quiet --chuid $CHUID --pidfile $PIDFILE --exec $DAEMON_LOADER -- \$DAEMON_ARGS \|| return 2# Add code here, if necessary, that waits for the process to be ready# to handle requests from services started subsequently which depend# on this one. As a last resort, sleep for some time.}## Function that stops the daemon/service#stop_daemon_by_cli(){#[ ! -e "$PIDFILE" ] && echo "$DESC not running!" && return 0start-stop-daemon --start --chuid $CHUID --exec $CLI -- -rpcwait stopreturn 0}do_stop(){# Return# 0 if daemon has been stopped# 1 if daemon was already stopped# 2 if daemon could not be stopped# other if a failure occurredstop_daemon_by_clistart-stop-daemon --stop --quiet --chuid $CHUID --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $NAMERETVAL="$?"[ "$RETVAL" = 2 ] && return 2# Wait for children to finish too if this is a daemon that forks# and if the daemon is only ever run from this initscript.# If the above conditions are not satisfied then add some other code# that waits for the process to drop all resources that could be# needed by services started subsequently. A last resort is to# sleep for some time.start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON[ "$?" = 2 ] && return 2# Many daemons don't delete their pidfiles when they exit.rm -f $PIDFILEreturn "$RETVAL"}## Function that sends a SIGHUP to the daemon/service#do_reload() {## If the daemon can reload its configuration without# restarting (for example, when it is sent a SIGHUP),# then implement that here.#start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAMEreturn 0}case "$1" instart)[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"do_startcase "$?" in0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;esac;;stop)[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"do_stopcase "$?" in0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;esac;;status)status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?;;#reload|force-reload)## If do_reload() is not implemented then leave this commented out# and leave 'force-reload' as an alias for 'restart'.##log_daemon_msg "Reloading $DESC" "$NAME"#do_reload#log_end_msg $?#;;restart|force-reload)## If the "reload" option is implemented then remove the# 'force-reload' alias#log_daemon_msg "Restarting $DESC" "$NAME"do_stopcase "$?" in0|1)do_startcase "$?" in0) log_end_msg 0 ;;1) log_end_msg 1 ;; # Old process is still running*) log_end_msg 1 ;; # Failed to startesac;;*)# Failed to stoplog_end_msg 1;;esac;;*)#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2exit 3;;esac: # Пояснения для скрипта или что же там такое:   1.Provides - название скрипта 2. Short-Description/Description - описание того что делает данный файл, а то вдруг "забудем" или кто то другой будет разбираться. 3. DESC="Bitcoin Daemon" - описание сервиса 4. NAME=/usr/local/bin/bitcoind - имя и путь исполняемого файла 5. DAEMON=$NAME - какой демон должен запуститься 6. DAEMON_ARGS="-daemon" - задаём аргументы запуска демона, он должен стартовать режиме демона (правда можно и без этого аргумента. это я так для большей уверенности) 7. CLI=/usr/local/bin/bitcoin-cli - для остановки демона. Мы же знаем что бы остановить демон Bitcoin надо использовать "bitcoin-cli stop" 8. DAEMON_LOADER="/usr/bin/taskset 0x4 "$DAEMON - На этом пункте остановимся и распишем по подробней. Надо распределить нагрузку на сервер т.е. на его процессор и для этого нам поможет утилита "taskset". У нас есть две приоритетные задачи это ДЕМОН BITCOIN и СКРИПТ P2POOL-а. Аргумент "0x4" утилиты "taskset" запускает наш демон Bitcoin на третьем ядре процессора. Настоятельно рекомендую распределять между ядрами процессы самих демонов наших монет и скрипта p2pool-a и для повышения скорости работы пула-ноды. Как мы представляем себе четырехъядерный процессор - "1,2,3,4" это и есть ядра процессора, но это не так для системы ядро под номером "1" это "0" а в шестнадцатеричном формате это "0x00000001" или сокращенно "0x1". Идея такая у нас семь merged монет им отдадим на растерзание первые два ядра используя аргумент "0x3", для bitcoind "0x4" что заставит его работать исключительно на третьем ядре и скрипт p2pool-а "0x8" что соответствует четвертому ядру процессора. В случае когда у вас только одноядерный процессор, то в данной строке нужно удалить "/usr/bin/taskset 0x4 " оставив только $DAEMON. Если у вас процессор больше чем четырехъядерный то вам придется поискать в гугле значения ваших ядер. 9. CHUID=user:group - задаём пользователя и группу, от имени которых будет запускаться исполняемый скрипт.   9. Запуск скрипта bitcoind: # Делаем скрипт исполняемым (находимся в папке /etc/init.d)sudo chmod +x bitcoind# Выходим из папки /etc/init.d и Запускаем скрипт:/etc/init.d/bitcoind# Должна появиться строка "{start|stop|restart|reload|force-reload}" нас интересует "start" и "stop"/etc/init.d/bitcoind start# Проверяем запустился демон Bitcoin утилитой "htop"sudo htop# Если видим как на скрине то все ОК если нет ищем ошибки!!!# Остановка нашего демона /etc/init.d/bitcoind stop # Если старт-стоп происходит без ошибок добавляем скрипт а автозагрузку sudo update-rc.d bitcoind defaults # С этого момента скрипты будут стартовать и останавливаться сами (соответственно демоны коинов тоже) при включении или отключении сервера!!!# Если нужно удалить из автостарта то выполняем следующую команду sudo update-rc.d -f bitcoind remove   10. Так на основе скрипта Bitcoin делаем скрипт для запуска Unobtanim. Т.К. их демоны отличаются от других тем что используют отдельные утилиты мониторинга и контроля, это соответственно "bitcoin-cli' и "unobtanium-cli". cd /etc/init.dsudo cp bitcoind unobtaniumd# Изменяем все пункты которые связаны с bitcoin и на unobtanium и проводим те же процедуры что делали со скриптом bitcoind (пункт 9). 11. Создаем скрипт запуска Namecoin (NMC) на основе его делаем остальные: cd /etc/init.dsudo cd skeleton namecoindsudo nano namecoind# Далее вносим следующие изменения:#! /bin/sh### BEGIN INIT INFO# Provides: namecoind# Required-Start: $network $local_fs# Required-Stop: $remote_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: Auto start-stop namecoind# Description: Auto start-stop namecoind via booting system# placed in /etc/init.d.### END INIT INFO# Author: wzor <[email protected]>## Please remove the "Author" lines above and replace them# with your own name if you copy and modify this script.# Do NOT "set -e"# PATH should only include /usr/* if it runs after the mountnfs.sh scriptPATH=/sbin:/usr/sbin:/bin:/usr/binDESC="Namecoin Daemon"NAME=/usr/local/bin/namecoindDAEMON=$NAMEDAEMON_ARGS="-daemon"DAEMON_LOADER="/usr/bin/taskset 0x3 "$DAEMONPIDFILE=/var/run/$NAME.pidSCRIPTNAME=/etc/init.d/$NAMECHUID=user:group# Exit if the package is not installed[ -x "$DAEMON" ] || exit 0# Read configuration variable file if it is present[ -r /etc/default/$NAME ] && . /etc/default/$NAME# Load the VERBOSE setting and other rcS variables. /lib/init/vars.sh# Define LSB log_* functions.# Depend on lsb-base (>= 3.2-14) to ensure that this file is present# and status_of_proc is working.. /lib/lsb/init-functions## Function that starts the daemon/service#do_start(){# Return# 0 if daemon has been started# 1 if daemon was already running# 2 if daemon could not be startedstart-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON_LOADER --test > /dev/null \|| return 1start-stop-daemon --start --quiet --chuid $CHUID --pidfile $PIDFILE --exec $DAEMON_LOADER -- \$DAEMON_ARGS \|| return 2# Add code here, if necessary, that waits for the process to be ready# to handle requests from services started subsequently which depend# on this one. As a last resort, sleep for some time.}## Function that stops the daemon/service#do_stop(){# Return# 0 if daemon has been stopped# 1 if daemon was already stopped# 2 if daemon could not be stopped# other if a failure occurredstart-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMONRETVAL="$?"[ "$RETVAL" = 2 ] && return 2# Wait for children to finish too if this is a daemon that forks# and if the daemon is only ever run from this initscript.# If the above conditions are not satisfied then add some other code# that waits for the process to drop all resources that could be# needed by services started subsequently. A last resort is to# sleep for some time.start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON[ "$?" = 2 ] && return 2# Many daemons don't delete their pidfiles when they exit.rm -f $PIDFILEreturn "$RETVAL"}## Function that sends a SIGHUP to the daemon/service#do_reload() {## If the daemon can reload its configuration without# restarting (for example, when it is sent a SIGHUP),# then implement that here.#start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAMEreturn 0}case "$1" instart)[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"do_startcase "$?" in0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;esac;;stop)[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"do_stopcase "$?" in0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;esac;;status)status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?;;#reload|force-reload)## If do_reload() is not implemented then leave this commented out# and leave 'force-reload' as an alias for 'restart'.##log_daemon_msg "Reloading $DESC" "$NAME"#do_reload#log_end_msg $?#;;restart|force-reload)## If the "reload" option is implemented then remove the# 'force-reload' alias#log_daemon_msg "Restarting $DESC" "$NAME"do_stopcase "$?" in0|1)do_startcase "$?" in0) log_end_msg 0 ;;1) log_end_msg 1 ;; # Old process is still running*) log_end_msg 1 ;; # Failed to startesac;;*)# Failed to stoplog_end_msg 1;;esac;;*)#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2exit 3;;esac: 11.1 Создаем остальные скрипты и не забываем все повторять как в пункте 9. cd /etc/init.dsudo cp namecoind fusioncoindsudo cp namecoind i0coindsudo cp namecoind ixcoindsudo cp namecoind devcoindsudo cp namecoind huntercoind# Все делаем как в пунктах 9-10 12. Наконец-то переходим к p2pool-у # Копируем p2poolgit clone https://github.com/p2pool/p2pool.git# На гитхабе есть много версий p2pool например можете скачать адаптив. Там больше выводится статистики.git clone https://github.com/amarian12/p2pool-adaptive.git# У Фореста очень простая по внешнему виду статистика поэтому поменяйте ее на более читаемую. Например:https://github.com/blixnood/P2PoolExtendedFrontEndhttps://github.com/johndoe75/p2pool-node-status# просто скачайте архив и поменяйте все в папке "web-static" 12.1 Скрипт запуска p2pool через костыль :) Скрипт создавался также для init.d но вот есть косяк. Во первых скрипт упорно не хочет ждать остальных демонов и запускается раньше и это не смотря на то что в нем прописан аргумент "$all". Второй это то что "python" (скрипт p2pool написан на нем) должен стартовать через утилиту "screen" а думать куда ее туда воткнуть у меня больше нет сил. И если честно я че-то утомился от этих скриптов. Поэтому я решил запускать этот скрипт другим скриптом. # Скрипт основной. Создаем папку например "scripts'# Ниже разберем что там и как.mkdir ~/scriptscd scriptsnano run-p2pool# Далее вносим следующие изменения:#! /bin/sh### BEGIN INIT INFO# Provides: p2pool start# Required-Start: $all# Required-Stop: $remote_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: Auto init p2pool start# Description: Auto init p2pool start via booting system# placed in /etc/init.d.### END INIT INFO# Author: wzor <[email protected]>## Please remove the "Author" lines above and replace them# with your own name if you copy and modify this script.# Do NOT "set -e"# PATH should only include /usr/* if it runs after the mountnfs.sh scriptPATH=/sbin:/usr/sbin:/bin:/usr/binDESC="P2Pool Start"NAME=pythonDAEMON=/usr/bin/$NAMEDAEMON_ARGS="/home/user/p2pool/run_p2pool.py --net bitcoin --give-author 0 rpcuser rpcpass -a your_wallet_btc --merged http://user:[email protected]:8336/ --merged http://user:[email protected]:65535/ --merged http://user:[email protected]:18491/ --merged http://user:[email protected]:8338/ --merged http://user:[email protected]:7332/ --merged http://user:[email protected]:8399/ --merged http://user:[email protected]:6333/ --max-conns 100 --outgoing-conns 10 --fee 0"DAEMON_LOADER="/usr/bin/taskset 0x8 "$DAEMONPIDFILE=/var/run/$NAME.pidSCRIPTNAME=/home/user/script/$NAMECHUID=user:group# Exit if the package is not installed[ -x "$DAEMON" ] || exit 0# Read configuration variable file if it is present[ -r /etc/default/$NAME ] && . /etc/default/$NAME# Load the VERBOSE setting and other rcS variables. /lib/init/vars.sh# Define LSB log_* functions.# Depend on lsb-base (>= 3.2-14) to ensure that this file is present# and status_of_proc is working.. /lib/lsb/init-functions## Function that starts the daemon/service#do_start(){# Return# 0 if daemon has been started# 1 if daemon was already running# 2 if daemon could not be startedstart-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON_LOADER --test > /dev/null \|| return 1start-stop-daemon --start --quiet --chuid $CHUID --pidfile $PIDFILE --exec $DAEMON_LOADER -- \$DAEMON_ARGS \|| return 2# Add code here, if necessary, that waits for the process to be ready# to handle requests from services started subsequently which depend# on this one. As a last resort, sleep for some time.}## Function that stops the daemon/service#do_stop(){# Return# 0 if daemon has been stopped# 1 if daemon was already stopped# 2 if daemon could not be stopped# other if a failure occurredstart-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMONRETVAL="$?"[ "$RETVAL" = 2 ] && return 2# Wait for children to finish too if this is a daemon that forks# and if the daemon is only ever run from this initscript.# If the above conditions are not satisfied then add some other code# that waits for the process to drop all resources that could be# needed by services started subsequently. A last resort is to# sleep for some time.start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON[ "$?" = 2 ] && return 2# Many daemons don't delete their pidfiles when they exit.rm -f $PIDFILEreturn "$RETVAL"}## Function that sends a SIGHUP to the daemon/service#do_reload() {## If the daemon can reload its configuration without# restarting (for example, when it is sent a SIGHUP),# then implement that here.#start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAMEreturn 0}case "$1" instart)[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"do_startcase "$?" in0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;esac;;stop)[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"do_stopcase "$?" in0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;esac;;status)status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?;;#reload|force-reload)## If do_reload() is not implemented then leave this commented out# and leave 'force-reload' as an alias for 'restart'.##log_daemon_msg "Reloading $DESC" "$NAME"#do_reload#log_end_msg $?#;;restart|force-reload)## If the "reload" option is implemented then remove the# 'force-reload' alias#log_daemon_msg "Restarting $DESC" "$NAME"do_stopcase "$?" in0|1)do_startcase "$?" in0) log_end_msg 0 ;;1) log_end_msg 1 ;; # Old process is still running*) log_end_msg 1 ;; # Failed to startesac;;*)# Failed to stoplog_end_msg 1;;esac;;*)#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2exit 3;;esac: # Разберем что там и как:   Основные пункты уже понятны они встречались выше. DAEMON_ARGS="/home/user/p2pool/run_p2pool.py ------------ это с какими параметрами должен запуститься скрипт p2pool. В этом пункте: --net bitcoin ---------------------------------------------------------------- пул работает с сетью BItcoin. --give-author 0 ------------------------------------------------------------ донат создателю p2pool (на ваше усмотрение) rpcuser rpcpass -----------------------------------------------------------логин и пароль из вашего конфига Bitcoin -a your_wallet_btc ------------------------------------------------------- ваш внешний кошель куда будут падать Bitcoin если предусмотрена комиссия пула. --merged http://user:[email protected]:8336/ ------------------------merged - для того чтобы скрипт p2pool-а понял что у нас майнинг с параллельной добычей. user:pass ------------------------------------------------------------------ логин и пароль из конфигов наших merged coins. --max-conns 100 --outgoing-conns 10-------------------------------наше количество соединений ноды с сетью. Это с какой скоростью мы буем давать знать о найденных шарах-блоках. (Этот пункт обсудим еще чуть позже) --fee 0-----------------------------------------------------------------------Комиссия ноды.   # С этим скриптом проделываем то же самое что и в п. 9. Кроме добавления в update-rc.d   12.2 Костыль (скрипт запускающий скрипт) :D # Этот скрипит дает возможность запустить основной скрипт через утилиту "screen" с задержкой в 180 секунд (можете поставить любое на ваше усмотрение, но помните что наши коины по разному синхронизируются с сетью) cd /etc/init.dsudo cp skeleton start-p2pool# Приводим к виду:#! /bin/sh### BEGIN INIT INFO# Provides: start-p2pool# Required-Start: $all# Required-Stop: $local_fs $remote_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: start-p2pool# Description: This runs a script "run-p2pool" in screen.### END INIT INFOcase "$1" instart)echo "Starting P2Pool"sleep 180screen -dmS p2pool /home/user/scripts/run-p2pool start;;stop)echo "Stopping P2Pool"/home/user/scripts/run-p2pool stop;;*)N=/etc/init.d/$NAMEecho "Usage: $N {start|stop}" >&2exit 1;;esacexit 0# Для него так же повторяем пункт 9. # и так подводим потихоньку итоги. ! Мы собрали демоны наших коинов ! Создали скрипты автостарта демонов с распределением их по ядрам процессора. Теперь будем делать оптимизацию ноды. Для ноды очень важен интернет не мегабиты, а getwork latency (не путать с пингом). Что это такое кратко можно понять из текста ниже (текст не мой) # Только это не относиться к майнерам, а от ноды к ноде.   И так делаем дополнительные изменения в конфиге bitcoin. Если с инетом все ОК. Можно добавить: blockmaxsize=1000000 По умолчанию 750000. Это увеличит объем проводимых транзакций через наш демон bitcoin. И должен соответственно увеличить наш доход. Если инет не очень то можно поставить ниже чем "по умолчанию" - 250000. Рекомендую так же уменьшить количество соединений демона bitcoin с сетью. По умолчанию 125. maxconnections=25 Можно поставить 25-45. Это ограничит скачивание с нашей ноды blockchain. Помните в конфиге запуска скрипта p2pool мы указывали значения --max-conns 100 --outgoing-conns 10. По умолчанию эти значения равны 40 и 6 соответственно. Можно так же их уменьшить. Все это будет влиять на getwork latency а она очень влияет на DOA на нашей ноде. Подбирайте лучшие значения для своих условий. Если самый худший вариант с инетом то вот самые минимальные значения: Для Bitcoin: blockmaxsize=250000 maxconnections=8 mintxfee=0.0005 minrelaytxfee=0.0005 Для p2pool: --max-conns 8 --outgoing-conns 4   Помним если поставим все по минимуму мы повысим скорость ноды. Но понизим свой доход. Надо найти золотую середину.   # И напоследок уж совсем тонкая настройка. Воспользуемся командой "nice" для увеличения приоритета. Запустим "htop" И на выбранном процессе клавишей "F7" увеличим приоритет демону bitcoin и python до -10 (в данном случае чем меньше значение тем больше приоритет, так что не удивляемся знаку "минус") (см. скрин выше "htop")   Какие недочеты: Даже наверное это важно надо создать отдельного пользователя и группу для всего выше изложенного. Т.Е. сделать разделение между администратором сервера и как бы пулом. Это для повышения безопасности.   Кому лень собирать демоны вот архив с уже готовыми демонами - кроме Bitcoin.     # Пока Финиш. Будут дополнения соответственно допишу.     #### Если это кому-то помогло меня можно отблагодарить :) на кошелек 14RTSbmixwthDNvxcLhXvuAyQfBHGXEXTc

igorwhite

igorwhite

 

Прошивка Antminer S5 cgminer 4.9.0 от kolivas

Приветствую!!!   Создал прошивку на основе оригинальной прошивки для Antminer S5 с cgminer 4.9.0 от kolivas. Цель создания более стабильную прошивку по хешрейту для p2pool. Основные изменения это cgminer 4.9.0 от kolivas и добавил: --lowmem --no-submit-stale А так же в первой версии прошивки изменил значение queue на 0. Сделал это ссылаясь на обсуждение в форуме bitcointalk. Судя по обсуждению это позволило стабилизировать Hashrate снизить DOA на p2pool. Во второй версии queue по умолчанию 8192. В третьей версии удален --no-submit-stale Устанавливать как обычную прошивку от Битмана   1. Прошивка с queue 0 скачать Yandex 2. Прошивка с queue 8192 скачать Yandex 3. Прошивка с queue 0 без --no-submit-stale скачать Yandex   Добавил еще одну прошивку убрал все оставил только cgminer 4.9.0 и -queue 0 скачать Yandex   Последняя прошивка (SD-S5-20150715-fan_ctrl.tar.gz) для S5 от BITMAN переделал только cgminer 4.9.0 и -queue 0 скачать Yandex     Если это кому то помогло меня можно отблагодарить :) на кошелек 14RTSbmixwthDNvxcLhXvuAyQfBHGXEXTc

igorwhite

igorwhite

×