Содержание

Bitcoin in a nutshell — Mining / Хабр

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

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

Book

Table of content

  1. Explain me like I’m five
  2. Sky is the limit?
  3. Reward
  4. Hard challenge
  5. Technical side
  6. 2 Blocks 1 Chain
  7. Hardware
  8. Conclusion
  9. Links

Explain me like I’m five

Майнинг, также добыча (от англ. mining — добыча полезных ископаемых) — деятельность по поддержанию распределенной платформы и созданию новых блоков с возможностью получить вознаграждение в форме эмитированной валюты и комиссионных сборов в различных криптовалютах, в частности в Биткойн. Производимые вычисления требуются для обеспечения защиты от повторного расходования одних и тех же единиц валюты, а связь майнинга с эмиссией стимулирует людей расходовать свои вычислительные мощности и поддерживать работу сетей — Wikipedia

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

Вторая, и куда более важная цель, — обеспечение работы всей сети. Наверняка, читая предыдущие статьи, вы уже задавали себе вопросы «Кто тот человек, который проверяет скрипты транзакций?» или «Если в качестве входа я укажу уже использованный выход, в какой момент это заметят?».

Так вот, все эти действия выполняют в первую очередь майнеры. Ну, на самом деле каждый участник сети в той или иной степени обеспечивает ее безопасность. Синхронизировать Bitcoin так долго не потому что приходится качать 100 ГБ, а потому что надо проверить каждый байт, посчитать каждый хэш, запустить каждый скрипт и так далее.

Но если нарисовать весь процесс, начиная с нажатия кнопки «Send» в кошельке и заканчивая просмотром блока с вашей транзакцией где-нибудь на blockchain.info, то именно майнеры будут решать, окажется ваша транзакция в блоке или нет.

Sky is the limit?

Для начала давайте еще раз пройдемся по первому пункту и обсудим понятие денежной массы.

Одна из фундаментальных фишек, которой часто бравируют сторонники криптовалют — заложенная изначально дефляция. Это связано с тем, что еще на этапе проектировки системы, было указано суммарное ограничение в 21 миллион монет (примерно), и даже если очень сильно захотеть, поднять этот порог не получится. В отличие от рубля или доллара, которые по желанию казначейства могут быть напечатаны в любом количестве, что иногда приводит к печальным последствиям, как в Зимбабве.

BTW не все считают дефляцию таким уж однозначным плюсом.

Reward

Следующий хороший вопрос — откуда взялась цифра в 21 миллион?

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

Но вознаграждение не фиксировано, и более того, каждые 210.000 блоков (примерно раз в 4 года) оно уменьшается в два раза.

consensus.nSubsidyHalvingInterval = 210000;
// https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L73

Так, например, когда все начиналось в январе 2009, награда за блок составляла 50 BTC. Спустя 210.000 блоков, в ноябре 2012 она упала до 25 BTC, и совсем недавно, 9 июля 2016, снизилась до 12.5 BTC.

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

start_block_reward = 50
reward_interval = 210000

def max_money():
    # 50 BTC = 50 0000 0000 Satoshis
    current_reward = 50 * 10**8
    total = 0
    while current_reward > 0:
        total += reward_interval * current_reward
        current_reward /= 2
    return total

print "Total BTC to ever be created:", max_money(), "Satoshis"
# Total BTC to ever be created: 2099999997690000 Satoshis

На картинке ниже изображена кривая добычи, которая будет все более плавно подходить к отметке в 21 миллион BTC, достигнув пика примерно в 2140 году. В это время награда за блок станет 0 BTC.

Остается только гадать, что тогда произойдет с Bitcoin, но одно мы можем знать точно — совсем без денег майнеры не останутся. Как минимум у них еще есть transaction fee, другое дело, что эта самая комиссия может на порядок увеличиться.

Возьмем для наглядности какой-нибудь свежий блок, например #447119. Сумма комиссий со всех транзакций в блоке составляет примерно 0.78 BTC, при том что вознаграждение за него — 12.5 BTC. То есть если завтра reward исчезнет, то в нашем случае комиссия должна вырасти более чем в 16 раз, чтобы нивелировать это неприятное событие. Понятно, что никакими микроплатежами тут уже и не пахнет.

Mining for dummies

Давайте постараемся еще раз представить процесс майнинга на нашем, пока что примитивном уровне.

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

Понятно, что если все было бы так, как я сейчас описал, то блоки выходили бы по сто раз в секунду, валюты было бы столько, что за нее никто не дал бы и цента, и так далее.

Поэтому Сатоши был вынужден придумать алгоритм, со следующими свойствами:

  • Создание нового блока — вычислительно сложная задача. Нельзя вот так просто включить мощный ПК и за минуту намайнить сто блоков.
  • На вычисление нового блока у всей сети уходит 10 минут (в среднем). Если посмотреть на Litecoin, то там блоки выходят раз в 2-3 минуты, суть заключается именно в том, что среднее время заранее установлено.
  • Более того, это время не зависит от числа участников сети. Даже если однажды майнеров станет в сто раз больше, то алгоритм должен так изменить свои параметры, чтобы блок стало находить сложнее, и block time опустился обратно в окрестность десяти минут.
  • Помним, что сеть распределенная и одноранговая, а значит, она должна сама понимать, в какой момент и как нужно подкрутить эти параметры. Никаких управляющих нод, все полностью автономно.
  • Если решение задачи по созданию нового блока — это сложная задача, требующая времени и ресурсов, то проверка блока на «корректность» должна быть простой и практически мгновенной.

Proof-of-Work (PoW)

Скорее всего вы сейчас прибываете в полной прострации и не очень понимаете, как такое вообще возможно. Но Сатоши не растерялся и смог придумать решение для всех этих проблем — алгоритм получил название Proof-of-Work, вот так он выглядит (советую сначала прочитать Bitcoin in a nutshell — Blockchain):

Пусть вы — майнер. У вас есть 10 транзакций, которые вы хотите замайнить в блок. Вы проверяете эти транзакции на валидность, формируете из них блок, в поле nonce указываете 0 и считаете хэш блока. Потом меняете nonce на 1, снова считаете хэш. И так до бесконечности.

Ваша задача — найти такой nonce, при котором хэш блока (256 битное число) меньше заранее заданного числа N. Поиск такого хэша возможен только тупым перебором nonce, никаких красивых алгоритмов здесь нет. Поэтому чем быстрее вы хотите найти nonce, тем больше мощностей вам понадобится.

Число N — именно тот параметр (его еще называют target), который сеть настраивает в зависимости от суммарной мощности майнеров. Если завтра блоки начнут выходить, условно говоря, раз в три минуты, то N будет как-то уменьшено, времени на поиск nonce потребуется больше и block time снова вырастет до 10 минут. И наоборот.

Technical side

Самое время перейти от слов к делу и продемонстрировать, как работает Proof-of-Work и майнинг в целом. А по моему скромному мнению, нет ничего лучше, чем показать вообще весь процесс прямо в боевых условиях. Для этого мы сейчас с ходу напишем свою майнинг ноду и даже попробуем сделать новый блок раньше всех, хотя шансы на успех невелики.

Receive transactions

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

Я предлагаю пойти упрощенным путем. Открываем blockchain.info и выбираем несколько транзакций из списка «Последние транзакции». Они только-только попали в сеть и пока что не входят ни в один из блоков. Далее открываем другой block explorer — chainquery.com. Он умеет выдавать транзакции в сыром формате и по хэшам получаем транзакции в уже знакомом нам виде. Я ограничился двумя (раз, два):

txn_pool = []
txn_pool.append("0100000001440d795fa6267cbae00ae18e921a7b287eaa37d7f41b96ccbc61ef9a323a003d010000006a47304402204137ef9ca79bcd8a953c0def89578838bbe882fe7814d6a7144eaa25ed156f66022043a4ab91a7ee3bf58155d08e5f3f221a783f645daf9ac54fed519e18ca434aea012102965a03e05b2e2983c031b870c9f4afef1141bf30dc5bb993197ee4a52f1443e0feffffff0200a3e111000000001976a914f1cfa585d096ea3c759940d7bacd8c7259bbd4d488ac4e513208000000001976a9146701f2540186d4135eec14dad6cb25bf757fc43088accbd50600")
txn_pool.append("0100000001517063b3d932693635999b8daaed9ebf020c66c43abf504f3043850bca5a936d010000006a47304402207473cda71b68a414a53e01dc340615958d0d79dd67196c4193a0ebcf0d9f70530220387934e7317b60297f5c6e0ca4bf527faaad830aff45f1f5522e842595939e460121031d53a2c228aedcde79b6ccd2e8f5bcfb56e2046b4681c4ea2173e3c3d7ffc686ffffffff0220bcbe00000000001976a9148cc3704cbb6af566598fea13a3352b46f859581188acba2cfb09000000001976a914b59b9df3700adae0ea819738c89db3c2af4e47d188ac00000000")

Check

Следующим шагом нужно проверить полученные транзакции. Я этого делать не буду, просто перечислю основные пункты:

  • Верно соблюдены структура и синтаксис транзакции
  • Список входов / выходов не может быть пустым
  • Транзакции на входе должны существовать либо в UTXO pool, либо в пуле неподтвержденных транзакций
  • Сумма входов не меньше суммы выходов
  • Полный список можете найти здесь

Некоторые майнеры отвергают транзакции с нулевой или слишком маленькой комиссией, но это каждый решает сам.

Sort

На всякий случай поясню, что ничто не мешает вам включать транзакции в блок в каком угодно порядке, главное, чтобы они прошли все проверки. В моем случае транзакций всего две, поэтому сортировать их тем более нет никакого смысла. Но не стоит забывать, что размер блока ограничен 1 МБ, поэтому если у вас в пуле 10.000 транзакций, то будет разумно отсортировать их по комисии и записать в блок только самые «дорогие».

BTW Часто попадаются статьи / книги, в которых сказано, что перед майнингом нового блока, Bitcoin Core сортирует транзакции по специальному параметру priority, который считается как

Priority = Sum (Value of input * Input Age) / Transaction Size

Это было верно вплоть до версии 0.12.0, потом сортировку по priority отключили.

Get reward

Если вы посмотрите на структуру любого блока, то самой первой всегда идет так называемая coinbase транзакция — именно она отправляет вознаграждение на адрес майнера. В отличии от обычных транзакций, coinbase transaction не тратит в качестве входов выходы из UTXO pool. Вместо этого у нее указан только один вход, называемый coinbase, который «создает» монеты из ничего. Выход у такой транзакции тоже только один. Он отправляет на адрес майнера награду за блок плюс сумму комиссий со всех транзакций в блоке. В моем случае это 12.5 + 0.00018939 + 0.0001469 = 12.50033629.

Давайте подробнее рассмотрим структуру coinbase транзакции, а если конкретнее — ее вход. На всякий случай напомню, как выглядит вход у «обычной» транзакции:

Вот три отличия входа coinbase транзакции:

  • Вместо настоящего transaction hash указывается 32 нулевых байта
  • Вместо output index указывается 0xFFFFFFFF.
  • В поле unlocking script можно указать что угодно размером от 2 до 100 байт, поэтому это поле еще называют coinbase data. Например в genesis block там спрятана фраза "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks". Как правило, майнеры вставляют в coinbase data свое имя / имя майнинг пула / еще что-нибудь.

Часто в coinbase data вставляют так называемый extra nonce, подробнее здесь. Суть в том, что может не найтись нужного nonce, при котором хэш блока меньше target (на самом деле это будет происходить в большинстве случаев). Тогда остается что-нибудь менять в транзакции, чтобы получились другие хэши, например — UNIX timestamp. Но если вы читали Bitcoin in a nutshell — Blockchain, то знаете, что timestamp тоже сильно не изменишь, иначе другие ноды отвергнут ваш блок. Решение оказалось довольно простым: достаточно добавить какое-нибудь число в coinbase data и менять его, если для текущего header не нашлось нужного nonce.

Процесс создания новой транзакции подробно описан в главе Bitcoin in a nutshell — Protocol, поэтому здесь я просто приведу уже полученную coinbase transaction, весь код, как обычно, доступен на [Github]():

coinbase_txn = "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff8a47304402207e8495986ec27ed4556fee9dcd897ea028d4eb2023959c2299eb573e0771dee702201489e40115ccc45d4c23f1109cb56b513543517f3efc0031965ad94d94d3d2d901410497e922cac2c9065a0cac998c0735d9995ff42fb6641d29300e8c0071277eb5b4e770fcc086f322339bdefef4d5b51a23d88755969d28e965dacaaa5d0d2a0e09ffffffff01ddff814a000000001976a91478e10cf8e4bd38266d8fd4ed5c8b430d30a3cde888ac00000000"

Осталось только посчитать для этих трех транзакций merkle root. Для этого воспользуемся фрагментом кода из Bitcoin in a nutshell — Blockchain:

txn_pool.insert(0, coinbase_txn)
txn_hashes = map(getTxnHash, txn_pool)

print "Merkle root: ", merkle(txn_hashes)
# Merkle root:  4b9ff9ab901df82050f858accde99b9169067acafaeade25598ea5505fb53836

Target

Как я уже написал выше, весь майнинг сводится к тому, чтобы найти хэш блока меньше числа, называемого target. В структуре блока это число записывается в поле bits, например для блока #277,316, target равнялся 1903a30c.

$ bitcoin-cli getblock 0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4
{
    "hash" : "0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4",
    "confirmations" : 35561,
    "size" : 218629,
    "height" : 277316,
    "version" : 2,
    "merkleroot" : "c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e",
    "tx" : ["d5ada064c6417ca25c4308bd158c34b77e1c0eca2a73cda16c737e7424afba2f", 418 more transactions],
    "time" : 1388185914,
    "nonce" : 924591752,
    "bits" : "1903a30c", // Here it's
    "difficulty" : 1180923195.25802612,
    "chainwork" : "000000000000000000000000000000000000000000000934695e92aaf53afa1a",
    "previousblockhash" : "0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569",
    "nextblockhash" : "000000000000000010236c269dd6ed714dd5db39d36b33959079d78dfd431ba7"
}

В bits на самом деле записаны сразу два числа: первый байт 0x19 — экспонента, оставшиеся три байта 0x03a30c — мантисса. Для того, чтобы получить target из bits, нужно воспользоваться следующей формулой: target = mantissa * 2^(8 * exponent - 3)). В случае блока #277.316 получается:

>>> bits = 0x1903a30c
>>> exp = bits >> 24
>>> mant = bits & 0xffffff
>>> target_hexstr = '%064x' % (mant * (1 << (8 * (exp - 3))))
>>> target_hexstr
'0000000000000003a30c00000000000000000000000000000000000000000000'

Другой термин, отражающий сложность майнинга, — difficulty. Например для блока #449.584 он равнялся 392,963,262,344.37. Этот параметр представляет из себя отношение max_target / current_target, где max_target — максимально возможный target, а именно 0x00000000FFFF0000000000000000000000000000000000000000000000000000 (0x1d00ffff в формате bits). Именно bits как правило указывается во все block explorer.

BTW чем меньше target, тем больше difficulty и наоборот.

PoW

Теперь, когда вы разобрались со всеми нюансами, можно запускать майнер:

import hashlib
import struct
import sys

# ======= Header =======
ver = 2
prev_block = "000000000000000000e5fb3654e0ae9a2b7d7390e37ee0a7c818ca09fde435f0"
merkle_root = "6f3ef687979a1f4866cd8842dcbcebd2e47171e54d1cc76c540faecafe133c39"
bits = 0x10004379 # Not the actual bits, I don't have synced blockchain
timestamp = 0x58777e25
# Calculate current time with this code:
# hex(int(time.mktime(time.strptime('2017-01-12 13:01:25', '%Y-%m-%d %H:%M:%S'))) - time.timezone)

exp = bits >> 24
mant = bits & 0xffffff
target_hexstr = '%064x' % (mant * (1 << (8 * (exp - 3))))
# '0000000000000000000000000000000000437900000000000000000000000000'
target_str = target_hexstr.decode('hex')
# ======== Header =========

nonce = 0
while nonce < 0x100000000: # 2**32
    header = ( struct.pack("<L", ver) + prev_block.decode('hex')[::-1] +
          merkle_root.decode('hex')[::-1] + struct.pack("<LLL", timestamp, bits, nonce))
    hash = hashlib.sha256(hashlib.sha256(header).digest()).digest()

    sys.stdout.write("\rNonce: {}, hash: {}".format(nonce, hash[::-1].encode('hex')))
    sys.stdout.flush()

    if hash[::-1] < target_str:
        print 'Success!'
        break
    nonce += 1

Hash rate

Если вы дождались заветной строчки Success!, то у вас либо Intel Core i7, либо очень много свободного времени. Я понятия не имею, когда этот код закончит свою работу и найдет ли он nonce вообще, потому что текущая сложность просто чудовищно велика. Даже если предположить, что наша программа способна обсчитать 100.000 хэшей в секунду (а это не так), то она все равно в миллионы раз медленней любого настоящего майнера, поэтому на поиск nonce у нее может уйти несколько дней.

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

Будем считать, что хэшрейт составляет 2.000 PH/s = 2.000.000 TH/s = 2.000.000.000 GH/s = 2.000.000.000.000 MH/s = 2.000.000.000.000.000 KH/s. А наша программа даже 100 KH/s не может осилить, поэтому соревноваться со всей сетью нет никакого смысла.

2 Blocks 1 Chain

Fork

Давайте на минуту представим, что майнеры ищут блок #123456. И примерно в одно и то же время он был найден двумя независимыми майнерами, один из которых живет в Австралии, а другой в США. Каждый из них начинает раскидывать свою версию блока по сети, и в результате получается, что у одной половины мира один блокчейн, а у другой — другой.

Возможно ли такое и что произойдет в этом случае?

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

В этом случае те ноды, которые придерживаются «красной» версии, автоматически синхронизирует зеленую, потому что в мире Bitcoin работает правило: «истинна» самая длинная версия блокчейна. «Красная» версия блокчейна будет попросту забыта, вместе с наградами для тех, кто ее нашел.

Вы можете спросить: а что если форк пойдет дальше? То есть одновременно с «фиолетовым» блоком найдут еще один, который будет продолжать «красную» версию блокчейна?

Скорее всего, эту книгу будут читать не только люди с хорошим математическим образованием, поэтому дам самый общий ответ — такое безусловно возможно. Но вероятность даже первого форка довольно мала, второго — еще меньше и так далее. Чтобы вы понимали, самый длинный форк за всю историю Bitcoin составил всего 4 блока. Так что в какой-то момент одна из веток все таки вырвется вперед, и вся сеть перейдет на нее.

Если вам интересна эта проблема именно с ракурса теории вероятностей, то можете прочесть «What is the probability of forking in blockchain?» Еще этот вопрос неплохо расписан в знаменитой «Bitcoin: A Peer-to-Peer Electronic Cash System» by Satoshi Nakamoto.

51% attack

На том простом факте, что в блокчейне самая длинная цепочка — доминирующая, основана целая атака:

Представьте, что вы мошенник и покупаете товар на 1000 BTC в каком-нибудь магазине. Вы договариваетесь с продавцом и отправляете ему деньги. Продавец проверяет блокчейн, видит, что такая транзакция действительно была, прошла все проверки и даже попала в какой-нибудь блок, например #123. После этого продавец идет на почту и отправляет вам товар.

В это время вы включаете свою майнинг-ферму и начинаете майнить, начиная с блока #122. Если у вас достаточно мощностей, то вы можете обогнать всю остальную сеть и быстрее всех досчитать до блока #124, после чего весь мир перейдет на вашу версию блокчейна. При этом свою транзакцию на 1000 BTC, вы не будете включать ни в один из блоков, а значит она будет навсегда забыта, как будто ее никогда и не было. В результате продавец лишится товара и не получит своих денег.

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

Тем не менее некоторые майнинг пулы обладают очень значительными мощностями. Так например BTC Guild в 2013 году почти преодолел порог в 51% хэшрейта. В какой-то момент они замайнили сразу 6 блоков подряд, так что при желании смогли бы осуществить данную атаку. Поэтому рекомендуется считать транзакцию подтвержденной только после того, как было создано 6 блоков сверху.

Hardware

Можете сразу забыть про майнинг на CPU или GPU. Чтобы вы понимали, ниже изображен хэшрэйт на начало 2017 года. Будем считать, что он в среднем составляет 2.300.000 TH/S, то есть 2.300.000.000.000 MH/s. Для сравнения, самые зверские видеокарты, такие как ATI Radeon HD 5870 Eyefinity или AMD Radeon HD 7970 (x3), выдают в лучшем случае 2000 MH/S. Среди процессоров первое место занимает Xeon Phi 5100 со смешными 140 MH/s.

Так что даже исходя из курса в 1000 $/BTC и имея на руках 10.000 MH/s, вы в среднем будете зарабатывать 20 центов в месяц.

CPU майнинг перестал быть рентабельным еще в 2011 году, GPU держался примерно до 2013 года, но тоже прогорел, когда широкое распространение получили так называемые application-specific integrated circuit — ASIC. Это специальные чипы, заточенные под майнинг на уровне железа. Самые простые стоят в районе 100$, что сильно дешевле топовой видеокарты, но при этом способны выдавать от 1 TH/s.

То есть при прочих равных, имея два Antminer S9 по 3.000$ за штуку, вы будете зарабатывать почти 700 долларов в месяц (без учета счетов за электричество)

Но и на этом еще не все. Вы можете объединиться с другими майнерами в mining pool и начать майнить вместе, а заработанные деньги делить пропорционально вложенным мощностям. Это, очевидно, намного выгодней, чем пытаться заработать хоть что-нибудь в одиночку, поэтому именно пулы на сегодняшний день составляют главную движущую силу в мире майнинга. На начало 2017 года основными игроками на рынке пулов являются AntPool, F2Pool и Bitfury, обеспечивающие более 40% хэшрейта всей сети.

Conclusion

На этой высокой ноте я заканчиваю свой рассказ про техническое устройство Bitcoin. Исходники текста плюс примеры кода здесь, там же pdf версия. Pull requests welcome, задавайте свои вопросы в Issues или в комментариях.

Links

Майним Bitcoin с помощью бумаги и ручки / Хабр

В один прекрасный момент мне захотелось прикинуть, насколько быстро можно майнить биткойны вручную. Оказалось, что для майнинга используется хеширование SHA-256, а оно достаточно простое и может быть вычислено даже без компьютера. Само собой, процесс очень небыстрый и совершенно непрактичный. Но, пройдя все шаги на бумажке, можно хорошо разобраться в деталях работы алгоритма.

Один криптографический раунд

Майнинг

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

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


В биткойне критерием валидности хэша является достаточное число нулей в его начале. [1] Найти такой хэш так же сложно, как, к примеру, найти номер машины или телефона, заканчивающийся на несколько нулей. Но, конечно, для хэша это экспоненциально сложнее. На текущий момент, правильный хэш должен содержать примерно 17 стартовых нулей, чему удовлетворяет только 1 из 1.4×1020. Если провести аналогию, то найти такое значение сложнее, чем обнаружить конкретную частичку среди всего песка на Земле.

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

Структура биткойн-блока

SHA-256

Алгоритм работает с данными, разбитыми на куски по 512 бит (64 байт), криптографически их смешивает и выдаёт 256-битный (32 байта) хэш. SHA-256 состоит из относительно простого раунда, повторяющегося 64 раза. Снизу, как раз, и показан такой раунд, принимающий на вход 8 4-байтовых слов — от A до H.

Один раунд SHA-256 для восьми входных слов A-H. Схема нарисована kockmeyer, CC BY-SA 3.0.

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

Функция большинства (Ma блок) побитово работает со словами A, B и C. Для каждой битовой позиции она возвращает 0, если большинство входных битов в этой позиции — нули, иначе вернёт 1.

Блок Σ0 циклически сдвигает A на 2 бита, затем исходное слово A циклически сдвигается на 13 бит, и, аналогично, на 22 бита. Получившиеся три сдвинутые версии A побитово складываются по модулю 2 (обычный xor, (A ror 2) xor (A ror 13) xor (A ror 22)).

Ch реализует функцию выбора. На каждой битовой позиции проверяется бит из E, если он равен единице, то на выход идёт бит из F с этой позиции, иначе бит из G. Таким образом, биты из F и G перемешиваются, исходя из значения E.

Σ1 по структуре аналогичен Σ0, но работает со словом E, а соответствующие сдвиговые константы — 6, 11 и 25.


Красные блоки выполняют 32-битное сложение, формируя новые значения для выходных слов A и E. Значение Wt генерируется на основе входных данных (это происходит в том участке алгоритма, который получает и обрабатывает хэшируемые данные. Он вне нашего рассмотрения). Kt — своя константа для каждого раунда. [2]


На схеме сверху заметно, что только A и E меняются за один криптографический раунд. Остальные слова не меняются, но сдвигаются на выходе — старое A превращается в выходное B, старое B — в новое C, и так далее. Хотя отдельный раунд алгоритма не сильно изменяет данные, но после 64 раундов, входная информация будет полностью зашифрованной. [3]

Майним вручную

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



Немного поясню что происходит: я записал слова от A до H в шестнадцатеричной форме, и под каждым сделал перевод в двоичный вид. Результат выполнения блока Ma находится под словом C, а значения A после сдвигов и сам выход Σ0 располагаются над строкой с A. Функция выбора появляется под G, и, наконец, соответствующие сдвинутые версии E и значение после блока Σ1 идут над строкой с E. В нижнем правом углу произвёл сложение, результат которого участвует в вычислении и нового A, и нового E (первые три красных блока суммирования). Справа сверху я рассчитал новое значение A, а посерёдке располагается уже расчет нового значения E. Все эти шаги обсуждались выше и легко могут быть отслежены на схеме.


Кроме того раунда, что показан в видео, я провёл еще один — последний 64-ый хэшируюший раунд для конкретного биткойн-блока. На фотографии значение хэша выделено желтым. Количество нулей подтверждает, что это валидный биткойн-хэш. Заметьте, что нули располагаются в конце хэша, а не в начале, как я писал ранее. Причина заключается в том, что биткойн, просто-напросто, переворачивает байты полученные SHA-256. [4]

Последний раунд SHA-256, в результате которого виден успешно смайненный биткойн-блок

Что всё это значит для проектирования «железных» майнеров?

Каждый шаг в SHA-256 очень просто выглядит в цифровой логике — простые битовые операции и 32-битные суммирования (если вы когда-либо изучали схемотехнику, то, скорее всего, уже представили себе как это может выглядеть в железе). Поэтому ASIC-микросхемы реализуют SHA-256 очень эффективно, размещая параллельно сотни блоков исполнения SHA-256 раундов. Фотография ниже показывает микросхему для майнинга, которая может вычислять 2-3 миллиарда хэшей в секунду. На Zeptobars можно поглядеть больше фото.

Снимок кремниевого кристалла ASIC-микросхемы Bitfury, которая может майнить биткойны со скоростью в 2-3 гигахэшей в секунду. Картинка с Zeptobars. (CC BY 3.0)

В противоположность биткойну, Litecoin, Dogecoin и другие похожие альтернативные -coin системы используют алгоритм хэширования scrypt, в котором изначально заложена сложность реализации в железе. Этот алгоритм во время выполнения хранит в памяти 1024 разных значений хэша, а уже на выходе комбинирует их для получения конечного результата. Поэтому требуется куда больше памяти и схематики для вычисления scrypt-хэшей по сравнению с SHA-256-хэшами. Влияние изменения алгоритма хэширования наглядно видно при сравнении соответствующего аппаратного обеспечения для майнинга — версии под scrypt (Litecoin и прочие) в тысячи раз медленнее, чем версии под SHA-256 (биткойн).

Заключение

SHA-256 неожиданно оказался настолько простым, что может быть вычислен даже вручную (алгоритм на эллиптических кривых, который используется для подписи биткойн-транзакции, был бы куда более мучительным, так как содержит кучу перемножений 32-байтных чисел). Расчет одного раунда SHA-256 занял у меня 16 минут, 45 секунд. С такой производительностью хэширование всего биткойн-блока (128 раундов [3]) займёт 1,49 суток, то есть получаем скорость хэширования в 0,67 хэшей в день (на самом деле, конечно же, с практикой процесс бы ускорился). Для сравнения, текущее поколение биткойн-майнеров производит несколько терахэшей в секунду, что примерно в квинтиллион раз быстрее меня. Думаю, очевидно, что ручной майнинг биткойнов не очень практичен. [5]

Читатель с reddit’a спросил о моих затратах энергии. Так как я не прилагаю каких-то серьезных физических усилий, то можно предположить что скорость метаболизма будет 1500 килокалорий в день, тогда получаем, что ручное хэширование требует почти 10 мегаджоулей за хэш. Типичное потребление энергии для железного майнера — 1000 магехэшей за джоуль. Таким образом, я менее энергоэффективен чем специализированная железка в 10^16 раз (10 квадриллионов). Другой вопрос в стоимости энергии. Дешевым источником питания являются пончики по 23 цента за 200 килокалорий. Электроэнергия у меня стоит 15 центов за киловатт-час, что дешевле пончиков в 6.7 раз. В итоге, стоимость энергии в пересчете на хэш для меня, как человека-майнера, в 67 квадриллионов раз выше. Да-а-а, понятно, что я не ухвачу удачу за хвост ручным майнингом биткойнов, и это еще не учитывая стоимость бумаги и ручек!

Примечания и ссылки

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

2. Довольно занятно то, откуда пошли эти константы для SHA-256. Так как АНБ разрабатывало этот алгоритм и выбирало константы, то откуда нам знать, что они не подобрали специальные значения, чтобы быстрее ломать хэши? Дабы пресечь подобные спекуляции, начальные инициализирующие значения хэша взяты как квадратные корни из восьми первых простых чисел (первые 32 бита дробной части). А Kt получены из кубических корней первых 64 простых чисел. Как видите, константы сгенерированы с помощью простых формул, поэтому можно доверять тому, что АНБ не придумало ничего хитрого (по крайней мере, в отношении констант). ↑

3. К моему сожалению, SHA-256 работает с блоками из 512 бит, а заголовок биткойн-блока больше. Поэтому необходим второй проход из 64 раундов хэширования. Кроме того, в биткойне используется двойной SHA-256. Таким образом, хэширование одного блока требует 192 раунда. Тем не менее, мы можем сократить это число, потому что процесс майнинга заключается в повторном хэшировании одного и того же блока, с небольшими изменениями поля «nonce» во второй половине блока. И тут возникает оптимизация за счет того, что мы можем использовать результат вычисления первых 512 бит блока повторно. В итоге, нам требуется только 128 раундов хэширования. ↑

4. Само собой, я не настолько невероятно удачлив, что нашёл сразу валидный хэш. Я начал хэширование блока, уже ранее смайнененного. Конкретно того, который уже упоминался в статье — #286819. ↑

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

Process Mining: знакомство / Хабр

Приветствую, Хабрахабр!

В этой статье я постараюсь приоткрыть завесу над интересной технологией из области управления бизнес-процессами (BPM). Интеллектуальный анализ процессов (Process Mining) фокусируется на обнаружении, анализе и оптимизации бизнес-процессов на основе данных из журналов событий (англ. event logs), представляя недостающее звено между классическим анализом бизнес-процессов с использованием их моделей и интеллектуальным анализом данных (Data Mining).

Рисунок 1. Позиционирование Process Mining.

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

Позиционирование

Интеллектуальный анализ процессов использует данные для анализа бизнес-процессов, пренебрегая анализом самих данных. Другими словами, Process Mining, в отличие от Data Mining, не интересуется низкоуровневыми закономерностями в исходных данных и не пытается принимать решения на их основе, но ставит задачей оптимизацию бизнес-процессов (в особенности сквозных), вытекающих из исходных данных.

Вопросы, на которые отвечает Process Mining, можно разбить на две группы (см. стрелки влево и вправо на рисунке 1):

  • Вопросы производительности (эффективности) процессов.
  • Вопросы согласованности процессов.

Варианты использования

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







Вариант использования Вопросы Группа вопросов
1 Обнаружение реальных бизнес-процессов Как выглядит процесс, который на самом деле (а не на словах и не в теории) описывает текущую деятельность? Согласованность
2 Поиск узких мест (англ. bottlenecks) в бизнес-процессах Где в процессе расположены места, ограничивающие общую скорость его выполнения? Что вызывает появление подобных мест? Производительность
3 Выявление отклонений в бизнес-процессах Где реальный процесс отклоняется от ожидаемого (идеального) процесса? Почему происходят подобные отклонения? Согласованность
4 Поиск быстрых/коротких путей выполнения бизнес-процессов Как выполнить процесс быстрее всего? Как выполнить процесс за наименьшее количество шагов? Производительность
5 Прогнозирование проблем в бизнес-процессах Можно ли предсказать появление задержек/отклонений/рисков/… при выполнении процесса? Производительность / Согласованность

Исходные данные

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

Заручившись представленными выше предположениями, выделим основные атрибуты событий в журналах:

  • Идентификатор случая (case id): хранит случаи (объекты), для которых выстраиваются последовательности событий журнала.
  • Деятельность (activity name): хранит действия, выполняемые в рамках событий журнала.
  • Отметка времени (timestamp): хранит дату и время регистрации событий журнала.
  • Ресурс (resource): хранит основных действующих лиц событий журнала (тех, кто выполняет действия в рамках событий журнала).
  • Прочее (other data): сюда попадает вся оставшаяся в журнале (не интересная нам) информация.

Рисунок 2. Журнал событий — данные о приеме пациентов.

Конечно, выбор указанных выше атрибутов зависит от целей анализа. Например (смотрим на рисунок 2), если нас интересует процесс, описывающий порядок получения пациентами надлежащего лечения, то в качестве идентификаторов случаев используем пациентов (столбец patient), деятельностями называем получаемые пациентами процедуры (столбец activity), а ресурсами обозначаем выполняющих данные процедуры врачей (столбец doctor). Если же нам интересен другой процесс, описывающий порядок выполнения врачами процедур, то идентификаторами событий будут сами врачи (столбец doctor), деятельностями — выполняемые данными врачами процедуры (столбец activity), а ресурсами — внимание, также станут врачи (столбец doctor).

Типы Process Mining

Интеллектуальный анализ процессов фокусируется на отношениях между моделями бизнес-процессов и данными о событиях. Выделяют три типа подобных отношений, которые и определяют типы анализа.

Play-Out



Начинаем с готовой модели процесса. Далее симулируем различные сценарии выполнения процесса (согласно модели) для наполнения журнала событий данными о регистрируемых при симуляции событиях.

Рисунок 3. Пример Play-Out.

На рисунке 3 показан пример симуляции по готовой модели рабочего процесса (англ. workflow). Модель процесса выполнена с использованием упрощенной нотации BPMN. Красным показаны шаги на одном из возможных путей выполнения процесса, а журнал внизу наполнен данными о событиях в порядке их регистрации при прохождении данного пути.

Play-Out применяется для проверки разработанных моделей процессов на соответствие ожидаемым данным (последовательностям событий) от их выполнения.

Play-In



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

Рисунок 4. Пример Play-In.

На рисунке 4 показан пример получения модели процесса по готовым последовательностям событий (указаны красным). Если приглядеться, то можно заметить, что все последовательности событий на рисунке начинаются с шага a и заканчиваются шагом g или h. Результирующая модель процесса в точности соответствует подмеченным особенностям, что иллюстрирует основной принцип ее вывода из данных.

Play-In полезен при необходимости формального описания процессов, генерирующих известные данные.

Replay



Одновременно используем модель процесса (возможно, полученную при помощи Play-In) и данные в журнале событий (возможно, полученные при помощи Play-Out) для воспроизведения реальных последовательностей событий согласно модели.

Рисунок 5. Пример Replay.

На рисунке 5 представлен пример попытки воспроизведения имеющейся последовательности событий согласно готовой модели процесса. Попытка закончилась неудачей по причине того, что модель требует прохождения шага d прежде, чем будет открыт переход к шагу e (подробнее разобраться с причинами неудачи поможет изучение шлюзов (англ. gateways) нотации BPMN).

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

Дополнительно

Для тех, кто желает самостоятельно попробовать применить полученные знания на практике, спешу сообщить об инструменте, который позволит воплотить ваши смелые начинания в жизнь. ProM — это свободный фреймворк, включающий все необходимое для выполнения интеллектуального анализа процессов. Стабильная версия ProM доступна для скачивания под Windows и под другие ОС. Общая информация (включая примеры исходных данных, руководства и упражнения) расположена на сайте ProM Tools.

Заключение

Существующий разрыв между анализом моделей бизнес-процессов и данных затрудняет поиск решений множества интересных и сложных задач современного мира, где значение данных давно сравнивается со значением нефти (см. Data is the new oil). Process Mining призван ликвидировать данный разрыв, поднимая анализ бизнес-процессов на новый уровень.

Благодарю за внимание и категорически рекомендую продолжить изучение темы самостоятельно! Отличным началом станет вышеупомянутый онлайн курс Process Mining: Data Science in Action.

Как бороться с майнерами криптовалют в корпоративной сети

Проблема использования корпоративных ИТ-ресурсов для майнинга криптовалют проявляется все чаще (недавно их упоминала Транснефть). А на днях ФСБ нагрянула в аэропорт Внуково и задержала администратора, который на вычислительных мощностях авиационной гавани майнил криптовалюту. Сразу отвечу на часто звучащий вопрос: “А причем тут ФСБ?” Все очень просто. Внуково — это не только аэропорт для обычных пассажиров; из Внуково-2 летает Президент России и члены Правительства, что делает эту воздушную гавань критически важным объектом для национальной безопасности. И когда в ней происходят по непонятной причине скачки напряжения, которые могут повлечь за собой отключение отдельных систем управления воздушным транспортом, то за дело берется именно ФСБ. Но вернемся к майнингу. В последнее время мы получили несколько запросов от заказчиков с просьбой объяснить, как можно обнаружить факт использования майнеров в корпоративной или ведомственной сети? Учитывая растущее число таких вопросов, мы и решили написать эту заметку.

Начнем с того, что майнинг — это не типичная угроза информационной безопасности. Программное обеспечение для майнинга криптовалют напрямую не наносит ущерба вашим информационным активам. Кражи или модификации данных нет (обычно). Перехвата управления технологическими или производственными процессами тоже. Нарушения доступности? Вероятно тоже. Но есть тормозящий компьютер, нагрузка на электросеть (а за электричество платит компания), затраты на Интернет-трафик (может быть актуальной проблемой при лимитированном трафике) и садящаяся в ноль батарейка у ноутбука, что можно попробовать транслировать в финансовый ущерб для компании (хотя это и не просто). Самое неприятное, что кто-то за ваш счет может наживаться и получать баснословные барыши (достаточно посмотреть на курс криптовалют, чтобы нервно кусать локти и жалеть, что совесть не позволяет самому майнить на корпоративных ресурсах). Но… бывает и так, что майнинг сопровождает вредоносное программное обеспечение, что делает его уже более серьезной проблемой для специалистов по информационной безопасности. В любом случае, одна из задача ИБ (да и ИТ тоже) — знать, что происходит в ее хозяйстве и иметь инструментарий для контроля любой активности, легальной или не очень. Поэтому вопрос обнаружения и, зачастую, блокирования майнеров, становится все более актуальным.

Если почитать множество заметок в Интернет о том, как обнаружить майнера у себя на компьютере, то обычно все рекомендации сводятся к одной основной — обращать внимание на тормознутость своего ПК, что определяется по ощущениям или с помощью визуального анализа планировщика задач (Task manager в Windows или Activity monitor в MacOS), который отображает загрузку процессора для разных приложений и процессов. Однако эта рекомендация больше подходит для домашних пользователей, чем для корпоративных, не имеющих возможности отслеживать нагрузку процессора сотен и тысяч компьютеров. Поэтому попробуем взглянуть на проблему майнинга немного с иной стороны, а точнее с точки зрения так называемой цепочки kill chain, отображающей набор шагов, которые осуществляет нарушитель (свой пользователь, устанавливающий майнера к себе на ПК, тоже является таковым) в процессе запуска майнингового ПО у себя на узле. Если это свой пользователь, то обычно последовательность будет такой:

  • посещение сайтов для майнинга
  • скачивание ПО для майнинга
  • инсталляция ПО для майнинга
  • запуск ПО для майнинга
  • майнинг
  • взаимодействие с пулами майнеров для обмена информацией о полученных блоках и хешах
  • получение вознаграждения.

Несанкционированная установка майнера на компьютер ничего не подозревающего пользователя выглядит немного иначе на первых и последних стадиях kill chain:

  • поиск жертвы
  • подготовка плацдарма (внедрение майнингового скрипта на сайт, создание майнингового ПО, внедрение майнингового ПО в какое-либо свободное или условно бесплатное или пиратское ПО, внедрение майнинговой функциональности в вредоносное ПО)
  • “заражение” пользователя майнинговым ПО (через скрипт на сайте, путем скачивания его из Интернет, получением в виде вложения в почту или на флешке)
  • запуск майнера
  • майнинг
  • взаимодействие с пулами майнеров или с командным центром для передачи получаемой в результате вычислений информации.

Помимо обычной загрузки майнера или включения майнинговой функциональности, например, в торрент-клиента, возможны и различные многоходовые схемы. Например, на компьютер пользователя сначала попадает невредоносное ПО (и поэтому оно может не детектироваться ни антивирусом, ни средствами защиты), которое подгружает специальный установщик (downloader), который и скачивает из Интернет майнера и скрытно инсталлирует его на компьютере ничего не подозревающего пользователя. Обратите внимание, что вместо скачиваемого файла это может быть и скрипт на посещаемом вами сайте (очень популярным является скрипт Coin Hive).

Менее популярным, но также возможным способом является попадание майнера на компьютер через вложение в e-mail или ссылку в письме, а также через рекламный баннер или фальшивую кнопку на сайте, нажатие на которые приводит к загрузке майнера на компьютер. Хочется опять обратить ваше внимание, что сам по себе майнер не имеет вредоносных функций. Более того, пользователь мог сам, легально его себе установить. Именно по этой причине, в традиционных антивирусах этот тип ПО не блокируется по умолчанию, а всего лишь может обнаруживаться (если у антивируса есть соответствующий набор сигнатур).

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

Как же предлагает бороться с майнинговым ПО компания Сиско? Мы, следуя нашей классической стратегии “ДО — ВО ВРЕМЯ — ПОСЛЕ”, учитывающей жизненный цикл атаки или иной контролируемой активности, предлагаем разбить все мероприятия по контролю и защите на три части:

  • ДО — предотвращения взаимодействия с сайтами для майнинга или попадания майнеров в сеть по различным каналам
  • ВО ВРЕМЯ — обнаружение инсталляции и работы майнингового ПО
  • ПОСЛЕ — проведение ретроспективного анализа поведения файлов, попадающих внутрь корпоративной или ведомственной сети.

На первом этапе, помимо стандартных рекомендаций по защите оконечных устройств от вредоносного ПО, мы советуем настроить сетевое оборудование, межсетевые экраны или средства контроля доступа в Интернет на блокирование доступа к адресам сайтов по майнингу. Например, к coin-hive.com или minergate.com. Это можно сделать с помощью Cisco ISR, Cisco Firepower, Cisco Web Security Appliance, Cisco Umbrella, Cisco ASA и т.п. Я не дам готового списка таких доменов, так как сегодня пулов для майнинга существует уже свыше тысячи и учитывая возрастающую сложность вычислительных задач их будет становиться все больше и больше. Поэтому я бы рекомендовал регулярно отслеживать рейтинги пулов для майнинга, которые свободно можно найти в Интернете. Назову только несколько имен:

  • suprnova[.]cc,
  • nanopool[.]org,
  • zpool[.]ca,
  • coinmime[.]pl,
  • eth.pp[.]ua,
  • zcash.flypool[.]org,
  • dwarfpool[.]org,
  • p2pool[.]org,
  • bitclubnetwork[.]com,
  • miningrigrentals[.]com,
  • minergate[.]com,
  • nicecash[.]com,
  • hashing24[.]com,
  • hashcoin[.]io,
  • hashflare[.]io,
  • eobot[.]com,
  • antpool[.]com,
  • pool.btcchina[.]com,
  • bw[.]com,
  • mining.bitcoin[.]cz,
  • eligius[.]st,
  • ghash[.]io,
  • bitminter[.]com,
  • bitfury[.]org,
  • kncminer[.]com,
  • 21[.]co,
  • slushpool[.]com и т.п.

Отслеживать списки пулов можно на сайте btc[.]com и blockchain[.]info. Кстати, контроль доступа работников к последним двум доменам (можно реализовать через Firepower, Umbrella или Web Security Appliance с привязкой к учетным записям пользователей) позволит понять, кто из ваших пользователей интересуется тематикой майнинга и готов по своей воле попробовать свои силы в работе с криптовалютами, а это важная информация для усиления будущего контроля.

Блокирование доступа к описанным выше доменам позволить не только предотвратить загрузку ПО для майнинга (этап “ДО”), но и блокировать взаимодействие с пулами в случае, когда соответствующее ПО все-таки как-то попало на компьютер пользователя (через вложение в e-mail, через флешку, с помощью вредоносного ПО или функциональности в условно бесплатном ПО, в которой майнинг является незаметной “нагрузкой” или “ценой” за бесплатность) и пытается взаимодействовать с ними (этап “ВО ВРЕМЯ”).

К сожалению, надо признать, что исключить полное блокирование доступа к пулам для майнинга мы не можем — они появляются постоянно и отслеживать их бывает непросто (не забываем, что это не вредоносные ресурсы, контроль которых является первоочередной задачей для подразделения Cisco Talos). Кроме того, пользователь или вредоносное ПО могут использовать туннелирование (например, SSH) или иные методы коммуникаций (например, Tor) с соответствующими пулами. Поэтому мы должны уметь отслеживать работу майнеров в реальном времени (этап “ВО ВРЕМЯ”). Это можно сделать как с помощью вышеупомянутого отслеживания взаимодействия с соответствующими доменами, так и с помощью слежения за портами, которые использует ПО для майнинга для взаимодействия с пулами и командными центрами. К таким портам можно отнести:

  • 3333 (bitcoin)
  • 3336 (litecoin)
  • 8333 (bitcoin)
  • 8545 (Ethereum),
  • 9333 (litecoin)
  • 9999 (Dashcoin),
  • 10034 (ypool.net)
  • 22556 (Dogecoin),
  • 30301 (Ethereum),
  • 30303 (Ethereum),
  • 45550 (bytecoin),
  • 45560 (monero),
  • 45620 (DigitalNote),
  • 45570 (QuazarCoin),
  • 45610 (Fantomcoin),
  • 45640 (MonetaVerde),
  • 45690 (Aeoncoin),
  • 45720 (Dashcoin),
  • 45750 (Infinium-8).

Обратите внимание, что это полный и не финальный список. Во-первых, часто майнеры используют стандартные порты 8080 и 8081 и поэтому мониторинга только портов недостаточно — нужно применять технологии анализа сетевого трафика (Cisco Stealthwatch), технологии инспекции HTTP (в рамках Cisco Firepower, Cisco Cognitive Threat Analytics, Cisco AVC) или DNS (в рамках Cisco Umbrella). Во-вторых, эти порты могут быть изменены в программном обеспечении для майнинга. В-третьих, взаимодействие по этим портам может означать не только наличие майнеров у вас в сети. Например, тот же троянец Zotob использовал коммуникации на порту 3333, который, как мы видим выше, используется и майнерами биткойнов. Срабатывание Cisco Firepower, Cisco ASA, Cisco Stealthwatch, Cisco ISR на порты из данного списка скорее является некоторым сигналом, который нужно сопоставлять с другими индикаторами, например, со списком доменов, с которыми идет взаимодействие из внутренней сети предприятия.

Помимо контроля портов, в решении Cisco Firepower присутствует возможность обнаружения протоколов, используемых майнерами, например, популярными Bitcoin и Litecoin. Достаточно создать правило для контроля взаимодействия по данным протоколам и вы будете всегда знать, кто в вашей сети занимается майнингом (осознанно или даже не зная, что его компютер участвует в пуле для майнинга), независимо от того, с каким узлами и по каким портам идет взаимодействие. Аналогичная функция присутствует и в Cisco ISR с функцией AVC (Application Visibility and Control), позволяющей распознавать и классифицировать больше тысячи приложений, включая и майнинговые.

Система обнаружения вторжений Cisco NGIPS тоже обладает рядом сигнатур для обнаружения работы как легальных майнеров, так и вредоносного кода, задействующего функции майнинга. Например, сигнатуры с номером SID 1-40840, 1-40841, 1-40842, которые позволяет отслеживать использование протокола Stratum для майнинга биткойнов. А сигнатуры с SID 1-31273 или 1-20057 позволяют, к примеру, ловить взаимодействие с командными серверами вредоносного ПО (CoinMiner или Win.Trojan.Vestecoin), занимающегося незаконным майнингом на зараженном компьютере. В конце концов никто не мешает написать самим сигнатуры для поиска ПО для майнинга. Например, она может выглядеть так:

alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Possible Bitcoin/LiteCoin Mining"; flow:established; content:"|7B 22 70 61 72 61 6D 73 22 3A 20 5B 22|"; Depth:15; classtype:bad-unknown; reference:url,mining.bitcoin.cz/stratum-mining; sid:1000500; rev:1;)

или

alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"ET TROJAN W32/BitCoinMiner.MultiThreat Subscribe/Authorize Stratum Protocol Message"; flow:established,to_server; content:"{|22|id|22|"; depth:10; content:"|22|method|22 3A| |22|mining."; within:100; content:"|22|params|22|"; within:50; pcre:"/\x22mining\x2E(subscribe|authorize)\x22/"; classtype:trojan-activity; reference:url,talosintelligence.com/; reference:url,www.btcguild.com/new_protocol.php; reference:url,mining.bitcoin.cz/stratum-mining; sid:1000501; rev:1;)

Кстати, упомянутые выше примеры использования туннелирования или иных методов коммуникаций для майнеров сами по себе должны стать триггерами для специалиста по безопасности. “Данный узел использует зашифрованное соединение с внешним Интернет-узлом? Зачем? Это действительно нужно?” Факт скрытия коммуникаций уже сам по себе должен вызывать подозрения и приводить к расследованию.

Для обнаружения майнеров, работающих в виде скрипта, можно применить Cisco Cognitive Threat Analytics, Cisco Umbrella или Cisco Web Security Appliance, которые способны контролировать взаимодействие пользовательского компьютера с внешним миром. Cisco Umbrella это сделает даже если пользователь находится за пределами корпоративной/ведомственной сети и его не контролируют МСЭ, IPS и другие средства защиты периметра. В настройках Umbrella работа с упомянутыми выше доменами реализуется в категории Potentially Harmful Domains.

Кстати, когда я писал эту заметку, то обратил внимание, что есть злоумышленники, которые эксплуатируют интерес пользователей к «легкому» заработку. Например, с помощью Cisco Umbrella Investigate я обнаружил в сети домен, похожий на coin-hive, но являющийся явно вредоносным и попадание на который по ошибке может привести к заражению пользователя:

Отследить работу майнера можно не только на сетевом уровне, но и на уровне узла, защищенного с помощью AMP for Endpoints, хотя это и не так просто. Это ПО, особенно если оно попало на компьютер нелегально и пытается остаться незамеченным, может маскироваться под различным легальные процессы — svchost.exe, chrome.exe или даже steam.exe (для игроманов). Но в том и заключается задача AMP4E, чтобы подсказать, какие процессы являются подозрительными, а какие нет.

Кроме того, в его базе существуют индикатор W32.Cryptocurrencyminer, который позволяет отслеживать широкий спектр майнеров. В тех случаях, когда существуют подозрения относительно файла, возможно участвующего в майнинге, можно проверить его с помощью внешнего сервиса Virus Total, просто направив соответствующий хэш и оперативно получив вердикт о “статусе подозреваемого”. Кроме детектирования аномального поведения, AMP4E может быть настроен на обнаружение нового ПО, ранее не встречавшегося на компьютере пользователя. Это будет облегченный вариант “белого списка приложений” (application white listening, AWL) или “замкнутой программной среды”, механизма, позволяющего контролировать загружаемое и используемое на ПК программное обеспечение. AMP4E можно настроить на обнаружение и известного майнингового ПО, но это не самый эффективный способ, учитывая возможность легкой замены названий файлов.

Последней линией обороны является этап “ПОСЛЕ”, который позволяет нам обнаружить то, что каким-то образом все-таки смогло попасть в нашу сеть и на наши компьютеры и начало свою деятельность. Помимо обнаружения уже работающих майнеров способами, описанными выше, мы можем использовать песочницу Cisco AMP Threat Grid, которая позволяет анализировать все файлы, попадающие внутрь сети (через почту, через Web, через флешки, через файлшары, через FTP и т.д.), и анализируя их поведения по 700 с лишним поведенческих индикаторов детектировать вредоносную или аномальную активность. Помимо специализированных индикаторов cryptominer-detected, cryptominer-network-detected и cryptominer-pool-contacted, в AMP Threat Grid присутствует возможность распознавать майнеры и по другим признакам:

  • взаимодействие с внешними Интернет-ресурсами

  • оставленные на узле артефакты

  • срабатывание известных сигнатур в антивирусах.

Все это классно, конечно, скажете вы. Но можно ли нажать одну магическую кнопку в ваших решениях и забыть об этой проблеме раз и навсегда? Увы. Повторю то, что я уже писал выше. Майнинговое ПО не является вредоносным — оно может быть вполне разрешено в той или иной компании и поэтому оно никогда не вносится по умолчанию в черные списки или базы сигнатур вредоносных программ. Более того, это активно развивающийся рынок, который приводит к тому, что постоянно появляются новые криптовалюты, новые протоколы и новые программы для майнинга, новые порты и новые адреса пулов. Нельзя составить такой список один раз и навсегда. Это постоянная работа по ручному или автоматизированному отслеживанию такой информации, которая затем заносится в индикаторы компрометации и распространяется по средствам защиты. У компании Cisco этой задачей занимается подразделение Cisco Talos, которое мониторит все происходящее в Интернет, классифицирует его и заносит в наши озера данных, на базе которых и создаются/обновляются сигнатуры атак, декодеры протоколы, репутационные базы, правила инспекции и иные индикаторы компрометации, которые на регулярной основе попадают в наши средства защиты, упомянутые в этом материалы — Cisco Firepower, Cisco Umbrella, Cisco Stealthwatch, Cisco Web Security Appliance, Cisco AMP for Endpoints, Cisco Cognitive Threat Analytics, Cisco AMP Threat Grid и другие.

И, конечно, в заключении надо сказать, что никто не отменяет базовых рекомендаций по борьбе с майнерами (легальными и являющимися частью вредоносного или условно бесплатного ПО)- настройте браузер для блокирования скриптов на неизвестных сайтах, установите нужные плагины (например, NoScript для Firefox, minerBlock или No Coin для Chrome), включите блокировщик рекламы (например, AdBlock), контролируйте доступ в серверные и иные помещения, в которых можно незаметно установить устройства для майнинга, которые будут пользоваться вашим электропитанием.

Как получить 25+ Mhash/s бесплатно без смс / Хабр

Добрый день, дорогой %username%!
Наверняка Вы уже слышали о Биткоинах. Возможно, Вам уже удалось ими попользоваться! Великолепно. Как насчет того, чтобы, не напрягаясь, начать майнить криптовалюту на 25 (50, 75, 100,…, 25n) Мегахешах в секунду? Как, у Вас уже есть суперкомпьютер для генерации блоков? Как насчет того, чтобы добавить 25n Мегахешей к Вашей вычислительной мощности прямо сейчас?

Есть отличный сервис Windows Azure от Microsoft. Вкратце, нам дают возможность пользоваться удаленной виртуальной машиной с 20 ядрами для различных серверных решений, вычислений, etc. Но для нас, любителей бесплатного, конечно, важен бесплатный триал на 3 месяца. Естественно, есть определенные ограничения для бесплатной версии, но нас они особо не затронут. Что нам нужно сделать (и что я пошагово опишу в этой статье) это:

  1. Создать 3 виртуальные машины (8 + 8 + 4 ядер)
  2. Подключиться к виртуальным машинам при помощи виртуального рабочего стола
  3. Зарегистрироваться на публичном пуле (в статье я буду использовать Slush’s Pool в качестве примера)
  4. Установить и настроить нужный для майнинга софт
  5. Запустить этот софт
  6. Ждать
  7. Получать биткоины

Всех заинтересовавшихся прошу под кат.

Update: добавил описание как майнить Litecoin на Windows Azure. Получается гораздо эффективнее майнинга Bitcoin.

0. Вступление

Стоит сделать пару уточнений:

  1. На Azure нет GPU, так что майнить будем исключительно при помощи CPU (поэтому мощность такая низкая, хотя и используем 20 ядер)
  2. Я не уверен в том, получится ли майнить на протяжении 3х месяцев: возможно есть ограничения по вычислительной мощности

1. Начнем!

Заходим на Windows Azure, жмем на «Бесплатное пробное использование», регистрируем триал-версию. Понадобятся данные кредитной карты для идентификации личности. Обещают денег не снимать без разрешения. У меня не сняли ничего, даже за простую идентификацию За идентификацию снимают 1$. Спасибо RankoR!
Так же нужна учетка Microsoft. Если ее нет, придется регистрироваться и тут.

Далее заходим в Менеджер Azure, в раздел «Виртуальные Машины».

Жмем на «Создать» внизу экрана.

Заполняем данные:

  • DNS-имя: нужно будет для подключения к удаленному рабочему столу
  • Образ: я выбираю обычно Windows Server 2012, но, возможно, машины на Linux будут быстрее
  • Размер: для первых двух машин выберите по 8 ядер, для третьей — 4 ядра (так как ограничение до 20 ядер на бесплатную учетку)
  • Пароль: нужен будет для подключения к удаленному рабочему столу. Я не нашел где после создания виртуальной машины можно будет его еще раз подглядеть, будьте осторожны!
  • Расположение: на Ваш вкус

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

2. Подключаемся к удаленным рабочим столам

Устанавливаем Remote Desktop Control от Microsoft. Есть версии для Windows, Mac. Про версию для Linux ничего не знаю, но ведь если у Вас установлен Linux, то Вы сможете сами найти способ подключиться к RDC, так? 😉
Выбираем желаемую виртуальную машину в списке и жмем на «Подключиться». Скачается файл формата *.rdp — с его помощью мы будем подключаться к удаленному рабочему столу.

Открываем скаченный файл для одной виртуальной машины. У меня их уже три, так как я скачал файлы для всех трех виртуальных машин.

В поле «Password» вводим пароль, который использовали при создании виртуальной машины. Поле «Domain» можно оставить пустым. Можно сохранить пароль.

Нужно будет немножко подождать, пока запустится служба RDC. Если у Вас черный экран — просто нужно немного подождать. Возможно, RDC ругнется на безопасность соединения. Можно проигнорировать.

А вот и запустился наш сервер на Windows Azure!

IE работает с тучей ограничений, Chrome у меня не вышло установить, так что сразу поставил огнелиса. В панели управления сразу советую отрубить фаервол и контроль над учетной записью (чтобы постоянно не выпрыгивали окошки «подвердить»).

3. Регистрируемся в публичном пуле

Заходим на mining.bitcoin.cz и регистрируемся. Заходим в «My account» и создаем два дополнительных воркера для двух дополнительных виртуальных машин (помните, у нас ведь 8 + 8 + 4?).

4. Ставим софт!

Качаем RPCMiner отсюда (официальный тред). Создаем новую папку «New Folder». Все содержимое (не саму папку) скачаного архива нужно переместить в «New Folder» так, чтобы «rpcminer-cpu.exe» был в папке «New Folder».

Открываем блокнот и прописываем в нем:

start /b /d "C:\Users\Administrator\Desktop\New folder" rpcminer-cpu.exe -url=http://api.bitcoin.cz:8332 -user=%username% -password=%pass%

Где %username% — это юзернейм одного из Ваших воркеров на публичном пуле, а %password% — это соответствующий этому воркеру пароль. Можно добавить свои аргументы для RPSMiner’a, я не стал сильно заморачиваться. Все 8 ядер процессора используются по умолчанию.
Сохраняем текстовый документ как «miner.bat» на рабочем столе. Должно получиться как на скриншоте ниже.

Установить софт нужно на все используемые виртуальные машины.

5. Начнем процесс!

Запускаем «miner.bat». Должно появиться окно консоли. Спустя некоторое время, если Вы все сделали правильно, Вы увидите нечто подобное скриншоту ниже. Кстати, один из моих воркеров как раз нашел хеш.

На сайте нашего публичного пула в разделе«My account» располагается некоторая статистика, а также можно указать порог, достигнув который, средства будут переводиться на Ваш биткоин кошелек.

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

6. Заключение

Хочу поблагодарить Microsoft за такой великолепный сервис, как Azure и за возможность бесплатного использования.
Еще раз напомню, что используем мы CPU, который в сравнение не идет с мощностями майнинга на GPU. Но за неимением большего, как говорится.
Про то, как использовать больше 20 ядер, говорить не буду (вдруг это незаконно).

Пара интересных фактов из жизни:

  • На многих сайтах можно создавать не одну учетную запись (хотя это и против правил, но технически не запрещено)
  • Банковские карты есть у разных членов семьи
  • Банки дают возможность выпускать приличное количество виртуальных карт, которые можно использовать и сразу удалить

Но я, если честно, вообще не вижу связи между этими случайными фактами.

Всем спасибо за внимание! Если найдете какие-нибудь неточности или ошибки в статье, милости прошу ко мне в личку.

Update:

Хабраюзер psykrab предложил майнить Litecoin, так как CPU выгоднее использовать как раз для этой криптовалюты. Инструкция по замене Bitcoin майнера на Litecoin майнер на наших Azure серверах под спойлером.

Жми меня!

1. Регистрируемся на публичном пуле

Заходим на пул Suprnova, жмем кнопочку «Register» наверху. Внимание, запишите или запомните PIN! Он Вам понадобится.
После регистрации логинимся слева («Dashboard») и переходим в My Workers. Как и в случае с Bitcoin, нам нужно добавить еще 2 воркера.

2. Ставим и настраиваем софт

Качаем майнер — Pool’s Miner (ссылки для Linux, Mac можно взять тут)
Распаковываем его на рабочий стол в папку «Litecoin» так, чтобы файл «minerd.exe» был в папке «Litecoin».

Открываем блокнот и прописываем в нем следующую строку:

start /b /d "C:\Users\Administrator\Desktop\Litecoin" minerd.exe -a scrypt -o http://de1.suprnova.cc:8336 -O %username%:%pass%

Где %username% — это юзернейм одного из Ваших воркеров на публичном пуле, а %password% — это соответствующий этому воркеру пароль. Можно добавить свои аргументы. Все 8 ядер процессора используются по умолчанию.
Сохраняем текстовый документ как «Lite Miner.bat» на рабочем столе. Должно получиться как на скриншоте ниже.

3. Небольшие настройки в пуле и запуск!

Заходим на Супрнову, логинимся (если еще не залогинены), заходим в «My Account -> Account Details». Вводим в поле «Automatic Payout Threshold» порог, при котором средства будут автоматически перекидываться на кошелек, а в поле «Payment Address» вводим свой кошелек. Кошелек должен быть кошельком Litecoin (Bitcoin не подойдет!), так что нужно скачать клиент для Litecoin.

Запускаем на серверах «Lite Miner.bat». Занимаемся повседневными делами. Если все сделали правильно — Лайткоины капают.

5 видеокарт для майнинга 2020, расчет окупаемости и характеристики карт — обзор

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

Биткоин или эфир, что лучше майнить?

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

Это тем более актуально сейчас, поскольку майнинг Bitcoin (BTC) приносит половину дохода после того, как в мае произошло сокращение вознаграждения вдвое. Сложность майнинга продолжает расти, и в сентябре она обновилась до рекордного уровня в 19,31 триллиона на блоке 649152.

В результате многие популярные устройства, такие как Antminer S9, устарели. После сокращения вдвое самыми прибыльными майнерами стали Whatsminer M30S ++ от китайской компании MicroBT, который может обеспечивать хешрейт до 112 терахешей в секунду и приносить прибыль чуть более $8,50 в день, а также Antminer S19 Pro от Bitmain, который может достигать хешрейта 110 TH / s и получать ежедневную прибыль чуть менее $8,50.

Но цены на это оборудование довольно крутая: A Whatsminer M30S ++ стоит $1800, а Antminer S19 Pro поставляется по цене $2407.

Что касается эфира и его форков, майнинг на видеокартах снова становится популярным по нескольким причинам. Во-первых, за последние два года хешрейт Ethereum снизился на 15% (по сравнению с августом 2018 года) и теперь составляет 256,221 TH / s. Это означает, что теперь добывать эфир стало проще.

Во-вторых, для майнинга все еще можно использовать как современные, так и старые модели карт. Например, Nvidia 1050 Ti, выпущенная в октябре 2016 года, и Radeon RX 580, выпущенная в апреле 2017 года, по-прежнему очень популярны.

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

Есть еще один фактор, который привлекает интерес майнеров: предстоящий переход на Ethereum 2.0 и алгоритм Proof-of-Stake, который, как ожидается, начнется до конца года.

Представитель WhatToMine, популярного веб-калькулятора для оценки прибыльности майнинга криптовалют, сказал изданию Cointelegraph, что спрос на эфир будет по-прежнему востребован не только в этом году, но и в 2021 году:

«В этом цикле мы можем ожидать дальнейшего расширения проектов DeFi, что, в свою очередь, сделает сеть ETH все более популярной. В результате вознаграждение за блок для ETH (часть комиссии) должно циклически увеличиваться с общим восходящим трендом, что сделает майнинг ETH наиболее прибыльным для майнеров на GPU».

Какую видеокарту выбрать

После тестирования видеокарт двух крупнейших производителей, Nvidia и AMD, видеокарты Nvidia показали лучшие возможности. Однако, учитывая тот факт, что майнинг Ether получил вторую жизнь, карты AMD не следует списывать со счетов, поскольку поколения Vega и RX компании по-прежнему очень подходят для алгоритмов Ethash.

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

Для стандартной установки требуется шесть видеокарт, и в результате майнер может потратить более $9000, купив популярную Nvidia RTX 2080 Ti с 8 или 11 ГБ оперативной памяти. Но что делать тем, кто не может позволить себе верхнюю планку, но все же хочет получать прибыль?

Вот самые популярные на данный момент видеокарты для добычи эфира, которые стоят менее $400.

1) Nvidia GTX 1660 Super

Эта карта была выпущена в октябре 2019 года, а это значит, что технология еще свежа. Видеокарта имеет 6 ГБ памяти и архитектуру Тьюринга, которая работает с большей тактовой частотой, потребляет меньше энергии и имеет на 20% лучшую производительность, чем GTX 1660. Цена этой модели колеблется от $240 до $250.

2) AMD Radeon RX 5700 и RX 5700 XT

Летом 2019 года AMD представила на рынке новую линейку видеокарт серии RX 5700. В этих картах используется технология полевого транзистора FinFET, которая обеспечивает лучшую энергоэффективность при майнинге благодаря уменьшенному размеру электронных компонентов и меньшему потреблению тока.

Технические характеристики RX 5700 включают 8 ГБ памяти GDDR6 и энергопотребление 180 Вт. RX 5700 XT имеет потребляемую мощность 225 Вт, но базовая частота также на 10% выше, чем в модели RX — 5700. Эти карты немного дороже — около $430, но их можно купить со скидкой, цена будет в районе $400 долларов.

3) Nvidia RTX 2060 Супер

Карта RTX 2060 Super может быть не очевидным выбором, поскольку помимо 8 ГБ памяти она ничем не отличается от RTX 2060. Но в то же время она использует пять разных алгоритмов — GrinCuckarooD29, GrinCuckatoo31, DaggerHashimoto, X16Rv2 и BeamV2 — что делает его более стабильным, безопасным и подходящим для майнинга.

Фактически, это промежуточный вариант между RTX 2060 и RTX 2070, но его можно найти в Интернете всего за $399, в то время как RTX 2070 будет стоить вам около $530, а разница в $130 — серьезные деньги в этом бизнесе.

4) AMD Radeon RX 580

AMD RX 580 был выпущен еще в 2017 году и до сих пор остается одним из лучших низкобюджетных графических процессоров для майнинга с ценой от $180 до $230. Карта используется в основном для майнинга эфира и имеет 8 ГБ памяти, но потребляет мало энергии — всего 150 Вт.

Единственным потенциальным конкурентом может быть RX 570, но карта с 4 ГБ памяти больше не сможет этого сделать. добыть эфир в 2021 году.

5) Nvidia P106-100

У Nvidia есть специальная серия видеокарт для майнинга криптовалют — Mining edition «Горная версия» Nvidia P106-100 основана на графическом процессоре Nvidia GP106 (Geforce GTX 1060), который почти такой же, как и обычный Geforce GTX 1060, но с некоторыми небольшими изменениями. У P106-100 нет видеовыходов и задней панели, а карта оснащена 6 ГБ памяти.

Mining edition в названии не означает, что новый продукт лучше в майнинге, чем обычная версия, а скорее, что он разработан специально для майнеров, поскольку все, что считалось несущественным, было удалено, что позволяет продавать его примерно за $320 на $170 дешевле, чем у GTX 1060.

Какая окупаемость видеокарт

Сколько времени потребуется, чтобы эти бюджетные карты окупили начальную цену? Для сравнения, одна из самых популярных карт для майнинга сегодня, Nvidia RTX 2080 Ti, приносит около $1,66 в день при майнинге эфира. При покупке этой видеокарты по средней цене около $1400 на окупаемость потребуется около 28 месяцев, без учета стоимости электроэнергии.

Итак, вот что говорят расчеты:

Nvidia GTX 1660 Super, которую можно купить за $240 долларов, принесет $0,65 в день и окупится за 12 месяцев.

AMD Radeon RX 5700 XT стоит $400, срок окупаемости — 8,5 месяцев, при этом принося $1,56 в день.

Nvidia RTX 2060 Super можно купить за $399 и будет приносить $0,92 в день при майнинге эфира. Эта карта окупится через 14 месяцев.

Radeon RX 580 — очень популярная карта из-за ее довольно низкой цены — около $200, и эта карта окупится всего за 7 месяцев, принося почти доллар — $0,96 в день.

Созданная специально для майнинга, Nvidia P106-100 будет приносить $0,85 в день, а при стоимости $320 долларов окупится чуть более чем за 12 месяцев.

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

Какие новые видеокарты на горизонте

Учитывая ажиотаж вокруг децентрализованных финансов, на горизонте снова вырисовывается крипто-бум, и грядущие новые продукты могут продвинуть его дальше. В сентябре Nvidia выпустила новое поколение видеокарт GeForce RTX 3000, и некоторые профи уже говорили, что они могут производить 81–89 MH / s во время добычи эфира.

Ожидается, что модель высшего класса, GeForce RTX 3090, продемонстрирует 120–122 Mh / s. Если это так, то Nvidia может столкнуться с нехваткой карт, так как майнеры будут покупать все, оставив геймеров ни с чем.

Но AMD не отстает и в конце октября представит линейку Radeon RDNA 2, которая будет напрямую конкурировать с серией 3000 от Nvidia. Появление новых карт будет представлять большой интерес для сообщества криптовалютных майнеров. Андрей Шкраба, руководитель отдела маркетинга NiceHash — платформы для майнинга и торговли криптовалютами — уверен, что технологические инновации AMD и Nvidia повысят производительность:

«Nvidia только что выпустила серию 3000, но на данный момент доступность очень низкая. Новые карты RTX обеспечат более высокие хешрейты, и майнеры будут обновлять свои старые карты 1060 и старые AMD (480/580). Нам все еще нужно дождаться объявления AMD, чтобы увидеть, что они принесут на рынок».

Сложность майнинга биткоина обновила исторический максимум :: РБК.Крипто

Показатель увеличился до рекордной отметки на фоне роста объема вычислительных мощностей в сети первой криптовалюты

Сложность майнинга биткоина в результате очередного перерасчета обновила исторический максимум на уровне в 19,31 T. Предыдущий рекорд был установлен 24 августа 2020 года на отметке в 17,56 T, по данным пула BTC.com. Такой рост связан с увеличением объемов вычислительных мощностей в сети первой криптовалюты.

По информации блокчейн-обозревателя Blockchain.com, средний хешрейт главной цифровой монеты за последнюю неделю продолжает расти. В моменте он достигал нового максимума в 153 EH/s. Это привело к высокой скорости добавления блоков в блокчейн в последние две недели. Новый блок в среднем добавлялся в каждые 8 минут 59 секунд при целевом значении в 10 минут. Из-за этого механизм подстройки увеличил сложность сети, чтобы компенсировать отклонения от нормы.

На данный момент биткоин стоит $10 954. За прошедшие сутки его курс не изменился, за неделю он увеличился на 4%. Доля главной цифровой монеты на рынке составляет 57,7% при общей капитализации криптовалют в $351 млрд.

— Майнинг биткоина в 2020 году: можно ли сейчас на нем заработать

— Австралиец избежал тюрьмы за майнинг криптовалюты на суперкомпьютерах

— «Биткоин готов к росту». Курс криптовалюты превысил $11 000

Больше новостей о криптовалютах вы найдете в нашем телеграм-канале РБК-Крипто.

Биткойн в двух словах — Майнинг / Хабр

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

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

Книга

Содержание

  1. Объясните мне, как будто мне пять
  2. Небо это предел?
  3. Награда
  4. Трудный вызов
  5. Техническая сторона
  6. 2 блока 1 цепь
  7. Оборудование
  8. Заключение
  9. Ссылки

Объясните, что мне пять

Майнинг , а также добыча (от англ. майнинг — добыча полезных ископаемых) — деятельность по поддержанию распределенной системы и создание новых блоков с помощью получения вознаграждения в форме эмитированной валюты и комиссионных сборов в различных криптовалютах, в частности в Биткойн. Производимые вычисления требуются для обеспечения защиты от повторного расходования одних и тех же единиц валюты, а майнинга с эмиссией стимулирует людей расходовать свои вычислительные мощности и поддерживать работу сетей — Wikipedia

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

Вторая, и куда более важная цель, — обеспечение работы всей сети. Наверняка, читая предыдущие статьи, вы уже задавали себе вопросы «Кто тот человек, который проверяет скрипты транзакций?» или «Если в качестве входа я укажу уже использованный выход, в какой момент это заметят?» .

Так вот, все эти действия выполняют в первую очередь майнеры. Ну, на самом деле каждый участник сети в той или иной степени обеспечивает ее безопасность. Синхронизировать биткойн так долго не потому, что приходится качать 100 ГБ, а потому что надо проверить каждый байт, посчитать каждый хэш, запустить каждый скрипт и так далее.

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

Небо это предел?

Для начала давайте еще раз пройдемся по первому пункту и обсудим понятие денежной массы.

Одна из фундаментальных фишек, которую часто бравируют сторонники криптовалют — заложенная изначально дефляция. Было установлено ограничение на 21 миллион монет (примерно), и даже если очень сильно захотеть, поднять этот порог не получится.По желанию казначейства могут быть напечатаны в любом количестве, что иногда приводит к печальным последствиям, как в Зимбабве.

BTW не все считают дефляцию таким уж однозначным плюсом.

Reward

Следующий хороший вопрос — откуда взялась цифра в 21 миллион?

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

Но вознаграждение не фиксировано, и более, каждые 210.000 блоков (примерно раз в 4 года) оно уменьшается в два раза.

  консенсус.nSubsidyHalvingInterval = 210000;
// https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L73  

Так, например, когда все начиналось в январе 2009 года, награда за блок составляла 50 BTC. Спустя 210.000 блоков, в ноябре 2012 года она упала до 25 BTC, и совсем недавно, 9 июля 2016 года, снизилась до 12.5 BTC.

Несложно посчитать точное число Сатоши, которые произведены на свет, если предположить, что Биткойн не заглохнет в ближайшие 200 лет:

  start_block_reward = 50
reward_interval = 210000

def max_money ():
    # 50 BTC = 50 0000 0000 сатоши
    current_reward = 50 * 10 ** 8
    всего = 0
    пока current_reward> 0:
        итого + = интервал_ вознаграждения * текущее_ вознаграждение
        current_reward / = 2
    общая сумма возврата

print «Всего BTC, которое будет создано:», max_money (), «Satoshis»
# Общее количество BTC, которое когда-либо будет создано: 20999999976

Satoshis

На картинке ниже изображена кривая добыча, которая будет все более плавно подходить к отметке в 21 миллион BTC, достигнув пика примерно в 2140 году.В это время награда за блок станет 0 BTC.

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

Возьмем для наглядности какой-нибудь свежий блок, например # 447119. Сумма комиссий со всех транзакций в блоке составляет примерно 0,78 BTC, при том что вознаграждение за него — 12.5 BTC. То есть если завтра reward исчезнет, ​​то в нашем случае комиссия должна вырасти более чем в 16 раз, чтобы нивелировать это неприятное событие. Понятно, что никакими микроплатежами тут уже и не пахнет.

Майнинг для чайников

Давайте постараемся еще раз представить процесс майнинга на нашем, пока что примитивном уровне.

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

Понятно, что если все было бы так, как я сейчас описал, то блоки выходили бы по сто раз в секунду, валюту было бы столько, что за нее никто не дал бы и цента, и так далее.

Поэтому Сатоши был вынужден придумать алгоритм, со свойствами:

  • Создание нового блока — вычислительно сложная задача. Нельзя вот так просто включить мощный ПК и за минуту намайнить сто блоков.
  • На вычисление нового блока у всей сети уходит 10 минут (в среднем). Если посмотреть на Litecoin, то там блоки выходят раз в 2-3 минуты, что среднее время заранее установлено.
  • Более того, это время не зависит от числа участников сети. Даже если однажды майнеров станет в сто раз больше, то алгоритм должен так изменить свои параметры, чтобы блок стало сложнее, и время блока изменилось в переменных десяти минут.
  • Помним, что сеть распределенная и одноранговая, а значит, она должна сама понимать, в какой момент и как нужно подкрутить эти параметры. Никаких управляющих нод, все полностью автономно.
  • Если решение по созданию нового блока — это сложная задача, требующая времени и ресурсов, то проверка блока на «корректность» должна быть простой и практически мгновенной.

Proof-of-Work (PoW)

Скорее всего вы сейчас прибываете в полную прострации и не очень понимаете, как такое вообще возможно.Но Сатоши не растерялся и смог придумать решение для всех этих проблем — алгоритм получил название Proof-of-Work , вот так он выглядит (советую сначала прочитать Биткойн в двух словах — Blockchain):

Пусть вы — майнер. У вас есть 10 транзакций, которые вы хотите замайнить в блоке. Вы проверяете эти транзакции на валидность, формируете из них блок, в поле nonce указываете 0 и считаете хэш блока. Потом меняете nonce на 1, снова считаю хэш.И так до бесконечности.

Ваша задача — найти такой nonce , при котором хэш блока (256 битное число) меньше заранее заданного числа N. Поиск такого хэша возможен только тупым перебором nonce, никаких красивых алгоритмов здесь нет. Поэтому чем быстрее вы хотите найти nonce , тем больше мощностей вам понадобится.

Число N — именно тот параметр (его еще называют target ), который сеть настраивает в зависимости от суммарной мощности майнеров. Если завтра блоки начнут выходить, условно говоря, будет как-то уменьшено, времени на поиск nonce потребуется больше и время блока снова вырастет до 10 минут.И наоборот.

Техническая сторона

Самое время перейти от слов к делу и выполнить, как работает Proof-of-Work и майнинг в целом. А по моему скромному мнению, нет ничего лучше, чем показать вообще весь процесс прямо в боевых условиях. Для этого мы сейчас с ходу напишем свою майнинг ноду и даже попробуем сделать новый блок раньше всех, хотя шансы на успех невелики.

Получение транзакций

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

Я предлагаю воспользоваться упрощенным путем. Открываем blockchain.info и выбираем несколько транзакций из списка «Последние транзакции» . Они только-только попали в сеть и пока что не входят ни в один из блоков. Далее открываем другой блок-проводник — chainquery.com. Он умеет выдавать транзакции в сыром формате и по хэшам транзакции получает в уже знакомом нам виде.Я ограничился двумя (раз, два):

  txn_pool = []
txn_pool.append ( "0100000001440d795fa6267cbae00ae18e921a7b287eaa37d7f41b96ccbc61ef9a323a003d010000006a47304402204137ef9ca79bcd8a953c0def89578838bbe882fe7814d6a7144eaa25ed156f66022043a4ab91a7ee3bf58155d08e5f3f221a783f645daf9ac54fed519e18ca434aea012102965a03e05b2e2983c031b870c9f4afef1141bf30dc5bb993197ee4a52f1443e0feffffff0200a3e111000000001976a914f1cfa585d096ea3c759940d7bacd8c7259bbd4d488ac4e513208000000001976a9146701f2540186d4135eec14dad6cb25bf757fc43088accbd50600")
txn_pool.Append ( "0100000001517063b3d932693635999b8daaed9ebf020c66c43abf504f3043850bca5a936d010000006a47304402207473cda71b68a414a53e01dc340615958d0d79dd67196c4193a0ebcf0d9f70530220387934e7317b60297f5c6e0ca4bf527faaad830aff45f1f5522e842595939e460121031d53a2c228aedcde79b6ccd2e8f5bcfb56e2046b4681c4ea2173e3c3d7ffc686ffffffff0220bcbe00000000001976a9148cc3704cbb6af566598fea13a3352b46f859581188acba2cfb0

00001976a914b59b9df3700adae0ea819738c89db3c2af4e47d188ac00000000")

Проверка Следующий шаг нужно проверить полученные транзакции.Я этого делать не буду, просто перечислю основные области:

  • Верно соблюдены структура и синтаксис транзакции
  • Список входов / выходов не может быть пустым
  • Транзакции на входе должны существовать либо в пуле UTXO, либо в пуле подтвержденных транзакций
  • Сумма входов не меньше суммы выходов
  • Полный список можно найти здесь

Некоторые майнеры игнорируют транзакции с нулевой или слишком маленькой комиссией, но это каждый решает сам.

Порядок

На всякий случай поясню, что ничто не мешает вам транзакции в блоке в каком угодно порядке, главное, чтобы они прошли все проверки. В моем случае транзакций всего две, поэтому сортировать их тем более нет никакого смысла. Но не стоит забывать, что размер блока ограничен 1 МБ, поэтому если у вас в пуле 10.000 транзакций, то будет разумно отсортировать их по комисии и записать в блок только самые «дорогие».

BTW Часто попадаются статьи / книги, в которых говорится, что перед майнингом нового блока, Bitcoin Core сортирует транзакции по специальному параметру priority , который считается

  Priority = Sum (Value of input * Input Age) / Размер транзакции  

Это было вплоть до версии 0.12.0, потом сортировка по priority отключили.

Получить вознаграждение

Если вы посмотрите на любой блок, то самую первую всегда идет так называемая coinbase транзакция — именно она отправляет вознаграждение на адрес майнера. В качестве отличия от обычных транзакций, coinbase transaction не тратит в входы выходы из UTXO pool . Вместо этого у нее указан только один вход, называемый coinbase , который «создает» монеты из ничего.Выход у такой транзакции тоже только один. Он отправляет на адрес майнера награду за блок плюс сумму комиссий всех транзакций в блоке. В моем случае это 12,5 + 0,00018939 + 0,0001469 = 12,50033629 .

Давайте подробнее рассмотрим состояние coinbase транзакции, а если конкретнее — ее вход. На всякий случай напомню, как вход в «обычную» транзакцию:

Вот три отличия входа coinbase транзакции:

  • Вместо настоящего хеш транзакции указывается 32 нулевых байта
  • Вместо выходной индекс указывается 0xFFFFFFFF .
  • В поле скрипт разблокировки можно указать что угодно размером от 2 до 100 байт, поэтому это поле еще называют , данные монеты . Например, в Genesis Block там спрятана фраза "The Times 03 / Jan / 2009 Канцлер на грани второй помощи банкам" . Как правило, майнеры вставляют в данные coinbase свое имя / имя майнинг пула / еще что-нибудь.

Часто в coinbase data вставляют так называемый extra nonce , подробнее здесь.Суть в том, что может не найти нужного nonce , при хэш блока меньше target (на самом деле это будет происходить в большинстве случаев). Тогда остается что-нибудь менять в транзакции, чтобы получились другие хэши, например — Временная метка UNIX . Но если вы читали Биткойн в двух словах — Blockchain, то знаете, что timestamp тоже сильно не изменишь, иначе другие ноды отвергнут ваш блок. Решение оказалось довольно простым: достаточно добавить какое-нибудь число в coinbase data и изменить его, если для текущего header не нашлось нужного nonce .

Процесс создания новой транзакции подробно описан в главе Bitcoin в двух словах — протокол, поэтому здесь я просто приведу уже полученную coinbase транзакции , весь код, как обычно, доступен на [Github] ():

  coinbase_txn = «01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff8a47304402207e8495986ec27ed4556fee9dcd897ea028d4eb2023959c2299eb573e0771dee702201489e40115ccc45d4c23f1109cb56b513543517f3efc0031965ad94d94d3d2d
0497e922cac2c9065a0cac998c0735d9995ff42fb6641d29300e8c0071277eb5b4e770fcc086f322339bdefef4d5b51a23d88755969d28e965dacaaa5d0d2a0e09ffffffff01ddff814a000000001976a91478e10cf8e4bd38266d8fd4ed5c8b430d30a3cde888ac00000000 "

Осталось только посчитать для этих транзакций корень Меркла .Для этого воспользуемся фрагментом кода Биткойна в двух словах — Блокчейн:

  txn_pool.insert (0, coinbase_txn)
txn_hashes = карта (getTxnHash, txn_pool)

выведите "Merkle root:", merkle (txn_hashes)
# Merkle root: 4b9ff9ab901df82050f858accde99b9169067acafaeade25598ea5505fb53836  

Target

Как я уже написал выше, весь майнинг сводится к тому, чтобы найти хэш блока меньше числа, называемого target . В структуре блока это число записывается в поле бит , например для блока # 277,316, target равнялся 1903a30c .

  $ bitcoin-cli getblock 0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4
{
    "хеш": "0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4",
    «подтверждения»: 35561,
    «размер»: 218629,
    «высота»: 277316,
    «версия»: 2,
    "merkleroot": "c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e",
    «tx»: [«d5ada064c6417ca25c4308bd158c34b77e1c0eca2a73cda16c737e7424afba2f», еще 418 транзакций],
    «время»: 1388185914,
    "nonce": 924591752,
    "биты": "1903a30c", // Вот это
    «сложность»: 1180923195.25802612, г.
    "цепочка": "000000000000000000000000000000000000000000000934695e92aaf53afa1a",
    "previousblockhash": "0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569",
    "nextblockhash": "000000000000000010236c269dd6ed714dd5db39d36b33959079d78dfd431ba7"
}  

В битах на самом деле записаны сразу два числа: первый байт 0x19 — экспонента, оставшиеся три байта 0x03a30c — мантисса. Для того, чтобы получить target из битов, нужно воспользоваться следующей формулой: target = mantissa * 2 ^ (8 * exponent - 3)) .В случае блока # 277.316 получается:

  >>> bits = 0x1903a30c
>>> exp = биты >> 24
>>> mant = биты & 0xffffff
>>> target_hexstr = '% 064x'% (mant * (1 << (8 * (exp - 3))))
>>> target_hexstr
'0000000000000003a30c00000000000000000000000000000000000000000000'  

Другой термин, отражающий сложность майнинга, — сложность . Например для блока # 449.584 он равнялся 392 963 262 344,37 .Этот параметр представляет из себя отношение max_target / current_target , где max_target — максимально возможный целевой объект, а именно 0x00000000FFFF000000000000000000000000000000000000000000000000 ( 0x1d00ffff в формате бит). Именно биты как указывается во все обозреватель блоков.

BTW чем меньше цель, тем больше сложность и наоборот.

PoW

Теперь, когда вы разобрались со всеми нюансами, можно запустить майнер:

  import hashlib
структура импорта
import sys

# ======= Заголовок =======
ver = 2
prev_block = "000000000000000000e5fb3654e0ae9a2b7d7390e37ee0a7c818ca09fde435f0"
merkle_root = "6f3ef687979a1f4866cd8842dcbcebd2e47171e54d1cc76c540faecafe133c39"
bits = 0x10004379 # Не настоящие биты, у меня нет синхронизированной цепочки блоков
отметка времени = 0x58777e25
# Рассчитайте текущее время с помощью этого кода:
# шестнадцатеричный (int (время.mktime (time.strptime ('2017-01-12 13:01:25', '% Y-% m-% d% H:% M:% S'))) - time.timezone)

exp = бит >> 24
mant = биты & 0xffffff
target_hexstr = '% 064x'% (mant * (1 << (8 * (exp - 3))))
# '0000000000000000000000000000000000437

0000000000000000000000' target_str = target_hexstr.decode ('шестнадцатеричный') # ======== Заголовок ========= nonce = 0 а одноразовый номер <0x100000000: # 2 ** 32 header = (struct.pack ("

Скорость хеширования

Если вы дождались заветной строчки Success! , то есть у вас либо Intel Core i7, либо очень много свободного времени. Я понятия не имею, когда этот код закончит свою работу и найдет ли он nonce вообще, потому что текущая сложность просто чудовищно велика.Даже если предположить, что наша программа способна обсчитать 100 000 хэшей в секунду (а это не так), то она все равно в миллионы разного настоящего майнера, поэтому на поиск nonce у нее может уйти несколько дней.

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

Будем считать, что хэшрейт составляет 2.000 PH / s = 2.000.000 TH / s = 2.000.000.000 GH / s = 2.000.000.000.000 MH / s = 2.000.000.000.000.000 KH / s. А наша программа даже 100 KH / s не может осилить, поэтому соревноваться со всей сетью нет никакого смысла.

2 блока 1 цепочка

Вилка

Давайте на минуту представим, что майнеры ищут блок # 123456. И примерно в одно и то же время он был найден двумя независимыми майнерами, один из которых живет в Австралии, а другой в США. Каждый из них начинает раскидывать свою версию блока по сети, и в результате получается, что у одной половины мира один блокчейн, а у другой - другой.

Возможно ли такое и что произойдет в этом случае?

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

В этом случае те ноды, которые придерживаются "красной" версии, автоматически синхронизирует зеленую, потому что в мире Биткойн работает правило: "истинна" самая длинная версия блокчейна ."Красная" версия блокчейна будет попросту забыта, вместе с наградами для тех, кто ее нашел.

Вы можете спросить: а что если форк пойдет дальше? То есть одновременно с "фиолетовым" блоком найдут еще один, который будет продолжать "красную" версию блокчейна?

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

Если вам интересна эта проблема именно с ракурса теории вероятностей, то можете прочесть «Какова вероятность разветвления в блокчейне?» Еще этот вопрос неплохо расписан в знаменитой "Биткойн: одноранговая электронная денежная система" Сатоши Накамото.

51% атака

На том простом факте, что в блокчейне самая длинная цепочка - доминирующая, основанная целая атака:

Представьте, что вы мошенник и товар на 1000 BTC в каком-нибудь магазине.Вы договариваетесь с продавцом и отправляете ему деньги. Продавец проверяет блокчейн, видит, что такая транзакция действительно была, прошла все проверки и даже попала в какой-нибудь блок, например # 123. После этого продавец идет на почту и отправляет вам товар.

В это время вы включаете свою майнинг-ферму и начинаете майнить, начиная с блока # 122 . Если у вас достаточно мощностей, то вы можете обогнать всю остальную сеть и быстрее всех досчитать до блока # 124, после чего весь мир перейдет на вашу версию блокчейна.При этой транзакции на 1000 BTC вы не будете заниматься одним из блоков, а значит, она будет навсегда забыта, как ее никогда и не было. В результате продавец лишится товара и не получит своих денег.

Не буду вдаваться в теорию вероятностей, но осуществить такую ​​атаку невозможно, если только у вас нет как минимум хэшрейта всей сети. Подробнее можете прочитать в bitcoin.pdf.

Тем не менее некоторые майнинг пулы обладают очень значительными мощностями.Так например BTC Guild в 2013 году почти преодолел порог в 51% хэшрейта. В какой-то момент они замайнили сразу 6 блоков, так что при желании удалось бы осуществить атаку. Поэтому рекомендуется считать подтвержденной только после того, как было создано 6 блоков сверху.

Оборудование

Можете сразу забыть про майнинг на CPU или GPU. Чтобы вы понимали, ниже изображен хэшрэйт на начало 2017 года. Будем считать, что он в среднем составляет 2.300.000 TH / S, то есть 2.300.000.000.000 MH / s. Для сравнения, самые зверские видеокарты, такие как ATI Radeon HD 5870 Eyefinity или AMD Radeon HD 7970 (x3), выдают в лучшем случае 2000 MH / S. Среди процессоров первое место занимает Xeon Phi 5100 со смешными 140 MH / s.

Так что даже исходя из курса в 1000 $ / BTC и имея в руках 10.000 MH / s, вы в среднем зарабатываете 20 центов в месяц.

CPU майнинг перестал быть рентабельным еще в 2011 году, GPU держался примерно до 2013 года, но тоже прогорел, когда широкое распространение получили так называемые прикладные интегральные схемы - ASIC.Это специальные чипы, заточенные под майнинг на уровне железа. Самые простые стоят в районе 100 $, что сильно дешевле топовой видеокарты, но при этом способны выдавать от 1 TH / s.

То есть при прочих равных, имея два Antminer S9 по 3.000 $ за штуку, вы будете зарабатывать почти 700 в месяц (без учета счетов за электричество)

Но и на этом еще не все. Вы можете объединиться с другими майнерами в пул добычи и начать майнить вместе, а заработанные деньги делить объединенными вложенными мощностями.Это, очевидно, намного выгодней, чем пытаться заработать хоть что-нибудь в одиночку, поэтому именно пулы на сегодняшний день составляют главную движущую силу в мире майнинга. На начало 2017 года используются AntPool, F2Pool и Bitfury, обеспечивающие более 40% хэшрейта всей сети.

Заключение

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

Ссылки

.

Майним Биткойн с помощью бумаги и ручки / Хабр

В один прекрасный момент мне захотелось прикинуть, насколько можно майнить биткойны быстро вручную. Оказалось, что для майнинга используется хеширование SHA-256, а оно достаточно простое и может быть вычислено даже без компьютера. Само собой, процесс очень небыстрый и совершенно непрактичный. Но, пройдя все шаги на бумажке, можно хорошо разобраться в деталях работы алгоритма.

Один криптографический раунд

Майнинг

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

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

В биткой не критерием валидности хэша является достаточное число нулей в его начале.[1] Найти такой хэш так же сложно, как, к примеру, найти номер машины или телефона, заканчивающийся на несколько нулей. Но, конечно, для хэша это экспоненциально сложнее. На текущий момент правильный хэш должен содержать примерно 17 стартовых нулей, которым удовлетворяет только 1 из 1.4x10 20 . Если провести аналогию, то найти такое более сложное, чем построенную конкретную частичку среди всего песка на Земле.

На схеме показан типичный блок в цепочке и его хэш. Желтым выделены байты, которые участвуют в процессе хэширования.В данном примере хэш валиден и имеет достаточное число нулей в своём начале. Однако это нечастый случай, и обычно майнеру приходится перебирать значение поля nonce или других доступных изменений данных.

Структура биткойн-блока

SHA-256

Алгоритм работает с данными, разбитыми на куски по 512 бит (64 байт), криптографически их смешивает и выдаёт 256-битный (32 байта) хэш. SHA-256 состоит из относительно простого раунда, повторяющегося 64 раза.Внизу, как раз, и показан такой раунд, принимающий вход 8 4-байтовых слов - от A до H.

Один раунд SHA-256 для восьми входных слов A-H. Схема нарисована kockmeyer, CC BY-SA 3.0.

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

Функция большинства (Ma блок) побитово работает со словами A, B и C. Для каждой битовой позиции она возвращает 0, если большинство входных битов в этой позиции - нули, иначе вернёт 1.

Блок Σ0 циклически сдвигает A на 2 бита , затем исходное слово A циклически сдвигается на 13 бит, и, аналогично, на 22 бита. Получившиеся три сдвинутые версии Побитово складываются по модулю 2 ( обычный xor, (A ror 2) xor (A ror 13) xor (A ror 22) ).

Ч реализует функцию выбора.На каждой битовой позиции проверяется бит из E, если он равен единице, то на выход идёт бит из F с этой позиции, иначе бит из G. Таким образом, биты из F и G перемешиваются, исходя из значений E.

Σ1 по структуре аналогично Σ0, но работает со словом E, соответствующие сдвиговые константы - 6, 11 и 25.

Красные блоки 32-битное сложное сложение, формирует новые значения для выходных слов A и E. t генерируется значение на основе входных данных (это происходит в том участке алгоритма, который получает и обрабатывает хэшированные данные.Он вне нашего рассмотрения). K t - своя константа для каждого раунда. [2]

На схеме сверху заметно, что только A и E меняются за один криптографический раунд. Остальные слова не меняются, но сдвигаются на выходе - старое A превращается в выходное B, старое B - в новое C и так далее. Хотя отдельный раунд алгоритма не сильно изменяет данные, но после 64 раундов, входная информация будет полностью зашифрованной. [3]

Майним вручную

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


Немного поясню что происходит: я записал слово от A до H в шестнадцатеричной форме, и под каждый сделал перевод в двоичный вид. Результат выполнения блока Ma находится под словом C, а значения A после сдвигов и сам выход Σ0 располагаются над строкой с A. Функция выбора появляется под G, и, наконец, соответствующие сдвинутые версии E и значение после блока Σ1 идут над строкой с E.В нижнем правом углу произвёл сложение, результат которого участвует в вычислении и нового A, и нового E (первые три красных блока суммирования). Справа сверху я рассчитал новое значение A, а посерёдке уже расчет нового значения E. Все эти шаги обсуждаются выше и легко могут быть отслежены на схеме.

Кроме того раунда, что показал в видео, я провёл еще один - последний 64-ый хэшируюший раунд для конкретного биткойн-блока. На фотографии значение хэша выделено желтым.Количество нулей подтверждает, что это валидный биткойн-хэш. Заметьте, что нули располагаются в конце хэша, а не в начале, как я писал ранее. Причина заключается в том, что биткойн, просто-напросто, переворачивает байты полученный SHA-256. [4]

Последний раунд SHA-256, в результате которого виден успешно смайненный биткойн-блок

Что всё это значит для проектирования «железных» майнеров?

Каждый шаг в SHA-256 очень просто в цифровом логике - простые битовые операции и 32-битные суммирования (если вы когда-либо изучали схемотехнику, то, скорее всего, уже представили себе, как это может выглядеть в железе).Поэтому ASIC-микросхемы реализуют SHA-256 очень эффективно, размещая последовательность блоков исполнения SHA-256 раундов. Фотография ниже показывает микросхему для майнинга, которая может вычислять 2-3 миллиарда хэшей в секунду. На Zeptobars можно поглядеть больше фото.

Снимок кремниевого кристалла ASIC-микросхемы Bitfury, которая может майнить биткойны со скоростью в 2-3 гигахэшей в секунду. Картинка с Zeptobars. (CC BY 3.0)

В противоположность биткойну, Litecoin, Dogecoin и другие похожие альтернативные -coin системы используют алгоритм хэширования scrypt, в котором изначально заложена сложность реализации в железе.Этот алгоритм во время выполнения хранит в памяти 1024 разных значения хэша, а уже на выходе комбинирует их для получения конечного результата. Поэтому требуется куда больше памяти и схематики для вычислений scrypt-хэшей по сравнению с SHA-256-хэшами. Влияние алгоритма хэширования наглядно видно при сравнении соответствующего аппаратного обеспечения для майнинга - версии под scrypt (Litecoin и прочие) в тысячи раз медленнее, чем версия под SHA-256 (биткойн).

Заключение

SHA-256 неожиданно оказался эффективным, так как содержит кучу перемножений 32-байтных чисел, который может быть вычислен даже вручную (алгоритм на эллиптических кривых, используемый для подписи биткойн-транзакции, который используется для более мучительного вычисления).Расчет одного раунда SHA-256 занял у меня 16 минут, 45 секунд. С такой производительностью хэширование всего биткойн-блока (128 раундов [3]) займёт 1,49 суток, чтобы получить скорость хэширования в 0,67 хэшей в день (на самом деле, конечно же, с практикой процесс бы ускорился). Для сравнения, текущее поколение биткойн-майнеров производит несколько терахэшей в секунду, что примерно в квинтиллион раз быстрее меня. Думаю, очевидно, что ручной майнинг биткойнов не очень практичен. [5]

Читатель с reddit'a спросил о моих затратах энергии.16 раз (10 квадриллионов). Другой вопрос в стоимости энергии. Дешевым устройством питания являются пончики по 23 цента за 200 килокалорий. Электроэнергия у меня стоит 15 центов за киловатт-час, что дешевле пончиков в 6.7 раз. В итоге стоимость энергии в пересчете на хэш для меня, как человека-майнера, в 67 квадриллионов раз выше. Да-а-а, понятно, что я не ухвачу удачу за хвост ручным майнингом биткойнов, и это еще не учитывая стоимость бумаги и ручек!

Примечания и ссылки

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

2. Довольно занятно то, откуда пошли эти константы для SHA-256. Так как АНБ разрабатывало этот алгоритм и выбирало константы, то откуда нам знать, что они не подобрали специальные значения, чтобы быстрее ломать хэши? Дабы пресечь спекуляции, начальные инициализирующие значения хэша взяты как квадратные корни из восьми первых простых чисел (первые 32 бита дробной части).А K t получены из кубических корней первых 64 простых чисел. Как видите, константы сгенерированы с помощью простых формул, поэтому можно доверять тому, что АНБ не придумало ничего хитрого (по крайней мере, в констант). ↑

3. К моему сожалению, SHA-256 работает с блоками из 512 бит, а заголовок биткойн-блока больше. Поэтому необходим второй проход из 64 раундов хэширования. Кроме того, в биткойне используется двойной SHA-256. Таким образом, хэширование одного блока требует 192 раунда.Тем не менее, мы сокращаем это число, потому что процесс майнинга заключается в повторном хэшировании одного и того же блока, с небольшими изменениями поля «nonce» во второй половине блока. И тут возникает первая оптимизация за счет того, что мы можем использовать результат вычисления 512 бит блока повторно. В итоге, нам требуется только 128 раундов хэширования. ↑

4. Само собой, настолько невероятно удачлив, что нашёл сразу валидный хэш. Я начал хэширование блока, уже ранее смайнененного.Конкретно того, который уже упоминался в статье - № 286819. ↑

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

Майнинг на процессоре 2020 | МайнинГуру

За последние несколько лет майнинг на процессоре стал практически нерентабельным. Все наиболее популярные сегодня монеты майнятся с помощью ригов из видеокарт или специально заточенных под майнинг АСИКов, но это вовсе не означает, что использование CPU для майнинга стало совершенно убыточным. В статье об актуальных на 2020 год процессорах и криптовалютах для производительности, рассмотрим особенности, преимущества и недостатки такого вида деятельности.

Что такое майнинг на процессоре

Майнинг на процессоре - добыча цифровых монетарных методов нахождения верного хэша с задействованием вычислительного ЦПУ.

Это самый первый вид майнинга, который был запущенный еще сразу после создания Биткоина. На заре эпохи зарождения криптовалютой индустрии, когда ВТС стоил всего несколько центов, майнинг даже на самом среднем CPU показывал внушительную результативность.

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

Майнинг процессором возможен по нескольким схемам. В зависимости от этого различают его разновидности:

  • Соло майнинг - процесс добычи криптовалют, который производится исключительно за счет задействования вычислительных мощностей одного майнера и без привлечения к процессу других участников.
  • Добыча через майнеров пул - коллективная добыча, возможная объединение вычислительных мощностей группы майнеров на пуле. Сам по себе майнинговый пул представляет собой сервер, объединяющий хешрейт пользователей для совместной добычи, а затем разделяющий награды пропорционально долям участников.
  • Майнинг на мультипуле - одновременная добыча нескольких разновидностей криптовалют, возможная благодаря задействованию специального сервиса (мультипула), который автоматически переключается на добычу наиболее рентабельной монеты.

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

Чем отличается майнинг на CPU и на GPU?

CPU vs GPU CPU vs GPU
Майнинг с помощью процесса выполняется аналогично тому, как это происходит на видеокартах (GPU).Больших различий нет, но есть особенности особенности. Прежде всего, отличается само оборудование. Графический процессор (GPU) представляет собой объединение нескольких сотен или тысяч вычислительных модулей, собранных на одном кристалле.

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

Для сравнения, видеокарта может обрабатывать три тысячи 32-битных операций в секунду, в то время, как процессор за такое же время выполнить 4 или 8 32-битных инструкций, в зависимости от тактовой частоты.Таким образом, при майнинге видеокарта способна обеспечить в 800 раз более мощную скорость вычислений. Сегодня на рынке можно встретить 6 и 12-ядерный процессоры. Но увы, и в данном случае даже относительно слабенькая видеокарта будет в разы мощнее.

Актуальность CPU майнинга в 2020 году

Видеокарты и специально предназначенные для майнинга устройства ASIC практически вытеснили из сферы производительности центральные процессоры. При этом в некоторых случаях майнинг на ЦПУ все еще не только остается актуальным, но и более выгодный.

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

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

Сколько можно заработать

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

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

Например, возьмем наиболее распространенный на сегодняшний день процессор Core i7 (4,6Mhz), способный выдавать вычислительную мощность в 350 kH / s, и Эфириум. В таких условиях, расчеты на калькуляторе CryptoCompare.com показывают, что рентабельность добычи минусовая. Аналогичный результат можно увидеть, если попробовать рассчитать добычу на процессорах других топовых криптовалют, рвущихся побить рекорд Биткойн.

Другое дело, майнинг на процессоре оптимизированных монет и перспективных альткоинов. Расчеты показывают, что, например, добыча Монеро на Core i7 будет давать порядка 20000% дохода.

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

Какой процессор для майнинга выбрать?

Основными характеристиками, на которые нужно обратить внимание при выборе ЦП для майнинга, являются количество ядер и объем памяти.

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

Важная также тактовая частота процессора и его энергопотребление. За план более старые модели имеют хоть и меньшую стоимость, но высокий уровень энергозатратности.
Оптимальным решением является выбор современных быстрых CPU с большим объемом кэш памяти. Детально о характеристиках и рентабельности конкретных моделей можно узнать в статье с обзором лучших ЦП.

Как выбрать программу для майнинга на процессоре

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

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

На большую популярность для майнинга на CPU используются следующие программы:

  • CPU miner;
  • Хороший майнер хешей;
  • Ufasoft Miner;
  • XMRig майнер;
  • Eobot Nheqminer;
  • ЦП Claymore;
  • Ям ЦП.

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

Какую криптовалюту можно майнить процессором в 2020 году

монеты для cpu майнинга монеты для cpu майнинга
Потенциально на ЦПУ возможен майнинг любых криптовалют работающих на алгоритмах, использующих PoW. За последние несколько лет также стали появляться криптовалюты, которые адаптированы непосредственно для добычи на ЦПУ.Среди таких алгоритмов Ethash, Zhash, CryptoNote, CryptoNight и другие. На данных алгоритмах работают такие перспективные для майнинга на ЦПУ цифровые монеты, как Монеро, Dogecoin, ZCash, Ethereum.

Конечно, на процессоре можно добывать значительно большее количество различных криптовалют, например, Binarium, Veco, GlobalBoost. Многие из них пока находятся на стадии активного развития и не могут похвастаться высокой ценой и ликвидностью, что делает их более рискованной.

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

Для старта добычи нужно выполнить три важных элемента:

  • Определиться с оборудованием для майнинга.
  • Подобрать и установить весь необходимый для добычи софт.
  • Настроить и запустить добычу.

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

Реально ли майнить Биткоин на процессоре?

В теории ВТС можно добывать на центральном процессоре, поскольку он работает на алгоритме SHA-256, который не противоречит.

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

Майнинг Монеро на процессоре

Анонимная криптовалюта Monero (XMR) считается одной из наиболее рентабельных для майнинга на CPU.Майнинг Монеро показывает внушительную результативность особенно при использовании мощных процессоров, например, Intel i7 или i9.

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

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

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

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

Чуть ниже мы рассмотрим пошагово каждый из пунктов.

Майнинг Эфира

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

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

Майнинг Dogecoin на процессоре

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

CPU майнинг ZCash

Анонимная Zcash (ZEC) пользуется популярностью не только у хакеров, но и у майнеров. Логика организации ее добычи остается прежней.С учетом не обеспечивает труд отыскать пулы, биржи и кошельки, которые Zcash.

Как майнить на процессоре (пошагово)

Как вы успели заметить, какую монету вы бы не решили добывать, принцип организации майнинга выбрать и состоит из пяти пунктов. Для упрощения предлагаем универсальную пошаговую инструкцию:

  1. Выбор оборудования для майнинга. Прежде всего вам нужно выбрать мощный ЦП, способный обеспечить прибыльную добычу. О том, как это правильно сделать уже упоминалось ранее.Кроме того, потребуется удостовериться в быстродействии материнской платы, оперативной памяти и других комплектующих ПК.
  2. Установка кошелька. На данном этапе нужно выбрать место, где будут храниться добытые вами монеты. Легче всего найти кошелек на официальном сайте монеты. На отведенной странице вы найдете ссылки для скачивания. Вы также можете воспользоваться услугами любых криптовалютной биржи, специальных веб-сервисов, или установить мультивалютные локальные кошельки на свой ПК.После регистрации или установки программы, вы получите сгенерированный адрес для ваших монет. Эти данные потребуются вам для настройки добычи.
  3. Регистрация на пуле. Коллективная добыча показывает большую результативность, поэтому следующим шагом нужно зарегистрироваться на пуле. Здесь все просто, как правило, регистрация требует минимума данных и выполняется в несколько кликов. Далее сервис предложит создать новый worker-а. Для этого вам нужно будет выбрать из списка предложенного оборудования, эта будет установка для добычи и характеристики добычи.На сервисе нужно указать кошелек, куда будет отправлено вознаграждение.
  4. Установка программы для майнинга. Большинство перечисленных выше программ доступны для скачивания на их официальных сайтах, а также на форумах GitHub и BitcoinTalk. Выберите программу, которая подходит вам по интерфейсу и поддерживает желаемую для добычи криптовалюту. Скачиваем софт и инсталлируем его на ПК.
  5. Создание bat-файла и запуск. В файлах программы для майнинга нужно найти файл конфигурации config.текст. Его нужно открыть с помощью блокнота и указать текст «-о адрес выбранного пула; -р пароль доступа к пулу ». Измененный файл нужно сохранить, выбрав расширение bat. Добыча запуститься автоматически.

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

Преимущества и недостатки производительности на CPU

Преимущества Недостатки
Пассивный доход с минимальными затратами времени. Чтобы майнинг был рентабелен, нужен достаточно мощный многоядерный
процессор.
С одного ПК возможен одновременно майнинг на процессоре и видеокарте, что повышает
рентабельность производительности.
Даже используя самые мощные ЦПУ, невозможно майнить дорогостоящие
, такие как BTC, ETH, LTC.
Многие перспективные альткоины могут быть легко намайнены на ЦП с минимальными затратами на оборудование. Если они возрастут в цене, есть реальный шанс получить колоссальную прибыль. Майнинг
на процессоре требует большего контроля, чем видеокартах и ​​асиках, поскольку процессор
сгорит, это велика вероятность, что будет повреждена и материнская плата
.
Применение для майнинга ЦПУ
возможно практически на всех алгоритмах

Майнинг на CPU получил вторую жизнь после того, как криптосообщество всерьез устранено возможной централизацией технологий, и стало выпускать монеты, устойчивые к майнингу на видеокартах и ​​асиках .Сегодня существует множество перспективных монет, которые прибыльно можно майнить на ЦПУ. Правда, в 2020 году майнинг любой топовой криптовалюты по-прежнему убыточный или находится на грани рентабельности.

Просмотры сообщений:
1 592

.

5 видеокарт для майнинга 2020, расчет окупаемости и характеристик карт - обзор

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

Биткоин или эфир, что лучше майнить?

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

Это тем более актуально сейчас, поскольку майнинг Биткойн (BTC) приносит половину дохода после того, как в мае произошло сокращение вознаграждения вдвое.Сложность майнинга продолжает расти, и в сентябре она обновилась до рекордного уровня в 19,31 триллиона на блоке 649152.

В результате многие популярные устройства, такие как Antminer S9, устарели. После сокращения вдвое самыми прибыльными майнерами стали Whatsminer M30S ++ от китайской компании MicroBT, который может обеспечить хешрейт до 112 терахешей в секунду и принести прибыль чуть более 8,50 долларов в день, а также Antminer S19 Pro от Bitmain, может достичь хешрейта 110 TH / s и получать ежедневную прибыль чуть менее 8,50 $.

Но цены на это оборудование довольно крутая: Whatsminer M30S ++ стоит 1800 долларов, а Antminer S19 Pro поставляется по цене 2407 долларов.

Что касается эфира и его форков, майнинг на видеокартах снова становится популярным по нескольким причинам. Во-первых, за последние два года хешрейт Ethereum снизился на 15% (по сравнению с августом 2018 года) и теперь составляет 256 221 TH / s. Это означает, что теперь добывать эфир стало проще.

Во-вторых, для майнинга все еще можно использовать как современные, так и старые модели карт.Например, Nvidia 1050 Ti, выпущенная в октябре 2016 года, и Radeon RX 580, выпущенная в апреле 2017 года, по-прежнему очень популярны.

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

Есть еще один фактор, который привлекает интерес майнеров: предстоящий переход на Ethereum 2.0 и алгоритм Proof-of-Stake, который, как ожидается, начнется до конца года.

Представитель WhatToMine, популярного веб-калькулятора для оценки прибыльности майнинга криптовалют, сказал изданию Cointelegraph, что спрос на эфир будет по-прежнему востребован не только в этом году, но и в 2021 году:

«В этом цикле мы можем ожидать Расширение проектов DeFi, в свою очередь, сделает сеть ETH все более популярной. В результате вознаграждения за блок для ETH (часть комиссии) может циклически увеличиваться с общим общим трендом, что делает майнинг ETH наиболее прибыльным для майнеров на GPU ».

Какую видеокарту выбрать

После тестирования видеокарт двух собственных производителей, Nvidia и AMD, видеокарты Nvidia показали лучшие возможности. Однако, учитывая тот факт, что майнинг Ether получил вторую жизнь, карты AMD не следует списывать со счетов, поскольку поколения Vega и RX компании по-прежнему очень подходят для алгоритмов Ethash.

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

Для стандартной установки требуется шесть видеокарт, и в результате можно потратить более $ 9000, купив популярную Nvidia RTX 2080 Ti с 8 или 11 ГБ оперативной памяти. Но что делать тем, кто не может сделать себе верхнюю планку, но все же прибыль хочет прибыль?

Вот самые популярные на данный момент видеокарты для добычи эфира, которые стоят менее 400 долларов.

1) Nvidia GTX 1660 Super

Эта карта была выпущена в октябре 2019 года, а это значит, что технология еще свежа.Видеокарта имеет 6 ГБ памяти и мощность двигателя Тьюринга, которая работает с большей тактовой мощностью, потребляет меньше энергии и на 20% лучшую производительность, чем GTX 1660. Цена модели колеблется от 240 до 250 долларов.

2) AMD Radeon RX 5700 и RX 5700 XT

Летом 2019 года AMD представила на рынке новую линейку видеокарт серии RX 5700. В этих картах используется технология полевого транзистора FinFET, которая обеспечивает лучшую энергоэффективность при майнинге благодаря уменьшенному размеру электронных компонентов и меньшему. потреблению тока.

Технические характеристики RX 5700 включают 8 ГБ памяти GDDR6 и энергопотребление 180 Вт. RX 5700 XT имеет потребляемую мощность 225 Вт, но базовая частота на 10% выше, чем в модели RX - 5700. Эти карты немного дороже - около 430 долларов, но их можно купить со скидкой, цена будет в районе 400 долларов.

3) Nvidia RTX 2060 Супер

Карта RTX 2060 Super может быть не очевидным выбором, поскольку она ничем не отличается от RTX 2060. Но в то же время она использует пять разных алгоритмов - GrinCuckarooD29, GrinCuckatoo31, DaggerHashimoto, X16Rv2 и BeamV2 - что делает его более стабильным, безопасным и подходящим для майнинга.

Фактически, это промежуточный вариант между RTX 2060 и RTX 2070, но его можно найти в Интернете всего за 399 долларов, в то время как RTX 2070 будет стоить вам около 530 долларов, а разница в 130 долларов - серьезные деньги в этом бизнесе.

4) AMD Radeon RX 580

AMD RX 580 был выпущен еще в 2017 году и до сих пор остается одним из лучших низкобюджетных графических процессоров для майнинга с ценой от 180 до 230 долларов. Карта используется в основном для майнинга эфира и 8 ГБ памяти, но потребляет мало энергии - всего 150 Вт.

Единственным потенциальным конкурентом может быть RX 570, но карта с 4 ГБ памяти больше не сможет этого сделать. добыть эфир в 2021 году.

5) Nvidia P106-100

У Nvidia есть специальная серия видеокарт для майнинга криптовалют - Mining edition «Горная версия» Nvidia P106-100 на графическом процессоре Nvidia GP106 (Geforce GTX 1060), который почти такой же, как и обычный Geforce GTX 1060, но с некоторыми небольшими изменениями. У P106-100 нет видеовыходов и задней панели, а карта оснащена 6 ГБ памяти.

Mining edition в названии не означает обычная версия, а скорее, что он разработан специально для майнеров, поскольку все, что считалось несущественным, было удалено, что позволяет продавать его примерно за 320 долларов на 170 долларов дешевле , чем у GTX 1060.

Какая окупаемость видеокарт

Сколько времени потребуется, чтобы эти бюджетные карты окупили начальную цену? Для сравнения, одна из самых популярных сегодня карт для майнинга, Nvidia RTX 2080 Ti приносит около 1,66 долларов в день при майнинге эфира.При покупке этой видеокарты по средней цене $ 1400 на окупаемость потребуется около 28 месяцев, без учета стоимости электроэнергии.

Итак, вот что говорят расчеты:

Nvidia GTX 1660 Super , которую можно купить за 240 долларов, принесет 0,65 доллара в день и окупится за 12 месяцев.

AMD Radeon RX 5700 XT стоит 400 долларов, срок окупаемости - 8,5 месяцев, при этом принося 1,56 долларов в день.

Nvidia RTX 2060 Super можно купить за 399 долларов и будет приносить 0,92 доллара в день при майнинге эфира.Эта карта окупится через 14 месяцев.

Radeon RX 580 - очень популярная карта из-за ее довольно низкой цены - около 200 долларов, и эта карта окупится всего за 7 месяцев, принеся почти доллар - 0,96 доллара в день.

Созданная специально для майнинга, Nvidia P106-100 будет приносить 0,85 долларов в день, а при стоимости 320 долларов окупится чуть более чем за 12 месяцев.

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

Какие новые видеокарты на горизонте

. В сентябре Nvidia выпустила новое поколение видеокарт GeForce RTX 3000.

Ожидается, что модель высшего класса, GeForce RTX 3090, реализует 120–122 Mh / s. Если это так, то Nvidia может столкнуться с нехваткой карт, так как майнеры будут покупать все, оставив геймеров ни с чем.

Но AMD не отстает и в конце октября представит линейку Radeon RDNA 2, которая будет напрямую конкурировать с серией 3000 от Nvidia. Появление новых карт будет большой интерес для сообщества криптовалютных майнеров. Андрей Шкраба, руководитель отдела маркетинга NiceHash - платформа для майнинга и торговли криптовалютами - уверен, что технологические инновации AMD и Nvidia увеличивают производительность:

«Nvidia только что выпустила серию 3000, но на данный момент доступность очень низкая.Новые карты RTX обеспечат более высокие хешрейты, и майнеры будут обновлять свои старые карты 1060 и старые AMD (480/580). Нам все еще нужно дождаться объявления AMD, чтобы увидеть, что они принесут на рынок ».

.