Биткоины: цифровая валюта шифропанков

Эта заметка – популярный обзор того, как работает сеть Биткоин и соответствующая ей валюта. Основные темы: логика протокола, blockchain, некоторые расхожие мифы, связанные с биткоинами, “майнинг” и перспективы системы.

Биткоины появились в 2009 году. Описание протокола было опубликовано исследователем, действовавшим под псевдонимом Сатоси Накамото (Satoshi Nakamoto), в 2008 году. Минимальная единица расчётов – 10-8 биткоина, называемая сатоси.

Обзор протокола

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

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

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

Транзакции в сети Биткоин возможны потому, что все участники используют общую главную книгу, общий баланс, в котором зафиксированы все операции с биткоинами. Эта главная книга – blockchain – публична и используется для проверки валидности (допустимости) каждой новой транзакции. Транзакция считается осуществлённой, если она, с некоторыми оговорками, включена в главную книгу.

Разберём ситуацию чуть подробнее. В классической платёжной системе есть процессинговый центр, который авторизует пользователей (по некоторой паре логин/пароль или как-то ещё – это не важно), проверяет их финансовые возможности, сверяясь со своей базой данных, и переводит, в этой же базе данных, числа со счёта одного пользователя на счёт другого. Когда один пользователь отправляет другому десять фунтов, считается, что оба доверяют центру, проводящему платежи. Если просто убрать этот центр из системы, то сразу же возникают различные проблемы: как убедиться, что средства перечисляет именно тот, кто может ими распоряжаться (тот, у кого эти средства есть)? как предотвратить повторное расходование тех же самых средств?

Очевидно, чтобы убедиться, что средства перечисляет конкретный пользователь, можно использовать хорошо известный механизм электронной подписи, тогда подделать транзакцию будет сложно. Однако сама по себе подпись не решает ключевых проблем: отправитель средств может просто копировать свои цифровые финансы и, например, отправить получателю одни и те же условные три виртуальных “фантика” десять раз подряд, но при этом в свои расходы записать только три “фантика”. Копировать транзакции сможет и сам получатель, и вообще – кто угодно. Это и есть проблема повторного расходования средств (double spending – в англоязычной литературе), которую, в случае классических платёжных систем, решает центр управления платежами: он ведёт учёт баланса для каждого пользователя и не позволяет “копировать валюту”, так как все транзакции осуществляются через систему этого центра.

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

Blockchain
Blockchain или главная книга.

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

Сеть и транзакции

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

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

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

Пример биткоин-адреса: 17uHcvJLefVsfeH9X38a6f7rwWrcmv37D7

Транзакция, сформированная тем или иным участником системы, через Интернет передаётся другим узлам. Делается это для того, чтобы транзакция попала в главную книгу, в blockchain. Blockchain строится из блоков, каждый из которых включает большое количество транзакций (на блоки можно посмотреть, например, на сайте blockchain.info). Естественно, некоторые участники могут попробовать заполнить главную книгу записями, выгодными только им. Например, начислить на собственные кошельки побольше биткоинов, или потратить одни и те же биткоины несколько раз. Поэтому блоки транзакций попадают в blockchain не просто так, а в результате выполнения некоторой вычислительной работы. Это ещё одна интересная особенность сети Биткоин, по сравнению с классическими платёжными системами. Хотя, надо отметить, что сам использованный метод был хорошо известен до появления биткоинов.

Доказательство проведённой работы

Вспомним, что в Биткоин используются криптографические хэш-функции, конкретно – SHA-256 (но не она одна). Особенностью крипотграфически стойких хэш-функций является то, что для них чрезвычайно сложно вычислить прообраз – то есть, найти такие входные данные, значение хэш-функции от которых будет равно данному: для современных хэш-функций такая задача на практике неразрешима (пока что). При этом выполнение прямой операции – найти значение хэша для заданных входных данных – не представляет трудностей. Биткоин использует следующий трюк: для включения блока в blockchain нужно найти связанное с ним значение хеша (SHA-256), меньшее заданного порога. В реальности вычисляется хэш от заголовка блока, но эти детали можно опустить. Результатом SHA-256 является 256-битное число, например в шестнадцатеричной форме, c21f3ac6b5f… Задача может быть сформулирована так: подобрать входные данные таким образом, чтобы хэш начинался с трёх нулей: 000аcbe7… Предположим, что у нас есть неизменная строка “bitcoin”, и мы можем приписывать к ней цифры (“bitcoin123”). Тогда для решения нашей задачи нужно перебирать различные варианты цифр до тех пор, пока значение хэш-функции от полученной строки не будет начинаться с трёх нулей. Так как обратное преобразование для хэш-функции практически не реализуемо, решение потребует именно перебора входных строк, с вычислением хэша для каждой из них. Это и есть вычислительная работа. Если несколько упростить ситуацию, то можно сказать, что в случае с блоком blockchain фиксированную часть формируют транзакции, включаемые в блок, хэш предыдущего блока и несколько служебных параметров, а переменную – специальное поле в заголовке. (Естественно, вычислитель волен модифицировать и любые другие доступные параметры блока, если при этом блок остаётся в рамках протокола.)

Узлы должны быть как-то мотивированы, чтобы тратить электричество на вычисление блоков. В сети Биткоин такой мотивацией служит то, что каждый новый блок содержит специальную транзакцию, начисляющую некоторое число биткоинов на произвольный адрес (в произвольный кошелёк), то есть вычисливший блок может забрать себе премию. Сейчас базовая сумма – 25 биткоинов (но это число будет уменьшаться). Кроме того, в премиумную транзакцию входят все вознаграждения (комиссии) за проведение транзакций: в системе существует механизм добровольного начисления части биткоинов, переводимых в рамках транзакции, тому, кто такую транзакцию включит в блок, вошедший в blockchain (это своего рода сбор – комиссия, стимулирующая оперативную обработку транзакции).

Упомянутый порог, задающий критерии поиска хэша, определяет сложность вычислений, то есть то, сколько вариантов заголовка блока нужно будет перебрать, чтобы блок мог быть включен в главную книгу, в blockchain. Отмечу, что тут не идёт речи о решении некоторой “головоломки”, как об этом часто пишут. Используется простой перебор. Из-за математических свойств хэш-функции, процесс имеет все черты лотерии: теоретически, можно угадать нужный хэш с первой попытки, ну, или со второй; вероятность угадать растёт с ростом числа попыток. Чем больше попыток делается в единицу времени, тем больше шансов “выиграть” блок на заданном промежутке времени. Число попыток определяется доступной вычислительной мощностью, скоростью перебора хэшей. Поэтому для максимизации прибыли максимизируют именно вычислительную мощность.

Здесь мы подошли к первому расхожему мифу, связанному с биткоинами – он гласит, что “биткоины вычисляют на компьютере”. Биткоины не вычисляют, вычисляют хэши блоков, но новые биткоины появляются в системе вместе с каждым новым блоком, строго определёнными порциями. Согласно протоколу, число новых биткоинов будет уменьшаться с ростом количества блоков и однажды станет равным нулю. С этого момента, – а наступит он нескоро: примерно в 2140 году, если биткоины ещё сохранят хождение, – премия за вычисление блока будет формироваться исключительно за счёт сборов с транзакций. Неподалёку от первого мифа находится миф второй: каждый следующий биткоин вычислять всё сложнее, поэтому на вычисление последнего биткоина потребуются все ресурсы мира (или даже вселенной). Это не так: биткоины вводятся в оборот в заданных протоколом объёмах. Сеть подстраивает свою работу таким образом, чтобы вычислять определённое количество блоков за заданный интервал времени, поэтому биткоины будут поступать, вплоть до последнего, по расписанию, вне зависимости от того, насколько сложно вычислить очередной блок.

А сложность вычисления блоков действительно изменяется. Дело в том, что число узлов, вычисляющих блоки за биткоины – так называемых “майнеров” (от англ. mining – добыча), сейчас постоянно растёт. В погоне за прибылью растёт и вычислительная мощность каждого узла. Таким образом, если бы сложность не ограничивалась, то блоки сейчас вычислялись бы с огромной скоростью, что не предусмотрено протоколом. Для поддержания скорости поступления блоков на более или менее стабильном уровне (целевым значением служит 2016 блоков за 14 суток) и регулируется сложность: то есть, пороговое значение хэш-функции сдвигается, обычно в сторону увеличения сложности (увеличения количества начальных нулей). Так компенсируется возросшая мощность сети.

Так как ключевое значение имеет последовательность блоков, то каждый следующий блок содержит хэш предыдущего блока, выстраивается цепочка. Для того, чтобы заменить какой-то из блоков, сохранив целостность blockchain, потребуется заново вычислить все последующие блоки. Это важный момент, защищающий систему от ряда атак. В процессе генерации blockchain может ветвиться. Например, такое ветвление происходит, если два “узла-майнера” практически одновременно вычислили очередной блок. Согласно протоколу, “узлы-майнеры” должны добавлять свои блоки в ту ветку, которая имеет большую суммарную сложность (в большинстве случаев этому соответствует большее число блоков в ветви). Из двух одинаковых блоков узлы могут выбрать какой-то один и продолжить строить blockchain от него, обозначив главную ветку. Таким образом “ответвления” достаточно оперативно удаляются из цепочки, а потраченные на их вычисление ресурсы теряются. Транзакции, не попавшие в основную ветвь, должны быть обработаны заново, в составе нового блока. Одним из эффектов подобной особенности протокола является то, что с уверенностью о подтверждении транзакции можно сказать лишь после того, как соответствующий ей блок опустился в цепочке на достаточную глубину (например, в пять-шесть блоков). Транзакции, попавшие в самый верхний блок, могут быть быстро отменены с весьма заметной вероятностью. Так как скорость добавления новых блоков строго ограничена, гарантированное проведение транзакции в биткоинах всегда будет занимать заметное время (до часа и даже более).

Blockchain tree
Ветвление blockchain.

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

Биткоины и blockchain

Blockchain ведётся от изначального блока. Это так называемый Genesis Block с особыми свойствами. Первые биткоины были введены в систему разработчиком протокола Сатоси Накомото, при помощи первой программы-клиента. Собственно, деятельность сети Биткоин началась с того момента, как появилась первая программа-клиент, а не с момента разработки протокола. Это логично, так как для использования биткоинов требуется хотя бы несколько узлов.

На настоящий момент blockchain включает более 276 тыс. блоков. Технически blockchain может быть представлен в виде файла, размер которого по нынешним меркам не так уж велик – около 12 Gb. Отмечу, что для проверки конкретных транзакций не обязательно обрабатывать все “исторические” транзакции в blockchain: протокол позволяет провести ряд оптимизаций, поэтому транзакции успешно обрабатываются сотнями.

“Майнинг” и пулы

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

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

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

Тем не менее, идущая сейчас гонка производительности “майнеров” закономерно движется в направлении снижения потребляемой электрической мощности в рассчёте на вычисление одного хэша. Самые современные высокопроизводительные устройства добычи биткоинов – это специализированные вычислители, построенные на особых, заказных чипах (ASIC – Application-specific integrated circuit), сконструированных именно для вычисления хэшей заголовков блоков blockchain. Такой майнер содержит набор микросхем, работающих параллельно, и позволяет перебирать хэши со скоростью, не сравнимой с другими решениями. Заявлены “майнеры” с производительностью в несколько “терахэшей” (1012 вычислений значения хэша блока) в секунду. Объявленная стоимость таких устройств – несколько тысяч долларов. Потребляемая мощность (опять же, заявленная производителями) – один-два киловатта. Ни для каких задач, кроме вычисления блоков, такой вычислитель не годится. Поэтому, в частности, неверно сравнивать мощность сети Биткоин с мощностью мировых суперкомпьютеров – последние являются достаточно универсальным устройствами, в отличие от Биткоин, где решается одна узкоспециальная проблема.

С этим аспектом связан ещё один миф о биткоинах: якобы, сеть обладает огромной “криптографической мощностью” и может решать какие-то задачи из области криптоанализа. В реальности сеть Биткоин вычисляет лишь значения SHA-256. Причём, для “вложенной” функции: SHA-256(SHA-256(M)), где M – заголовок блока. Заголовок блока имеет фиксированную структуру, поэтому нет возможности даже перебирать заданные тексты, сколь-нибудь отличающиеся от этой структуры. Более того, в сети нет центрального распределения задач, каждый считает, что хочет, а это делает невозможным координацию использования мощностей.

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

Существует развитая субкультура по размещению задач “майнинга” на мощностях, которые либо простаивают, либо за них платит кто-то другой, а не разместивший задачу. Возможны варианты с использованием ботнета, в который входят заражённые специальным зловредом пользовательские компьютеры, оснащённые игровыми видеокартами. Зловред использует видеокарту тогда, когда ничего не подозревающий владелец компьютера не играет. Скрипты добычи внедряются на взломанные сервера, доступные в Интернете, и решают блоки на их мощностях, иногда отъедая существенную часть ресурсов процессора.

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

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

Анонимность биткоинов

Как я писал ранее, сеть Биткоин не гарантирует анонимности пользователям. Все транзакции по всем биткоин-адресам открыты для публичного просмотра. Поэтому утверждение о том, что платежи в биткоинах анонимны – это ещё один миф. Анонимны платежи наличными деньгами, но не биткоинами. Сеть Биткоин стремится к сохранению приватности пользователей, то есть в протоколе не заложены специальные механизмы идентификации личности в момент предоставления доступа к счетам. Не более того. Гарантии анонимности здесь нет.

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

Биткоины и сильный игрок

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

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

Интересно, что держатель большей части мощности сети не может просто остановить вычисление блоков на своих мощностях: в таком случае он потеряет всякий контроль над сетью. Сложность через некоторое время автоматически снизится, а оставшиеся “узлы-майнеры” продолжат наполнять blockchain транзакциями. Однако, можно поставить цель не контролировать сеть, а помешать её работе. Тогда сильный игрок может, например, намеренно вызывать ветвление blockchain, включая в свои блоки минимум транзакций и придерживая вычисленные блоки до определённого момента “в рукаве”. Тем самым, вычислительная работа добросовестных участников сети будет сводиться на нет, а проведение платежей катастрофически замедлится. Возможны и другие варианты атак.

Сильным игроком в рамках протокола Биткоин оказывается тот, кто может очень быстро вычислять значения SHA-256. Вовсе не обязательно, чтобы этот игрок ещё и оптимизировал своё “потребление электричества”, максимизируя потенциальную прибыль – всё зависит от задач, которые перед ним стоят.

Сценарии развития

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

Есть более захватывающие сценарии. Например, если вдруг выяснится, что сеть Биткоин уже захватила какая-то организация, часть сообщества может уйти “в другую ветку”, вплоть до того, что разветвят существующий сейчас blockchain. Последний вариант, впрочем, скорее всего приведёт к краху.

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

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

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

Некоторое время назад люди, наделённые технократическим чувством юмора, запустили сайт directory.io, на котором “опубликовали” все секретные ключи сети Биткоин, со ссылками, ведущими на описания соответствующих биткоин-адресов. Так как многие пользователи не понимают принципов работы биткоинов, возникла нездоровная шумиха, а курс биткоина упал. Между тем, валидным секретным ключом в Биткоин является практически любое 256-битное число, поэтому разработчикам сайта ничего не мешает просто вычислять эти ключи влёт, небольшими порциями. Именно поэтому слово “опубликовали” пару предложений назад стоит в кавычках: перебрать на современном вычислительном оборудовании подряд все секретные ключи, а их около 2256, можно, но на это потребуется слишком много времени, настолько много, что даже сто миллиардов лет покажутся мгновением. Подумайте сами, если вы способны планировать свою деятельность на столь долгий срок, то зачем вам биткоины?

Адрес записки: https://dxdt.ru/2013/12/24/6450/

Похожие записки:



Далее - мнения и дискуссии

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

Комментарии читателей блога: 3

  • 1 <t> // 25th December 2013, 17:43 // Читатель Alex написал:

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

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

  • 2 <t> // 27th December 2013, 07:34 // Читатель Brakhma написал:

    Спасибо за статью.

  • 3 <t> // 28th December 2013, 10:25 // Александр Венедюхин:

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

    Комиссию можно увеличивать.