bitnovosti.com | Статьи | ТВ | Bitcoin (BTC|USD)

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

Введение в майнинг Биткойна

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

Что такое майнинг биткойнов?

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

Дальше в статье:
Как работают биткойн-транзакции?
Зачем Биткойну майнинг?
Почему майнеры майнят?
Что это за «дорогая вычислительная игра в разгадывание головоломок»?
Почему вознаграждение платят в BTC, а не в USD?
Кто майнит?
Что могут и не могут cделать злоумышленники?

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

Как работают биткойн-транзакции?

Процесс такой:
Создайте платеж (биткойн-транзакцию);
Подождите, пока она добавится в блок (в среднем 10 минут, при условии достаточной комиссии за транзакцию);
Подождите, пока добавится больше блоков (в среднем 10 минут на блок).

1. Инициируйте платёж

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

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

2. Подождите, пока транзакцию включат в блок (в среднем 10 минут)

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

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

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

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

3. Подождите, пока будет добыто больше блоков (в среднем 10 минут на блок)

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

Неподтвержденная транзакция -> Подтвержденная транзакция (1 блок) -> Подтвержденная транзакция (много блоков)

На настоящий момент считается, что после того, как накопится 6 блоков (6 подтверждений), шансы на отмену транзакции посредством создания более длинной цепи, чтобы подменить тот блок, куда вошла ваша транзакция, очень малы. Если вы получили платеж, то чем больше биткойнов вам перевели, тем дольше надо подождать (чтобы создалось больше блоков и накопилось больше подтверждений), чтобы снизить вероятность того, что ваш платеж может быть отменён.

Зачем в Биткойне майнинг?

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

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

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

Финансовый сдерживающий фактор.

Речь здесь идёт о разгадывании майнерами головоломок, которое называется «Доказательство выполнения работы». На самом деле, в этом разгадывании головоломок нет необходимости, чтобы добавлять блоки в блокчейн. Однако, игра с угадыванием чисел делает добавление блоков вычислительно дорогостоящей операцией (и, следовательно, дорогой с финансовой точки зрения). Эта высокая цена действует как сдерживающий фактор для злоумышленников, которые в противном случае могли бы захотеть добавить собственные нечестные блоки. Пока большая часть сети является «честной», нечестным участникам будет затруднительно создавать мошеннические блоки.
«Зачем нужно доказательство выполнения работы?», в трёх актах:
Акт 1
В «открытой» сети любой может создавать блоки;
Поскольку вы не можете доверять кому-либо конкретному, каждый отдельный узел должен предполагать, что большая часть остальной сети является “правильной”;
Чтобы начать доминировать в сети, необходимо создать множество псевдонимов, которые находились бы под единым контролем, и вели бы себя согласованно. Этот тип количественного доминирования называется «атакой Сибиллы».
Акт 2
Легко и дёшево создать проверяющих, которые будут согласны между собой;
Поэтому запугивание сети – очень дешёвое занятие;
Таким образом, чтобы защитить от него сеть, необходимо увеличить цену таких атак.
Акт 3
Вычислительная мощность гораздо дороже и требует инвестиций и поддержания в актуальном состоянии;
Поэтому используется система, в которой правы те, у кого больше вычислительных мощностей, а не те, кто имеет численное превосходство;
Таким образом, злоумышленникам придётся потратить намного больше денег, чтобы провести успешную атаку на сеть.

Итог

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

Почему майнеры майнят?

Вознаграждение за майнинг = добровольные сборы за транзакции + вознаграждение за блок (в настоящее время 12,5 BTC за блок).

При майнинге блока, майнеры получают добровольные сборы за транзакции из числа транзакций, включенных в блок. Также, для майнера создаётся транзакция с выплатой некоторого количества BTC (на данный момент 12,5 BTC). Это называется «наградой за блок» или «coinbase-транзакцией» (не путать с американской компанией «Coinbase»).

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

Введение в майнинг Биткойна


Block Reward – награда за блок
Transaction fees – сборы за транзакции
Total mining incentive – суммарное вознаграждение за майнинг

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

В чем заключается «вычислительно дорогое» разгадывание головоломок?

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

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

С хэшированием можно поиграться здесь. Введите любые данные в большом поле для ввода. Вы увидите хэш в меньшей строчке под ним. Я набрал «What does the hash of this look like?»:



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



Немного поиграв с данными, попробуйте подобрать хэш, который начинался бы с 0000000. Сложно, да? Добавив «-17» к предложению, я получил хэш, начинающийся с одного нуля:

What does the hash of this look like?-17 = 0fd82107e6e73b6f369853da3b53d4a93e8be1e5b3a4dd7da2b4ea644774bc80

Я продолжил, и на 272 попытке нашёл предложение, которое дало хэш, начинающийся с двух нулей:

What does the hash of this look like?-272 = 00629a604a7ec6b1f05e7703c57197ed6119a6282e9b5f750e14a1500578d3fd

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

Например, Биткойн-блок №372910 был «найден» после того, как майнер подобрал данные, чтобы получить хэш 000000000000000000b037a61e47df14b035199b5a2d464691b9456394bc07da – в нём оказалось достаточно нулей, чтобы удовлетворить потребность сети на тот момент.

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

Почему вознаграждение выплачивается в BTC, а не в USD?

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

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

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

Кто майнит?

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

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

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

В настоящее время (прим.ред.: на момент 21 сентября 2015) 10 лучших майнинг-пулов последовательно создают около 90% блоков, майнинг-пулы в Китае создают более 60% блоков. Пулы обычно контролируются оператором пула, который бывает одним человеком или же группой людей. Поэтому, несмотря на то, что идея Биткойна в децентрализации, по факту, его контролирует горстка людей в Китае.



Краткая история майнинга

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

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



Что могут и что не могут злоумышленники?

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

Какое облегчение!

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

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

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

Хуже всего, если злоумышленник сможет создать более длинную цепочку блоков, чем остальные участники сети и воспользуется «правилом самой длинной цепи», чтобы выбить из блокчейна старую цепочку, которая окажется короче его. Это позволит ему откатить транзакции. Вот по такому алгоритму:
Создать два платежа с одними и теми же биткойнами: один для онлайн-магазина, другой для себя (на адрес, который под контролем злоумышленника);
Поместить в сеть транзакцию, предназначенную для продавца;
Когда платеж добавится в честный блок, продавец отправит ему товар;
Тайно создать более длинную цепочку блоков, в которой транзакция продавцу будет заменена транзакцией самому себе;
Опубликовать более длинную цепочку. Если другие узлы играют по правилу «принимаем самую длинную цепочку блоков в сети», то они проигнорируют “честный” блок с транзакцией на адрес продавца и продолжат строить блоки на основе длинной цепочки читера. Честный блок «осиротеет» (orphan) и потеряет смысл;
Честные узлы признают первоначальный платеж торговцу как недействительный, потому что эти биткойны окажутся уже потрачены (в одержавшей верх и принятой узлами более длинной цепочке).



Красный блок – оплата торговцу
Жёлтые блоки – мошеннические

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

Вывод

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

Биткойн работает хорошо до тех пор, пока какая-либо организация или скоординированная группа не начинает контролировать слишком много хэш-мощности, в результате чего они могут получить контроль над различными аспектами системы. В настоящее время 90% блоков добываются известными «пулами» или синдикатами майнеров, и если бы несколько пулов объединились, то они получили бы возможность коррекции блокчейна и захватили бы контроль над сетью.
При полном или частичном использовании материалов - ссылка обязательна http://elitetrader.ru/index.php?newsid=346485. Присылайте свои материалы для публикации на сайте. Об использовании информации.