Сергей Журавлев
6
All posts from Сергей Журавлев
Сергей Журавлев in Сергей Журавлев,

3 века денег: наличные, банки, криптовалюты, ч.3

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

Проверка подлинности: Истина всегда то, что считает таковой большинство

Для подтверждения «правильности» транзакции требуется некое «консенсусное» включение её в общедоступную базу данных (леджер), состоящую из последовательности «пачек» (блоков по 1МБ размером, что может включать в себя порядка 2 тысяч, что ограничивает пропускную способность сети ~300 тыс. операциями в сутуки) ранее одобренных транзакций, выстроенных в цепочку (блокчейн), начиная с генезис-блока и доступную всем желающим. (Первое, что начинает делать приложение Bitcoin Core – пытается скачать на ваш компьютер 65 гигабайтов записей обо всех проведенных на сегодня операциях с биткойнами; в лайт-версиях «кошельков», предназначенных для смартфонов, эта функция – участия их в подтверждении транзакций (майнинге) – отключена.)

Простоя по задумке и чрезвычайно изящная по реализации идея состоит в том, чтобы выбирать следующий блок «правильных» транзакций случайным образом из «достаточно большого» числа сформированных кандидатов, так, чтобы мошеннику, решившемуся на «двойное расходование», преодолеть этот барьер вычислительной сложности было в конечном счете не по силам. Реализовано это так.256-битного) хеша блока из хешей всех входящих в него транзакций и хеша предыдущего блока, подбирая дополнительное (само по себе бессмысленное) число (nonce), так чтобы результат начинался, грубо говоря, с определённого количества нулей. Решить эту задачу не перебором невозможно. Целевое число, меньше которого должен оказаться хеш валидного блока, автоматически корректируется раз в 2 недели (через каждые 216 блоков) так, чтобы среднее время его подбора составляло около 10 минут независимо от суммарной вычислительной мощности участников. (Так, в период с 1 марта 2014 по 1 марта 2015гг. среднее число перебираемых за эти 10 мин. нонсетов для создания нового блока выросло с 16.4 до 200.5 квинтиллионов.)

Поскольку пользователи, проверяющие транзакции и пытающиеся собрать блоки для добавления в цепь, работают независимо, вполне нормальна ситуация, когда сразу 2 юзерам более-менее одновременно удалось подобрать валидные блоки. Цепь блоков на актуальном конце начинает ветвиться. т.е. blockchain в норме представляет собой blocktree – не цепь, а дерево с постоянно отрастающими и засыхающими ветками (т.наз. форками – досл. вилка).

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

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

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

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

«Адам Смит был неправ…» (ц, к/ф Игры разума)

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

На той же идее – постоянно «голосующего» тратой своих энергоресурсов для достижения собственных эгоистических целей большинства, и попутно - отсекающего этим поползновения жульнического «меньшинства», замешаны и все альткойны, предлагающие обычно незначительные вычислительные модификации исходного протокола Биткойна. Напр., в Лайткойне достаточно ресурсоемкая процедура 256-битного хеширования заменена более легкой. Кое-где вместо «бессмысленного» перебора сотен квинтильонов хэшей блоков для поиска попадающего в мишень, решается «полезная», но столь же трудоемкая задача типа разложения больших чисел на простые множители. В протоколе Ethereum генерация и подтверждение транзакций (включение их в блокчейн) может быть поставлено в зависимость от выполнения определенных условий (смарт-контракта), например, наступления страхового события, и вместо лотереи (proof-of-work, он же майнинг) используется механизм установления консенсуса на основе процента владения, которое имеют заинтересованные стороны (proof of stake) и т.п.

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

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

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

В утешение можно заметить, что установление «тоталитарного режима» в сети Блокчейн может опираться только на грубую вычислительную силу (>50% мощности всех участников), создание которой в настоящий момент весьма затратно и экономически неэффективно. (Проблема масштабируемости.) В целях защиты от «атаки 51%» размер блока в Bitcoin Core остаётся ограниченным 1 мВ, что пока позволяет поддерживать приемлемую децентрализацию майнинга, но создает проблему ограничения числа транзакций в единицу времени (примерно 3.3/сек. = 2k/600сек.). Для сравнения - Visa проводит до 22 тыс. транзакций в сек. (и потенциальна способна выдержать до 56 тыс./сек.). Расширение пропускной способности биткойн-транзакций, например, до 10 тыс./сек. потребовало бы размера блоков по 1,6 гB, что, помимо вытеснения относительно маломощных майнеров, затруднило бы и распространение столь крупных блоков по узлам сети.

В социуме положение в этом смысле гораздо печальнее, и малочисленной кучке мошенников обычно без особых усилий удается установить тоталитарный контроль над многомиллионными массами, прибегая для защиты от «атак» к одной и той же, отработанной веками схеме: (i) поддержание этих масс в невежестве, культивируя «традиционные ценности» (ii) постоянная промывка мозгов; (iii) жесткое цензурирование информации (ц, к/ф «Враг», оно же Ж. Сарамаго «Двойник»).

Полезные ссылки:

0. Информация о текущем сосянии биткойн-блокчейна и поиск в нём, (последних) добытых блоках, обменных курсах, и т.п.
1. «Почти официальный» сайт сообщества: введение, FAQ, скачать приложения https://bitcoin.org/ru/
2. Русская страничка в фейсбуке https://www.facebook.com/bitcoinru/

3. Bitcoin Wiki, англоязычная и русское зеркало, а также русский почти аналог
4. Как протокол Биткойн на самом деле работает, by Michael Nielsenon December 6, 2013. (неформальное, легко читаемое введение с небольшими неточностями).
5. Пара интервью о дальнейших приложениях и развитии протокола Биткойн 1, 2, а также старые, но возможно ещё не утратившие актуальность соображения Б. Делонга о возможностях «заякоривания» цен биткойнов.

ЖЖ