Блок Биткоина – что это такое и как он устроен?

Блок Биткоина – что это такое и как он устроен?

  1. Как формируется блок Bitcoin
  2. Структура блока Биткоина — заголовок
  3. Структура блока Биткоина — транзакции
  4. Пример блока Биткоина
  5. Характеристики блока Биткоин
  6. Премия за блок

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

Как формируется блок Bitcoin?

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

Для попадания блока в blockchain требуется найти параметр хеша заголовка, показатель которого ниже заданного предела. Цель майнера — подобрать верные входные данные путём перебора вариантов. Для решения задачи применяется мощное оборудование — видеокарты, ASIC-чипы.

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

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

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

Структура блока Биткоина — заголовок

Как отмечалось, блок состоит из заголовка и перечня операций. Свойства заголовка:

    Hash — хеш (алгоритм SHA-256). Этот hash носит случайный характер, поэтому время его определения легко предсказать. Стоит отметить, что хешированию подлежит только заголовок, а к операциям в криптовалютной цепи это не относится. Количество транзакций не оказывает значительного воздействия на расчёт хеша.

Prev_block — свойство хеша прошлого блока в цепи блокчейн. Наличие такой характеристики повышает надёжность сети и усложняет ее подделку. Если внести правки в один блок, придётся переделывать остальные.

Version — версия блочной схемы (сегодня она одна — 1).

Time — uint32_t — свойство, характеризующее период, за который создаётся очередной блок. По замыслу создателя Bitcoin, последний элемент цепи будет добыт в 2106 году.

Mrkl_root — перечень хешей операций. Суть в том, что хеш блока находится в прямой взаимосвязи с операциями в сети. Цель — защита цепи от подделки. Непосредственное вычисление при большом числе операций занимает много времени. Вот почему сначала хешируются операции в цепи, а далее хеши применяются для расчета хешей блока. Необходимость таких действий объясняется следующей разницей — обновление хеша транзакции происходит после добавления к элементу цепи новой операции. Вычисление хеша заголовка происходит чаще — до 3–5 тысяч в секунду.

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

N_tx — число операций в перечне.

Nonce — параметр, который подбирается до момента, пока значение хеша не будет ниже bits. Для того, чтобы новый хеш имел отличия от прошлого, должен различаться хоть один из параметров. Версия неизменна, хеш прошлого блока обновляется с появлением нового элемента цепи, список хешей меняется при включении в него новой транзакции, время обновляется каждую пару секунд, а целевой параметр — раз в 14 дней. Чтобы не ожидать обновления любого из перечисленных свойств, существует параметр nonce.

  • Size — величина блока (измеряется в байтах).
  • Структура блока Биткоина — транзакции

    Следующий элемент блока — операции, которые осуществляются в криптовалютной сети. Они имеют вид перечня, который формирует блок и становится составляющей цепи. Каждый пункт списка (транзакция) показывает источник и получателя перевода.

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

    Список транзакций в блоке реализуется с помощью таких свойств:

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

    Читайте также:
    Как купить и хранить Биткоины?

    Vout_sz — число адресов, куда переводятся средства (может колебаться от одного и больше).

    Vin_sz — число прошлых операций, в которых средства перечисляются новым получателям (от 1 и больше).

    Ver — версия (пока неизменна — 1).

    Size — объём операции (единица измерения — Байты). Формат — JSON.

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

    In — свойство, в состав которого входит перечень входов транзакции. Здесь применяются выходы прошлых операций, о которых упоминалось ранее (prev_out). Все выходы имеют индивидуальные свойства, а именно — Hash (хеш прошлой операции), n (порядковый номер операции) и scriptSig. Отправитель обязан доказать, что переводит личные средства. Это происходит путём указания общедоступного ключа прошлой операции, а также включения частного ключа (подписи ECDSA). Этого достаточно, чтобы доказать акт применения собственных денег.

  • Out — перечень выходов. Как и ранее, здесь имеются определенные свойства — Value и ScriptPubKey. Первое включает в себя объём средств, направляемых адресату. Информация берётся из прошлых операций, поэтому общее число не может быть больше итоговой суммы уже выполненных транзакций. Свойство Valuo прописывается с наномонетах (это делается, чтобы исключить появление дробей). Второе свойство представляет собой определенный сценарий. Он состоит из хеша общедоступного ключа и оператора языка. Суть — изучение транзакции и подтверждение её валидности.
  • Общий объём средств на входе операции с криптовалютой идентичен с числом монет на выходе. Раз в 4 года происходит снижение вознаграждения вдвое, что стабилизирует число криптовалюты в обороте. Если вдруг появится мошенник, который подставит блок и присвоит 100 монет, то новый не приживётся в цепи из-за отторжения честными участниками сети. Вот почему чем больше пользователей, тем надёжнее система.

    Пример блока Биткоина

    С учетом приведённой выше информации можно привести пример блока Биткоина:

    Previous block (прошлый блок): 000000000000056a7dcf273f627c2a17c55ffe1937a6ef2bc467d9c524312da2.

    Difficulty (сложность): 1 690 895.803053. Bits — 1a09ec04.

    Transactions (транзакции): 185.

    Total BTC (общее число Биткоинов): 4251.63216934.

    Size (размер): 58.914 kilobytes.

    Merkle root (список хешей): 98c5d975bf556f0344770eee7ab31688a2c108223c14sea908ff99b0ab8fe947.

  • Nonce: 3723463451.
  • Характеристики блока Биткоин

    Главные характеристики блока Bitcoin:

      Добыча блока происходит с периодичностью раз в 10 минут.

    Каждый блок способен хранить не более одного мегабайта информации. Этот лимит прописан в коде криптовалюты, но пропускная способность остаётся высокой. После оптимизации планируется увеличить объем данных до 2 Мб. Для примера Bitcoin Cash имеет объём, равный 8 Мб.

    В один блок, имеющий размер 1 мегабайт вмещается до 3–5 тысяч операций, в которых участвуют два кошелька с ограниченным числом выходов и входов. На текущий момент пропускная способность сети — семь операций за 1 секунду. С ростом числа пользователей дефицит этого показателя всё более заметен, что и привело к появлению Bitcoin Cash.

  • Число операций, которые входят в один блок, снижается по нескольким причинам — проведение транзакции с большим числом адресов (актуально для пулов), а также применение компаниями цепи clockchain для отправки информации или содержания реестра.
  • Что такое блок Биткоина и за что отвечает его размер

    Количество обрабатываемых транзакций в сети Биткоина зависит от одного важно параметра — размера блока. Блоки являются главной составляющей цепочки блокчейна, в которой есть информация о переводах BTC вообще за всю историю Биткоина. И хотя главные свойства блоков были заданы ещё анонимным создателем криптовалюты Сатоши Накамото, дебаты о целесообразности ограничений об их размере не утихают даже сегодня.

    Что такое блок в Биткоине?

    Блок — это информация о транзакциях в сети Биткоина. Каждый блок можно представить себе в виде страницы в бухгалтерской книге (блокчейне). В случае с криптовалютами страницы нельзя «вырвать» — блоки заносятся в блокчейн навечно.

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

    Забавный момент: сразу после запуска сети Биткоина в 2009 году размер его блоков составлял 36 мегабайтов. 14 июля 2010 года он был уменьшен до одного мегабайта.

    Почему размер блока так важен?

    Согласно замыслу создателя криптовалюты Сатоши Накамото, бухгалтерская книга пополняется новыми страницами раз в 10 минут. Иногда немного быстрее, иногда чуть медленнее, но в среднем это именно 10 минут. Размер каждой страницы (блока) ограничен, то есть количество записываемых туда транзакций тоже ограничено. В итоге у нас есть два лимита: на число транзакций в блоке и периодичность его нахождения.

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

    В начале 2013 года блоки Биткоина были заполнены в среднем на 125 килобайтов. К маю 2015 года этот показатель уже вырос до 425 килобайт, при этом блоки стабильно заполнялись полностью несколько раз в день. То есть транзакций пользователей было достаточно.

    Зачем нужно расширять блоки?

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

    4 мая 2015 года главный научный сотрудник Bitcoin Foundation Гэвин Андресен опубликовал статью, которую в оригинале можно найти по запросу «Why increasing the max block size is urgent». В ней разработчик заявил, что увеличение размера блока — необходимая мера для Биткоина.

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

    Чуть позже Андресен заявил, что займётся разработкой аналогичного клиента Bitcoin XT, первая версия которого была выпущена в декабре 2014 года ещё одним критиком размера блока Биткоина Майком Хёрном.

    Читайте также:
    Облачный майнинг Биткоинов без вложений

    В июне 2015 года руководства крупнейших китайских пулов для добычи криптовалюты F2pool, BTCChina, Antpool, Huobi и BW подписались под предложением увеличить блок Биткоина из-за растущего количества транзакций. В этом же месяце Андресен опубликовал предложение по улучшению Биткоина (BIP — Bitcoin Improvement Proposal) 101. В нём разработчик предложил отказаться от фиксированного ограничения на максимальный размер блока и перейти на новую модель, в котором лимит будет расти с предсказуемой скоростью.

    Что было в BIP 101?

    BIP 101 предполагал увеличение размера блока до 8 мегабайтов с 11 января 2016 года. Затем лимит должен был удваиваться каждые 730 дней вплоть до января 2036 года.

    Считалось, что благодаря увеличению блока до 8 мегабайтов Биткоин сможет обрабатывать до 24 транзакций в секунду. BIP 101 понравился многим криптоэнтузиастам и крупным майнинговым пулам. И всё же у нововведения были противники. Создатель Bittorrent Брам Коуэн заявил, что столь резкие изменения в протоколе криптовалюты противоречат её главной идее.

    16 августа 2015 года BIP 101 был интегрирован в код Bitcoin XT. И хотя апгрейд поддерживался многими, его интеграция не смогла придать популярности альтернативному клиенту Биткоина.

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

    Bitcoin XT, Bitcoin Unlimited, Bitcoin Classic и Segwit2x были популярными инициативами в 2016 году, однако ни одна из них не привела к расширению лимита блока Биткоина.

    В январе 2016 года было решено отказаться от поддержки BIP 101 в Bitcoin XT и просто перейти на единовременное увеличение размера блоков до 2 мегабайтов. Это привело к серьёзному падению интереса к Bitcoin XT. К январю 2017 года менее 30 нод (узлов) в сети клиента поддерживались майнерами. Ещё год назад их количество превышало 650 единиц.

    Через месяц был создан Bitcoin Classic путём форка оригинального Биткоина. Инициатива получила поддержку от Coinbase, Bitstamp, Circle, Роджера Вера и Гэвина Андресена. К сожалению, в 2017 году майнеры Bitcoin Classic не смогли достичь консенсуса по поводу очередного форка, после чего создатели криптовалюты решили прекратить её разработку, высказав свою поддержку Bitcoin Cash.

    Примерно в одно время с созданием Bitcoin Classic консорциум крупнейших майнинговых пулов, кошельков и бирж Bitcoin Roundtable обсудил планы в отношении протокола Segregated Witness. Речь шла об увеличении размера блока оригинального Биткоина до 2 мегабайтов.

    Что такое SegWit?

    Segregated Witness или SegWit это улучшение, в котором размер блока освобождается за счёт выноса данных о подписях транзакций во внешний блок, именуемый «отдельным свидетелем». Именно так переводится словосочетание «Segregated Witness». Благодаря этому в один блок можно вместить почти в четыре раза больше транзакций.

    31 марта 2017 года было предложено ввести SegWit путём софтфорка, за ним должен был состояться хардфорк SegWit2x для расширения размера блока до 2 мегабайтов. Детали апгрейда были обсуждены во время нью-йоркского соглашения, в котором приняли участие 58 крупнейших владельцев узлов сети Биткоина. Сообщается, что на тот момент они контролировали 83.28 процента мощности всех вычислительных устройств для добычи криптовалюты.

    SegWit был принят в августе 2017 года, а вот по SegWit2x майнерам так и не удалось достичь консенсуса — апгрейд был отменён за несколько дней до его предполагаемой интеграции.

    Почему разделился блокчейн Биткоина?

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

    1 августа 2017 года под эгидой Роджера Вера был создан Bitcoin Cash. В форке Биткоина размер блока был увеличен до 8 мегабайтов, при этом интеграция Segregated Witness была отклонена. В мае 2018 Bitcoin Cash прошёл через новый хардфорк, в ходе которого блоки вовсе были увеличены до 32 мегабайтов. Правда, эта инициатива так и не сделала альткоин популярнее оригинального Биткоина. Да и смысла в ней не было. Как оказалось, майнеры BCash всё так же используют блоки на 2 мегабайта, ведь в большем объёме нет смысла.

    Заглядывайте в чаш крипточат миллиардеров. Там обсудим все подробности.

    Что такое блок в Биткоине и криптовалюте? Время, награда и майнинг

    Блоки- это файлы, в которых постоянно записываются данные, относящиеся к сети криптовалюты (к примеру, Биткоин). Блок записывает некоторые или все самые последние транзакции монеты, которые еще не вошли в какие- либо предыдущие блоки.

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

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

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

    Читайте также:
    Как купить Биткоины через Advcash?

    Ключевые моменты статьи:

    • Блок можно рассматривать как звено в цепи. Он обладает частью или всеми записями предшествовавших ему сделок.
    • Блокчейн – сеть состоит из миллионов блоков, которые находятся в постоянном состоянии потока.
    • Блок практически невозможно взломать. Если бы это было возможно, то это имело бы тот же эффект, что и грабитель банка, потянувшийся через прилавок и взявший не только деньги, но и все банковские записи.
    • Биткойн – майнеры могут решать сложные математические уравнения и получают награду BTC, за усилия по поиску решений – то есть проверки блока на подлинность.

    Что такое блок?

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

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

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

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

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

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

    Как работает блок

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

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

    Завершенный блок – это постоянная запись транзакций в прошлом, а новые транзакции записываются в текущем блоке.

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

    Майнинг Биткойнов

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

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

    Поскольку за решение каждого блока вознаграждаются майнеры совершенно новыми BTC, каждый блок также содержит запись о том, какие адреса или скрипты Биткойн имеют право на получение награды. Количество сгенерированных биткойнов на блок начинается с 50 и уменьшается вдвое каждые 210 000 блоков (около четырех лет) – этот процесс называется халвингом.

    Первая запись в следующем блоке – это транзакция, которая присуждается победившему майнеру (сейчас майнеры объединяются в пулы, и награда делится между всеми участниками пула) в BTC. Именно сложность математической задачи регулирует скорость создания новых BTC, поскольку новые блоки не могут быть представлены в сеть без ответа. Исходя из того, что в среднем на решение этой проблемы уходит около 10 минут, примерно 12,5 новых BTC создаются каждые 10 минут.

    Для примера, в Эфире каждые 13.46 секунд (время проверки 1 блока) создаются 2 монеты ETH.

    Сравнение блока с банками

    В качестве аналогии можно сравнить обычные банковские транзакции с транзакциями в сети Биткоин.

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

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

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

    Общие вопросы о блоках

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

    Какое максимальное количество блоков?

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

    Монета Время блока
    Bitcoin 10м 52с
    Ethereum 13.42с
    Bitcoin Cash 9м 46с
    Litecoin 2 м 32 с
    Tron 3c
    BitcoinSV 9м 38с
    Dash 2 м 38 с
    Zcash 1 м 15 с
    Ethereum Classic 13.15c

    Что будет, когда все монеты одной криптовалюты будут сгенерированы?

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

    Как работает майнинг Bitcoin: самое простое объяснение

    13 мая курс ВТС обвалился, когда Илон Маск объявил, что Tesla больше не принимает Bitcoin: мол, майнинг неэкологичен. Почему майнинг Bitcoin потребляет столько энергии — и как он вообще работает? Объясняем простым языком.

    Фото: Myfin.by, носит иллюстративный характер –>

    Каждые 10 минут — по загадке

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

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

    Загадочный создатель Bitcoin Сатоши Накамото наладил систему таким образом, что решение криптографической задачи требует огромных вычислительных усилий, зато проверка на правильность совершается очень просто. Когда все майнеры в сети согласятся, что найденное число — правильное, новый блок присоединяется к сети — а система тут же выдает новую загадку. В среднем это происходит каждые 10 минут.

    Данный алгоритм называется Proof-of-Work (PoW), то есть «доказательство работы». Понимать это можно так: транслируя потенциальные решения в сеть, майнер доказывает, что совершил вычислительную работу.

    Тот, кто первым найдет заветное число — вернее, тот, чье решение первым признают правильным остальные, — получает в награду биткоины. В 2021 г. награда за блок составляет 6,25 ВТС.

    Три загадочных слова: хешрейт, сложность и асики

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

    На протяжении последних 10 лет хешрейт сети Bitcoin постепенно рос. Казалось бы: если все майнеры трудятся над одной и той же задачей, то с ростом их числа (т. е. суммарного хешрейта) нужно будет все меньше времени, чтобы найти решение. А вот и нет: сложность задач тоже повышается, так что в среднем на решение нужны все те же 10 минут. И наоборот: если много майнеров вдруг покинут сеть, сложность вскоре автоматически упадет.

    Кстати, именно это произошло в мае-июне 2021 г., когда в ряде регионов Китая запретили майнинг. Майнерам пришлось массово отключить оборудование и покинуть Юннань, Сычуань и др. Хешрейт сети снизился на 54% , за чем последовало уменьшение сложности на 28%. Опять-таки, спасибо Сатоши Накамото за этот элегантный балансирующий механизм.

    На заре развития Bitcoin сложность была такой низкой, что майнить ВТС можно было на обычном компьютере. Теперь же для этого используются специальные устройства: ASIC, или Application Specific Integrated Circuit, что означает «интегральная схема особого назначения». Это микрочип, способный выполнять только один вид вычислений — зато крайне эффективно.

    Проблема энергопотребления

    Хешрейт современных «асиков» исчисляется в терахешах в секунду, то есть в триллионах хешей (решений). Для такой мощности эти устройства очень эффективны: один ASIC потребляет в разы меньше электричества, чем набор видеокарт (GPU) с таким же суммарным хешрейтом.

    Хотя каждый отдельно взятый ASIC имеет хороший КПД, все асики вместе взятые потребляют гигантское количество электроэнергии: больше, чем Австрия или Венесуэла . Значительная часть этого электричества получена из ископаемых источников, таких как уголь. Это и имел в виду Илон Маск, говоря, что майнинг Bitcoin неэкологичен .

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

    В этом парадокс алгоритма Proof-of-Work, и майнинг Bitcoin останется затратным до тех пор, пока не будет намайнена последняя монета — предположительно в 2140 г.

    Единственное, что можно сделать, — перевести майнеров на возобновляемые источники энергии. К этому призывают Илон Маск и недавно созданный Bitcoin Mining Council (Совет по Bitcoin-майнингу). Кстати, в свежем отчете Совета говорится, что в во 2-м квартале 2021 г. доля возобновляемой энергии в потреблении майнеров выросла с 37% до 56% , так что экологичный майнинг — не просто фантазия.

    Стоит ли игра свеч?

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

    Однако самих майнеров интересуют те самые 6,25 ВТС за блок, что по ценам июля 2021 г. составляет около $200 000. Майнеры продают эти биткоины на криптобиржах, таких как Binance, Coinbase или регулируемая белорусская площадка FREE2EX .

    Найти блок самостоятельно практически невозможно, поэтому майнеры присоединяются к так называемым пулам. За счет большого суммарного хешрейта пул регулярно «находит» новые блоки (т. е. правильные решения) и получает биткоины, которые делятся между участниками пропорционально работе, проделанной каждым. Самые крупные пулы — AntPool, ViaBTC, F2Pool и Binance Pool .

    Специальный онлайн-калькуляторы помогают рассчитать, сколько в среднем заработает владелец асика конкретной модели, если будет майнить в пуле. Ключевые параметры — хешрейт асика и цена электроэнергии. Взяв для примера популярную модель AntMiner S17 P (производительность 56 TH/s, мощность 2094 Вт) и цену электроэнергии в Минске ($0,07 за киловатт-час), получим доход в размере $370 в месяц.

    Подержанный асик этой модели стоит около $4000 . Таким образом, если цена ВТС не изменится, то срок окупаемости устройства составит почти 11 месяцев.

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

    В качестве альтернативы майнингу ВТС на асиках часто предлагается майнинг других PoW-криптовалют на GPU (видеокартах). Действительно, сложность добычи таких монет, как Monero (XMR) или Ravencoin (RVN), во много раз ниже, чем у Bitcoin. Но не все так радужно с GPU-майнингом:

    • для создания качественной домашней майнинговой фермы потребуется не менее 6 GPU стоимостью от $500 каждая;
    • видеокарты потребляют много электричества и нуждаются в охлаждении (они куда менее эффективны асиков);
    • цена альтернативных PoW-монет очень волатильна и может обрушиться вслед за ценой BTC.

    Мораль: если вас посещают мысли о том, чтобы заняться майнингом, не ведитесь на рекламные обещания. Нужно хорошенько рассчитать срок окупаемости оборудования с учетом реальной стоимости электричества и возможной волатильности курсов криптовалют. Скорее всего, вы поймете, что игра не стоит свеч: лучше уж купить Bitcoin, когда его цена упадет, а затем продать на очередном витке роста. Сделать это можно просто и безопасно, например, через сервис мгновенного обмена от криптобиржи FREE2EX , где комиссия за покупку с банковской карты составляет всего 2,95%.

    Информация о криптовалютах в интернете зачастую некорректна или слишком запутана. Чтобы пользователям было легче сделать первые шаги, портал MyFin и регулируемая криптобиржа FREE2EX запустили данную серию статей, которые помогут новичкам разобраться, где в криптоиндустрии правда, а где — просто громкие заявления. Не пропустите следующую публикацию!

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

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

    *Партнерский материал. ООО «Пиксель Интернет» УНП: 590995582

    Bitcoin. Как это работает

    О Bitcoin я узнал относительно недавно, но он меня сразу подкупил своей идеей p2p. Чем глубже я зарывался в их Wiki, тем больше проникался этой идеей. Ее реализация красива и элегантна с технической точки зрения.

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

    Настоящие деньги?

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

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

    Сложность добычи

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

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

    Теперь представим другую ситуацию. Изобрели копир, который работает с золотом. И любой человек может за минуту из одного 1 кг золота сделать 10 кг. В данной ситуации кассир уже не будет обменивать билеты на золото, так как теперь он сам легко сможет его напечатать столько, сколько захочется. Золото перестанет иметь какую-либо ценность и его уже нельзя будет использовать в качестве денег.

    В Bitcoin процесс добычи монеток тоже требует ресурсов и времени. Но в данном случае это не человеческие ресурсы, а компьютерные.

    Условно ограниченный ресурс

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

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

    Здесь видно, что общее число монеток стремится к 21 000 000. Подробности работы Bitcoin будут рассмотрены далее. А пока нужно знать две вещи: монетки появляются в системе пачками приблизительно каждые 10 минут, количество монеток в одной пачке — 50, и оно уменьшается вдвое каждые 4 года.

    Материальность

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

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

    Сложность добычи, ограниченный ресурс, материальность — эти свойства, плюс использование криптографии для обеспечения безопасности, позволяют использовать Bitcoin в качестве денег. На них основано ядро Bitcoin. Это не просто договоренности. Все они заложены в системе by design, и по-другому она работать не будет. Настало время рассмотреть этот самый дизайн.

    Цепочка блоков

    Любая электронная платежная система должна где-то и как-то хранить транзакции. В Bitcoin вся информация хранится в цепочке блоков. Блоки передаются в формате JSON. Каждый блок содержит заголовок и список транзакций. Заголовок состоит из нескольких свойств, среди которых есть хэш предыдущего блока. Таким образом вся цепочка блоков хранит все транзакции за все время работы Bitcoin.

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

    На момент написания статьи количество блоков в цепочке было равно 110 968, и, как я уже говорил ранее, это количество приблизительно через каждые 10 минут увеличивается на 1. Это значит, что кто-то из участников смог создать новый блок.

    Кстати говоря, все участники делятся на две группы: на тех, кто работает над новым блоком и кто не работает. По статистике эти группы соотносятся как 1 к 3. Зачем вообще создавать блоки, да еще каждые 10 минут? В блоках записываются транзакции. Каждый блок содержит все транзакции, которые проходили во время его создания, т. е. за 10 минут.

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

    Рассмотрим содержимое блока и процесс его генерации более подробно. Пример блока можно найти на все том же Bitcoin Block Explorer. Блок состоит из заголовка и списка транцакций. Заголовок состоит из следующих свойств:

    hash — SHA-256 хэш заголовка блока. Такой хэш является достаточно случайным, а время его вычисления предсказуемо. Хочу заметить, что хэшируется только заголовок, без транзакций. Так что число транзакций не будет сильно влиять на время вычисления хэша.

    ver — Версия схемы блока. На данный момент у всех блоков одна версия — 1.

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

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

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

    time — uint32_t представляющее время создания блока. Максимально допустимый год — 2106.

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

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

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

    Например, версия никогда не меняется. Хэш предыдущего блока обновляется тогда, когда кто-нибудь нас опередит и сгенерирует новый блок. Merkle root обновляется при добавлении транзакции. Время — каждые несколько секунд. Bits (целевое значение, сложность) — каждые две недели. Все это слишком долго. Чтобы не ждать, пока обновится одно из свойств и существует nonce.

    Рассмотрим гипотетическую ситуацию. Все значения nonce были проверены и ни одно из них не подходит. За это время ни одно другое свойство не изменилось. Происходит переполнение nonce и оно снова начинается с нуля. Получается, что далее хэши будут повторяться. Чтобы избежать подобных ситуаций, после переполнения nonce, меняется специальное свойство одной из транзакций. После этого обновляется Merkle root и хэши заголовка блока уже не будут повторяться.

    n_tx — Количество транзакций в списке.

    size — Размер блока в байтах.

    Транзакции

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

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

    На практике все это реализовано с помощью следующих свойств:

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

    ver — Версия схемы транзакции. Пока она ни разу не менялась, так что везде равна 1.

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

    vout_sz — Количество адресов, на которые переводятся деньги. Один или более.

    lock_time — Пока не используется и везде равно 0. Идея в том, чтобы создавать отложенные транзакции, чтобы они добавлялись не в текущий генерируемый блок, а, например, в слещующий. Подразумевается, что в этом свойстве указано количество блоков, которые должна пропустить транзакция перед добавлением. Это дает возможность в течении некоторого времени изменить транзакцию и переподписать ее.

    size — Размер транзакции в байтах. Подразумевается размер транзакции в формате JSON.

    in — Содержит список входов (источников) транзакции. В качестве входов используются выходы предыдущих транзакций (prev_out). У каждого выхода есть следующие свойства:

    hash — Хэш предыдущей транзакции.

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

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

    После списка входов транзакции (in) указывается список выходов (out), т. е. адресатов. Каждый выход имеет следующие свойства:

    value — Содержит количество денег, которые будут переведены по новому адресу. Они берутся из предыдущих транзакций. Поэтому данное число не должно превышать их сумму. Например, мы хотим взять 10 монеток из одной транзакции и 20 из другой и направить 25 по новому адресу. Чтобы оставшися 5 монеток не пропали, мы посылаем их самим себе, как сдачу. Таким образом в нашей транзакции будет два адресата, одним из которых являемся мы сами. Value всегда указывается в наномонетах, чтобы избежать дробных чисел.

    scriptPubKey — Это свойство, вместе с scriptSig составляют сценарий на модифицированном Forth-like языке. ScriptPubKey содержит операторы языка и хэш публичного ключа получателя транзакции. Сценарий проверяет транзакцию на валидность. Использование подобного сценария дает богатые возможности для описания условий получения денег адресатом. Например, можно заставить получателя указывать пароль вместо ECDSA.

    Суммарное количество денег на входе транзакции всегда равно суммарному количеству на выходе. В противном случае деньги либо возникали из воздуха, либо исчезали из оборота. Но в самом начале был график, по которому видно, что число денег экспоненциально растет. Так откуда берутся новые деньги в системе?

    На мой вкус, эмиссия денег реализовано просто и элегантно. В каждом блоке первая транзакция в списке является особой транзакцией. У нее всегда один вход, у которого вместо свойства scriptSig есть свойство coinbase. Это свойство может содержать что угодно.

    Выход у транзакции также всегда один. Он перенаправляет 50 монеток тому, кто сгенерировал блок, в котором расположена эта транзакция. Это своего рода награда за потраченное время и ресурсы на генерацию блока. Создавая новый блок в цепочке, клиент вносит вклад в работу Bitcoin.

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

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

    Заключение

    Proof of work (доказательство работы) — результат работы, которого трудно добиться, но легко проверить. Работа сети Bitcoin основана на этом принципе. Проверить хэш (результат работы) можно за доли секунды. А для того, чтобы его подобрать, требуется много работы.

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

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

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

    Как только Bitcoin попал на рынок, его ценность определяется исключительно уровнем доверия к системе. Чем больше человек будут доверять, тем больше купят Bitcoin, тем больше долларов в него вложат и, как следствие, тем дороже будет Bitcoin.

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

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

    Как создается блок Bitcoin и кто забирает награду за блок

    В мае 2017 года сеть Биткоин столкнулась с серьезным вызовом. Количество неподтвержденных транзакций в мемпуле достигло значения 200 тысяч, а общий объем необработанных данных превысил 120 Мб. Учитывая, что 1 блок в сети биткоин равен 1 Мб, а среднее время его создания – около 10 минут , очередь из 120 блоков растянулась на несколько суток, поскольку постоянно прибывали новые и новые неподтвержденные транзакции.

    За счет увеличения комиссий при переводе удалось временно снизить количество необработанных транзакций в очереди, но эта мера, конечно же, не могла считаться устойчивой. И тем более удивительно, что майнеры время от времени находят и закрывают пустые блоки, то есть вместо полного их заполнения до 1 Мб, или 4-5 тысяч транзакций, блок не содержит никакой связанной с транзакциями информации .

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

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

    В чем же здесь дело? Попробуем разобраться.

    Как создается блок Bitcoin?

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

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

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

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

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

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

    Теперь кратко опишем структуру блока.

    Структура блока Bitсoin

    Блок состоит из заголовка и перечня операций.

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

    Особе место занимает параметр Bits – сокращенный вариант значения хэша. Блок будет добавлен к цепи только в том случае, когда майнеры подберут хэш размером менее bits.

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

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

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

    Итак, мы подходим к самому главному. Как же построена работа майнера и за что он получает оплату?

    Размер блока и награда майнера

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

    Майнер (майнинг-пул) получает оплату за произведенную работу из двух источников:

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

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

    Были предложены множество вариантов решения этой проблемы, от увеличения блоков до создания протоколов более высокого уровня, используемых поверх протокола биткоина. До недавнего времени разработчики склонялись к использованию доработанного протокола Segregated Witness (SegWit), который получил название Segwit2x. С помощью него часть информации должна была быть вынесена за пределы блока, то есть храниться отдельно от цепочки блокчейна, а размер самого блока – увеличиться до 2 Мб, что теоретически позволяло заметно ускорить прохождение транзакций и повысить анонимность.

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

    Откуда же берутся пустые блоки?

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

    Предположим, что майнер нашел хэш очередного блока, назовем его N . Тогда он сразу же, чтобы не простаивали мощности, должен приступить к поиску блока N+1. В то же время майнер должен передать блок N другим участникам сети, которые должны его загрузить и проверить включенные в блок транзакции . Соответственно, майнер в этот момент решает одновременно две задачи – проверку транзакций блока N и поиск блока N+1.

    Если майнер найдет блок N+1 еще до того, как будет проверен блок N – он имеет право заполнять его транзакциями? Нет, не имеет. Ведь в этих новых транзакциях могут оказаться такие, которые опираются на транзакции включенные в блок N, который еще не подтвержден. Даже если в мемпуле скопилась очередь из большого количества неподтвержденных транзакций, которые необходимо включать в блок N+1, майнер не может этого сделать, пока не прошло подтверждение блока N. А раз так, то майнер закрывает блок N+1 пустым , в нем будет только одна coinbase-транзакция, которая формируется автоматически и несет в себе информацию о вознаграждении за создание блока. Получает вознаграждение и приступает к поиску блока N+2.

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

    Решение проблемы

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

    На момент написания статьи количество неподтверждённых транзакций превышало 160 тысяч, а объем необработанных данных – 117 Мб.

    На 2018 год запланировано внедрение сразу нескольких технологических решений, способных разгрузить сеть биткоина и увеличить скорость транзакций.

    На май запланирован выход Bitcoin Core 0.16 , в который будет внедрен новый формат адреса от разработчика Blockstream Питера Уилля, известный как bech32 , который позволит ограничить ошибки от опечаток и снизить риски.

    Протокол SegWit получит наконец широкое распространение и позволит снизить стоимость комиссий и время подтверждения транзакций.

    Также ожидается внедрение (уже в ближайшее время) протокола Lightning network , который представляет собой решение второго уровня и способен резко снизить стоимость транзакций, а подтверждение сделать почти мгновенным. По словам разработчиков, данные решение способно значительно улучшить работу сети.

    Еще одно интересное решение связано с использованием сайдчейнов – альтернативных блокчейнов с монетами, которые привязаны к биткоинам . Они могут предложить быстрое подтверждение, использование смарт-контрактов и множество других удобств. На стадии бета-тестирования находится проект Liquid , разработанный Blockstream, который уже сейчас используется для совершения мгновенных транзакций между биржами , и уже в текущем году может выйти стабильная версия 1.0.

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

    • подписи Шнорра;
    • конфиденциальные транзакции;
    • Rootstock – сайдчейн биткоина.

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

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

    Хотите зарабатывать на крипте? Подписывайтесь на наши Telegram каналы!

    Майнинг на домашнем ПК — самое полное руководство для новичков

    Как начать майнинг на домашнем ПК при помощи простой программы. Разберем подробно весь сервис и саму программу, подготовим компьютер к майнингу на видеокарте.

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

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

    Инструкция

    Выполните следующие пункты и начнете майнить уже через 15 минут.

    1. Идем на сайт и скачиваем майнер для ПК;
    2. Пока качается майнер, там же, создаем аккаунт;
    3. Устанавливаем майнер, вводим почту и пароль, нажимаем СТАРТ!

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

    • Вывести сразу на qiwi, webmoney или банковскую карту;
    • Вывести на крипто-кошелек для хранения;
    • Перевести на биржу для торговли криптовалютой.

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

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

    Таблица доходности по разным видеокартам смотрите здесь.

    Вот мой скриншот моего компьютера с видеокартой 2014 года выпуска. Как видите никаких дополнительных телодвижений делать не нужно.

    Если ваш компьютер или ноутбук совсем плох, смотрите в сторону облачного майнинга!

    Плюсы и минусы

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

    • Майнинг на домашнем ПК при помощи программы осуществляется на видеокарте, есть конечно возможность майнинга на процессоре, но она намного ниже. Для процессора можно использовать другую программу.
    • Простота установки, Вы просто скачиваете программу и все работает в автоматическом режиме.
    • Очень хороший раздел FAQ — ответы практически на все вопросы и так же быстрая тех. поддержка. Специально писал, получил ответ в течении пары часов.
    • Удобный интерфейс сервиса, нет сложных моментов, то есть Вы легко в нем разберетесь.
    • Можно выводить заработанные средства сразу в биткоинах.
    • Нет привязки к bitcoin-кошельку, то есть даже при утрате доступа к нему, Вы можете использовать другой кошелек.

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

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

    Майнинг на домашнем ПК: регистрация

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

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

    Майнинг на домашнем ПК: программа

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

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

    Простая установка, просто жмете «далее» несколько раз. Нет никаких скрытых установщиков или лишнего программного обеспечения. Так же нет никаких дополнительных настроек во время установки.

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

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

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

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

    Остается только открыть кошелек для криптовалюты и начать тратить её!

    Как увеличить доходность майнинга

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

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

    1. Основная мощность и способность добывать новые криптомонеты, конечно же зависит от видеокарты. Лучший вариант — это видеокарта с 3 Гб видеопамяти.
    2. Оставляйте работать компьютер на полной мощности, когда Вы за ним не находитесь, к примеру на ночь.
    3. Саму программу не отключайте, если Вам нужна мощность Вашего компьютера, просто поставьте программу на паузу.
    4. Драйвера видеокарты, так же могут влиять на производительность. Прочтите более подробную инструкцию на сайте в разделе FAQ — Какие драйвера установить?
    5. Для видеокарт Nvidia установите Windoes 10 Anniversary Update? особенно важно для новых карт.
    6. Если Вы понимаете, что делаете, то попробуйте разогнать видеокарту. Здесь все индивидуально и тестировать нужно будет в реальном времени.

    Это все! В следующий раз данный процесс займет максимум полминуты!

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

    Рейтинг
    ( Пока оценок нет )
    Понравилась статья? Поделиться с друзьями:
    Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: