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

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

(изменено)

Stratum proxy SHA256D

Установка

Скрытый текст
  1. Установить nodejs
  2. Установить socketio
    Цитата

     

    npm i -g socketio

  3. Скачать https://github.com/JerryWm/Stratum-proxy-SHA256
  4. Запускать Proxy.cmd

 

Настройки ./server.json

Скрытый текст

Пример:

Скрытый текст

{
    
    servers: [
    
        {
            bind_address: "0.0.0.0:3333",
            ssl: false,
            
            min_difficulty: 1000,
            max_difficulty: 32000,
            
            max_extranonce1_size: 4,
            max_extranonce2_size: 4,
        },
    
        {
            bind_address: "0.0.0.0:4444",
            ssl: false,
            
            min_difficulty: 1000,
            max_difficulty: 32000,
            
            max_extranonce1_size: 0,
            max_extranonce2_size: 3,
        },
        
        {
            bind_address: "0.0.0.0:1443",
            ssl: true,
            
            min_difficulty: 1000,
            max_difficulty: 32000,
            
            max_extranonce1_size: 4,
            max_extranonce2_size: 4,
        },
        
    ],
    
    web_server: {
        //    enable
        enable: true,
        
        //    bind web server address
        bind_address: "0.0.0.0:8000",
        
        //    secret key
        auth_key: "admin",
        
        // open browser
        open_browser: false,
    },

}

servers:

  • bind_address - куда подключать асик
  • ssl - включить ssl или нет(врятли асик поддерживает stratum+ssl://, по этому всегда false)
  • min_difficulty - минимальная сложность для асика. Следует понимать что сложность можно только понижать, увеличивать ее невозможно. К примеру: min_difficulty = 20000, сложность пула 10000 => асик будет работать на 10000/20000 = 0,5 = 50% мощности, и ХР будет всегда ниже пока пул не поставит сложность >= 20000. Вобще данный параметр нужен чтобы асик не флудил шарами при коннект(ошибочном коннекте ) к пулу со слабой стартовой сложностью.
  • max_difficulty - максимальная сложность для асика.
  • max_extranonce1_size - максимальный размер extranonce1. Если асик не выдает ошибок на max_extranonce1_size  = 0, всегда устанавливайте 0
  • max_extranonce2_size - максимальный extranonce2_size. Опаятьже если асик не выдает ошибок на max_extranonce2_size = 3, всегда устанавливайте 3. При max_extranonce1_size = 0 и max_extranonce2_size = 3 асик может работать на любом пуле, в том числе и на найсхешь, также во время реконекта между пулами не нужно делать реконнект асика, и все это без поддержки асиком метода mining.set_extranonce

web_server:

  • enable - бесполезный парамтр(наследие с криптонайт прокси), веб сервер всегда включен
  • bind_address - открывать в браузере. К примеру http://127.0.0.1:8000
  • auth_key - пароль для доступа в веб морду
  • open_browser - открывать брузер при страте прокси или нет(тоесть при страте простой exec explorer http://127.0.0.1:8000)

Настройки ./app/resources/settings.json

Скрытый текст

Данный файл автоматически генерируется при изменениях в веб панели, но если хотите можно его редактировать и руками

Пример:

Скрытый текст

{
    "pool_group_list": [
        {
            "id": "id_xk6dpddht33t5k2emcu8yhlnawgr80lf",
            "height": 0,
            "active": false,
            "pool_group_name": "btc",
            "pool_list": [
                {
                    "id": "id_z2a18lsjznew7zg1a7rifmx3nuajmmwi",
                    "height": 0,
                    "pool": {
                        "address": "crypto.mine.nu:9338",
                        "login": "my_btc_wallet_address",
                        "password": "x",
                        "retry_count_connect": 5
                    }
                },
                {
                    "id": "id_jihtcosn0x7d7wl62jkm9jmnfj3n0rh9",
                    "height": 1,
                    "pool": {
                        "address": "crypto.mine.nu:9338",
                        "login": "my_btc_wallet_address",
                        "password": "x",
                        "retry_count_connect": 5
                    }
                },
                {
                    "id": "id_psr7u7163tj9byvwc545hlo0bw24y2op",
                    "height": 2,
                    "pool": {
                        "address": "sha256.eu.nicehash.com:3334",
                        "login": "my_btc_wallet_address",
                        "password": "x",
                        "retry_count_connect": 5
                    }
                }
            ]
        },
        {
            "id": "id_z1msj4dmhaqqt99kiglsoy84s745s5d4",
            "height": 0,
            "active": false,
            "pool_group_name": "bth",
            "pool_list": [
                {
                    "id": "id_5cjg8mylw5hprgjxlyxygu2aeixidseu",
                    "height": 0,
                    "pool": {
                        "address": "crypto.mine.nu:9338",
                        "login": "my_btc_wallet_address",
                        "password": "x",
                        "retry_count_connect": 5
                    }
                }
            ]
        },
        {
            "id": "id_5jptotu2er2f75i0t9m8d85oqmhvc8i7",
            "height": 0,
            "active": false,
            "pool_group_name": "v2",
            "pool_list": [
                {
                    "id": "id_95uzbnvf9uw3r110x4so4hsve2ytt2np",
                    "height": 0,
                    "pool": {
                        "address": "wbtc.vvpool.com:5650",
                        "login": "my_btc_wallet_address",
                        "password": "x",
                        "retry_count_connect": 5
                    }
                }
            ]
        },
        {
            "id": "id_vz9hwrj354tqo1si15xdxya5utdj4wxp",
            "height": 0,
            "active": false,
            "pool_group_name": "v4",
            "pool_list": [
                {
                    "id": "id_bkyf0yi2u0iksd5wbbs6gray40kt15e4",
                    "height": 0,
                    "pool": {
                        "address": "tcp://solo.ckpool.org:4334",
                        "login": "my_btc_wallet_address",
                        "password": "x",
                        "retry_count_connect": 5
                    }
                }
            ]
        },
        {
            "id": "id_0v552tk7tuphjkchaukr8bkqku39cc6u",
            "height": 0,
            "active": true,
            "pool_group_name": "nicehash",
            "pool_list": [
                {
                    "id": "id_ogmd7u2l4l9rlohqnu9ejg6neklqf5mo",
                    "height": 0,
                    "pool": {
                        "address": "sha256.eu.nicehash.com:3334",
                        "login": "my_btc_wallet_address",
                        "password": "x",
                        "retry_count_connect": 5
                    }
                }
            ]
        },
        {
            "id": "id_cm3ud627puiamh1trl8510pzyhno2ooi",
            "height": 0,
            "active": false,
            "pool_group_name": "local",
            "pool_list": [
                {
                    "id": "id_osh12f7l6ot4shs9ynlncvp08hd0knyd",
                    "height": 0,
                    "pool": {
                        "address": "",
                        "login": "",
                        "password": "",
                        "retry_count_connect": 5
                    }
                },
                {
                    "id": "id_f5pbyt628tibool9ezul347pivtfjtcv",
                    "height": 1,
                    "pool": {
                        "address": "127.0.0.1:7777",
                        "login": "x",
                        "password": "x",
                        "retry_count_connect": 5
                    }
                }
            ]
        }
    ]
}

pool_group_list(item)

  • id - уникальная строка. id должен быть уникален на весь файл настроек
  • height - позиция группы пулов в веб панели
  • pool_group_name - имя группы пулов в веб панели
  • pool_list - массив пулов

pool_group_list(item).pool_list(item)

  • id - уникальная строка. id должен быть уникален на весь файл настроек
  • height - позиция пула. Чем меньше чем выше приоритет пула.
  • pool - объект с настройками пула

pool_group_list(item).pool_list(item).pool

  • address - адресс пула( допустимо stratum+tcp://host:port , tcp://host:port, host:port и для ssl stratum+ssl ://host:port , ssl ://host:port )
  • login - что писать сюда зависит от пула( где то это BTC адресс , где то логин полученный после регистрации на пуле)
  • password - пароль для пула
  • retry_count_connect - колчисество попыток подключения

 

Алгоритм работы резервных пулов

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

 

Если (количество дисконнектов с пула) - это count_close_pool

B (максимальное число подключенных майнеров за последние 5 мин) - max_count_worker

Пул считается не рабочим когда (Retry count connect) <= (count_close_pool ) / (max_count_worker ? max_count_worker : 1)

 

Расчет минимальной/максимальной сложности для майнера:

Скрытый текст

https://jerrywm.github.io/calc-diff/index.html

Min share interval - минимальный интервал сек иежду шарами.

Max share interval - максимальный интервал сек иежду шарами.

Miner hashrate - хешрейт майнера(в терахешах(терахеш - 10 в 12))

 

Некоторым асикам надо ограничивать сложность(например bitfury48, иначе выдает ошибки)

 

Разное

Скрытый текст

 

Dev fee: 1%

Настройки серверов в ./server.json

Настройки пулов(если не пользуетесь веб панелью) в ./app/resources/settings.json

 

 

 

Выражаю благодарность за помощь в тестирование @booz 

 

 

1.png

 

 

https://github.com/JerryWm/Stratum-proxy-SHA256

 

Портативные win32 сборки:

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

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


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

В настройках майнера надо выставлять адрес прокси, время реконнекта минимальное.

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


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

Как у него с найсом?

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


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

 

3 минуты назад, BoraBora сказал:

Как у него с найсом?

Протестируйте. Я не тестировал( у меня и асика то нет ).

 

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


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

Понятно, значит это тот самый, который не работает с найсом.

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


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

Понятно, значит это тот самый, который не работает с найсом.

Что вам понятно? Надо тестировать.

Если асик понимает 3х байтные extranonce2 то должен работать.

 

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


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

Если в

/app/resources/settings.json

 

"dev_fee": 4 исправить на "dev_fee": 0

 

Что будет ?

:biggrin:

 

Предупредили бы людей по русски, что прокся 4% комсы берет.

Dev fee: 1-4%  - ИМХО не все поймут.

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

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


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

можно и 1% поставить. 

@_Jerry после переключения на запасной пул, прокси обратно на основной не возвращается!

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


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

@BoraBora на найс ходит как дети в школу !

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


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

@_Jerry еще нужно вместо кол-ва попыток в настройках пула спрашивать время между попытками. Кол-во попыток бесконечно...

На самом деле масштабы бедствия шире! При обрыве соединения он и на единственный пул не возвращается!

И, до кучи, хочется реализацию client reconnect. 

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

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


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

Если в

/app/resources/settings.json

 

"dev_fee": 4 исправить на "dev_fee": 0

 

Что будет ?

4%. Ну конкретно это если делать. Так код открыт убрать дев фи не составит проблемы, только это не справедливо!

2 часа назад, booz сказал:

после переключения на запасной пул, прокси обратно на основной не возвращается!

Да он перебирает попорядку все пулы.

 

2 часа назад, booz сказал:

на найс ходит как дети в школу !

Всмысле работает? или нет?

2 часа назад, booz сказал:

ще нужно вместо кол-ва попыток в настройках пула спрашивать время между попытками. Кол-во попыток бесконечно...

Какой смысл регулировать время между попытками подключения?

2 часа назад, booz сказал:

Кол-во попыток бесконечно...

Вы можете поставить в retry count connect  большое число, скажем 999999

2 часа назад, booz сказал:

На самом деле масштабы бедствия шире! При обрыве соединения он и на единственный пул не возвращается!

? Если одни пул в настройках, прокси будет постоянно к нему пытаться коннектится.

2 часа назад, booz сказал:

И, до кучи, хочется реализацию client reconnect. 

Его в основном использует найсхешь. Когда выбирает другой заказ и коннектится к другому пулу он меняет extranonce1. Позже я добавлю поддржку метода set_extranonce.

Есть ли реализация или нет в любом случае после посылки client.reconnect пул закрывает соединение.

 

3 часа назад, oleg_klimin сказал:

Предупредили бы людей по русски, что прокся 4% комсы берет.

Dev fee: 1-4%  - ИМХО не все поймут.

Помойму запись 1-4 очевидна. Дев фи из 1,2,3,4

 

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


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

@_Jerry Я пишу то, что мне от него нужно. Вы, пожалуйста, ответьте, будет failover или нет.

Reconnect подразумевает, что клиент пойдёт в другой хост/порт! 

На найсхеш работает. 

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


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

Stratum proxy с комсой 4%

Любопытно! Кто анонимно редактирует мое первое сообщение(и притом не верно...)?

6 часов назад, booz сказал:

Вы, пожалуйста, ответьте, будет failover или нет

Резервные пулы есть в настройках.

Как прокси не может подключится к пулу он переключается на следующий и работает на нем пока и с него не отключится .

 

 

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

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


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

Reconnect подразумевает

вы написали

16 часов назад, booz сказал:

client reconnect

а это комнда из стратум протокола, она нужна для реконнекта к этому же пулу(зачем я написал выше про экстранонсе1)

6 часов назад, booz сказал:

Reconnect подразумевает, что клиент пойдёт в другой хост/порт!

Так после определенного числа не удачных попыток подключения прокси перейд на следующий пул в списке.

 

6 часов назад, booz сказал:

На найсхеш работает. 

Это отлично. Значит асик понимает 3х байтный нонсе и можно будет объединять до 256 асиков.

 

-------------------------

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

 

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

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


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

не реализован.

это уже ясно :) когда ждать? и ждать ли?

17 минут назад, _Jerry сказал:

для реконнекта к этому же пулу(зачем я написал выше про экстранонсе1)

вообще не для того! также вопрос, ждать или нет?

 

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


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

это уже ясно :) когда ждать? и ждать ли?

Да я позже сделаю

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


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

Авторы однозначно респект за проксю.

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

 

Вот мой конфиг для работы на найсхеше:

{
	"dev_fee": 1,
	"pools": [
		{
			"pool_address": "stratum+tcp://sha256.eu.nicehash.com:3334",
			"wallet_address": "тут биткоин кошель найхеша",
			"pool_password": "x",
			"keepalive": 20,
			"emu_nicehash": true,
			"max_workers": 100,
			"retry_count_connect": 5,
			"pool_count": 0
		}
	]
}

 

Какие будут пожелания:

1) Сделать поддержку client.reconnect. Иначе каждые несколько минут идут реконнекты на найсхеше и скорость на них сильно просаживается. Пока прокси тестирую всего несколько часов, но общая доходность держится на уровне viabtc - только из-за просадок скорости во время реконнектов

Цитата

[APP] [STRATUM-PROXY] [STRATUM-CLIENT #2954] [NOTICE] Close
Pool send: Unk. method "client.reconnect"
[APP] [STRATUM-PROXY] [STRATUM-CLIENT #2965] [ERROR] Switch pool
[APP] [STRATUM-PROXY] [STRATUM-SERVER #1] [WORKER #3459] [ERROR] Worker error: Proxy lv. Change extranonce1 or extranonce2_size. Reconnect
[APP] [STRATUM-PROXY] [STRATUM-SERVER #1] [WORKER #5535] [NOTICE] Accepted worker

2) Поддержка имени воркеров на найсхеше. В стате я вижу все свои воркеры, но у них пустые названия, что неудобно. Имя воркера на найсхеше делается просто биткион.логин - вот логин можно брать с клиента

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


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

Авторы однозначно респект за проксю.

Спасибо.

 

16 часов назад, friendlyfire сказал:

1) Сделать поддержку client.reconnect. Иначе каждые несколько минут идут реконнекты на найсхеше и скорость на них сильно просаживается. Пока прокси тестирую всего несколько часов, но общая доходность держится на уровне viabtc - только из-за просадок скорости во время реконнектов

У вас неверное понимание client.reconnect. Это всего лишь команда перенаправление пула(можно привести аналог из http, заголовок location). К примеру найсхешь перенаправляет на себя же.

Нужна поддержка set_extranonce.

 

Есть некоторые данные (extranonce1 и extranonce2_size) которые передаются только один раз в начале соединения(зачем это было сделано неочень ясно, extranonce1 Вообще бесполезен, extranonce2_size как и сложность можно было бы передавать в каждой новой работе - это бы упростило как создание проксей так и создание майнеров).

 

Если сам майнер не поддерживает метод mining.set_extranonce(а я почти уверен что не поддерживает, т.к. майнер кривой) из спецификации nicehash , то единственный способ это делать реконект.

Есть еще один способ, убрать вообще extranonce1, то есть сделать ему размер 0, а extranonce2_size делать всегда 3 байта. Тогда(если асик поддреживает нулевой Extranonce1) можно будет обойтись без реконнекта. Но это все надо тестировать.

 

16 часов назад, friendlyfire сказал:

2) Поддержка имени воркеров на найсхеше. В стате я вижу все свои воркеры, но у них пустые названия, что неудобно. Имя воркера на найсхеше делается просто биткион.логин - вот логин можно брать с клиента

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

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

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


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

@_Jerry майнер может понимать set extra nonce. При старте он пишет: server set extranonce2 size  bla bla bla... 

Need more testing. 

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

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


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

Прокси запустил, но на интересующем пуле выдает следующие ошибки в консоль:

[2018-2-6 22:04:24] [APP] [STRATUM-PROXY] [STRATUM-CLIENT #41] [SUCCESS] Connected to [SSL OFF] [KPALV 20] [RSP TO 30] "crypto.mine.nu:9338"
Pool send: Unk. method "mining.set_difficulty"
Pool send: Unk. method "mining.notify"
[2018-2-6 22:04:24] [APP] [STRATUM-PROXY] [STRATUM-CLIENT #41] [ERROR] invalid extranonce1 (A string minimum length of 2 was expected, got length 0)

 

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


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

@_Jerry добрый день!

а ваш прокси умеет изменять сложность, как ckproxy ?

мне надо, чтобы шары были не сложнее 65к, т.к. найс сейчас шары дает 524к, для старых асиков это нерешаемая задача, очень часто уходят в ребут.

 вынужден копать BCH на ViaBTC, он задает сложность 8к и асики стабильно работают

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


Ссылка на сообщение
Поделиться на других сайтах
В 2/6/2018 в 16:11, trd100vx сказал:

Прокси запустил, но на интересующем пуле выдает следующие ошибки в консоль:

 

В 2/6/2018 в 16:11, trd100vx сказал:

"crypto.mine.nu:9338"

Вы уверены что это sha256d пул?

Он шлет работу на как уведомление, а как вызов функции. Также extranonce1_size == 0.

2 часа назад, Kavjlaeg сказал:

добрый день!

а ваш прокси умеет изменять сложность, как ckproxy ?

мне надо, чтобы шары были не сложнее 65к, т.к. найс сейчас шары дает 524к, для старых асиков это нерешаемая задача, очень часто уходят в ребут.

 вынужден копать BCH на ViaBTC, он задает сложность 8к и асики стабильно работают

Да умеет. По мимо этого нормализует extranonce2_size(чего как я понимаю ckproxy не делает)

 

Установка макс/мин сложности, а также макс размера extranonce2 в настройках серверов (пример тут https://github.com/JerryWm/Stratum-proxy-SHA256/blob/master/server.json )

В 2/5/2018 в 14:15, booz сказал:

майнер может понимать set extra nonce. При старте он пишет: server set extranonce2 size  bla bla bla... 

При каждом реконнекте он и пишет.

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

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


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

@_Jerry нужно делать мануал с картинками. Глядишь, ещё донатов подтянется. 

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


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

нужно делать мануал с картинками. Глядишь, ещё донатов подтянется. 

Сделаю. Но потом. Надо сначала доделать обновление.

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


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

@_Jerry  спасибо за помощь при запуске!

теперь у меня не вешаются асики на найсе и не уходят в ребут при огромной сложности.

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

×