Перейти к содержимому

igorwhite's блог

  • записи
    4
  • комментария
    323
  • просмотра
    62 662

Об этом блоге

Прошивка Antminer S5

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

igorwhite

Всем привет.

 

Инструкция по использованию Parity в качестве основного кошелька Ethereum Classic.

 

blogentry-14647-0-11709800-1473532525_thumb.jpg

 

Я знаю, что многие майнеры в том числе и кто майнит у меня на ПУЛАХ используют биржевые кошельки вместо локальных кошельков, но я не сторонник такого решения и особенно не рекомендую новичкам.

Я уже пережил два уполовинивания 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

Там же можно сменить значок ярлыка.

Скриншот:

blogentry-14647-0-95451400-1473524767_thumb.png

 

После этого можно запустить Parity через ярлык. Начнется синхронизация Parity. Это займет некоторое время.

Если ждать лень то вот ссылки на блокчейн:

Ethereum Ckassic от 10.09.2016 г. >>> MEGA

Ethereum от 18.09.2016 г. >>> MEGA

Распаковать архив в папку .parity

Windows 10:

Пользователи >> User >> .parity

Дальше устанавливаем по умолчанию браузер Chrome. И идем по адресу:

http://localhost:8080/

Загружаемся в наш кошелек Ethereum Classic

blogentry-14647-0-65539900-1473525568_thumb.jpg

Выполним рекомендации по proxy:

blogentry-14647-0-82832700-1473525661_thumb.jpg

 

Идем в Настройки Chrome >> Показать дополнительные настройки >> Сеть >> Изменить настройки прокси-сервера.

Откроются свойства интернет Идем - Настройка сети откроется Настройка параметров локальной сети

Активировать: Использовать сценарий автоматической настройки и внести туда:

http://localhost:8080/proxy/proxy.pac

Сохраниться и выйти.

Скриншоты:

blogentry-14647-0-93844800-1473526539_thumb.jpg

blogentry-14647-0-91804900-1473526558_thumb.jpg

blogentry-14647-0-14732400-1473526570_thumb.jpg

 

После этого заходим в браузер:

http://home.parity/

Создаем новый аккаунт >> Create Account:

blogentry-14647-0-01016200-1473526904_thumb.jpg

 

Нужно внести пароль. Придумайте сложный пароль или воспользуйтесь Генератором Паролей. Не забудьте его.....

Собственно все можно пользоваться.

Можно еще добавить в ярлык запуска Parity ключи --dapps-user и --dapps-pass для дополнительной безопасности. Тогда привходе в браузере будет дополнительно запрашиваться Пользователь и Пароль.

Пример:

"Program Files\Ethcore\Parity\parity.exe" --chain classic --dapps-user user --dapps-pass pass

Скриншот:

blogentry-14647-0-88759800-1473534225_thumb.jpg

 

Полный список параметров Parity под спойлером:

 

 

Operating Options:

 

--mode

MODE Set the operating mode. MODE can be one of:

active - Parity continuously syncs the chain.

passive - Parity syncs initially, then sleeps and

wakes regularly to resync.

dark - Parity syncs only when an external interface

is active. [default: active].

 

--mode-timeout SECS

Specify the number of seconds before inactivity

timeout occurs when mode is dark or passive

[default: 300].

 

--mode-alarm SECS

Specify the number of seconds before auto sleep

reawake timeout occurs when mode is passive

[default: 3600].

 

--chain CHAIN

Specify the blockchain type. CHAIN may be either a

JSON chain specification file or olympic, frontier,

homestead, mainnet, morden, classic or testnet

[default: homestead].

 

-d --db-path PATH

Specify the database & configuration directory path

[default: $HOME/.parity].

 

--keys-path PATH

Specify the path for JSON key files to be found

[default: $HOME/.parity/keys].

 

--identity NAME

Specify your node's name.

 

Account Options:

 

--unlock ACCOUNTS

Unlock ACCOUNTS for the duration of the execution.

ACCOUNTS is a comma-delimited list of addresses.

Implies --no-signer.

 

--password FILE

Provide a file containing a password for unlocking an account.

 

--keys-iterations NUM

Specify the number of iterations to use when

deriving key from the password (bigger is more secure) [default: 10240].

 

--no-import-keys

Do not import keys from legacy clients.

--force-signer

Enable Trusted Signer WebSocket endpoint used by Signer UIs, even when --unlock is in use.

 

--no-signer Disable

Trusted Signer WebSocket endpoint used by Signer UIs.

 

--signer-port PORT

Specify the port of Trusted Signer server [default: 8180].

 

--signer-path PATH

Specify directory where Signer UIs tokens should be stored. [default: $HOME/.parity/signer]

 

--signer-no-validation

Disable Origin and Host headers validation for

Trusted Signer. WARNING: INSECURE. Used only for development.

 

Networking Options:

 

--no-network

Disable p2p networking.

 

--port PORT

Override the port on which the node should listen [default: 30303].

 

--min-peers NUM

Try to maintain at least NUM peers [default: 25].

 

--max-peers NUM

Allow up to that many peers [default: 50].

 

--nat METHOD

Specify method to use for determining public

address. Must be one of: any, none, upnp, extip: [default: any].

 

--network-id INDEX

Override the network identifier from the chain we are on.

--bootnodes NODES

Override the bootnodes from our chain. NODES should

be comma-delimited enodes.

--no-discovery

Disable new peer discovery.

 

--node-key KEY

Specify node secret key, either as 64-character hex

string or input to SHA3 operation.

 

--reserved-peers FILE

Provide a file containing enodes, one per line.

These nodes will always have a reserved slot on top

of the normal maximum peers.

 

--reserved-only

Connect only to reserved nodes.

 

API and Console Options:

 

--no-jsonrpc

Disable the JSON-RPC API server.

 

--jsonrpc-port PORT

Specify the port portion of the JSONRPC API server [default: 8545].

 

--jsonrpc-interface IP

Specify the hostname portion of the JSONRPC API

server, IP should be an interface's IP address, or

all (all interfaces) or local [default: local].

 

--jsonrpc-cors URL

Specify CORS header for JSON-RPC API responses.

 

--jsonrpc-apis APIS

Specify the APIs available through the JSONRPC

interface. APIS is a comma-delimited list of API

name. Possible name are web3, eth, net, personal,

ethcore, ethcore_set, traces, rpc.

[default: web3,eth,net,ethcore,personal,traces,rpc].

 

--jsonrpc-hosts HOSTS

List of allowed Host header values. This option will

validate the Host header sent by the browser, it

is additional security against some attack

vectors. Special options: "all", "none",

[default: none].

 

--no-ipc

Disable JSON-RPC over IPC service.

 

--ipc-path PATH

Specify custom path for JSON-RPC over IPC service

[default: $HOME/.parity/jsonrpc.ipc].

 

--ipc-apis APIS

Specify custom API set available via JSON-RPC over

IPC [default: web3,eth,net,ethcore,personal,traces,rpc].

 

--no-dapps

Disable the Dapps server (e.g. status page).

 

--dapps-port PORT

Specify the port portion of the Dapps server [default: 8080].

 

--dapps-interface IP

Specify the hostname portion of the Dapps

server, IP should be an interface's IP address, or local [default: local].

 

--dapps-user USERNAME

Specify username for Dapps server. It will be

used in HTTP Basic Authentication Scheme.

If --dapps-pass is not specified you will be asked for password on startup.

 

--dapps-pass PASSWORD

Specify password for Dapps server. Use only in conjunction with --dapps-user.

 

--dapps-path PATH Specify directory where dapps should be installed. [default: $HOME/.parity/dapps]

 

Sealing/Mining Options:

 

--author ADDRESS

Specify the block author (aka "coinbase") address for sending block rewards from sealed blocks.

NOTE: MINING WILL NOT WORK WITHOUT THIS OPTION.

 

--force-sealing

Force the node to author new blocks as if it were always sealing/mining.

 

--reseal-on-txs SET

Specify which transactions should force the node to reseal a block. SET is one of:

none - never reseal on new transactions;

own - reseal only on a new local transaction;

ext - reseal only on a new external transaction;

all - reseal on all new transactions [default: own].

 

--reseal-min-period MS

Specify the minimum time between reseals from incoming transactions. MS is time measured in

milliseconds [default: 2000].

 

--work-queue-size ITEMS

Specify the number of historical work packages

which are kept cached lest a solution is found for

them later. High values take more memory but result

in fewer unusable solutions [default: 20].

 

--tx-gas-limit GAS

Apply a limit of GAS as the maximum amount of gas a single transaction may have for it to be mined.

 

--relay-set SET

Set of transactions to relay. SET may be:

cheap - Relay any transaction in the queue (this

may include invalid transactions);

strict - Relay only executed transactions (this

guarantees we don't relay invalid transactions, but

means we relay nothing if not mining);

lenient - Same as strict when mining, and cheap

when not [default: cheap].

 

--usd-per-tx USD

Amount of USD to be paid for a basic transaction

[default: 0.005]. The minimum gas price is set

accordingly.

 

--usd-per-eth SOURCE

USD value of a single ETH. SOURCE may be either an

amount in USD, a web service or 'auto' to use each

web service in turn and fallback on the last known

good value [default: auto].

 

--price-update-period T

T will be allowed to pass between each gas price

update. T may be daily, hourly, a number of seconds,

or a time string of the form "2 days", "30 minutes"

etc. [default: hourly].

 

--gas-floor-target GAS

Amount of gas per block to target when sealing a new block [default: 4700000].

--gas-cap GAS A cap on how large we will raise the gas limit per

block due to transaction volume [default: 6283184].

 

--extra-data STRING

Specify a custom extra-data for authored blocks, no more than 32 characters.

 

--tx-queue-size

LIMIT Maximum amount of transactions in the queue (waiting

to be included in next block) [default: 1024].

 

--remove-solved

Move solved blocks from the work package queue

instead of cloning them. This gives a slightly

faster import speed, but means that extra solutions

submitted for the same work package will go unused.

 

--notify-work URLS

URLs to which work package notifications are pushed.

URLS should be a comma-delimited list of HTTP URLs.

 

Footprint Options:

 

--tracing BOOL

Indicates if full transaction tracing should be

enabled. Works only if client had been fully synced

with tracing enabled. BOOL may be one of auto, on,

off. auto uses last used value of this option (off

if it does not exist) [default: auto].

 

--pruning METHOD

Configure pruning of the state/storage trie. METHOD

may be one of auto, archive, fast:

archive - keep all state trie data. No pruning.

fast - maintain journal overlay. Fast but 50MB used.

auto - use the method most recently synced or

default to fast if none synced [default: auto].

 

--cache-size-db MB

Override database cache size [default: 64].

 

--cache-size-blocks MB

Specify the prefered size of the blockchain cache in megabytes [default: 8].

 

--cache-size-queue MB

Specify the maximum size of memory to use for block queue [default: 50].

 

--cache-size MB

Set total amount of discretionary memory to use for

the entire system, overrides other cache and queueoptions.

 

--fast-and-loose

Disables DB WAL, which gives a significant speed up

but means an unclean exit is unrecoverable.

 

--db-compaction TYPE

Database compaction type. TYPE may be one of:

ssd - suitable for SSDs and fast HDDs;

hdd - suitable for slow HDDs [default: ssd].

 

--fat-db Fat database.

 

Import/Export Options:

 

--from BLOCK

Export from block BLOCK, which may be an index or hash [default: 1].

 

--to BLOCK

Export to (including) block BLOCK, which may be an

index, hash or 'latest' [default: latest].

 

--format FORMAT

For import/export in given format. FORMAT must be

one of 'hex' and 'binary'.

 

Snapshot Options:

 

--at BLOCK

Take a snapshot at the given block, which may be an

index, hash, or 'latest'. Note that taking snapshots at

non-recent blocks will only work with --pruning archive

[default: latest]

 

Virtual Machine Options:

 

--jitvm Enable the JIT VM.

 

Legacy Options:

--geth

Run in Geth-compatibility mode. Sets the IPC path

to be the same as Geth's. Overrides the --ipc-path

and --ipcpath options. Alters RPCs to reflect Geth

bugs.

 

--testnet

Geth-compatible testnet mode. Equivalent to --chain

testnet --keys-path $HOME/parity/testnet-keys.

Overrides the --keys-path option.

 

--datadir PATH

Equivalent to --db-path PATH.

 

--networkid INDEX

Equivalent to --network-id INDEX.

 

--peers NUM

Equivalent to --min-peers NUM.

 

--nodekey KEY

Equivalent to --node-key KEY.

 

--nodiscover

Equivalent to --no-discovery.

 

-j --jsonrpc

Does nothing; JSON-RPC is on by default now.

 

--jsonrpc-off

Equivalent to --no-jsonrpc.

 

-w --webapp

Does nothing; dapps server is on by default now.

 

--dapps-off

Equivalent to --no-dapps.

 

--rpc

Does nothing; JSON-RPC is on by default now.

 

--rpcaddr IP

Equivalent to --jsonrpc-interface IP.

 

--rpcport PORT

Equivalent to --jsonrpc-port PORT.

 

--rpcapi APIS

Equivalent to --jsonrpc-apis APIS.

 

--rpccorsdomain URL

Equivalent to --jsonrpc-cors URL.

 

--ipcdisable

Equivalent to --no-ipc.

 

--ipc-off

Equivalent to --no-ipc.

 

--ipcapi APIS

Equivalent to --ipc-apis APIS.

 

--ipcpath PATH

Equivalent to --ipc-path PATH.

 

--gasprice WEI

Minimum amount of Wei per GAS to be paid for a

transaction to be accepted for mining. Overrides --basic-tx-usd.

 

 

--etherbase ADDRESS

Equivalent to --author ADDRESS.

 

--extradata STRING

Equivalent to --extra-data STRING.

 

--cache MB

Equivalent to --cache-size MB.

 

Miscellaneous Options:

 

-l --logging LOGGING

Specify the logging level. Must conform to the same format as RUST_LOG.

 

--log-file FILENAME

Specify a filename into which logging should be directed.

 

--no-color

Don't use terminal color codes in output.

 

-v --version

Show information about version.

 

-h --help

Show this screen.

 

 

 

И Добро Пожаловать ко мне на пулы Ethereum Classic и Ethereum

Please Donate:

ETH: 0xcD89f563637AfB40bc84AEb1951bF8FEbd8cD1B7

ETC: 0x4976f77C8D895A34F7C5141ed6b14a1457A8b8A4

BTC: 14RTSbmixwthDNvxcLhXvuAyQfBHGXEXTc

igorwhite

Создание собственного пула 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"Должно получиться как на скриншоте. 

blogentry-14647-0-81648000-1446106024_thumb.jpg

 

Подредактируем (изменим размер буфера передачи) нашу сетевую карточку в /etc/rc.local

$ sudo nano /etc/rc.local# В конце перед exit дописываем строку:/sbin/ifconfig eth0 txqueuelen 10000# Сохраняемся "Ctrl+o" и "Ctrl+x"Должно получиться как на скриншоте.

blogentry-14647-0-49694700-1446106790_thumb.jpg

Перезагружаем наш сервер

$ sudo reboot

Проверим наши изменения

$ ulimit -n$ ifconfigДолжно быть как на скриншоте.

blogentry-14647-0-35036200-1446107517_thumb.jpg

 

Проверим как работает redis server, для этого запустим его.

$ redis-server

Скорее всего редис выдаст ошибку как на скриншоте: "WARNING overcommit_memory is set to 0!"

blogentry-14647-0-51685100-1446107901_thumb.jpg

 

Поправим это

$ sudo nano /etc/sysctl.confВ конце дописываем строку:vm.overcommit_memory=1# Сохраняемся "Ctrl+o" и "Ctrl+x"Перезагружаем сервер$ sudo rebootПроверяем редис$ redis-serverОшибок не должно быть.Смотри скриншот.

blogentry-14647-0-72363900-1446109083_thumb.jpg

 

Так с этим покончили, переходим к демонам наших криптомонет.

 

Устанавливаем 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 <poolcrypto.org@gmail.com>## 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

blogentry-14647-0-12206100-1446123010_thumb.jpg

 

Устанавливаем 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

Должно закончиться без ошибок. приблизительно как на скриншоте.

blogentry-14647-0-09221800-1446126545_thumb.jpg

 

Приступаем к конфигурированию 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

Должно получиться как на скриншотах

blogentry-14647-0-86968600-1446136450_thumb.jpg

blogentry-14647-0-98997100-1446136351_thumb.jpg

 

Приступаем к тестовому запуску UNOMP пула.

# Перед запуском проверьте синхронизировались демоны наших монет!$ cd unomp$ sudo node init.js 

Если все OK то должно быть как на скриншоте:

blogentry-14647-0-84278300-1446137019_thumb.jpg

 

Заходим на веб страничку пула http://ваш_ip_адрес_пула/

Должно быть как на скриншоте:

blogentry-14647-0-85894600-1446137587_thumb.jpg

 

Можно начинать майнить:

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 потребует ввести пароль рута. Смотри скриншоты:

blogentry-14647-0-64607500-1446139076_thumb.jpg

blogentry-14647-0-99364900-1446139081_thumb.jpg

 

Установим дополнительные пакеты для 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

После данных действий, если вы зайдете на веб страничку вашего сервера должны увидеть как на скриншоте:

blogentry-14647-0-24926400-1446140037_thumb.jpg

 

Дальше надо будет изменять конфигурационные файлы апач и устанавливать базу данных. Все это можно сделать так сказать руками, но не все могут работать в консоле так что для облегчения выполнения задания привлечем дополнительные графические программы это 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 и пароль от рута. Смотри скриншот:

blogentry-14647-0-86118900-1446141618_thumb.jpg

blogentry-14647-0-96353400-1446141626_thumb.jpg

 

Дальше установим phpMyAdmin

$ sudo apt-get install phpmyadmin# Выбираем apche2, далее будет предложено настроить базу данных соглашаемся, потом вводим пароль от рута

Смотри скриншоты:

blogentry-14647-0-31751800-1446142433_thumb.jpg

blogentry-14647-0-62755000-1446142439_thumb.jpg

blogentry-14647-0-51153200-1446142445_thumb.jpg

blogentry-14647-0-51365300-1446142453_thumb.jpg

blogentry-14647-0-18045000-1446142460_thumb.jpg

 

На всякий случай перезапустим Апач

$ sudo service apache2 reload

Заходим на веб страничку phpmyadmin

http://ваш_ip_адрес_сервера/phpmyadmin

Смотри скриншоты:

blogentry-14647-0-69445400-1446144080_thumb.jpg

blogentry-14647-0-96676100-1446144098_thumb.jpg

 

Если видим ошибку (Расширение mcrypt не найдено. Пожалуйста, проверьте ваши настройки PHP.) как выше на скрине.

То проделываем следующие

$ sudo php5enmod mcrypt$ sudo service apache2 restart

Ошибка должна пропасть.

 

Переходим к установке MPOS пула.

$ git clone https://github.com/MPOS/php-mpos.git mpos

Установим базу данных.

Заходим под рутом в phpmyadmin http://ваш_ip_адрес_сервера/phpmyadminДалее "Пользователи" Смотри скриншот:

blogentry-14647-0-58049300-1446150090_thumb.jpg

Создаем учетную запись.Я назвал "poolbitcoin"Генерируем пароль. # Запоминаем его.Ставим галочку где "Создать базу данных с именем пользователя в названии и предоставить на нее полные привилегии"Сохраняемся "OK"Подробности смотри скриншоты:

blogentry-14647-0-54936900-1446150813_thumb.jpg

blogentry-14647-0-56183300-1446150822_thumb.jpg

blogentry-14647-0-38081700-1446151306_thumb.jpg

 

Скачаем себе на компьютер MPOS в виде архива

> Распаковываем архив, нас там интересует папка "sql"> Дальше опять идем в phpmyadmin выбираем своего пользователя в данном примере это "poolbitcoin"> Нажимаем "Импорт"> Нажимаем "Выберите файл"> Выбираем нашу базу данных "000_base_structure.sql"> Нажимаем "OK"Подробности в скриншотах:

blogentry-14647-0-34366500-1446153835_thumb.jpg

blogentry-14647-0-28674200-1446153842_thumb.jpg

blogentry-14647-0-91405100-1446153851_thumb.jpg

blogentry-14647-0-41545000-1446153859_thumb.jpg

 

Дальше начинаем так сказать связывать наш UNOMP пул с MPOS пулом.

Отредактируем файл "config.json" по пути unomp/config.json (как угодно через WinSCP или nano)$ cd$ nano unomp/config.json# Изменяем в "website" где "enabled" true на false# Сохраняем изменения Ctrl+o Enter и закрываем редактор Ctrl+xСмотри скриншот:

blogentry-14647-0-23623200-1446155175_thumb.jpg

 

Отредактируем файл "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Подробности в скриншотах:

blogentry-14647-0-99367200-1446157078_thumb.jpg

blogentry-14647-0-81835800-1446157086_thumb.jpg

 

Если на пуле будет предусмотрена регистрация то надо подумать о почтовом сервере.

Проще воспользоваться бесплатным почтовым ящиком от 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

blogentry-14647-0-06262100-1446189654_thumb.jpg

blogentry-14647-0-62326600-1446189661_thumb.jpg

blogentry-14647-0-28351200-1446189670_thumb.jpg

blogentry-14647-0-29537800-1446189677_thumb.jpg

 

Так, отлично с этим справились идем дальше.

Начинаем конфигурировать 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# Подробности смотри скриншоты:

blogentry-14647-0-52129800-1446192809_thumb.jpg

blogentry-14647-0-00175800-1446192817_thumb.jpg

blogentry-14647-0-79224700-1446192823_thumb.jpg

blogentry-14647-0-92391200-1446192832_thumb.jpg

blogentry-14647-0-97229700-1446192843_thumb.jpg

blogentry-14647-0-44680400-1446192852_thumb.jpg

blogentry-14647-0-81895200-1446192861_thumb.jpg

 

Урааа мы практически на финишной прямой.

# Заходим через браузер на ip вашего сервера http://ваш_ip_адрес_сервера# Должна загрузиться стартовая страница MPOS пула# Смотри скриншот:# Если нет то повторите процедуру с установкой разрешений для www-data$ sudo chown -R www-data templates/compile templates/cache logs

blogentry-14647-0-53054200-1446193381_thumb.jpg

# Дальше регистрируем нового пользователя он же будет администратором.# Заходим под свои логином# Если не настраивали почтовый сервис то идем Admin Panel > System > Settings > System и в Disable e-mail confirmations меняем значение с NO на YES Сохраняемся ----> SAVEПодробности смотри скриншот:

blogentry-14647-0-95885100-1446194494_thumb.jpg

blogentry-14647-0-41691600-1446194503_thumb.jpg

# Дальше для будущего теста создадим воркера# Идем My Account > My Workers содаем воркераСмотри скриншот:

blogentry-14647-0-77007100-1446195300_thumb.jpg

 

Переходим к настройке 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 выбрать вручную все минуты # Подробности смотри скриншоты:

blogentry-14647-0-90967900-1446199040_thumb.jpg

blogentry-14647-0-70720600-1446199050_thumb.jpg

blogentry-14647-0-41870200-1446199060_thumb.jpg

blogentry-14647-0-57428900-1446199122_thumb.jpg

# Так сделали, теперь быстренько идем на свой пул http://ваш_ip_адрес_сервера# В раздел Admin Panel > System > Monitoring и должны увидеть что все Cronjob активны# Смотри скриншот:

blogentry-14647-0-73581000-1446199815_thumb.jpg

 

Аллилуйя!!! начинаем тестовый запуск пула!!!

$ cd unomp$ node init.js# Должно быть как на скриншоте:

blogentry-14647-0-86272800-1446200313_thumb.jpg

 

Можно начать тестовый майнинг

# Воркера мы создали раньше.# Настраиваем майнер> URL --- stratum+tcp://ваш_ip_адрес_сервера:3333> Логин --- вписываем свой воркер> Пароль --- пароль воркера# В системных настройках можно изменить вид отображения статистики сменить с Kh/s на Mh/s, Gh/s, Th/s и внести разные другие настройки.# Думаю что с этим вы сами разберетесь:)# Смотри скриншот:

blogentry-14647-0-29422300-1446202807_thumb.jpg

 

После устранения всех недостатков и тонкой настройки пула запускаем его с Forever

$ cd unomp# Запускаем наш пул$ forever start init.js# Чтобы остановить$ forever stop init.js

И в заключении мы имеем пул UNOMP+MPOS поддерживающий Stratum и Vardiff

Что я здесь пропустил так это настройки безопасности. Попозже это доделаю!

:) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :)

 

Если моя статья пригодилась и понравилась меня можно отблагодарить:

(BTC) 14RTSbmixwthDNvxcLhXvuAyQfBHGXEXTc

(LTC) LbkRrDVFyjUcxbkj4KvsrTXaosPn4faDfU

(NMC) NHc9Nq5EbGzsWpX3S7WLw5GSZeaingkSd2

(DASH) Xd418fCGeKrGvCyi1SdudhNzTp1n6pnURg

igorwhite

Создание собственной (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" то смените владельца этой папки командой:

sudo chown user:group .config # где "user" ваш логин, а "group" ваша группа

 

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#Демоны начинают синхронизироваться с сетью.

# После запуска демона вы должны увидеть:

blogentry-14647-0-21557900-1433867976_thumb.jpg

# Если увидите типа зависания:

blogentry-14647-0-29294800-1433867984_thumb.jpg

# Не обращайте внимание просто закройте терминал и откройте его заново и продолжайте дальше. Демон все равно запустился.

#Демоны начинают синхронизироваться с сетью.

Ждем минут 5-10 и проверяем наши демоны:

bitcoin-cli getinfonamecoind getinfounobtanium-cli getinfoixcoin-cli getinfofusioncoind getinfoi0coind getinfohuntercoind getinfodevcoind getinfo

# Если все ОК то должны ​увидеть:

blogentry-14647-0-09137000-1433868877_thumb.jpg

 

Демоны синхронизируется долго, несколько дней поэтому рекомендую поискать торренты с цепочкой блоков. Например 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 <poolcrypto.org@gmail.com>## 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

Скрин "htop"

blogentry-14647-0-98919600-1434634236_thumb.jpg

 

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 <poolcrypto.org@gmail.com>## 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 <poolcrypto.org@gmail.com>## 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:pass@127.0.0.1:8336/ --merged http://user:pass@127.0.0.1:65535/ --merged http://user:pass@127.0.0.1:18491/ --merged http://user:pass@127.0.0.1:8338/ --merged http://user:pass@127.0.0.1:7332/ --merged http://user:pass@127.0.0.1:8399/ --merged http://user:pass@127.0.0.1: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:pass@127.0.0.1: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 (не путать с пингом).

Что это такое кратко можно понять из текста ниже (текст не мой)

Плохо (Latency):

  • Сервер: «Так, компьютер, отправил тебе пакет с данными. Получил?»
  • Компьютер: «…»
  • Сервер: «Ну, давай, отвечай, мне целый день тебя ждать?»
  • Компьютер: «…»
  • Сервер: «Ладно, проехали, вот тебе еще один пакет. Получил?»
  • Компьютер: «Ага, получил, и предыдущий пакет тоже, спасибо».
  • Сервер: «А чего же сразу не ответил?»
  • Компьютер: «Вот так я настроен по умолчанию, извините».

Хорошо (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

Приветствую!!!

 

Создал прошивку на основе оригинальной прошивки для 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

×