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

Установка и настройка YiiMP пулов. База знаний

Рекомендованные сообщения

(изменено)

Предисловие. Первоначально тема называлась так: "Домашний YiiMP пул + кошелек для соло. Нужен совет". Но в связи с тем, что информации по настройке yiimp пулов в сети катастрофически мало, в топике стали обсуждаться гораздо более широкие задачи. Надеемся, что, в конечном итоге, эта тема станет хорошей базой знаний.

 

Цитата

 

Цитата

 

Прошу помочь советом в настройке связки yiimp + кошелек.

 

Тема соло мне всегда была интересна, но так как метод getwok на сегодняшний день практически не встречается в QT кошельках было принято решение установить карманный yiimp пул для себя любимого.

 

Пул я установил, кошелек тоже. Прописал его на пуле. Поднял стратум для алгоритма. Запустил майнера, который бодро начал копать. Оставил я это дело на ночь, а утром обнаружил, что не нашел ни одного блока. Мне это показалось странным, т.к. рассчитывать вероятность нахождения блока я умею, но оставил еще на 4 часа. Результат нулевой и я стал смотреть логи. А в логах вот что:

 

REJECTED VEGI block 22211

REJECTED VEGI block 22218

REJECTED VEGI block 22225

REJECTED VEGI block 22235

 

такое ощущение, что блоки таки я нашел. но они были отвергнуты

 

смотрю логи протокола, а там... тоже что-то было, но затер. чтото типа (по памяти):

REJECTED VEGI block 22235

VEGI 22235 not reporting

*** REJECTED :( VEGI block 22235

 

Добавлю, что blocknotify в конфиг кошелька я не включал т.к. счел это не нужным т.к. пул мой карманный, кумиссию пула я установил 100%, чтоб никакие выплаты "майнерам" не производились. Думал, что все награды за найденные блоки будут оставаться на мастер кошелке пула. Возможно я не полностью понимаю картину как происходит добыча по стратуму.

 

Прошу совета. Где я ошибся?

 

@bubus @kutulik

 

Изменено пользователем Serzh Black

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Serzh Black сказал:

Прошу помочь советом в настройке связки yiimp + кошелек.

 

Тема соло мне всегда была интересна, но так как метод getwok на сегодняшний день практически не встречается в QT кошельках было принято решение установить карманный yiimp пул для себя любимого.

 

Пул я установил, кошелек тоже. Прописал его на пуле. Поднял стратум для протокола. Запустил майнера, который бодро начал копать. Оставил я это дело на ночь, а утром обнаружил, что не нашел ни одного блока. Мне это показалось странным, т.к. рассчитывать вероятность нахождения блока я умею, но оставил еще на 4 часа. Результат нулевой и я стал смотреть логи. А в логах вот что:

 

REJECTED VEGI block 22211

REJECTED VEGI block 22218

REJECTED VEGI block 22225

REJECTED VEGI block 22235

 

такое ощущение, что блоки таки я нашел. но они были отвергнуты

 

смотрю логи протокола, а там... тоже что-то было, но затер. чтото типа (по памяти):

REJECTED VEGI block 22235

VEGI 22235 not reporting

*** REJECTED :( VEGI block 22235

 

Добавлю, что blocknotify в конфиг кошелька я не включал т.к. счел это не нужным т.к. пул мой карманный, кумиссию пула я установил 100%, чтоб никакие выплаты "майнерам" не производились. Думал, что все награды за найденные блоки будут оставаться на мастер кошелке пула. Возможно я не полностью понимаю картину как происходит добыча по стратуму.

 

Прошу совета. Где я ошибся?

 

@bubus @kutulik

 

 

с этим вопросом обратитесь к баллу @Balloo  он спец , я профан по настройке пула,

Изменено пользователем kutulik

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо. Ждем "ответственного сотрудника" )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Serzh Black сказал:

Добавлю, что blocknotify в конфиг кошелька я не включал

Вот это и есть ваша главная ошибка.

Нужно добавлять обязательно. Без этого корректно работать не будет

 

All your coin's config files need to blocknotify their corresponding stratum...

 

ЗЫ: вообще рекомендую вам сделать собственный локальный форк любой монеты. Лучше на том алгоритме, который и планируете потом копать. На этом форке отладить нормальную работу пула. И уже потом заряжать на живую монету.

На живых монетах, как бы ни была низка сложность, пока вы обнаружите ошибку в работе пула - может пройти несколько часов. На своем локальном форке - вы это увидите через пару-тройку минут.

Изменено пользователем 19alexrus71

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@19alexrus71 спасибо большое.

вопроса два: если кратко, то как и для чего работает blocknotify? я думал, что он нужен только для того чтобы дать инфу пулу о найденом блоке, чтобы тот распределил награды.

и второй: тестировать с testnet=1 можно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Serzh Black сказал:

вопроса два: если кратко, то как и для чего работает blocknotify

Не настолько специалист, чтобы дать полноценное разъяснение. 

Опытным путем выяснил, что без этого пул нормально не работает

Насколько я понимаю, в новый блок должен быть включен хидер предыдущего блока, и он извлекается как раз с помощью blocknotify. Но очень может быть, что я заблуждаюсь.

 

2 часа назад, Serzh Black сказал:

и второй: тестировать с testnet=1 можно?

Думаю, что  можно. Но натыкался на монеты, в которых все что отвечало за тестовые сети было крайне коряво написано и работало неправильно. Во всяких говнокоинах зачастую для тестов вообще не правят код и он остается без малейших изменений как в исходнике (в биткоине или в лайте, откуда чаще всего и форкают)

 

Поэтому если у меня возникает необходимость потестить монету, я поступаю по другому.

Делаю свой локальный форк. Это не сложно на самом то деле. И при определенном навыке занимает не более часа.

Чаще всего, достаточно небольших правок всего одного файла.

в файле chainparams.cpp закоментить все строки типа таких

vSeeds.push_back
vFixedSeeds

и вместо них забить

vFixedSeeds.clear();
	vSeeds.clear();

Это для того, чтобы ваш кошелек не ломился в настоящую сеть.

 

И удалить контрольные точки из

checkpointData = (CCheckpointData) {}

И все. После этого собрать. И запустить на двух компах. Например на двух виртуалках. Ну и связать между собой с помощью перекрестных addnode в конфиге.

И у вас будет та же самая монета но с пустым блокчейном. Только с нулевым genesis блоком. Чтобы можно было майнить, нужно сгенерировать первый блок из самого кошелька.

В консоли написать generate 1, ну или setgenerate true (в разных монетах по разному реализовано).

После того, как первый блок будет найден (тут зависит от скорости вашего проца, так как из кошелька майнится только процессором) -  на этот кошелек можно майнить, как и на настоящий. Т.е. будет стопроцентная эмуляция настоящей монеты, но конечно с мизерной сложностью.

Блоки будут находится каждые пару-тройку минут. И если есть какие то косяки в работе пула - вы это быстро сможете отследить и исправить.

Изменено пользователем 19alexrus71

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@19alexrus71 большое человеческое спасибо!!!!!! очень ценная информация и есть от чего отталкиваться! обязательно отпишусь о том что получилось

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

собрал кошелек под линуксом. прописал blocknotify. теперь после каждого вызова в логах:

2010-02-25 14:35:57 [192.168.0.200] , hmq1725, update block, badpassword

200 - это адрес пула. я вижу что пароль в hmq1725.conf прописан. но как его использовать?

usage: blocknotify server:port coinid blockhash

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Разобрался. Пароль в явном виде в исходнике указан. Перекомпилировал с правильным 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Serzh Black 

прошерстил весь код в свое время. и прогуглил весь интернет.

Так и не понял где и зачем используется этот пароль. и где его указывать, чтобы не выскакивала эта ошибка.

Возможно это наследство от предыдущих версий, которое потом было выпилено.

Если есть люди которые знают - подскажите плз.

 

Я просто отключил блок проверки пароля. 

в stratum/client.cpp удаляем (или комментируем) следующие строки

if(strcmp(g_tcp_password, json_params->u.array.values[0]->u.string.ptr))
	{
		clientlog(client, "update block, bad password");
		return false;
	}

и пересобираем стратум.

....

1 минуту назад, Serzh Black сказал:

Разобрался. Пароль в явном виде в исходнике указан. Перекомпилировал с правильным

толку не будет. Все равно будет эта ошибка. Я не понял, где нужно этот пароль указывать.

пробовал  в качестве параметра к blocknotify во всех возможных вариантах - успеха не добился.

Изменено пользователем 19alexrus71

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ошибка исчезла. Пароль в JSON-RPC запросе к стратуму используется. Сейчас когда перекомпилировал с таким какой в конфигах стратума указан стало все ок. Но блок все равно реджектед ((( буду разбираться 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
23 часа назад, Serzh Black сказал:

Ошибка исчезла. Пароль в JSON-RPC запросе к стратуму используется. Сейчас когда перекомпилировал с таким какой в конфигах стратума указан стало все ок. Но блок все равно реджектед ((( буду разбираться 

 

Разобрался?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ошибки нет. все внешне работает идеально. но блоки отвергнуты. проводил и сейчас провожу эксперименты. отпишусь. но мозгов не хватает - это факт

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
14 минуты назад, Serzh Black сказал:

ошибки нет. все внешне работает идеально. но блоки отвергнуты. проводил и сейчас провожу эксперименты. отпишусь. но мозгов не хватает - это факт

 

Тоже блоки отвергаются (((

 

Есть файл blocknotify в папке /var/stratum а есть blocknotify.sh в папке /bin и они разные, зачем так - не понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тот который в бин replaced by blocknotify binary т.е. не нужен, по сути 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В общем форк свой сделать не получилось с наскока. делал по инструкции @19alexrus71 но что-то собиралось с ошибками. возможно вернусь к этому вопросу попозже, в сети есть мануалы.

 

Монеты в тестовой сети не работают. Никак. не запускаются, крэшатся и т.п. с этим тоже не получилось.

 

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

 

в ccminer это выглядит так

[2018-02-26 17:45:33] scrypt block 277647, diff 0.628
[2018-02-26 17:45:38] GPU #1: Gigabyte GTX 1060 3GB, 478.56 kH/s
[2018-02-26 17:45:38] accepted: 48/48 (diff 0.685), 938.17 kH/s yay!!! solved: 1
[2018-02-26 17:45:54] scrypt block 277648, diff 0.678
[2018-02-26 17:46:04] GPU #0: ASUS GTX 1060 6GB, 471.82 kH/s

в логах стратума алгоритма так

17:45:33: BTR 277647 - diff 0.627585613 job c to 1/1/1 clients, hash 0.957/44.924 in 0.3 ms
17:45:38: *** ACCEPTED BTCRUBLE 277647 (diff 0.685009) by 192.168.0.13 (id: 6)
17:45:38: submit 192.168.0.13 (uid 6) 12, 00000000, 5a941d88, 65022480, 44892.000/192.000
17:45:53: BTCRUBLE 277647 not reporting
17:45:54: BTR 277648 - diff 0.678114297 job d to 1/1/1 clients, hash 0.864/48.541 in 0.2 ms
17:46:14: BTCRUBLE 277648 not reporting
17:46:15: BTR 277649 - diff 0.760090466 job e to 1/1/1 clients, hash 0.888/54.409 in 0.2 ms

лог стратума завален сообщениями по каждому блоку (первый вопрос: что это означает?)

17:42:44: BTCRUBLE 277642 not reporting
17:43:26: BTCRUBLE 277643 not reporting
17:44:29: BTCRUBLE 277644 not reporting
17:45:32: BTCRUBLE 277646 not reporting
17:45:53: BTCRUBLE 277647 not reporting
17:46:14: BTCRUBLE 277648 not reporting

из курьезов. произошло следующее. пока сохранял логи увидел что словил второй блок (всплывающее уведомление кошелька), а в ccminer yay!!! solved: 2. через некоторое время смотрю - баланс кошелька не изменился, в списке только одна транзакция, в блокэксплорере второй блок не мой, а в логах вот что:

 

17:55:43: BTR 277669 - diff 0.569275539 job 1e to 1/1/1 clients, hash 1.026/40.750 in 0.1 ms
17:56:46: BTR 277669 - diff 0.569275539 job 1f to 1/1/1 clients, hash 0.887/40.750 in 0.2 ms
17:57:03: *** ACCEPTED BTCRUBLE 277669 (diff 1.20528) by 192.168.0.13 (id: 6)
17:57:03: submit 192.168.0.13 (uid 6) 31, 01000000, 5a942029, af151d80, 78989.000/192.000
17:57:06: BTCRUBLE 277669 not reporting

второй вопрос: что это было?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 минут назад, Serzh Black сказал:

17:43:26: BTCRUBLE 277643 not reporting

Не обращайте внимания.

Пытался с этим бороться. Гуглил по буржуинским форумам. Так решения и не нашел.

Обратите внимание, что в вебморде пула - не обновляются данные по найденным блокам, пока идут такие мессаги. Потом через какое то время - обновляется все разом. Видимо какой то глюк в движке.

В остальном на работу пула не влияет. После таких пауз в обновлении - потом все работает нормально. Намайненное никуда не теряется. и выплаты проходят как положено. Так что я тупо забил на это.

Причем на разных монетах по разному. На некоторых нет такого...

 

И по поводу форка. Ну то, что сходу не получилось - не расстраивайтесь. Я ведь дал просто общие рекомендации. Но в каждой монете могут быть свои тонкости. Я просто указал, что нужно править.

Т.е. нам нужно добиться того, чтобы удалить зашитых в код сидов. И удалить чекпойнты блокчейна. Чтобы получить пустой блокчейн.

Обычно того, что я написал - достаточно. Но могут быть вариации. В сети полно мануалов, как сделать форк. 

Единственное, не меняйте tzDate и вообще любые данные для генезис блока. Намаетесь потом с его генерацией. Генезис блок проще оставить родной и не трогать его. Ну если конечно не хотите сделать настоящую живую монету :biggrin:

И еще. мануалы в сети по созданию форков как правило старые. И не очень подходят для современных версий. Т.к. очень многое в коде как битка, так и лайта изменилось. 

На мой взгляд самый нормальный мануал с разъяснениями что и для чего редактируется от Bear's Den http://dillingers.com/blog/2015/04/18/how-to-make-an-altcoin/ и еще там у него несколько очень неплохих статей, на понятном человеческом языке. Очень помогает для лучшего понимания функционирования монет.

Ну и еще вот эти мануалы неплохие (хотя и устаревшие)

https://drive.google.com/drive/folders/0B82OOXRXzyeadFU2OVdaREk2Y00

 

22 минуты назад, Serzh Black сказал:

что это было?

Возможно ваша нода приняла блок, а остальные одновременно с вашей приняли другой блок. Так бывает. Это и есть orphan блоки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

действительно не сразу обновляются. у меня создалось впечатление,  что если комиссия пула 100% то оно вообще не показывает найденное на веб-морде. как только поставлю другой процент, найденный блок в списке появляется. еще интересно как оно будет выплачивать. кошелок-то я указал такойже как и мастер кошелек пула.

 

теперь еще осталось разобраться почему на veggie блоки реджектятся. возможно потому, что требуется указать Charity Percent и адрес. спрошу у разработчиков

 

спасибо за мануалы.

 

да. и по поводу not reporting

в coind_template.cpp

кусок кода:

	if(height < coind->height && !coind->newblock)
	{
		if(coind->auto_ready && coind->notreportingcounter++ > 5)
			stratumlog("%s %d not reporting\n", coind->name, coind->height);
	}

вот после запуска стратума, после 5 блоков эта фигня начинает попадать в лог

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для тестов есть testnet. 

В конфиге кошелька пишем testnet=1

тогда кошелёк использует другой блокчейн с низкой сложностью.

 

Если хочется локальный блокчейн то на двух машинах ставим testnet=1 и добавляем их друг другу addnode 192.168.1.x add (на одном один а на втором второй айпишнтк, чтобы друг друга увидели) и на одном из кошельков пишем  в консоли setgenerate true, чтобы нашелся первый блок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я пробовал три кошелька. ни один с tesnet не заработал. не синхронизировался при наличии соединений, полное отсутствие соединений, и просто зависал с кучей ошибок в debug.log.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Veggie тоже настроил. Все работает!

22:54:05: VEGI 22739 - diff 13.207147322 job 65 to 1/1/1 clients, hash 6.693/945.404 in 0.1 ms
22:54:18: *** ACCEPTED Veggie 22739 (diff 98.0602) by 192.168.0.13 (id: 2)
22:54:18: submit 192.168.0.13 (uid 2) 101, 00000000, 5a9465de, d1829002, 6426474.000/512.000
22:54:18: *** CONFIRMED 22739 : 00000000029c50550ec88bcb607dca5a7df5b2577431985b3f13c18a70d2c9f1
22:54:18: VEGI 22740 - diff 13.207147322 job 66 to 1/1/1 clients, hash 7.678/945.404 in 0.0 ms

 

image.thumb.png.b1531d0b362863b7a0d9be8b54649096.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
49 минут назад, Serzh Black сказал:

Veggie тоже настроил. Все работает!

22:54:05: VEGI 22739 - diff 13.207147322 job 65 to 1/1/1 clients, hash 6.693/945.404 in 0.1 ms
22:54:18: *** ACCEPTED Veggie 22739 (diff 98.0602) by 192.168.0.13 (id: 2)
22:54:18: submit 192.168.0.13 (uid 2) 101, 00000000, 5a9465de, d1829002, 6426474.000/512.000
22:54:18: *** CONFIRMED 22739 : 00000000029c50550ec88bcb607dca5a7df5b2577431985b3f13c18a70d2c9f1
22:54:18: VEGI 22740 - diff 13.207147322 job 66 to 1/1/1 clients, hash 7.678/945.404 in 0.0 ms

 

image.thumb.png.b1531d0b362863b7a0d9be8b54649096.png

 

Как удалось всё завести?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@bubus для этой монеты надо было на пуле в явном виде прописать %% пожертвований и адрес кошелька для них. я думал, что оно автоматически отчисляется, а оказывается, что это не так и в одной транзакции должно быть два получателя, один из которых - кошелек разработчиков

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
54 минуты назад, Serzh Black сказал:

@bubus для этой монеты надо было на пуле в явном виде прописать %% пожертвований и адрес кошелька для них. я думал, что оно автоматически отчисляется, а оказывается, что это не так и в одной транзакции должно быть два получателя, один из которых - кошелек разработчиков

 

Какой адрес указал?

 

Чтож они в инструкциях ничего не пишут, даже в забугорном поиске ничего нету.

 

Тоже пару часов назад поставил 1 процент отчислений и кошелёк левый (чей то), т.к. при указании кошелька пула - поле постоянно сбрасывалось. Вроде 2 блока нашлось.

 

У тебя на сайте yiimp отобразилось что блок найден и кем найден?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Serzh Black Мне тоже очень интересен момент с донатом девелоперам.

Как удалось выяснить? Напрямую связывались с девами? Странно, что подобная инфа не выкладывается в паблик. И очень хотелось бы скрины с админки пула - какие галки вы там выставили для доната. 

На всякий случай. Чтобы если нарвусь на такое - не повторять ваших танцев с бубном.

 

ЗЫ: Если не сложно - поиском поищите в коде адреса для доната. Был бы премного благодарен.

Наверняка, в коде монеты прописаны эти самые адреса. По логике это должно быть прописано в правилах блокчейна. И если подобные транзы не включаются в блок - он не считается валидным.

Хотелось бы знать в каком именно месте. Чтобы на будущее уже знать куда смотреть.

Изменено пользователем 19alexrus71

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×