Anton Kovalenko

6myths
Login

Мифы о том, что помешает биткойну стать деньгами

Непосредственным поводом для моих рассуждений стала статья Алексея Маланова «Шесть мифов о блокчейне и Биткойне, или Почему это не такая уж эффективная технология». В разработке находится «рассказ о 12 причинах, по которым неразумно отвечать на нумерованный список мифов нумерованным списком опровержений».

Между прошлым и будущим

По масштабам, принятым в мире «информационных технологий и инноваций», блокчейн — технология глубокого прошлого.

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

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

Не откажу себе в удовольствии процитировать:

Три причины, по которым у канализации нет будущего

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

Восемь заблуждений о дизель-генераторах

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

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

Пять недостатков HTTPS/SSL/TLS

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

Идеи наших «иммигрантов из прошлого» бывают разного качества: переплетены те из них, к которым подошло бы выражение "wrong on so many levels", те, которые очевидны и общеприняты, те, которым есть очевидно лучшие альтернативы, а также те, в которых действительно есть свежесть взгляда, обличающая заблуждения нашего времени с точки зрения самоочевидных истин другой эпохи. Половина причин, по которым «автомобиль не масштабируется», будут близки сердцу современного урбаниста независимо от того, насколько хромает обоснование в технических деталях. Ожидаемые последствия применения факс-машин во всемирном масштабе — повод для серьёзной богословской, философской и исторической дискуссии, которая по-настоящему в нашем современном мире только начинается. Технически верное, но экономически абсурдное рассуждение о бесполезной ресурсоёмкости TLS сочетается с философским прозрением проблем доверия, возносящим нашего участника экспедиции выше многих современных IT-специалистов.


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

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

В основном я буду обсуждать именно биткойн и (изредка) ту цепочку блоков, которая формируется в процессе его использования (the blockchain). Термин «технология блокчейн» является первейшим признаком венчурной лапши; если статья Алексея Маланова удержит хоть одного человека от вступления в этот чудесный мир, нетто-польза её будет несомненна.


Масштабирование, или These Diamonds Are Too Small

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

Рассмотрим два утверждения:

Я выделил курсивом те части утверждений, которые слишком сложны для технического обсуждения в рамках этого текста; я предлагаю принять их for the sake of argument, пока мы обсуждаем проблемы масштабирования.

Важно понять взаимосвязь этих утверждений. В настоящее время существует общепринятое (среди участников сети) ограничение на скорость возрастания объёма блокчейна, которое эквивалентно

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

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

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

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

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

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

Интересно замечание автора о блокчейне (a blockchain) криптовалюты Ethereum, размер которого растет очень быстро из-за возрастающего числа транзакций. Решение, принимаемое разработчиками (допустить быстрый рост блокчейна в пользу дешёвых транзакций) и одобряемое участниками сети, представляется автору неизбежным следствием популярности или непопулярности некоторой криптовалюты в качестве платёжной системы.

Философия бессмысленных вычислений

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

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

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

Энергозатраты на эту деятельност full node ничтожны, и беспокойство о них вполне заслуживает сравнения с беспокойством о TLS, сажающем батарейку смартфона — с тем же самым контраргументом: проверка проводится узлом самостоятельно именно для того, чтобы он мог доверять результату проверки.

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

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

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

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

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

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

Задача же («головоломка») построена так, что предъявленное решение является легко проверяемым доказательством затраченной вычислительной мощности.

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

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

Атака 146%

Каждый блок в the blockchain, помимо решения упомянутой «головоломки», содержит указание на предыдущий блок, которое подделать «приблизительно невозможно» (в области повышения вычислительных мощностей ловить вообще нечего, а в области теоретико-числовых прорывов нет ничего похожего на решение). Каждая транзакция в блоке снабжена доказательством принадлежности расходуемых биткойнов владельцу адреса, которое подделать… в диапазоне от «приблизительно невозможно» до «приблизительно невероятно» (последнее справедливо для адреса, для которого опубликован публичный ключ ECDSA — при грамотном использовании существующего софта средства на вашем кошельке не будут находиться на таких адресах; взлом же ECDSA туманно маячит на горизонте квантовых вычислений). Сто процентов майнеров, сговорившись, не смогут «напечатать» один биткойн «из ничего» за пределами фиксированного вознаграждения за найденный блок.

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

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

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

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

Регулярно встречается ситуация, когда два узла находят новый блок почти одновременно; это создаёт «боковую ветку» размером в один блок без нарушения связности сети. Такие блоки можно увидеть на https://blockchain.info/orphaned-blocks.

Спутниковая трансляция Blockstream резко снижает вероятность необнаруженного нарушения связности, поэтому можно ожидать, что единичные orphaned blocks — всё, что мы можем наблюдать в жанре «альтернативной истории the blockchain».

Итак, что же такое «атака 51%»?

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

Для атаки необходимо построить альтернативную майнинговую сеть, которая будет в изоляции от основной сети добывать блоки, создавая альтернативную историю транзакций (правильных, валидных транзакций! никаких "переводов с чужих адресов"). В какой-то момент надо воссоединить альтернативную сеть с основной, и тогда основной сети придётся принять альтернативную историю в качестве the blockchain.

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

Экономически-мотивированная атака

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

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

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

Политически-мотивированная атака

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

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

Централизация майнинга

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

Что же обычно понимается под централизацией майнинга? Реконструирую общепринятое понимание:

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

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

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

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

Итак, у нас есть три аргумента в пользу реалистичности атаки:

Им противостоит, пожалуй, единственный вид децентрализованности, который имеет значение (и по-прежнему имеет место в области майнинга):

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

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

Псевдонимность и анонимность

Fungibility is in the eye of the acceptor. Биткойны не пахнут и не делятся на «грязные» и «чистые» только благодаря тому, что принимающая их сторона не считает нужным делать такое различие. Существуют опасения (а у кое-кого — надежды), что это свойство биткойнов будет потеряно из-за давления на участников рынка.

Пример непроизвольного нарушения privacy, приведённый Алексеем Малановым, не вполне реалистичен. Программные инструменты для получения, хранения и отправки биткойнов по возможности предотвращают повторное использование адресов (не только по соображениям privacy — см. выше про ECDSA). В то же время, deniability таких результатов чрезвычайно велика даже при текущих обстоятельствах.

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

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


© 2017 Anton Kovalenko, CC-BY-SA-3.0 для верующих в копирайт, public domain для остальных.

GPG fingerprint: DA7C9898E4E180C92E1410E384F8B84F2FA2CEB3

Написать: anton@sw4me.com

Чаевые: 1AXQymrA9XZgwEF1eJXjYNHRthVNWubeXe [link] [QR]