Open ethereum pool: sammy007/open-ethereum-pool: Open Ethereum Mining Pool

Майнинг эфира: особенности и выбор оборудования

Майнинг Ethereum  процесс, который начался в 2015 году с появлением криптовалюты. За последние два месяца стоимость эфириума возросла в шесть раз, что привлекло внимание людей к майнингу этой разновидности криптовалюты.  

Особенности майнинга Эфира

Выбор оборудования

Выбор ПО для майнинга

Выбор пула

Как майнить эфир на видеокарте

Промышленный майнинг Эфира

Калькулятор майнинга Эфира

Сложности и возможные проблемы сети

Где хранить Эфир?

Преимущества и недостатки

Перспективы майнинга и прогноз курса

Особенности майнинга Эфира

Особенность процесса заключается в молодости криптовалюты и большом количестве перспектив. На данном этапе имеет смысл начинать процесс добычи с соло-майнинга без специализированного оборудования. Чтобы зарабатывать эфириум необязательно приобретать несколько ПК или видеокарт. Отрицательной стороной процесса выступают сложности работы с командной строкой, а также с выводом добытых денег на электронный кошелек. Майнинг эфира происходит с привлечением видеокарт, процессора или обеих частей оборудования.

Выбор оборудования

Использовать для майнинга можно любую видеокарту, даже собственную, без дополнительных установок при условии свобойдной оперативной памяти минимум в 2 ГБ. Важно, чтобы нагрузка на процессор не превышала возможности заработка. Для повышения эффективности ПК можно объединить две видеокарты с помощью методики CrossFire.

Считается, что для добычи Ethereum подходят такие виды видеокарт, как:

  • ATI Radeon R9 -280x;
  • Radeon Rx 480;
  • Radeon RX 470 Ethereum Mining;
  • Radeon Rx 480;
  • Radeon HD 7950.

Такие устройства можно купить и подключить к домашнему ПК. А также на сайте cryptocompare можно сравнить все видеокарты и посмотреть, за сколько дней окупится оборудование.

Выбор ПО для майнинга

Есть несколько программ, которые позволяют подключиться к пулам или заняться соло-майнингом:

  1. Ethminer – самая популярная программа для валюты;
  2. Claymore’s Dual Ethereum+Decred – с помощью видеокарты можно добывать одну или две валюты одновременно на высокой скорости. При добыче эфира, требуется выплатить комиссию в размере 1%.

Выбор пула

Пул – это сервер, который равномерно распределяет работу между подключившимися ПК. В них есть специальные методики просчета, разрешающие оценить индивидуальный вклад каждого оборудования в разгадку кода или блока. По этому соотношению майнеры получают прибыль.  Чтобы майнить эфир эффективнее, можно подключиться к таким пулам, как:

  • Open Ethereum Pool;
  • EthPool – самый первый пул по системе, количество участников которого доходит до 400 человек;
  • CoinoTron;
  • DwarfPool;

Можно выбрать более молодые проекты-пулы, вроде Ethereumpool, WeiPool или ETH Nanopool.

Как майнить эфир на видеокарте

К процессу есть ряд требований, а именно:

  • Наличие ОС Windows 7 или выше;
  • Объем памяти на видеокарте не менее 2-3 ГБ, оптимальный показатель – 4 Гб;
  • Драйвера видеокарты должны быть обновлены;
  • Можно установить несколько видеокарт, если разрешает материнская плата ПК;
  • Заводится эфириум-кошелек, а также выбирается пул или соло-майнинг.

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

Промышленный майнинг Эфира

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

Калькулятор майнинга Эфира

Калькулятор помогает подсчитать рентабельность майнинга в онлайн-режиме. С его помощью можно проследить за котировками эфириума, а также узнать время, которое требуется для расшифровки блока.  Самый популярный сервис-калькулятор – cryptocompare.

Сложности и возможные проблемы сети

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

Где хранить Эфир?

Хранить криптовалюту можно на кошельках в электронном виде:

  • Официальный представитель Ethereum;
  • MyEtherWallet;
  • Кошелек Litecoin;
  • Кошелек Dash;
  • Кошелек Ripple.

Подбирать кошелек можно в зависимости от потребностей, а также удобства интерфейса.

Преимущества и недостатки

Преимущества майнинга Эфириума заключаются в следующем:

  • Удобно и просто разобраться в процессе самостоятельно.
  • Быстрое обновление ПО для майнинга.
  • Максимальная безопасность процедуры и ее прозрачность для майнеров.
  • Система доступна и недорога.
  • Постоянное улучшение показателей калькулятора для Эфира.
  • Защищенность пользователей от внешних атак.

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

Перспективы майнинга и прогноз курса

Зарабатывать на майнинге эфира (eth) можно с помощью одной видеокарты. Курс постоянно колеблется, но в среднем за сутки можно получить 0.2 ETH. Это эквивалентно 125 рублям. Прогнозируется повышение курса криптовалюты, поэтому можно начинать майнинг прямо сегодня.

Coins to mine | minerstat

Coins to mine | minerstat

minerstat

English

CS

Čeština

DE

Deutsch

ES

Español

EN

English

FR

Francais

HR

Hrvatski

HU

Magyar

IT

Italiano

PL

Polski

PT

Português

RO

Română

RU

Русский

SL

Slovenščina

TR

Türkçe

ZH

简体中文

Find the mineable coins from the list of proof of work (PoW) coins.

Search:

Last viewed

Coins you have recently viewed

Coins’ statistics

Here is a short statistics from the coins’ world

Trending coins in last 7 days

1

ETC
Ethereum Classic, Etchash

2

BTC
Bitcoin, SHA-256

3

RXD
Radiant, Radiant

4

RVN
Ravencoin, KAWPOW

5

ERG
Ergo, Autolykos2

6

KAS
Kaspa, KHeavyHash

7

ETHW
Ethereum PoW, Ethash

8

KDA
Kadena, Blake (2s-Kadena)

9

LTC+DOGE
Scrypt

10

RTM
Raptoreum, GhostRider

Top coins by pools

#

Coin

Pools

1

ETC
Ethereum Classic, Etchash

112

2

RVN
Ravencoin, KAWPOW

78

3

BTC
Bitcoin, SHA-256

59

4

ERG
Ergo, Autolykos2

44

5

XMR
Monero, RandomX

39

6

NEOX
NEOX, KAWPOW

33

7

LTC
Litecoin, Scrypt

31

8

KDA
Kadena, Blake (2s-Kadena)

29

9

ZEC
Zcash, Equihash

27

10

ETHW
Ethereum PoW, Ethash

23

Top coins by market cap

#

Coin

Market cap

1

BTC
Bitcoin, SHA-256

$390,473,194,212

2

DOGE
Dogecoin, Scrypt

$18,245,787,990

3

LTC
Litecoin, Scrypt

$4,513,094,305

4

ETC
Ethereum Classic, Etchash

$3,282,430,324

5

XMR
Monero, RandomX

$2,707,530,115

6

BCH
Bitcoin Cash, SHA-256

$2,251,868,325

7

BSV
Bitcoin SV, SHA-256

$902,673,719

8

ZEC
Zcash, Equihash

$806,760,085

9

ETHW
Ethereum PoW, Ethash

$677,968,842

10

DASH
Dash, X11

$466,379,079

Disclaimer: Results from mining calculator are estimation based on the current difficulty, block reward, and exchange rate for particular coin. Errors can occur, so your investment decision shouldn’t be based on the results of this calculator.

Not sure which software to use?

join minerstat and mine any coin you want

Get started

open-ethereum-pool-master — npm

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

Установить nodejs. Я предлагаю использовать версию LTS >= 4.x с https://github.com/nodesource/distributions или из вашего дистрибутива Linux или просто установить nodejs на Ubuntu Xenial 16.04.

Внешний интерфейс представляет собой одностраничное приложение Ember.js, которое опрашивает API пула для отображения статистики майнера.

Измените ApiUrl: '//example.net/' в www/config/environment. js , чтобы он соответствовал вашему доменному имени. Также не забудьте настроить другие параметры.

Настройте nginx для обслуживания API в подкаталоге /api .
Настройте nginx для обслуживания www/dist в качестве статического веб-сайта.

Проверьте каталог www/app/templates и отредактируйте эти шаблоны
для настройки интерфейса.

Конфигурация на самом деле проста, просто прочтите ее дважды и дважды подумайте, прежде чем менять значения по умолчанию.

Не копируйте конфигурацию напрямую из этого руководства. Используйте пример конфигурации из пакета,
в противном случае вы получите ошибки при запуске из-за комментариев JSON.

 

{

// Установка на количество ядер ЦП на вашем сервере

«потоки»: 2,

// Префикс для клавиш в магазине Redis

«Монета»: «ETH»,

/ / Дайте уникальное имя каждому экземпляру

  "name": "main",

 

  "proxy": {

"включено": True,

// Связание конечной точки Mining HTTP с этой IP: порт

"Слушание": "0. 0.0.0:8888",

// Http-запрос от шахтеров

"LimitedHeadSize": 1024,

"LimitBodysize": 256,

/*Установка True, если вы находитесь за облачным фларком (не рекомендуется) или за http-reverse

из заголовка X-Forwarded-For.

      Только для опытных пользователей. Сложно сделать это правильно и безопасно.

*/

"позади reverseProxy": false,

// stratum mining endpoint

"Stratum": {

"Обнаружен": True,

// Связы

"Слушай": "0.0.0.0:8008",

"Тайм -аут": "120S",

"MaxConn": 8192

},

//

"BlockRefreshInterval": "120 мс",

"StateUpdateInterval": "3S",

// Требуется эта сложность доли от шахтеров

«Сложность»: 2000000000,

/*Ошибка ответа на шахтер вместо job, если Redis недоступен.

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

    */

    "healthCheck": true,

    // Пометить пул как больной после указанного количества сбоев Redis.

"maxfails": 100,

// ttl для статистики работников, как правило, должно быть равным большому окну хэшрат из API Раздела

"Hashrateexpiration": «3H»,

«Политика»: {

». Рабочие ": 8,

" ResetInterval ":" 60M ",

" Обновление Interinterval ":" 1M ",

" Запрет ": {

" включено ": ложь,

/*Имя ipset для запрет.

        Проверьте http://ipset.netfilter.org/ документацию.

*/

«IPSet»: «Черный список»,

// Удалить запрет после этого количества времени

«Тайм -аут»: 1800,

// процент неверных акций от всех акций, чтобы запретить шахтер

" Invalidpercent ": 30,

// Проверка после после того, как Майнер представил это количество акций

" CheckThreshold ": 30,

// Bad Miner после этого количества Malformed запросов

" MalformedLimit ": 5

},

// Предел скорости подключения

«Ограничения»: {

«включено»: False,

// Номер начальных соединений

«Предел»: 30,

«Грейс»: ",

// Увеличение разрешенного количества соединений на каждом действительном акции

" LimitJump ": 10

}

}

},

// Предоставляет данные JSON для фронта, который является статическим веб -сайтом

//. 0005

"API": {

"включено": True,

"Слушание": "0.0.0.0:8080",

// Статус Майнеров (хэшрат, ...) В этом интервале

"Стату ":" 5S ",

// Чистка устаревшая статистика интервал

" PurgeInterval ":" 10M ",

// Окно быстрого хэшрата для каждого шахтера из его акций

" HashrateWindow ":" 30M ",

// Длинный и точный хэшрейт от шар, 3 часа — это круто, оставьте

"Hashratelargewindow": "3H",

// Соберите статистику для акций/соотношение DIFF для этого количества блоков

"LuckWindow": [64, 128, 256],

// Максиму На фронте

«Платежи»: 50,

// MAX -номера блоков для отображения на фронте

«блоки»: 50,

/*Если вы запускаете узел API на другом сервере, где этот модуль

      считывает данные из ведомого устройства redis с возможностью записи, вы должны запустить экземпляр API с включенной этой опцией, чтобы очистить статистику хэшрейта от основного узла Redis.

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

      Очень продвинутый уровень. Обычно все модули должны использовать один и тот же экземпляр redis.

*/

"чистка": false

},

// Проверка здоровья каждого узла GET опросить о новых вакансиях. Пул попытается получить работу с

    первый живой и проверить в фоновом режиме на наличие сбоя резервного копирования.

    Текущий шаблон блока пула действительно всегда кэшируется в ОЗУ.

*/

«вверх по течению»: [

{

«Имя»: «Главный»,

«URL»: «http://127.0.0.1:8545»,

«Timeout»: «10S. "

    },

    {

      "имя": "резервная копия",

      "url": "http://127.0.0.2:8545",

      ":0005

}

],

// Это стандартные параметры подключения Redis

"Redis": {

// Где ваш экземпляр Redis слушает команды

9000 "EndPoint": "127. 0.0.1:6379 ",

" PoolSize ": 10,

" База данных ": 0,

" пароль ":" "

},

// Этот модуль периодически переправляет эфир для шахтеров

": {{

    "включено": ложь,

// Процент платы за бассейн

"Poolfee": 1,0,

////MARD ADDRICAIRSE PAYES (Оставьте его пустым, чтобы отключить снятие платы)

"PoolfeeAddress": "",

// Пожертвовать 10%из пула. Сборы для разработчиков

«Пожертвовать»: True,

// Разблокируйте только в том случае, если это количество блоков, добываемых назад

«глубина»: 120,

// Просто не касайтесь этой опции

"Imperedepth": 20 ,

    // Сохранить комиссию за транзакцию за майнинг в качестве комиссии пула

"Keeptxfees": false,

// запустить разблокировку в этом интервале

"Интервал": "10m",

// geth nempt node rpc конечная точка для разблокировки блоков

"Daemon": "http: // 127.0.0.1:8545 ",

// Ошибка подъема, если не удастся достичь Гет в течение этого времени

" Тайм -аут ":" 10s "

},

// Платежные шахтеры, используя этот модуль

  "выплаты": {

    "включено": false,

// Требуется минимальное количество одноранговых коллег на узле

«Требования»: 25,

// Запуск выплат в этом интервале

«Интервал»: «12H»,

//

    "daemon": "http://127. 0.0.1:8545",

    // Ошибка роста, если не удается получить доступ к geth за это время

    "timeout": "10s",

/ с балансом пула

    "адрес": "0x0",

// Позвольте Гету определить газ и газ

"Autogas": True,

// Сумма газа и цену для выплаты TX (только усовершенствованные пользователи)

"Газ": "21000",

"Gasprice": "5000000000000",

// Отправьте платеж только в случае баланса шахтера> = 0,5 Ether

"порог": 500000000,

// Выполнить Bgsave на Redis после успешной сессии выплаты

"Bgsave": False

}

}

Если вы распределяете развертывание пула на несколько серверов или процессов,
создайте несколько конфигов и отключите ненужные модули на каждом сервере. (Продвинутые пользователи)

Этот пул протестирован на совместимость с Ethcore Parity. Майнинг и разблокировка блоков работают, но я не уверен в выплатах и ​​предлагаю запустить официальный узел для платежей.

Как построить майнинг-пул Ethereum | Иван Богатый | Dragonfly Research

Пулы для майнинга являются крупными игроками в экосистеме Ethereum. С экспоненциально растущим значением извлекаемой майнерами стоимости («MEV»), прохождение EIP-1559и предстоящее слияние, они стали более громкими и все более важными участниками экосистемы.

Для непосвященных: пулы для майнинга — это поставщики программного обеспечения, которые позволяют нескольким майнинговым машинам объединять свои мощности для майнинга и делиться вознаграждениями. Майнинговые пулы важны для PoW-майнинга на двух уровнях: во-первых, потому что доходы отдельных майнеров очень изменчивы, а во-вторых, потому что настройка программной инфраструктуры для майнинга становится все более сложной. Объединяя ресурсы, отдельные майнеры могут снизить дисперсию и вести более предсказуемый бизнес.

Но с этой силой приходит и большая ответственность, а пулы для майнинга обладают большой силой. Это связано с тем, что пулы майнинга в конечном итоге решают, над какими блоками работают их майнеры и какие транзакции включаются в эти блоки. Пулы майнинга решают, какой MEV будет добыт и кто будет его добывать, они голосуют за лимит газа и принимают участие в крупных политических битвах. Вот почему для культуры Ethereum важно, чтобы барьер для входа в пулы майнинга был как можно ниже, чтобы максимизировать децентрализацию.

Когда MiningDAO приступили к созданию собственного независимого пула, мы были удивлены, обнаружив, что это невероятно сложно! Существует очень мало открытой и общедоступной информации о том, как управлять конкурентным майнинговым пулом, и большая часть программного обеспечения с открытым исходным кодом устарела. Итак, мы решили: давайте исправим это, выпустив пошаговое руководство с открытым исходным кодом.

Создание пула состоит из двух частей: (1) настройка клиента полного узла с хорошей одноранговой сетью и высокой скоростью обработки и (2) подключение полного узла к программному обеспечению пула, которое управляет хэшрейтом и распределяет рабочую нагрузку между все горняки. Здесь мы рассмотрим оба.

Это руководство основано на нашем личном опыте создания пула MiningDAO.io и описывает, как мы снизили ставки дяди с 10%-14% до примерно 4%-5%, на одном уровне или выше. чем некоторые топ-10 пулов.

Для запуска пула майнинга требуется запуск полноузлового клиента Ethereum. Этот клиент будет отвечать за получение новых блоков и ожидающих транзакций, а также за создание собственных блоков и их трансляцию другим узлам. В этом разделе рассказывается, как правильно настроить клиент полного узла.

Для работы полностью синхронизированного узла требуется достаточно хорошее оборудование. Мы рекомендуем не менее 32 ГБ ОЗУ и не менее 2 ТБ хранилища SSD (синхронизация цепочки с жестким диском займет вечность).

Пропускная способность также важна. Предпочтительно располагаться как можно ближе к другим узлам, чтобы получать новые блоки как можно быстрее. Мы рекомендуем облачные выделенные машины на сервисах, популярных среди других пулов: OVH и Hetzner в Европе, Alibaba и AWS в Азии.

Следующее решение, которое нужно принять, — какой клиент Ethereum использовать. Наиболее популярными и проверенными вариантами являются Geth и OpenEthereum (урожденная Parity). Geth лидирует в разработке протокола и всегда в курсе последних событий.

Для сравнения, мы провели небольшие эксперименты с Parity-2.7.2 (последняя стабильная ветка перед рефакторингом OpenEthereum) и OpenEthereum, но оба дали плохие результаты по времени импорта блоков и времени производства блоков, что привело к неприемлемо высоким коэффициентам дублирования. . Мы приветствуем всех, кто проведет более тщательное A/B-тестирование и предоставит нам дополнительные данные, но на данном этапе мы просто рекомендуем Geth.

Вот используемые нами флаги:

 geth --datadir=/ssd/getdata --syncmode=fast --cache=21000 
--maxpeers=250 --txpool.globalslots=1000
--http --http.api=eth
--miner.etherbase='0xADDRESS' --mine --miner.threads=0
--miner.extradata ='MiningDAO'
--miner. notify='http://127.0.0.1:8107' &>> ~/geth-log.txt

Здесь --cache=21000 означает выделить 21 ГБ для оперативной памяти хранилище состояния (максимальное, что может обработать Geth), а остальные флаги будут объяснены ниже.

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

Две вещи уничтожают ценность для майнеров: добыча дядюшек и добыча пустых блоков. На самом деле, оба они почти одинаково плохи: вознаграждение за дядюшкиный блок составляет 1,75 ETH , а вознаграждение за пустой блок — 2 ETH , без избыточной комиссии за транзакцию в обоих случаях. Для сравнения, полные блоки с комиссией за транзакцию обычно приносят 3-4 ETH в общем вознаграждении, а иногда и намного больше. Так почему же майнинговые пулы иногда производят пустые блоки и как можно минимизировать их частоту?

Когда другой пул добывает новый блок (скажем, на высоте N ), любые другие блоки на высоте N , скорее всего, станут дядями. Таким образом, всякий раз, когда обнаруживается новый блок, Geth мгновенно переключает работу майнеров на добычу пустого блока на высоте N+1 . У этого пустого блока нет комиссий за транзакции, но это все же лучше, чем блоки майнинга, которым суждено стать дядями. Затем geth строит «настоящий» блок на высоте N+1 и снова меняет работу майнеров. Построение такого «настоящего» блока требует времени (0,1-0,3 секунды), поэтому процесс двухэтапный. Но в этот промежуток времени майнеры продолжительностью 0,1-0,3 секунды работают над пустым блоком.

Может показаться заманчивым собрать все незавершенные транзакции, чтобы максимизировать комиссию, но жадность с --txpool.globalslots существенно увеличивает объем обработки, которую Geth должен выполнить для создания «реального» блока (до 1 секунды и более). более). Мы рекомендуем значения не более 1000 или 2000 .

Подробнее об этом см. https://github.com/ethereum/go-ethereum/issues/21899

Убрав пустые блоки, мы можем приступить к сложной части. Чтобы свести к минимуму ставки дяди, ключевыми являются две вещи:

  1. когда другие пулы производят новые блоки, узнайте об этом как можно быстрее хороший p2p, как объяснялось ранее, запускает полный узел на облачном сервере с хорошей пропускной способностью рядом с другими узлами.

    Во-вторых, хорошая пропускная способность позволяет узлу обрабатывать больше прямых одноранговых узлов, тем самым уменьшая количество переходов p2p, необходимых для получения новой информации. Флаг Geth для количества пиров равен --maxpeers .

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

    1.4.1) Используйте bloXroute

    bloXroute — это сервис, предназначенный для улучшения связи между майнерами и снижения их ставки дяди. Большинство пулов подключены к bloXroute, и даже крупные устоявшиеся пулы сообщают о значительных улучшениях от использования bloXroute. Измерения, проведенные KeeperDAO, еще раз подтверждают огромное преимущество bloXroute над сопоставимыми сервисами.

    Наши эксперименты также показали значительные улучшения. На только что синхронизированном узле с настройками пира по умолчанию примерно 90 % всех новых блоков поступают в первую очередь от bloXroute (и только 10 % — от всех остальных пиров). Даже после того, как наш узел был настроен для подключения к основным узлам, все равно 40-60% новых блоков поступают в первую очередь от bloXroute.

    После выполнения руководства по настройке bloXroute не забудьте добавить узел bloXroute в набор «доверенных пиров» для вашего Geth, он нам понадобится позже. Доверенные одноранговые узлы — это заранее установленные узлы, к которым Geth всегда будет подключаться, независимо от процесса инициализации случайного однорангового узла. Доверенные одноранговые узлы также не учитываются в лимите подключений. Добавление шлюза bloXroute к доверенным узлам гарантирует, что Geth случайно не разорвет это соединение.

    Мы также рекомендуем подключиться к сети Taichi. Taichi — это сеть распространения блоков, разработанная Sparkpool. Подключиться к нему можно, добавив конечные точки Taichi в тот же файл доверенных пиров.

    1.4.2) Активно распространяйте свои блоки

    Всякий раз, когда Geth успешно добывает новый блок, он отправляет этот блок для распространения по сети. По умолчанию Geth распространяет его только на случайное подмножество размером sqrt(n_peers) , которые затем распространяют блок на некоторых своих одноранговых узлов и так далее. Этот механизм не идеален, даже если все одноранговые узлы одинаково полезны, но он особенно вреден, когда одни одноранговые узлы более сильны, чем другие, и эти одноранговые узлы в конечном итоге не включаются в подмножество.

    В частности, первое, что нужно сделать при майнинге нового блока, — отправить его на bloXroute, чтобы он был перенаправлен во все другие участвующие майнинг-пулы. Если шлюз bloXroute не попадает в это случайное подмножество sqrt(n_peers) , ваши шансы на то, что вас разблокируют, возрастут!

    Затем вы хотите отправить блок пирам самого высокого качества, а затем всем оставшимся пирам.

    Мы разместили следующее исправление Geth с открытым исходным кодом и рекомендуем применить его к вашему клиенту. Он распространяет все вновь добытые блоки на все доверенные узлы (включая bloXroute), а затем на все оставшиеся узлы.

    1.4.3) Развивайте самых хорошо связанных пиров

    Vanilla Geth разработан для максимальной децентрализации и плоской структуры сети. Этот выбор хорошо подходит для любителей и поддерживает надежную экосистему из тысяч узлов. Однако, как мы уже видели в предыдущем разделе, эти значения по умолчанию не работают для узлов, которые выполняют критически важные функции и имеют значительные денежные затраты, связанные с отказами.

    На самом деле не все одноранговые узлы одинаково полезны. Некоторые из них имеют медленное соединение и не будут ни поставлять новые блоки, ни помогать вашим блокам распространяться. Другие, особенно узлы других пулов майнинга, будут производить постоянный поток данных о новых блоках. Следуя совету Sparkpool, мы настроили Geth, чтобы регистрировать, какие пиры первыми отправили нам новый блок. Сбор этих данных в течение нескольких месяцев позволил нам определить лучших пиров, с которыми всегда можно поддерживать связь (через настройки «статического»/«доверенного» узла в Geth). Вот скрипт Python, который мы использовали для обработки этих данных и преобразования их в trust_nodes.json список, который Geth может принимать.

    Поскольку MiningDAO присутствует в каждой геозоне (Северная Америка, Европа, Азия), мы составили списки лучших аналогов для каждой геозоны. К сожалению, мы не можем публиковать IP-адреса узлов, чтобы избежать риска DDoS-атак на эти узлы. Может, вероятно, поделиться в частном порядке по серьезным запросам с хорошим обоснованием. Также рады поделиться нашими собственными узлами в каждой гео для подключения других пулов!

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

    Мы кратко проанализировали следующие 4 варианта: miningcore, open-ethereum-pool, NOMP (портал открытого майнинга узлов) и MPOS (портал майнинга с открытым исходным кодом). Позже мы узнали о Flexpool Solo, но экспериментировать с ним не стали.

    Нам очень понравился Miningcore по двум причинам. Во-первых, он хранит все прошлые данные на диске в базе данных SQL, в отличие от open-ethereum-pool, который хранит данные только в оперативной памяти через Redis. Дисковое хранилище обеспечивает устойчивость к перезагрузкам и возможность анализа исторических данных. Во-вторых, нам понравился хорошо читаемый объектно-ориентированный код Miningcore.

    В конце концов, MiningDAO внедрила собственное программное обеспечение для пула, написанное на Go для скорости и созданное по образцу Miningcore. Мы ожидаем, что скоро выложим нашу реализацию с открытым исходным кодом, но пока мы рекомендуем использовать Miningcore.

    Основная проблема, с которой мы столкнулись при использовании Miningcore, связана с тем, как он обрабатывает рабочие обновления. По умолчанию Miningcore пингует RPC полного узла каждые 0,5 секунды, чтобы узнать, изменилось ли последнее задание. Эта установка может работать для других криптовалют с более длительным временем блокировки (это было бы незначительной проблемой для Биткойна с 10-минутными блоками), но для Ethereum такая установка приводит к неприемлемо высоким показателям uncle.

    Для контекста, есть простой способ рассчитать увеличение количества дядек из-за любой задержки обработки. Время блока распределено по Пуассону, что означает, что независимо от того, сколько времени прошло с момента последнего добытого блока, вероятность найти следующий блок в следующую секунду (или миллисекунду, или что-то еще) всегда одинакова. Например, Ethereum ориентируется на 13-секундное время блока, что означает, что вероятность того, что блок будет добыт в следующую секунду, всегда равна 1 с / 13 с ~= 7,7% . Таким образом, если ваш майнинг-пул имеет задержку 0,1 с в любом месте конвейера по какой-либо причине, в результате этой задержки у него будет 0,1 с / 13 с ~= 0,77% дополнительных блоков дяди. Блоки дяди будут поступать из того 0,1 с периода времени, когда ваши майнеры работают над устаревшей работой.

    Вернуться к Miningcore. Используя приведенную выше формулу, 0,5-секундная задержка при обновлении задания майнера приведет к 0,5 с / 13 с ~= 4% дополнительных блоков дяди (абсолютный, а не относительный процент). Естественно, такой высокий процент невынужденных ошибок недопустим. Мы много экспериментировали со снижением частоты обновления с 0,5 секунды до 50 миллисекунд и ниже, но обнаружили, что эта настройка довольно ненадежна: обновления по-прежнему значительно задерживались.

    Лучшее решение — использовать функцию Geth notifyWork , чтобы Geth заранее отправлял обновления заданий в программное обеспечение майнингового пула, как только они появляются. Мы пропатчили Miningcore для поддержки этой опции и выпустили модификацию. После перехода на notifyWork мы обнаружили, что задержки связи между Geth и Miningcore стали практически незначительными, и, таким образом, наши показатели дяди значительно улучшились.

    Надеемся, что этот пост окажется полезным и приведет к тому, что больше людей будут использовать пулы майнинга Ethereum или соло-майнинг, помогая поддерживать открытость и децентрализованность Ethereum. Подводя итог, мы начали с ванильного Geth с настройками по умолчанию и ванильной реализацией Miningcore. Эта настройка по умолчанию привела к появлению дядей примерно в 10%-14%. Постепенное применение описанных здесь модификаций снизило долю дяди до 4%-5%, что сравнимо или лучше, чем у некоторых существующих топ-10 пулов (скорость дяди Etherscan немного выше, потому что мы иногда экспериментируем в prod).

    Наши модификации Geth можно найти здесь в виде репозитория и здесь в виде патча. Наши модификации Miningcore можно найти здесь, а соответствующий файл конфигурации пула — здесь.

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

    Ускорение майнинга, разработанное Александром Мельниковым .