Pull to refresh

Bitcoin, генерируем монеты в общем пуле

Cryptography *
Криптовалюта Bitcoin продолжает развиваться, сложность генерации блока повышается с каждым разом. Торги на биржах идут уже на весьма существенные суммы. А вот генерировать в одиночку становится почти нереально.
Сегодня речь пойдёт о генерации монет коллективно — в общем пуле. В этом случае приз за генерацию блока разделяется между всеми участниками пула примерно пропорционально вкладу в генерацию блока.
За счёт большой суммарной вычислительной мощности пула генерация блоков происходит намного чаще, чем если работать в одиночку, но и приз каждому участнику меньше. В долговременном среднем получается примерно столько же (минус процент владельца пула), но зато равномернее.

Что такое Bitcoin, и как оно работает на хабре уже есть статьи. А вот о генерации в общем пуле информация весьма разрозненна даже в его родной вики. В этой статье рассказывается о механизме работы пулов, имеющихся пулах, клиент-программах и некоторых результатах.

Сначала немного терминологии


Блок (block) — пачка транзакций по обмену биткоинами, подписанная криптографической хэш-функцией SHA-256.
Подпись блока не содержит какого-либо ключа, сгенерировать и проверить её может кто угодно, однако подпись блока должна быть меньше некоторой «цели» (если рассматривать подпись и цель как 256-битные целые числа), грубо говоря – содержать в начале некоторое количество нулевых бит. Таким образом сгенерировать корректную подпись сложно — нужно долго подбирать параметры блока, чтобы хэш блока получился меньше цели. Пример блока.

Сложность (difficulty) — относительная сложность генерации подписи блока. Сложность = 1 соответствует цели, в которой 32 первых бита нули. Соответственно, для генерации подписи блока нужно в среднем '2^32 * сложность' попыток (хэширований блока). Сложность пересчитывается всеми биткоин-клиентами примерно раз в 2 недели, так чтобы скорость генерации блоков составляла примерно 6 блоков в час. Текущая сложность составляет примерно 157416 (49 первых бит хэша должны быть нулями а дальше 23 бита хэша должны быть меньше 6A93B3)



Майнинг (mining) – процесс подбора подписи блоков. Является единственным источником увеличения «денежной массы» биткоинов и одновременно служит для фиксации всех проведённых транзакций.

Шара (share) — кандидат в подпись блока — блок и его хэш, содержащий 32 первых бита нулей. В количестве шар пулы считают вклад каждого участника в работу по генерации подписи блока. При сложности равной одному каждая шара становится подписью, при текущей — только каждая 157416-ная в среднем.

Пул (pool) — сервер, занимающийся распределённым майнингом — при использовании вычислительных мощностей участников. Пул раздаёт участникам текущий блок и ожидает получения шар. Как только один из участников присылает шару, которая оказывается меньше текущей цели, пул объявляет о генерации подписи блока. Приз за генерацию блока (сейчас это 50 BTC + добровольные налоги с транзакций) распределяется между участниками, владелец пула берёт себе некоторую долю. Правила распределения варьируются от пула к пулу, об этом пойдёт речь ниже.

Устаревшая шара (stale share) — шара, которая пришла от участника слишком поздно, после того как соответствующий блок был уже кем-то подписан. Клиент-программа ищет подпись блока, пока не найдёт или пока не получит отбой. Если пул не отправляет отбой или клиент-программа эти отбои не понимает, то некоторая часть шар (как пишут, 0.5%-1.5%) будет оказываться устаревшей. Поддержка «отбоя» в пулах реализована через long polling.

Майнер (miner) — клиент-программа для майнинга. Для участия в пуле нужна отдельная клиент-программа, т.к. обычный Bitcoin-клиент майнинг в пуле не поддерживает.
Также майнером называют аккаунт для одной клиент-программы участника на пуле. Один участник может создать несколько майнеров без дополнительной регистрации на пуле, чтобы использовать несколько клиент-программ (разных типов и/или на разных компьютерах) и получать доход от них в один кошелёк.

Учёт по очкам (score based system) — система оценки шар, в зависимости от времени их получения пулом. Стоимость шары в очках растёт с течением времени работы над одним блоком, т.е. за самые последние шары заплатят больше всего. Эта система предназначена для противодействия читерству — стратегии отключения от пула после некоторого времени работы над блоком. Если шары равнозначны, то оказывается выгоднее отключиться после получения пулом общего количества шар, равного 0.435 * сложность, и перейти на одиночную генерацию (или на PPS, см. ниже). Но это считается читерством.

Теперь о пулах


1) deepbit.net

Самый большой из пулов. Совокупная вычислительная мощность — 854 Ghash/s (гигахэшей в секунду). По информации bitcoinwatch.com, этот пул генерирует почти половину подписей блоков (см. диаграмму), что уже начало вызывать беспокойство.

Есть две модели получения своей доли:
1) Пропорциональная (Proportional). В этом случае участник получает долю, пропорциональную количеству найденных шар, причём считаются все шары (кроме stale share), а не только для успешно подписанного блока. Доля владельца — 3%.
2) Фиксированная за шару (Pay per share, PPS). Участник за каждую (не stale) шару получает 0.00028584821460503 BTC, вне зависимости от доли в подписании блока и т.п.
Не сложно подсчитать, что эта цена шары почти точно равная 50 BTC * 0.9 / Сложность. Т.е. в долговременном среднем участник будет получать 90% от своей доли в работе по генерации подписи. Доля владельца, таким образом — 10%.
Модель задаётся для каждого майнер-аккаунта участника, так что можно использовать обе модели сразу, если есть несколько CPU/GPU.
Свою долю можно получить сразу же, не дожидаясь подтверждения блока. Кроме того, доля не отбирается, даже если блок оказывается недействительным (недействительным блок окажется, если где-то будет сгенерирована более длинная цепочка блоков, не включающая этот).

2) mining.bitcoin.cz (также известный как slush's pool)

Второй пул по мощности. Совокупная вычислительная мощность — 312 Ghash/s. Сейчас этот пул генерирует около шестой части подписей блоков (хотя в апреле имел треть общей мощности).
Доля владельца пула — 2% (1 BTC на приз в 50 BTC). Долю от приза получают лишь те участники, кто отправлял шары для успешно подписанного блока. Соответственно, если блок был подписан не этим пулом, все шары, отправленные в этот пул на этот блок, оказываются бесполезными.
Доля приза считается по очкам (score based system), собственно автором системы учёта по очкам и является slush, владелец пула.
Выплата доли возможна только после подтверждения блока — после 120 блоков, подписанных после него (а это около 20 часов).

3) btcmine.com

Мощность — 146 Ghash/s
Регистрация открытая. Доля владельца — 2%. Долю от блока получают лишь те участники, кто отправлял шары для этого блока.
Доля приза считается по очкам. Выплата доли возможна только после подтверждения блока 120 блоками.

4) bitcoinpool.com

Мощность — 34.3 Ghash/s
Доля владельца — только добровольные налоги (процент от 50 BTC не берут). Долю от блока получают все участники, кто отправлял шары с момента подписания пулом предыдущего блока.
Доля приза считается пропорционально количеству шар. Выплата доли возможна только после подтверждения блока 120 блоками.

5) Eligius

Мощность — 31.8 Ghash/s
Пул без необходимости регистрации — просто указываете свой биткоин-адрес и туда переводят вашу долю, причём сразу же — прямо в сгенерированном блоке (с помощью Generated transaction).
Доля владельца — добровольные налоги в транзакциях плюс 0.00000001 BTC в секунду (около 0.0003%). Доля майнера — пропорционально количеству шар от предыдущего блока, созданного пулом. Если блок становится недействительным, количество найденных шар пересчитывается в следующий блок.
Интересно, что этот пул по всей видимости первым ввёл дополнительные правила на транзакции, которые пул включает в блоки — 0.00004096 BTC за 512 байт транзакции.

6) swepool.net

Мощность — 1.8 Ghash/s
Свежее пополнение в списке пулов, позиционируется как конкурент режиму PPS на deepbit.
Доля за майнинг — фиксированная за шару (Pay per share). Текущая стоимость шары 0.00029220039715181 BTC, т.е. комиссия составляет 8%. Кроме того обещается выплата стоимости совсем сразу, даже не дожидаясь генерации блока.

(мощности и правила пулов приведены на момент написания статьи)

Клиент-программы (майнеры)


1) Ufasoft's SSE2 CPU miner — bitcoin-miner

Использует CPU, оптимизирован под SSE. По словам автора, на один хеш требуется около 1000 тактов процессора.
У меня получается примерно 1100 тактов — на моём кваде Q9550 майнер выдаёт 12.5 Mhash/s, если дать ему все 4 ядра (запустив в 4 thread-а) и 9.5 Mhash/s, если в 3 ядра.
Процессор греется до 60 градусов при загрузке 4 ядер, что меня несколько напрягло (в простое температура около 40), но работать вполне можно. При загрузке 3 ядер — нагрев до 53 и можно даже HD-фильмы смотреть. Большую часть времени генерил шары именно так.
Для сравнения, официальный биткоин-клиент (bitcoin-0.3.20.2) майнит на скорости 4.9 Mash/s, если ему отдать все 4 ядра Q9550.

2) m0mchil's python miner — poclbm

Использует OpenCL. На CPU у меня он работать не захотел, а вот на видяшке 8600GT выдаёт 6.8 Mhash/s. Увы, майнер при этом грузит GPU-ядро на 95%-99% и видяшка греется до 75 градусов. Да и делать что-либо на компе при работающем майнере крайне тяжело — окна даже перетаскиваются рывками. Игра параметром -f ничего не дала.
Возможно, обладателям более мощных видеокарт удастся получить и результаты повыше и тормозов поменьше. Судя по вики, на ATI Radeon HD 5970 можно получить 802 Mhash/s.

Ещё есть майнеры, но я не пробовал:

3) jgarzik's CPU miner
4) Diablo's java GPU/CPU miner

Мои результаты


Первый раз я майнил в апреле (когда сложность была 82347) — около 26 часов. Намайнил 198 шар, из них 1 оказалась устаревшая. Вычислено было около 930 Ghash.
Первые 17 шар были сгенерированы на пуле btcmine (за 1 час 40 минут), за это я не получил ничего, т.к. отключился задолго до окончания генерации блока.
Остальные шары — на deepbit, 28 в режиме PPS и 153 — в пропорциональной. На этом я заработал целых 0.13430786 BTC.
Если бы я все генерировал в PPS, заработал бы только 0.09891044 BTC, а если все в пропорциональной, то 0.14083968 BTC.
Скорость генерации шар (1 шара на 4.7 Ghash) неплохо совпадает с теоретической (1 шара на 4.295 Ghash).
Если взять тогдашние курсы на биржах mtgox (1.04 USD/BTC) и ММВБ (28.19 RUB/USD), то мой доход составил 3 рубля 81 копейку.

Теперь посчитаем скорость получения дохода от майнинга
1) Каждый Mhash/s скорости майнинга даёт около 20 шар в сутки,
2) С учётом текущего приза за блок, налога пула, и апрельской сложности, доход на Mhash/s будет 0.0119 BTC
3) В пересчёте по курсам это будет 35 копеек в сутки
После этого нужно оценить, сколько энергии требуется на генерацию (очень сильно зависит от оборудования и режима его работы в течение суток) и сколько эта энергия будет стоить.
У меня получилось так:
4) 3.3 рубля в сутки дохода от майнинга (9.5 Mhash/s),
5) Расход процессора — 71.25 ватт (считаем только добавку за использование 3-х ядер, майню только когда компьютер и так работает — 3/4 от 95 ватт процессора), т.е. 1.17 кВтч за сутки,
6) Которые стоят 4.55 рубля (тариф 2.66 руб/кВтч).
То есть, мне нет было смысла генерировать монеты, т.к. затраты на электроэнергию больше. На чём я тогда и остановился.

Второй раз я запустил майнинг 15-го мая, когда стоимость BTC на бирже mtgox почти достигла 9 американских долларов.
С учётом текущей сложности доход упал до 0.059 BTC в сутки, но зато теперь это стоит 12.25 рублей (mtgox 7.4 USD/BTC, ММВБ 28.1 RUR/USD). Т.е. майнинг даёт 7.70 рубля в сутки или 32 копейки в час.

Выводы


В долговремённой перспективе нет разницы в каком режиме выгоднее участвовать в майнинге, пропорциональном или PPS, по очкам или по шарам, только за подписанный блок или за все блоки. Всё определяется «налогом» владельца пула (ну и читерством участников пула).
В краткосрочной же перспективе обидно бывает майнить несколько часов и ничего не получить. Собственно, нужна та самая равномерность, ради которой стоит майнить в пуле, а не в одиночку.
Сейчас мне больше всего нравится на deepbit.net в пропорциональном режиме.

P.S. Совокупная вычислительная мощность, затрачиваемая на генерацию, сейчас составляет около 2023 GHash/s, что примерно равно 25.7 TeraFLOP/s, т.е. уже в 4.5 раза превосходит совокупную мощность проекта BOINC.
Tags: bitcoinкриптовалютаплатёжные системыэлектронные деньгиp2p
Hubs: Cryptography
Total votes 59: ↑54 and ↓5 +49
Comments 242
Comments Comments 242