ВСТУПЛЕНИЕ

Книга Яна Прицкера переведена командой Bitcoin Translated и распространяется на безвозмездной основе. Тем не менее, вы всегда можете поблагодарить автора за его работу, например, через сервис Tippin.me, привязанный к его Твиттер-аккаунту. Команду, предоставившую перевод можно поблагодарить как через сеть лайтнинг, так и ончейн биткоинами. В формате электронной книги текст издан Анкап-тян. Её также можно поблагодарить различными способами, не сводящимися только к биткоинам.

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

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

Впервые я услышал о Биткоине в 2011 году на новостном сайте для ботанов slashdot.org. В то время цена биткоина взлетела до небес, раздувшись до размеров огромного пузыря и достигнув около 30 долларов за единицу (монету). Все, что я знал, было то, что какие-то люди в интернете пытались запустить какую-то одноранговую платежную систему. Не зная ничего о том, что это такое, как это работает или вообще что-то об инвестициях и рыночных циклах, я решил, что должен купить немного биткоинов так, на всякий случай. Для приобретения мне пришлось использовать ужасно выглядящий сайт под названием Mt. Gox. Эта биржа, занимавшаяся обменом долларов на биткоины, впоследствии обанкротилась.

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

В 2013 году я снова услышал о Биткоине. На этот раз шумиха в средствах массовой информации была громче, и теперь процесс покупки был намного более приятным. Появились такие приложения, как Coinbase, которые казались совершенно законными. Ситуация заметно улучшилась со времен Mt. Gоx. И я даже пришел к мысли, что Биткоин действительно может стать чем-то значимым.

На случай, если я окажусь прав, по-прежнему не владея достаточной информацией, я снова вложил деньги в покупку Биткоина в самый разгар роста его цены (около 1000 долларов за монету) и наблюдал, как мои инвестиции сокращались, пока он падал до 200 долларов за монету. На этот раз я решил, что Биткоин стоил слишком дешево, чтобы его продавать, и я оставил свои инвестиции в покое, поскольку я был по уши в работе над начальной стадией создания моего следующего стартапа: Reverb.com.

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

Стыдно признаться, что только летом 2016 года я, наконец, посмотрел свое первое видео о Биткоине Андреаса Антонопоулоса, которое и заставило меня серьезно задуматься над данной темой. Я начал задавать вопросы. Откуда взялся Биткоин? Кто его контролирует? Как он работает? Что такое «майнинг»? Какое влияние он окажет на мир? Я начал читать все, до чего мог добраться, слушая часы подкастов и просматривая видео каждый день в течение полутора лет подряд.

Наконец, в начале 2018 года, сразу после того, как Биткоин достиг очередного рекордного уровня около 20,000 долларов за монету, я решил оставить Reverb, чтобы помочь представить Биткоин миру всеми возможными для меня способами. Почему я оставил свой очень успешный стартап в пользу работы над Биткоином? Я считаю, что изобретение Биткоина — это то, что случается один раз в жизни; возможно, один раз в жизни нескольких поколений.

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

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

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

Мы также не собираемся концентрироваться на компьютерном коде, и для понимания этой книги не требуется никаких знаний в области компьютерных наук. Если вы хотите взглянуть на Биткоин сквозь эту призму, я рекомендую основополагающую работу Андреаса Антонопоулоса «Осваиваем Биткоин» и недавно выпущенное издание Джимми Сонга «Программируем Биткоин».

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

Мы будем последовательно двигаться шаг за шагом. Не имея ничего, кроме математического образования уровня старших классов, мы шаг за шагом пройдем процесс изобретения Биткоина. Я надеюсь, что эта книга предоставит вам достаточно начальной информации, чтобы отправить вас в путешествие по кроличьей норе под названием Биткоин. Итак, начнем!

Глава 1: ЧТО ТАКОЕ БИТКОИН

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

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

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

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

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

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

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

2. Группа взаимосвязанных компьютеров (сеть Биткоин с заглавной буквы Б), к которой каждый может присоединиться, запустив определенное ПО. Эта сеть служит для выпуска биткоинов, отслеживания их прав собственности и передачи их между участниками, не полагаясь на посредников, таких как банки, платежные компании и государственные структуры.

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

Биткоин — это сеть компьютеров с запущенным ПО Биткоин.

Мы подробнее остановимся на причинах появления Биткоина в следующем разделе.

Откуда он взялся?

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

11 февраля 2009 года Сатоши написал о первом прототипе Биткоина на онлайн-форуме для шифропанков, людей, неравнодушных к криптографии, конфиденциальности и свободе. Хотя это было не первое официальное объявление о релизе ПО Биткоина, оно хорошо описывает мотивы Сатоши, поэтому мы будем использовать его, чтобы заложить основу для нашего обсуждения.

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

“Я разработал новую P2P систему электронной наличности с открытым исходным кодом под названием Биткоин. Он полностью децентрализован, не имеет ни центрального сервера, ни доверенных сторон, потому что все основано на криптографических доказательствах, а не на доверии. [...]

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

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

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

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

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

— Сатоши Накамото

Какие проблемы он решает?

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

“Я разработал новую P2P систему электронной наличности с открытым исходным кодом…”

P2P (person-to-person) означает одноранговый и определяет систему, в которой один человек может взаимодействовать с другим без какого-либо посредника, на равных. Вы можете вспомнить технологии совместного использования файлов P2P, такие как Napster, Kazaa и BitTorrent, которые впервые позволили людям обмениваться музыкой и фильмами друг с другом без посредников. Сатоши разработал Биткоин, чтобы люди могли подобным образом обмениваться электронными деньгами без посредников.

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

“Он полностью децентрализован, не имеет ни центрального сервера, ни доверенных сторон …”

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

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

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

“… все основано на криптографическом доказательстве, а не на доверии.”

Интернет и, на самом деле, большинство современных компьютерных систем основаны на криптографии — способе сокрытия информации, так что только получатель информации может ее расшифровать. Как Биткоин избавляется от необходимости в доверии? Мы углубимся в это позже. Основная же идея заключается в том, что вместо того, чтобы доверять кому-то, кто говорит: “Я — Элис” или “У меня есть 10 долларов на моем счете”, мы можем использовать криптографическую математику, с целью изложить те же факты таким способом, чтобы получателю доказательства было легко их проверить, а злоумышленнику невозможно подделать. Биткоин использует криптографическую математику на всех этапах своего функционирования, чтобы позволить всем участникам проверять поведение остальных участников, не доверяя какому-либо центральному органу.

“Мы вынуждены доверять [банкам] нашу конфиденциальность, полагаться на то, что они не позволят похитителям личных данных опустошить наши счета.”

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

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

“Центральному банку необходимо доверие, чтобы валюта не подверглась девальвации, но история фиатных валют полна примеров нарушения этого доверия.”

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

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

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

Мы должны доверять нашим правительствам, что они не будут злоупотреблять печатным станком, но примеры нарушений этого доверия встречаются довольно часто. В таких автократических и централизованно спланированных режимах, как Венесуэла, где правительство не убирает палец с печатного станка, валюта стала почти бесполезной. Венесуэльский Боливар изменил свою стоимость от 2 боливаров за доллар США в 2009 году к 250,000 боливаров за доллар США в 2019 году. В момент написания этой книги Венесуэла находится в процессе краха вследствие крайне неэффективного управления экономикой со стороны правительства.

Сатоши хотел предложить альтернативу фиатной валюте, предложение которой всегда непредсказуемо увеличивается. Чтобы предотвратить обесценивание, Сатоши разработал денежную систему, в которой предложение ограничено и появится в обращении с предсказуемой и неизменной скоростью. Всего будет выпущен 21 миллион биткоинов. Учитывая, что каждый биткоин можно разделить на 100 миллионов единиц (которые сейчас называются сатоши), приблизительно к 2140 году в обращении будет 2,1 квадриллиона сатоши.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* * *

Биткоин не был изобретением, созданным в вакууме. В своей статье Сатоши упомянул несколько важных попыток внедрения подобных систем, включая b-money Вей Дая и Hashcash Адама Бека. Изобретение Биткоина стояло на плечах гигантов, но никто прежде не объединил все правильные кусочки, создав тем самым первую систему для выпуска и передачи действительно дефицитных цифровых денег без централизованного контроля.

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

1. Как создать одноранговую сеть, которая позволяет любому добровольно присоединяться и участвовать.

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

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

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

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

Давайте разберемся, как мы можем построить эту систему!

Глава 2: ОТКАЗЫВАЕМСЯ ОТ ПОСРЕДНИКА

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

Банки — это просто реестры

Как работает цифровой платеж, осуществляемый вашим банком, PayPal или ApplePay? Очень просто: эти посредники действуют как общеизвестные реестры, отслеживающие счета и переводы.

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

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

Банковский реестр

1. Элис: Кредит за наличный депозит + 2 доллара

2. Боб: Кредит за наличный депозит + 10 долларов

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

Банковский реестр

1. Элис: Кредит за наличный депозит + 2 доллара

2. Боб: Кредит за наличный депозит + 10 долларов

3. Элис: Дебит - 2 доллара

4. Боб: Кредит + 2 доллара

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

Проблема двойного расходования

Что произойдет, если Элис попытается снова потратить эти 2 доллара? Это называется проблемой двойного расходования. Элис подает запрос в банк, но банк говорит: “Извините, мы видим, что Вы уже потратили 2 доллара, чтобы заплатить Бобу. У Вас больше нет денег для отправки”.

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

Мы называем такую систему централизованной, потому что она имеет единую точку контроля.

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

Распределение реестра

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

Если у нас нет единого централизованного реестра, то реестр теперь, должно быть, принадлежит людям. Vive la révolution. Вот как это работает.

Сначала мы собираемся вместе и создаем сеть. Это просто означает, что у нас есть возможность друг с другом общаться. Допустим, мы обмениваемся телефонными номерами или аккаунтами Snapchat. Когда Элис хочет отправить деньги Бобу, вместо того, чтобы позвонить в банк, она говорит всем своим друзьям: “Я посылаю Бобу 2 доллара”. Все подтверждают эту транзакцию, отвечая: “Круто, мы поняли”, и записывают ее в свою собственную копию реестра. Теперь картина выглядит так:

У каждого есть копия реестра, к которой он имеет свободный доступ.

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

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

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

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

Давайте рассмотрим, как кто-то может попытаться нас обмануть.

Атака двойного расходования

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

Имея баланс в 2 доллара, Элис делает следующее:

Она отправляет свои 2 доллара Бобу, чтобы купить шоколадку. Теперь у нее должно остаться 0 долларов.

Дэвид, Ева и Филип вступают в сговор с Элис и не записывают транзакцию Элис Бобу в свои реестры. В их копиях Элис никогда не тратила свои деньги и у нее на балансе все еще 2 доллара.

Шарлотта — честный хранитель реестра. Она отмечает перевод Элис Бобу. В ее реестре у Элис — 0 долларов.

Генри был неделю в отпуске и не слышал ни об одной из этих транзакций. Он присоединяется к сети и запрашивает копию реестра.

Генри получает 4 фальшивых копии (Дэвид, Ева, Филип, Элис) и одну честную копию (Шарлотта). Как ему определить, какая из них настоящая? Не имея другого выхода, он доверяет большинству участников и, соответственно, принимает фальшивый реестр за правильный.

Элис покупает шоколадку у Генри за 2 доллара, которых у нее на самом деле нет. Генри принимает деньги, потому что, насколько ему известно, у Элис на балансе все еще 2 доллара в соответствии с реестром, копию которого он получил от остальных участников.

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

У Элис теперь — все шоколадки, а у всех остальных — большие сумки, полные поддельных денег.

Когда они пытаются потратить деньги, которые Элис им якобы прислала, Дэвид, Ева и Филип, которые контролируют бóльшую часть сети, отвергают эти транзакции, потому что они знают, что деньги изначально фальшивые.

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

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

Решение проблемы распределенного консенсуса

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

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

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

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

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

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

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

Заставить электорат голосовать за хранителей реестра по своему выбору.

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

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

Ошибочная идентификация и Сибил-атаки

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

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

Давайте устроим лотерею

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

Что, если бы мы проводили лотерею, где каждый раз для обновления записи в книге, случайно выбирали бы кого-то нового? Вот наш первый набросок проекта:

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

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

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

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

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

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

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

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

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

Глава 3: Proof of Work

Система лотереи, разработанная нами на данный момент, имеет две основные проблемы:

Кто будет продавать лотерейные билеты и выбирать выигрышные номера, если мы уже определили, что у нас не может быть какого-либо центрального доверенного органа?

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

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

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

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

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

Proof of Work: энергоемкая асимметричная головоломка

Элегантное решение всех этих трех проблем называется Proof of Work (доказательство проделанной работы). На самом деле оно было изобретено еще до Биткоина в 1993 году. Полное объяснение того, как работает эта лотерея является, вероятно, самой сложной составляющей процесса понимания Биткоина. Поэтому мы посвятим следующие несколько глав подробному рассмотрению данного решения.

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

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

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

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

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

Находится ли число, которое вы указали, в диапазоне целевых чисел, о котором все заранее договорились?

Действительно ли это число получено путем математической обработки валидного набора транзакций?

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

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

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

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

Система Proof of Work имеет важное свойство: она формирует связь электронной системы с ресурсами из реального мира. Таким образом, если вы хотите атаковать сеть, угрожая некоторым ее участникам, вам придется не только прийти к ним домой и получить контроль над их компьютером, но и оплатить их счета за электричество.

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

Хеширование

Асимметричная головоломка Proof of Work Биткоина включает использование хеш-функции. Из базовой алгебры мы знаем, что функция — это математическая формула, в которую вы вводите входное (input) значение x и получаете выходное (output) значение f (x). Например, функция f(x)=2x принимает любое значение и умножает его на два. Таким образом, ввод x=2 дает нам вывод f (x)=4.

Хеш-функция — это специальная функция, в которую вы вводите любую строку букв, цифр или других данных, например, “Привет, Мир”, и получаете гигантское случайное число:

1111811713258219242661329357757490458455

4890446643616001126584346633541502095

Конкретная хеш-функция, которую я использовал для хеширования “Привет, Мир” называется sha256. Именно ею и пользуется Биткоин.

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

Хеш-функция sha256 имеет следующие полезные свойства:

Результат детерминирован: для одного и того же ввода вы всегда будете получать один и тот же результат.

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

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

Найти два разных набора входных данных, хеширование которых приведет к одному выходу, невозможно.

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

Выходные данные всегда имеют определенный размер (256 бит для sha256).

Быстрое руководство по битам

Система исчисления, которую вы знаете и любите, состоящая из чисел от 0 до 9, называется десятичной, потому что она имеет десять цифр. Компьютеры, с другой стороны, предпочитают иную систему исчисления, состоящую только из единиц и нулей, которые указывают на наличие либо отсутствие электрического сигнала. Эта система исчисления называется двоичной или бинарной.

Десятичная система состоит из цифр от 0 до 9. Если вы будете использовать только одну цифру, вы сможете создать десять различных чисел от 0 до 9. Если вы используете две цифры, вы можете представить 10 x 10 = 100 различных чисел: 00, 01, ... до 99. При использовании трех цифр у вас может быть 10 x 10 x 10 = 1000 чисел: 000, 001, ... до 999.

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

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

Если 1 бит может представлять два значения, то два бита могут представлять 4 значения: 00, 01, 10, 11. Вы можете рассчитать это, умножив 2 x 2, поскольку каждая цифра может иметь два значения.

Три бита могут представлять 2x2x2=2e3=8 значений: 000, 001, 010, 011, 100, 101, 110, 111.

Бинарное число длиной в N бит может представлять 2eN различных значений.

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

2e256=

115,792,089,237,316,195,423,570,985,008,687,907,

853,269,984,665,640,564,039,457,584,007,913,129,639,936

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

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

Давайте обработаем некоторые строки при помощи хеш-функции

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

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

"Привет, мир!"

9A0AF011605A6AB9022F248FB797064A42782210AC91E834348B3EF089313E5F

"Привет, мир!!"

90B12CFD373CC519013169EF6088F986FC799998598C846AB77E3CAABDB7023E

Никто, даже компьютер, не может воссоздать исходную информацию, основываясь лишь на полученном случайном числе. Если вы хотите поиграть с sha256, вы можете попробовать сделать это на сайте https://passwordsgenerator.net/sha256-hash-generator/.

Хеширование с целью выиграть лотерею Proof of Work

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

Система лотереи работает так:

Элис объявляет, что хочет отправить Бобу 2 доллара.

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

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

Если полученное число больше целевого числа, то они снова хешируют те же данные, добавляя другие случайные одноразовые числа: “Элис дает 2 доллара Бобу, нонс=12345”, затем “Элис дает 2 доллара Бобу, нонс=92435”, затем “Элис дает 2 доллара Бобу, нонс=132849012348092134” и т. д., пока итоговое хеш-число не окажется меньше целевого числа.

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

Это базовая математика: нам подходят 100 из 1000 возможных чисел или 100/1000 = 10% хешей, которые меньше целевого числа. Поэтому, если вы хешируете какую-либо строку и ваша хеш-функция может выдать 1000 различных выходов, вы ожидаете получить хеш, который находится ниже целевого значения 100, примерно в 10% случаев.

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

Привет всем!

Я взял транзакции: “Элис отправляет 2 доллара Бобу, Шарлотта отправляет 5 долларов Элис”.

Я добавил однократно используемое число “32895”.

Итоговый хеш получился равным 42, что меньше целевого числа 100.

Вот мое доказательство выполненной работы: данные транзакции, нонс, который я подобрал, и хеш, который был создан на основе этих вводных данных.

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

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

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

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

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

Глава 4: МАЙНИНГ

Майнинг — это процесс розыгрыша лотереи Proof of Work. “Джек-пот” в каждом раунде — право добавить свой блок в реестр сети Биткоин. Вот как это работает:

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

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

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

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

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

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

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

Вот так. Мы создали наш первый блок и первую запись в наш реестр.

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

Как производятся новые биткоины?

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

Если вернуться к нашему примеру, на самом деле происходит то, что Элис отправляет Бобу 2 биткоина, объявляя, что она переводит биткоины, которые зарегистрированы под ее “учетной записью”, Бобу. Затем кто-то выигрывает лотерею Proof of Work и получает возможность записать ее транзакцию в реестр.

Но откуда Элис взяла эти 2 биткоина? Откуда появился первый биткоин, и как кто-то мог обзавестись монетами до того, как появились места для их покупки за традиционную фиатную валюту, такую как доллар США?

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

Оказывается, именно процесс майнинга биткоинов, то есть процесс игры в лотерею Proof of Work и получения прав на добавление информации в реестр, является тем самым процессом, в результате которого производятся новые монеты. Создание валидного блока требует сжигания большого количества энергии для нахождения числа, которое выиграет в лотерею. Найдя это число вы получаете право записать в этот блок и, следовательно, в реестр любые транзакции, о которых вам известно. Но у вас также появляется возможность записать в реестр особую дополнительную транзакцию, называемую транзакцией коинбэйс. Эта транзакция по сути гласит: “12,5 биткоинов было создано и передано майнеру Мэри, чтобы компенсировать все ее затраты на энергию, израсходованную на майнинг этого блока”.

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

Вознаграждение за блок

Победивший в очередном раунде лотереи может наградить себя небольшим количеством новых монет. Почему это именно 12,5 биткоинов, а не 1000? Почему победитель не может обмануть систему и начислить себе любую сумму?

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

Так как полный список правил консенсуса довольно развернутый, предлагаю обратить внимание на некоторые примеры:

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

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

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

Хеш блока Proof of Work должен быть ниже текущего целевого числа. Это свидетельствует о статистической невозможности майнинга этого блока любым другим способом помимо сжигания определенного количества электроэнергии.

Если Мэри майнит блок и решает вознаградить себя чем-то большим, компьютер другого пользователя отклонит этот блок как недействительный, потому что внутри клиентского программного обеспечения Биткоин, которое все запускают, есть фрагмент кода, который говорит: “Текущее вознаграждение за блок равно 12,5 биткоинам. Если вы видите блок, который дает кому-то больше, не принимайте его”.

Если Мэри попытается обмануть и создать недействительный блок, он не будет записан в чей-либо реестр. Вместо этого она просто потратит тысячи долларов на электричество, работая над чем-то никому не нужным: над подделкой. Это дает Биткоину неподдельную дороговизну (unforgeable costliness) — термин, предложенный пионером в области цифровой валюты Ником Сзабо в его эссе Shelling Out. Интуитивно мы знаем, что если бы деньги было очень легко подделать, они не были бы очень полезны в качестве денег. Биткоин на самом деле невозможно подделать, так как его можно проанализировать с помощью простой математической проверки.

Сатоши создал самый первый из когда-либо произведенных блоков — генезис блок, сгенерировав первые когда-либо произведенные биткоины. Исходный код является открытым, следовательно, любой может взглянуть на то, как Биткоин работает и подтвердить, что за кулисами не происходит ничего подозрительного. Даже Сатоши не мог произвести подделку, притворившись, что израсходовал необходимое количество электричества, хоть он и был создателем системы. Чтобы добыть первый блок он должен был провести миллиарды вычислений и сыграть в лотерею Proof of Work.

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

Халвинг

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

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

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

Награда за блок в 2008 году составляла 50 биткоинов, в 2012 году — 25, в 2016 году — 12,5. На сегодняшний день, 8 июня 2019 года, с начала истории Биткоина было добыто 579 856 блоков, и вознаграждение составляет 12,5 биткоинов за блок.

Через 50 144 блоков или примерно в конце мая 2020 года вознаграждение будет снижено до 6,25 биткоинов за блок, что приведет к уменьшению годового потока до приблизительно 1,8% от запаса. Десять лет спустя, после еще двух халвингов, будет добыто более 99% всех биткоинов, и будет производиться менее 1 биткоина за блок. Вы можете следить за ходом уменьшения вознаграждения за блок на сайте bitcoinblockhalf.com.

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

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

Управление выпуском и интервалом майнинга

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

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

Давайте снова обратимся к примеру, в котором существует только 1000 возможных хешей, а наше целевое число равно 100. Это означает, что в 10% случаев мы будем получать число, которое меньше 100 и находить блок.

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

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

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

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

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

Если меньше людей занимается майнингом, мы сталкиваемся с противоположной проблемой:

Биткоины создаются слишком медленно, что опять-таки противоречит графику выпуска.

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

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

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

Корректировки сложности: согласование целей

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

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

Напомню, что майнинг биткоинов — это лотерея, в которой мы пытаемся получить случайное число меньше целевого:

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

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

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

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

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

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

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

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

Это означает, что для любого из 2016 блоков мы точно знаем значение целевого числа. Это позволяет нам выяснить “магический” предел, который не должен превышаться хеш-кодом Proof of Work в выигрышном лотерейном билете для любого блока, произведенного за этот период.

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

Диаграмма ниже отражает скорость хеширования в виде линии, а сложность — в виде свечей. Сложность выглядит как лестница, потому что она корректируется с шагом в 2016 блоков. Обратите внимание, что каждый раз, когда скорость хеширования поднимается выше сложности, сложность повышается, чтобы догнать скорость хеширования. Когда скорость хеширования падает, как в период с октября по декабрь 2018 года, сложность снижается. Регулировка сложности всегда отстает от скорости хеширования в течение периода в 2016 блоков (две недели).

Скорость и сложность хеширования

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

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

Скорость хеширования и стоимость биткоинов в долларах США

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

Спекулянты покупают биткоин, потому что думают, что он растет в цене, повышая цену до $X.

Майнеры готовы нести затраты на оборудование и электричество вплоть до суммы в $X, чтобы попытаться добыть биткоин.

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

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

По прошествии 2016 блоков, повышенная скорость хеширования вызывает увеличение сложности.

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

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

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

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

Возвращаемся к первому пункту.

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

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

Характер корректировки сложности отторгает неэффективных майнеров в пользу тех, которые используют самую дешевую энергию и, соответственно, несут наименьшие эксплуатационные затраты. Со временем это вынуждает биткоин-майнеров переносить производство в более отдаленные уголки мира, используя источники энергии, которые не реализуют весь свой потенциал или не используются вовсе. Согласно отчету CoinShares** от 2019 года, примерно 75% майнинга биткоина используют возобновляемые источники энергии.

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

Комиссия и вознаграждение за создание блока

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

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

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

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

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

Другое снижение комиссии появилось благодаря группированию: биржи и другие крупные игроки в экосистеме начали объединять транзакции биткоинов для нескольких пользователей в одну транзакцию. В отличие от традиционного платежа в вашем банке или PayPal, который осуществляется от одного человека к другому, транзакция Биткоин может объединять большое количество вводов и производить большое количество выводов. Таким образом, биржа, которая должна отправить биткоин для вывода 100 людям, может сделать это за одну операцию. Это гораздо более эффективное использование пространства блоков, превращающее то, что якобы представляет собой лишь горстку транзакций биткоинов в секунду, в тысячи платежей в секунду.

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

Мы почти закончили изобретать все, связанное с Биткоином:

Заменили центральный банк распределенным реестром.

Учредили систему лотереи для выбора того, кто обновляет записи реестра.

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

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

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

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

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

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

Глава 5: ОБЕСПЕЧЕНИЕ БЕЗОПАСНОСТИ РЕЕСТРА

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

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

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

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

Напомним, что результат хеширования непредсказуем и напрямую зависит от входных данных. Итак, мы модифицировали хеши наших блоков, включив три разных типа входных данных:

Транзакции, которые мы хотим зафиксировать в реестре.

Случайное однократно используемое число (нонс).

Хеш предыдущего блока, который несет в себе отпечаток всей истории реестра.

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

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

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

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

Фактически, каждый новый блок повышает безопасность блоков, созданных до него, так как он увеличивает количество электроэнергии, необходимое для пересчета хешей Proof of Work для этой цепочки. На сегодняшний день большинство участников считают транзакцию в блоке, похороненном под 6 последующими, окончательной. Потребовалось бы огромное количество энергии, чтобы переписать последние шесть блоков, учитывая сегодняшнюю общую скоростью хеширования. А как насчет транзакций, находящихся на глубине 100 блоков? Забудьте об этом.

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

Противоречия блоков

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

Мы имеем дело со всемирной сетью. Люди по всему миру от США до Китая подключены к этой глобальной сети, и все они играют в лотерею Proof of Work.

Допустим, один из майнеров в Чикаго находит валидный блок. Он объявляет об этом в сети, и все компьютеры по всей Америке его принимают. Между тем, кто-то в Шанхае также находит блок в течение нескольких секунд после чикагского блока. Его соседи до сих пор не слышали об американском блоке — они сначала узнают о китайском блоке.

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

Сеть разделяется, будучи не в состоянии решить, какая цепочка блоков является правильной копией реестра, поскольку обе содержат валидные транзакции, которые связаны с историей во всех предыдущих блоках и обе цепи подкреплены Proof of Work. Это называется разделением цепи (на английском fork — прим. пер.). Вы не можете положиться на какой-либо центральный орган, который мог бы сообщить вам, какая из цепочек победит. Что делать?

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

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

Допустим, китайцы создают следующий блок. Их цепочка теперь на один блок опережает американскую и содержит наибольший объем Proof of Work. Когда они передадут эту информацию, американские ноды признают, что китайские ноды произвели более длинную цепочку, и проведут реорганизацию своей копии блокчейна (или реорг). Это означает, что они отвергнут один добытый ими блок в пользу двух китайских.

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

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

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

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

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

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

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

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

Единственная достоверная цепочка

Давайте вернемся к нашему примеру из главы 3, где Генри впервые присоединяется к сети Биткоин.

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

Некоторые из этих нод будут заведомо вредоносными и будут давать ему фальшивую копию реестра с неверными подписями для транзакций или поддельными и неправильно созданными биткоинами, которые не имеют валидных хешей Proof of Work. Эти копии будут отклонены, а тем нодам будет немедленно запрещено дальнейшее подключение к ноде Генри *.

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

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

Даже если Генри подключится к десяткам устаревших или недобросовестных нод и одной честной ноде, его программное обеспечение Биткоин распознает ту самую правильную копию. Именно она будет содержать наибольшее количество Proof of Work и состоять из валидных транзакций вплоть до генезис-блока. Важность этого нельзя недооценивать. Генри не нужно никому доверять; его нода выполнит все проверки, чтобы убедиться, что блокчейн, на который он смотрит, является единственной достоверной цепочкой.

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

Обратимость транзакций

Две конкурирующие цепочки обычно создаются случайно, и проблема быстро решается. Однако те, кто хочет атаковать сеть, могут воспользоваться консенсусом Накамото, при условии, что они контролируют более 50% хешрейта. Они могут создать самую длинную цепочку Proof of Work, содержащую транзакции на свой выбор, если они готовы потратить для этого достаточно энергии. Когда они транслируют эту цепочку, другие ноды примут ее как единственную достоверную. Это называется атакой 51%, поскольку требует контроля более половины хешрейта.

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

Блоки, созданные поверх блока, содержащего интересующую вас транзакцию, часто называют подтверждениями. Поэтому, когда вы слышите, что транзакция Биткоин имеет шесть подтверждений, это означает, что шесть блоков были добыты поверх нее. Если вы продаете цифровую книгу с минимальными затратами для себя как для продавца, вам будет достаточно лишь одного подтверждения или можно обойтись и вовсе без них; вы можете предоставлять ссылку для скачивания, как только увидите транзакцию в сети. Если вы продаете дом, возможно, вы захотите дождаться двенадцати подтверждений, что приблизительно равно двум часам майнинга. Чем дольше вы ждете, тем больше Proof of Work накапливается поверх блока, содержащего вашу транзакцию, и тем дороже становится процесс обращения транзакции вспять. Сегодня большинство людей принимают 6 подтверждений в качестве доказательства необратимости платежа.

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

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

Сегодняшние оценки показывают, что если бы в вашем распоряжении была энергия всей сети Биткоин (действительно щедрое предложение, поскольку вам бы довелось контролировать количество энергии, сопоставимое с потреблением страны средней величины), и все специализированное оборудование сети Биткоин, у вас все равно ушло бы больше года, на то, чтобы переписать всю историю цепочки. Вы можете изучить эти данные на http://bitcoin.sipa.be.

Глава 6: ФОРКИ И АТАКИ 51

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

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

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

Следующим этапом значительного роста эффективности майнинга стал переход от GPU-майнеров к специализированным интегральным микросхемам (ASIC). Это компьютерные чипы, которые выполняют только одну задачу: вычисляют хеш-функцию sha256 для Биткоина, ничего больше. Специализируясь на этом конкретном алгоритме, ASIC были в тысячи раз более эффективны, чем GPU для майнинга, и поднявшаяся сложность быстро сделала GPU убыточными, так же, как GPU сделали это в свое время с CPU. Гонка продолжается, и каждые несколько лет новое поколение устройств ASIC выводит из эксплуатации более ранние версии посредством существенного повышения эффективности.

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

Майнинг-пулы

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

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

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

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

Фактически, есть исторический прецедент, когда отдельные майнеры покидали пулы, если те становились слишком влиятельными. В 2014 году у Ghash.io было около половины всей майнинговой мощности сети. Майнеры увидели угрозу чрезмерной централизации и добровольно ушли в другие пулы.

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

Атаки 51

Централизация большой доли хешрейта вокруг майнинг-пулов вызывает опасения сообщества, так как есть вероятность, что несколько мощных пулов могут вступить в сговор с целью провести в сети атаку 51. Сегодня топ-5 известных пулов вместе контролируют более 50% от общей мощности хеширования. Давайте рассмотрим, как осуществляется такая атака и какие опасности она несет.

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

Для примера, давайте рассмотрим как выполняется простейшая атака 51:

Допустим, сеть в целом майнит со скоростью 1,000 хешей в секунду.

Вы оплачиваете электричество и кучу оборудования для майнинга, чтобы производить 2,000 хешей в секунду. Теперь у вас есть 66% от общего хешрейта сети (2,000 из 3,000 хешей в секунду).

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

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

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

Отправить немного биткоинов на биржу.

Обменять их на доллары США и вывести полученные доллары с биржи.

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

Вы переписали историю, и теперь у вас есть и биткоины и доллары США.

Энергопотребление сети Биткоин с нынешним хешрейтом сопоставимо со страной приличного размера. Приобретение достаточного количества оборудования и электроэнергии для выполнения подобной атаки является чрезвычайно дорогостоящим. Согласно оценкам экспертов, сегодня для выполнения атаки 51 на Биткоин вам потребуется около 700 тысяч долларов в час, и эта стоимость продолжает расти. Эта оценка также не учитывает реакцию честных майнеров на данную атаку, которая, вероятно, сделает ее еще дороже. Вы можете узнать стоимость атак на Биткоин и другие криптовалюты по адресу https://www.crypto51.app.

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

Но допустим, что некоторые злоумышленники с неограниченным финансированием, такие как правительство, решили это сделать и смогли произвести эту атаку, несмотря на все сложности. Теоретически, после этого сеть может адаптироваться путем перехода на другую функцию Proof of Work (не sha256). Это сделает все оборудование для майнинга Биткоин, используемое злоумышленниками, бесполезным, так как оно специализируется исключительно на хешировании по алгоритму sha256. Однако, изменение Proof of Work — это ядерный вариант, который сразу же выведет из игры всех честных майнеров. Тем не менее, сеть выживет и восстанет из пепла.

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

Вы не можете создавать монеты “из воздуха”, нарушая при этом график выпуска. Это нарушает правило консенсуса о вознаграждении за блок, и ваши блоки будут отклонены, даже если у них будет достаточно Proof of Work.

Вы не можете тратить монеты, которые вам не принадлежат. Вы не сможете предоставить действительную цифровую подпись, отсутствие которой также является нарушением правил консенсуса.

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

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

Глава 7: УЧЕТНЫЕ ЗАПИСИ, НЕ ИДЕНТИФИЦИРУЮЩИЕ ЛИЧНОСТЬ

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

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

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

Создание Биткоин-аккаунта

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

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

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

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

Давайте рассмотрим, как Элис отправляет монеты Бобу. Чтобы провести сделку, Боб генерирует пару ключей. Свой приватный ключ он хранит в секрете/сохраняет в тайне. А на основе хеша его публичного ключа, Боб создает Биткоин-адрес — большое число, которым он делится с Элис.

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

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

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

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

Адрес 12345, содержащий 2,5 биткоина, отправляет 2 биткоина на адрес 56789 и 0,5 биткоина обратно на адрес 12345 *

Затем она шифрует данную транзакцию с помощью своего приватного ключа и создает уникальную цифровую подпись.

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

Я отправляю монеты с адреса 12345

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

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

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

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

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

Возможно ли угадать приватный ключ?

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

Если бы у нас был 1-битный приватный ключ, это было бы равносильно тому, чтобы бросить монету один раз. Орел или решка, один или ноль? Ваш шанс угадать — один к двум.

Быстрый базовый обзор статистики: вероятность возникновения нескольких событий рассчитывается путем умножения между собой индивидуальных вероятностей каждого события. Если при подбрасывании монеты вероятность выпадения решки равна 1/2, то вероятность выпадения решки при подбрасывании двух монет подряд составляет 1/2 x 1/2 = 1/4 или 1 к 4.

Если бы вы пытались угадать результат 8 бросков монет подряд, вероятность успеха приравнивалась бы к одному из 2е8 исходов или один шанс из 256.

Автомобильный номерной знак имеет 6 букв и цифр. В английском языке — 26 букв и 10 цифр, так что всего 36 символов. Так как символов шесть, количество возможных номерных знаков = 36е6, так что ваши шансы угадать номерной знак моего авто — один к двум миллиардам.

Номер кредитной карты состоит из шестнадцати цифр. Каждая цифра может иметь 10 значений, а цифр — 16, так что ваши шансы угадать номер моей кредитной карты равны 1 к 10е16, то есть один к 10,000,000,000,000,000, или примерно один к десяти квадриллионам.

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

Один к 1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000

В приватном ключе — 256 бит, что составляет 2е256 или примерно 10е77. Угадывание всего ключа было бы сродни угадыванию определенного атома из всей Вселенной или выигрышу в лотерею Powerball 9 раз подряд:

Один шанс из 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936

Но что, если бы у вас был сверхмощный компьютер, который бы производил вычисления? Я не могу осветить эту тему лучше, чем пост на площадке Reddit: https://bit.ly/2Dbw9Qd, который я рекомендую прочитать полностью. Хотя он и технический, последний абзац хорошо иллюстрирует насколько сложно перебрать все возможные 256-битные ключи:

"Итак, если бы вы могли использовать всю планету в качестве жесткого диска, сохраняя 1 байт на атом, используя звезды в качестве топлива и циклически перебирая 1 триллион ключей в секунду, вам потребовалось бы 37 октиллионов (10е27) планет Земля для хранения информации и 237 миллиардов Солнц для питания устройства, способного на это, и все это заняло бы у вас 3.6717 окто-миллиарда лет”.

u/PSBlake на r/Bitcoin

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

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

Отслеживание остатков

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

В отличие от металлических монет, которые могут быть определенного номинала, например 10, 25, 50 центов и т. д., Биткоин делится на 100,000,000 единиц, называемых сатоши. Поэтому, в зависимости от того, какие номиналы вы получили на свои адреса, вам может потребоваться объединить монеты с нескольких адресов или разделить более крупный UTXO на меньшие части для отправки кому-либо еще. Рассматривайте это, как отправку пачки монет в машину, которая их расплавляет и чеканит новые монеты любого номинала. Кошельки, о которых речь пойдет ниже в этой главе, обычно управляют всем этим за кулисами, так что вы просто указываете сумму, которую хотите отправить.

Допустим, у Элис есть адрес, который содержит 1 биткоин. Она хочет отправить Бобу 0.3 биткоина. Она генерирует транзакцию, которая показывает ее адрес с одним биткоин-UTXO в качестве ввода и двух выводов: новый биткоин-UTXO номиналом 0,3 на адрес Боба и новый биткоин-UTXO стоимостью 0,7 обратно на свой собственный адрес в качестве сдачи. Сдача может быть отправлена на исходный адрес отправителя или, для лучшей конфиденциальности, можно отправить ее на новый адрес, который она генерирует налету.

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

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

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

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

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

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

Кошельки

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

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

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

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

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

Со временем в экосистеме Биткоин появилось несколько решений этой проблемы. В 2012 году для создания Иерархических Детерминированных Кошельков было предложено BIP32 (Предложение по улучшению Биткоина (БИП) — механизм для распространения идей о том, как улучшить Биткоин). Идея заключается в том, что, используя только одно случайное число, известное под названием сид (seed), мы можем непрерывно сгенерировать огромное количество пар ключей, представляющих Биткоин-адреса и привязанные к ним приватные ключи.

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

В 2013 году появился BIP39, чтобы сделать резервное копирование ключей еще проще. Вместо использования случайного числа ключи стали генерироваться из случайного набора человекочитаемых слов. Вот пример фразы сид-фразы:

witch collapse practice feed shame open despair creek road again ice least

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

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

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

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

Чтобы защититься от потери единственного приватного ключа, вы можете использовать схему мультиподписи 3 из 5. Это позволит вам получить доступ к средствам даже, если вы потеряете 2 ключа из 5 ключей и при этом иметь возможность разблокировать учетную запись. К примеру, вы можете хранить два ключа в разных местах, два — у разных доверенных, незнакомых между собой лиц и один — с помощью кастодиального (custody) сервиса, такого как BitGo. Подобные сервисы вместе с вами подписывают ваши транзакции, делая ваш Биткоин очень устойчивым к краже, при этом, защищая вас от потери ключей.

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

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

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

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

Глава 8: КТО УСТАНАВЛИВАЕТ ПРАВИЛА?

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

Распределенный реестр, копия которого хранится у каждого участника.

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

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

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

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

Программное обеспечение сети Биткоин

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

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

Биткоин — это протокол. В компьютерном программном обеспечении этот термин относится к набору правил, которым следует программное обеспечение. Однако, вы можете изменять ПО по своему усмотрению, и при этом продолжать следовать правилам, которых придерживаются все остальные. Когда мы говорим, что люди “запускают Биткоин-ноды”, мы имеем в виду, что они запускают программное обеспечение, которое понимает Биткоин-протокол. Это программное обеспечение может связываться с другими Биткоин-нодами, передавать им транзакции и блоки, обнаруживать другие ноды для взаимодействия и т.д.

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

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

Кто устанавливает правила?

Основополагающие правила сети Биткоин, запрограммированы в клиент Bitcoin Core. Но кто устанавливает эти правила? Почему мы говорим, что у Биткоина ограниченное предложение, если кто-то может взять и внести изменения в программное обеспечение и изменить лимит в 21 миллион биткоинов на 42 миллиона, например?

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

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

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

Давайте посмотрим на участников Биткоин-сети, которые действуют как сдержки и противовесы по отношению друг к другу.

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

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

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

Разработчики: программное обеспечение Bitcoin Core является самым популярным Биткоин-клиентом. Вокруг него сформировалась богатая экосистема из сотен лучших крипто-разработчиков и компаний. Проект Bitcoin Core проект очень консервативен, поскольку данное программное обеспечение поддерживает работу сети, которая в настоящее время обеспечивает безопасность более 100 миллиардов долларов. Каждая идея изменения проходит через процесс под названием “Предложение по улучшению сети Биткоин (BIP)”* , и каждое изменение тщательно рецензируется. Процесс подачи предложений и проверки кода осуществляется полностью в открытом виде. Любой может присоединиться, прокомментировать или представить собственный код. Даже если разработчики Core-клиента станут злоумышленниками или предложат обновление, которое не устроит большинство участников, то пользователи просто запустят другое программное обеспечение. Возможно, они останутся на старых версиях или начнут разрабатывать что-то новое. Из-за этого разработчики основного протокола должны предлагать изменения, которые были бы интересны и полезны участникам сети. В противном случае они рискуют потерять свой статус.

Форки, меняющие правила

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

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

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

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

Теперь давайте поговорим о том, как правила могут измениться. Преднамеренное разветвление или форк — это когда некоторые пользователи и/или майнеры решают, что они не согласны с текущими правилами сети Биткоин и что им необходимо изменить эти правила. Было продемонстрировано два типа форков, изменяющих правила: софт-форки – разделение сети с обратной совместимостью, и хард-форк– без обратной совместимости. Давайте рассмотрим, как это происходит в теории, а затем посмотрим на исторические примеры**.

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

12 сентября 2010 года в программное обеспечение было введено новое правило: блоки должны иметь размер не более 1 МБ. Это правило было введено для борьбы со спамом в блокчейне. До утверждения этого правила блоки любого размера были валидны. С новым правилом валидными стали только меньшие блоки, то есть были приняты новые правила. Если вы работали со старой нодой и не обновляли ее, то новые блоки меньшего размера все еще являлись валидными в рамках ваших правил, поэтому на вас это не повлияло.

Софт-форк — это безупречный способ обновления системы, поскольку он позволяет операторам нод постепенно, с течением времени, обновляться до нового программного обеспечения и делать это добровольно. Если они не обновятся, они все равно смогут, как и раньше, обрабатывать все входящие блоки. Абсолютная необходимость обновить ПО есть только у майнеров, потому что они должны начать производить блоки, используя новые правила. После того как майнеры поддержали "софт-форк 1мб", перенастроив свое оборудование согласно новым правилам, объем данных в каждом блоке стал не выше 1 МБ. В тоже время пользователи, использующие старые версии программного обеспечения, ничего не заметили.

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

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

На практике, изменения, вносимые посредством хард-форка, не происходят так гладко. В действительно децентрализованной анархической системе вы не можете заставить абсолютно всех начать подчиняться новым правилам. В августе 2017 года некоторые участники были недовольны тем, как развивалась сеть Биткоин в отношении дешевых переводов. Они считали, что для снижения комиссий за перевод необходимо увеличить объем данных, записываемых в каждый блок. В то время Биткоин следовал правилу, введенному софт-форком в 2010, которое гласило, что блоки должны быть не более 1 Мб. С таким методом решения проблемы было согласно далеко не все сообщество, поэтому сторонники увеличения блоков были вынуждены провести хард-форк и создать новую цепочку с блоками большего размера. Этот форк стал известен как Bitcoin Cash.

Хард-форк, не согласованный с консенсусом (такой как Bitcoin Cash), за которым не следуют все майнеры и ноды, создает новый блокчейн. У этой цепочки общая история с исходной цепочкой, включая существующий набор UTXO (остатки на счетах) до точки разветвления. Однако, начиная с точки разветвления, монеты, созданные в следствие хард-форка, больше не являются биткоинами, поскольку они не следуют правилам сети и, соответственно, не принимаются Биткоин-нодами.

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

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

Сегодня существуют десятки других ответвлений Биткоин, такие как Bitcoin SV (форк Bitcoin Cash), Bitcoin Gold, Bitcoin Diamond и Bitcoin Private. Все они имеют крошечную долю хешрейта оригинального Биткоина, низкую активность разработчиков и практически никакую активность в сети и рыночную ликвидность. Отсутствие ликвидности делает их главными целями для схем “pump and dump”***, что часто приводит к резкому скачку цен, за которым следует такое же впечатляющее и разрушительное падение. Многие из них подверглись взломам кошельков, атакам 51% и другим нападениям. Некоторые из них — чистой воды мошенничество или просто наживка для азартных игроков. Большинство из них имеют высокую степень централизации. На сайте forkdrop.io в настоящее время представлено 74 подражателя Биткоина.

Монеты из софт-форк могут быть обработаны более старыми нодами. Хард-форк создает новые обратно несовместимые UTXO, которые не будут приниматься старыми нодами.

Многие другие монеты используют подобный код, но начинают свои реестры с нуля, не наследуя набор UTXO Биткоина. Это такие монеты, как Litecoin или Dogecoin. Как правило, они не считаются форками Биткоина (не смотря на то, что они могут использовать тот же код), поскольку они не унаследовали историю балансов счетов Биткоин. Форк сети Биткоин не влияет на ограничение предложения биткоинов в 21 млн. монет. Представьте, что вы храните золото мира в супер надежно спроектированном Форт-Нокс, защищенном тяжеловооруженной охраной. Вы строите небольшую, плохо защищенную хижину и называете ее Форт-Нокс Лайт, защищая ее одним охранником. Вы красите несколько камней в золотой цвет и кладете их в лачугу. Затем вы объявляете миру, что “удвоили количество золота”, и безвозмездно раздали каждому держателю золота эквивалентное количество камней из своей лачуги.

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

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

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

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

Глава 9: ЧТО ДАЛЬШЕ?

Биткоин — MySpace криптовалют?

Почему я написал книгу о Биткоине, когда мог бы написать об экосистеме криптовалют в целом? Разве не существует тысячи других монет? Что делает Биткоин таким особенным, помимо того, что он является первой децентрализованной криптовалютой? Разве он не медленнее и не менее функционален, чем все новые конкуренты?

Этот вопрос часто задают люди, плохо знакомые с Биткоином. После понимания основ того, как работает Биткоин, возникает следующий логический вопрос: “технология блокчейн звучит интересно. Откуда мы знаем, что не появится лучшая версия Биткоина и не превратит его в MySpace мира криптовалют?”

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

Ров Биткоина намного больше, чем тот, что был у MySpace. Чтобы понять это, давайте рассмотрим, что необходимо конкуренту Биткоина, чтобы его вытеснить.

Быть более востребованными и ликвидными деньгами

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

Однако деньги так не работают. Если у вас есть 1 доллар, то вы можете обменять его на эквивалентное количество биткоинов либо другой монеты. Вы не можете хранить одни и те же деньги в обеих валютах одновременно, а должны принять осознанное решение продать одну валюту за другую. Теперь спросите себя: почему вы храните что-либо, кроме самой ликвидной, самой распространенной валюты? Ответ — исключительно из спекулятивных соображений. Если вы не сможете заставить всех окружающий экономических субъектов держать новую монету, эта монета не сможет стать доминирующей.

Ликвидность Биткоина намного выше, чем у конкурентов. На сегодняшний день рыночная капитализация Биткоина составляет около 160 миллиардов долларов, согласно https://messari.io/onchainfx. У следующего крупнейшего конкурента, Ethereum, рыночная капитализация составляет всего 30 миллиардов долларов. Но даже это не отражает фактической ликвидности, так как не учитывает, сколько вы могли бы реально продать, прежде, чем цена значительно упадет.

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

Обеспечивать безопасность для более 100 миллиардов долларов в течение десяти лет.

Благодаря определенным обстоятельствам Биткоин получил возможность вырасти от бесполезного, никого не интересующего эксперимента интернет-гиков до оплаты пиццы за 10,000 биткоинов, а позже и до максимальной цены в 20 тысяч долларов США за одну монету. Он сделал все это относительно спокойно, и никто не дышал ему в спину. За это время была выстроена иммунная система мирового класса для защиты от всевозможных атак и создана крупнейшая в мире сеть хеш-мощностей. Более 100 млрд долларов в эквиваленте безопасно хранятся на кошельках пользователей Биткоина, и за более чем десятилетнюю историю никому не удавалось взломать сеть.

Сегодня практически невозможно спокойно запустить новую криптовалюту. Ящик Пандоры открыт, и все хитрости хорошо всем известны. Давайте посмотрим на альтернативный блокчейн EOS с рыночной капитализацией около 10 миллиардов долларов на момент запуска и около половины от этой стоимости сегодня. Через два дня после запуска он завис из-за ошибок в коде. Эти ошибки были исправлены в течение нескольких часов с привлечением минимального контроля и проверок. Оценили ли бы вы подобную сеть в 100 миллиардов долларов? Может быть, EOS и протянет еще 10 лет, но к тому времени Биткоину будет уже 20 лет, и он будет стоить триллионы долларов.

Устоять перед современными хеш-атаками

Учитывая тысячи монет, использующих десятки алгоритмов хеширования, любые новые монеты находятся под угрозой атаки 51%, которая может быть проведена существующими хеш-мощностями. Это уже случилось с Bitcoin Gold и несколькими другими монетами.

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

Быть крайне децентрализованным

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

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

Привлечь лучших разработчиков в мире

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

Создать всемирную финансовую сеть

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

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

Быть более твердыми деньгами

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

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

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

Будущие разработки в Биткоине

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

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

Lightning Network

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

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

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

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

Lightning Network в случае успеха улучшит многие недостатки Биткоина:

Практически неограниченная пропускная способность транзакций. Сотни тысяч микротранзакций могут быть выполнены и зафиксированы в блокчейне Биткоин один раз в качестве окончательного расчета.

Мгновенные подтверждения; нет необходимости ждать создания блока.

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

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

Lightning использует концепцию каналов платежей, представляющие собой реальные Биткоин транзакции в сети, которые блокируют некоторое количество биткоинов и делают его доступным в сети Lightning для мгновенной, почти бесплатной передачи. Lightning Network находится на ранних стадиях, но уже является многообещающей технологией. Вы можете проверить сайт, который использует микроплатежи на основе Lightning для статей: https://yalls.org/.

Биткоин в космосе

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

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

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

Дальнейшие исследования

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

The Bitcoin Standard — Сейфедин Аммус

Bitcoin Investment Theses — Пьер Рошард

The Bullish Case for Bitcoin — Виджай Бояпати

Для детей: Bitcoin Money — Майкл Карас

Чтобы углубиться в информатику:

The Bitcoin Whitepaper — Сатоши

Mastering Bitcoin — Андреас Антонопулос

Programming Bitcoin — Джимми Сонг

Семинар Джимми Сонга

Чтобы глубже изучить историю и философию Биткоин:

Planting Bitcoin — Дэн Хедл

Bitcoin Governance — Пьер Рошард

Bitcoin Past and Future — Мурад Махмудов

Каждое видео, записанное Андреасом Антонопулосом, особенно Currency Wars и The Monument of Immutability, по ссылке

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

@lopp

@pwuille

@adam3us

@danheld

@TraceMayer

@pierre_rochard

@bitstein

@theonevortex

@AlenaSatoshi

@WhatBitcoinDid

@stephanlivera

@TheBlock__

@TheLTBNetwork

@real_vijay

@jimmysong

@Excellion

@starkness

@dickerson_des

@roasbeef

@saifedean

@Melt_Dem

@_jillruth

@giacomozucco

@Snyke

@aantonop

@MustStopMurad

@danheld

@peterktodd

@dergigi

@TonyCrusoe

@skwp (это я)

Вы можете найти больше моих работ на yanpritzker.com. Увидимся на той стороне.

Благодарность

Благодарю всех тех, кто поделился своим мнением во время написания ранних набросков этой книги; особенно: Джо Леверинга, Фила Гейгера, Юрия Прицкера, Джонатана Уилера, Вальтера Розенберга и Майкла Сантосуоссо.

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

Об авторе

Ян Притцкер был разработчиком и предпринимателем в течение последних 20 лет. В недалеком прошлом он являлся одним из основателей и главой технического отдела Reverb.com, где руководил технологиями и инфраструктурой в 2012-2018 годах. Сегодня он делится знаниями о Биткоине и консультирует стартапы на ранних стадиях развития.

Ян пишет о Биткоине и связанных с ним темах на yanpritzker.com.

Вы также можете следить за его деятельностью в Твиттере: @skwp.

Для ознакомления с прекрасным обзором денежной истории, я рекомендую эссе Ника Сзабо.

Период корректировки с интервалом в 2016 блоков был выбран исходя из желаемого десятиминутного интервала блоков. 10 минут x 2016 блоков — две недели. Интервал блока был выбран Сатоши, чтобы быть достаточно большим, позволяя большинству нод синхронизироваться с последним блоком. Двухнедельный период корректировки отчасти был выбран произвольно, но он был разработан так, чтобы предотвращать слишком быструю смену скорости хеширования в системе.

Узнайте больше о текущем состоянии майнинга на сайте https://coinshares.co.uk/bitcoin-mining-cost-june-2019/

Это превосходное эссе подробно рассказывает о том, как биткоин работает с недействительными блоками: https://hackernoon.com/bitcoin-miners-beware-invalid-blocks-need-not-apply-51c293ee278b

На самом деле, адресные номера — это гигантские 160-битные числа.

https://en.bitcoin.it/wiki/CoinJoin

Узнайте больше о том, как управлять процессом разработки Bitcoin Core в статье “Кто контролирует Bitcoin Core?” Джеймсона Лоппа.

Полная история форков Биткоин проанализирована здесь: https://blog.bitmex.com/bitcoins-consensus-forks/

*** Pump (“памп”, накачка) — создание искусственного ажиотажа вокруг актива, нацеленное на искусственное повышение цены и спроса даже на пиковых значениях. Является одним из видов мошенничества на бирже.

Dump (“дамп”, слив) — массированная продажа на бирже, приводящая к сильному падению цены.

Узнайте больше о так называемом форке Segwit2X, который был запланирован в рамках соглашений о бэкрумах и впоследствии отозван здесь: https://bitcoinmagazine.com/articles/now-segwit2x-hard-fork-has-really-failed-activate