Награда за блок и комиссии с транзакций: два вида дохода майнера



Майнеры ни много ни мало занимаются поддержанием жизнедеятельности сети. При алгоритме proof-of-work «доход» майнера имеет две составляющие: награда за блок (то есть сами новые, намайненные монеты) и комиссии всех транзакций, включенных в добытый блок. DeCenter рассказывает, как награда доходит до майнера.

Доходы от майнинга

Мы умрем, а он останется

В сети Bitcoin награда за блок составляет на сегодня 12.5 биткоина. «На сегодня» — потому что протокол биткоина предполагает постепенное уменьшение награды в процессе так называемого халвинга: каждые 210,000 блоков (примерно раз в 4 года) награда сокращается вдвое. Так, c 2009 по 2012 годы майнеры получали 50 биткоинов за добытый блок, до 2016 — 25 биткоинов, сейчас — 12.5 биткоина, и ориентировочно в 2020 году эта сумма должна вновь сократиться. При условии, что протокол биткоина останется неизменным (то есть сохранится время добычи блока, расписание халвинга и верхний порог эмиссии), последний биткоин будет добыт в мае 2140 года, когда награда будет составлять 0.000000011641534423828125 биткоина.

Учитывая, что награда — это и есть количество созданных биткоинов, халвинг обеспечивает ограничение эмиссии криптовалюты в автоматическом режиме. Искусственное уменьшение числа добываемых монет позволяет исключить инфляцию и создать дефицит криптовалюты, что должно приводить к пропорциональному увеличению цены.

Несмотря на произошедшее с 2009 года четырехкратное уменьшение, сегодня награда за блок в долларовом эквиваленте гораздо выше, чем она была до первого халвинга: до 2012 года, при 50 биткоинах за добытый блок, майнеры в лучшие времена могли получить $500−$1500, а сегодня 12.5 биткоина — это примерно $90,000. Но даже при самых смелых ценовых прогнозах к 2072 году награда в 0.001525879 биткоина может оказаться не такой уж большой суммой, не говоря о том, что после 2140 года новых монет добываться не будет. С учетом всего этого награды за блок и комиссии в перспективе должны «поменяться ролями», то есть комиссии, сейчас составляющие менее 1% от дохода майнера, в будущем выйдут на первый план.

Комиссии сегодня

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

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

Однако сегодня мало какие сервисы предоставляют возможность полностью самостоятельно назначать размер комиссий. Чаще всего пользователю предоставляется выбор: отправить быстро или отправить дешево. Например, сервис может предложить комиссию в 0.001 биткоина для быстрого перевода и 0.0005 биткоина — для «дешевого», но более медленного.

Отсутствие самостоятельности в этом вопросе является скорее положительным аспектом, поскольку неопытный или слишком экономный пользователь может поставить очень низкую комиссию, из-за чего транзакция либо очень надолго застрянет в мемпуле, либо вообще не будет подтверждена. Разберемся, как будут разворачиваться события при последнем сценарии: отправляя транзакцию, вы транслируете ее в сеть, то есть показываете нодам пиринговой сети, к которым вы подключены. Они, в свою очередь, покажут транзакцию другим нодам, и так далее, а в итоге достаточно много нод сети будет знать об этой транзакции и хранить ее в своих мемпулах (то есть в своей памяти). В какой-то момент транзакцию увидят ноды майнеров, и майнеры могут выбрать ее для включения в свой блок. Однако если это не произойдет, со временем ноды выбросят транзакцию из своего мемпула, чтобы освободить место для новых транзакций. Строго определенного времени, в течение которого неподтвержденная транзакция будет находиться в мемпуле, нет — это определяет сам провайдер ноды. Клиент Bitcoin Core по умолчанию хранит транзакцию в течение двух недель, а потом также «забывает» ее. При этом можно «напоминать» о своей транзакции, ретранслируя ее в сеть. И некоторые кошельки, в том числе Bitcoin Core, ретранслируют транзакцию, пока она не будет подтверждена. Но если этого не делать, все ноды в итоге забудут об этой транзакции: она останется необработанной, а монеты, которые в ней пересылались, соответственно, не будут потрачены. То есть, по сути, вы не теряете средства — они остаются где-то в недрах системы, и вы сможете отправить те же монеты еще раз, с помощью новой транзакции. Если она будет подтверждена, то биткоины потратятся, а старая, неподтвержденная транзакция автоматически станет недействительной.

При этом чем более загружена сеть, тем выше конкуренция среди транзакций, то есть выше становятся и комиссии. В декабре, одновременно с биткоином, своего исторического пика достигли и сборы в сети — 31 декабря за одну транзакцию приходилось платить $41 (сейчас, по данным Coin Metrics, средняя комиссия равна $0.7).

Таким образом, оптимальный размер комиссии зависит от состояния сети: в августе на блоке 536077 минимальной комиссией считался 1 сатоши за байт: подтверждение такой транзакции могло занять от дня до недели, тогда как 2.5 сатоши за байт уже обеспечивали обработку в течение часа, а 5.4 сатоши за байт — включение в следующий блок.

Если очень не хочется, то можно

Есть случаи, когда комиссии вообще можно не платить, и при этом ваша транзакция все равно будет подтверждена. Воспользоваться таким функционалом можно, как правило, в официальных клиентах: например, Bitcoin Core, Litecoin Core, Dogecoin Core.

Установив ПО, необходимо зайти в раздел Settings > Preferences > Wallet и поставить галочку в графе «Enable coin control features». Теперь вы можете самостоятельно формировать входы транзакции, от чего, в свою очередь, будет зависеть ее приоритет (чем выше приоритет транзакции, тем больше шансов, что комиссия будет низкой или нулевой). При отправке транзакции также должна стоять галочка в графе «Send as zero-fee transaction if possible».

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

 Определяет, какие монеты потратить

Биткоин-кошелек содержит не отдельные монеты по 1 биткоину, а так называемые «неизрасходованные выходы транзакций» (UTXO) — «остатки» предшествующих отправленных или полученных транзакций, которые могут выглядеть как 0.15 BTC, 0.00356 BTC, 0.1 BTC, 0.5 BTC и так далее. Из них и будет формироваться вход транзакции (input — запись о том, с какого адреса биткоины получены). Но эти суммы не содержатся на каком-то конкретном адресе или кошельке, они разбросаны среди множества транзакций и блоков. Кошелек вычисляет баланс пользователя путем сканирования блокчейна и нахождения всех UTXO, принадлежащих этому пользователю. Например, если нужно отправить 0.2 BTC, алгоритм селекции монет в Bitcoin Core может направить отрезки данных, хранящие 0.15 BTC, 0.04 BTC и 0.03 BTC, во вход транзакции и создать два выхода (output — на какой адрес биткоины отправлены): 0.2 BTC будут направлены получателю, а 0.02 BTC вернется на кошелек отправителя в качестве «сдачи».

 Пытается избежать создания пыли

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

 Определяет приоритетность транзакции

Каждая транзакция занимает свое место в «иерархии», основываясь на своей стоимости (количестве пересылаемых биткоинов), размере в байтах и возрасте входов (этот параметр зависит от того, сколько подтверждений сети произошло с момента включения в цепь блока, содержащего данный UТХО).

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

 Рассчитывает размер сбора

Для этого клиент вычисляет размер транзакции в байтах. Он зависит от количества входов и выходов и примерно рассчитывается по формуле: 148 * NoI + 34 * NoO + 10, где NoI — number of inputs (количество входов), а NoO — number of outputs (количество выходов).

Если по результатам вычислений размер транзакции составляет менее 10,000 байт и транзакция достаточно приоритетна, тогда она будет бесплатной, то есть не потребует комиссии. Если же эти условия не выполняются, то комиссия нужна. Она взимается за каждые 1000 байт или за меньшую часть. По умолчанию комиссия за 1000 байт составляет 0.0001 биткоина, но она может быть изменена в клиенте, в разделе Settings > Options > Main tab.

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

По ту сторону майнинга

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

Добывая блок, майнеры включают в него необработанные транзакции, находящиеся в мемпуле. Однако, по правилам сети Bitcoin, первой в блоке должна быть так называемая coinbase-транзакция. Таким образом, «затребовать награду» — значит добавить ее в виде первой транзакции этого блока. В coinbase-транзакции нет входа в привычном смысле, то есть в виде «входного» количества биткоинов (оно будет равно нулю). Вместо этого у нее так называемый coinbase-параметр, который может содержать произвольные данные (они нигде не используются). В выходе транзакции в качестве получателя майнер указывает собственный адрес. Пример такой транзакции легко найти в эксплорере: нужно открыть любой из добытых блоков, и coinbase-транзакция будет первой в списке.

Выход формируется из текущей награды за блок — 12.5 биткоина и суммы комиссий всех транзакций, содержащихся в блоке. То есть если сумма комиссий равна 0.049866, то в совокупности выход coinbase-транзакции, то есть награда майнера, составит 12.549866 биткоина.

«Одно из правил сети в том, что выходы coinbase-транзакции не могут превышать размер текущей награды за блок в сумме с комиссиями за транзакции, [включенными] в этот блок», — поясняет пользователь Stack Exchange.

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

Майнер — существо социальное

Награда за блок биткоина, по текущему курсу составляющая около $90,000, выглядит привлекательно. Однако нельзя забывать о соревновательном характере майнинга: награду получит тот, кто первым добудет блок, а скорость добычи зависит от твоей доли хэшрейта, то есть доли от совокупной мощности сети. Учитывая, что совокупная мощность сети Bitcoin на сегодня превышает 50 эксахэш в секунду, а одно из самых мощных оборудований для соло-майнинга — ASIC-майнер Antminer S9j от Bitmain — дает только 14.5 терахэш в секунду, доля майнера в сети составит около 0.00001%. С таким хэшрейтом добыча блока может занять несколько тысяч лет.

Не сильно лучше сегодня складывается ситуация при майнинге Ethereum: по расчетам, ферма за $3000 найдет блок эфира не раньше, чем через год. Рассчитать скорость добычи блока для ряда других альткоинов при соло-майнинге можно с помощью онлайн-калькулятора. Стоит отметить, что его создатели не рекомендуют майнить в одиночку, если по результатам расчетов генерация одного блока займет более 10 часов.

Что касается биткоин-майнеров, они чаще всего присоединяются к какому-либо майнинг-пулу, предпочитая меньшую, но более регулярную награду. Майнинг-пулы обладают несоизмеримо большей вычислительной мощностью: так, по состоянию на август крупнейшие пулы BTC.com, AntPool, SlushPool и ViaBTC владеют 18.1%, 16.6%, 12.9% и 11.3% хэшрейта сети Bitcoin соответственно.

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

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

У каждого пула есть свои правила осуществления выплат. Рассмотрим тонкости распределения награды на примере Slushpool. Этот пул использует систему подтверждений проделанной работы. То есть, если искомый хэш состоит из 18 нулей, то майнер может «заявить» о части проделанной работы после нахождения первых 8 нулей. И это докажет, что он внес свой вклад и ему полагается награда.

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

Отвечая на вопрос, кто же на самом деле платит за майнинг, крипто-энтузиаст Йоханнес Уосрам обращает внимание на редко упоминаемый аспект связи биткоина с фиатными валютами: «За майнинг платят люди, которые хотят управлять майнинговыми нодами. Так что, по сути, майнинг оплачивается в юанях, долларах и в меньшей степени евро. Биткоины — это просто электричество… конвертированное в виртуальную валюту… Биткоин, который, как считается, абсолютно ничем не подкреплен, на самом деле подкреплен пропорциональной долей этих валют. Биткоин представляет собой интересный механизм, поскольку его существование и способность создавать ценность напрямую зависят от способности майнеров продолжать использовать их национальные валюты для оплаты электричества, которое поддерживает [сеть]».

Когда что-то пошло не так

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

Так, изначально запланированная эмиссия биткоина в 21 миллион монет уже не сможет быть достигнута — она будет меньше как минимум на 12.5 биткоина и 1 сатоши. 17 мая 2011 года майнер под ником midnightmagic, добыв 124,724 блок, по неясным причинам снизил свою награду в 50 биткоинов до 49.99999999 биткоина. А в декабре 2017 другой майнер не затребовал награду за 501,726 блок: «Он мог просто отправить ее мне, если он не хотел ее, так что я бы мог купить больше биткоин кэша», «Технически майнеры не обязаны принимать награду за блок, просто нет финансовых оснований, чтобы этого не сделать», — обсуждали этот поступок пользователи Reddit.

А неопытные пользователи могут сделать неожиданные подарки майнерам. Так, 26 апреля 2016 года, пользователь отправил 0.0001 биткоина с комиссией 291.241 биткоина (около $137,000 на тот момент), вероятно, с желанием сделать наоборот. Награду получил майнинговый пул BitClub. Точная судьба этих биткоинов неизвестна: появлялась информация, что пул согласен вернуть средства, если пользователь сможет доказать их принадлежность, а также о планах пула потратить щедрую комиссию на «связанную с биткоином благотворительность», если хозяин средств не объявится. Однако не исключена возможность того, что пул и его участники просто сохранили и распределили между собой эту с технической стороны честно заработанную награду.




Загрузка комментариев…