История крипты: откуда она взялась, что значит и почему важна (Ч.1)
Это перевод статьи The Crypto Story, опубликованной в журнале Bloomberg Businessweek в октябре 2022 года. Статья заняла целый номер и насчитывает 40 тысяч слов, поэтому Gagarin Crypto публикует перевод в 4 частях. Вторую, третью и четвёртую части можно прочитать в соседних постах этого блога.
Оригинальную статью всё ещё можно прочитать здесь.
Тех же, кому комфортнее читать на русском языке, приглашаем к скроллу👇
«Не так давно был момент, когда я подумал: "А что, если я все неправильно понимаю в криптовалютах?". Я сомневающийся нормальный человек, который, если быть честным, не всегда понимал эту альтернативную вселенную, просачивающуюся и расширяющуюся уже более десяти лет. Если вы адепт, то считаете это новое измерение будущим. Если скептик, то для вас этот перевернутый мир — просто современная схема Понци, которая плохо кончится, и наступившая "криптозима" — свидетельство ее давно назревшего конца. Но криптовалюты прочно обосновались в финансах, технологиях и наших головах. И если они не исчезнут, нам лучше попытаться понять их. Именно поэтому мы попросили лучшего финансового писателя в мире, Мэтта Левина из Bloomberg Opinion, написать весь выпуск Bloomberg Businessweek от начала до конца, что случалось только один раз за 93-летнюю историю журнала ("Что такое код?", Пол Форд). Далее следует его блестящее объяснение того, что означает эта безумная, часто абсурдная и всегда увлекательная технология, и куда она может прийти».
— Джоэл Вебер, редактор Bloomberg Businessweek
A. Леджеры, биткойн, блокчейн
i. Жизнь в базах данных
Современная жизнь в значительной степени состоит из записей в базах данных. Если у вас есть деньги в банке, то на самом деле это всего лишь запись в базе данных банка о том, сколько у вас денег. Если у вас есть акции компании, то, как правило, это запись в базе данных этой компании или, что более вероятно, какого-то посредника, который владеет самими акциями.
К таким посредникам относится Depository Trust & Clearing Corp., которая владеет большинством акций большинства американских компаний от имени всех остальных. Если вы владеете акциями, то у вас есть запись в базе DTCC, дающая вам право на некоторые из акций, которыми владеет DTCC, а у нее, в свою очередь, есть запись в базе компании о том, сколько акций принадлежит ей.
Если вы владеете домом, все несколько иначе. Дом существует. Но ваше право собственности на этот дом, вероятно, записано в какой-то базе данных; в США это часто означает, что есть запись о покупке вами дома — ваше право собственности — в картотеке в подвале офиса окружного клерка. (Это не очень хорошая база данных.) Во многих отношениях главное здесь — это дом: у вас есть ключ от входной двери; ваши вещи находятся внутри; соседи не удивятся, увидев, как вы выходите из дома утром, и удивятся, если обратно вернётся кто-то другой. Но во многих других случаях важна запись в базе данных. Банк захочет убедиться, что у вас есть право собственности, прежде чем выдать ипотечный кредит; покупатель захочет провести соответствующие процедуры с этой записью о покупке, прежде чем заплатить вам за дом. Ключа будет недостаточно.
Большая часть современной жизни происходит в интернете. Не совсем верно будет сказать, что ваша социальная жизнь, карьера и репутация состоят из записей в базах данных Meta, Google и Microsoft, но и не совсем неверно.
Некоторые из вещей связаны с компьютерами. Гораздо удобнее, чтобы деньги были компьютерными записями, чем мешками золота или даже бумажными купюрами. Однако некоторые из этих вещей гораздо глубже и сложнее. Что может означать владение домом? Один из вариантов — назовём его «естественным состоянием». Владение домом означает, что 1) вы находитесь в нём, и 2) если кто-то другой попытается въехать, вы сильнее, поэтому можете его выгнать. Но если этот кто-то окажется сильнее вас, то дом перейдёт к нему.
Другая опция — это своеобразная «деревня». Владение домом означает, что вы там живете, и ваши соседи знают, что вы там живете, и если кто-то другой пытается въехать, то вы и ваши соседи вместе взятые окажутся сильнее и не допустят захвата. Владение домом в социальном плане опосредовано сетью равных участников с высоким уровнем доверия.
Третий вариант — это нечто, о чем можно думать как о правительстве. Владение домом означает, что правительство считает вас владельцем этого дома, и если кто-то другой попытается въехать в него, то правительство его выгонит. Вам не обязательно там жить, потому что достаточно знания правительства. Вы можете сдавать дом в аренду: кто-то другой может жить в доме с вашего разрешения. Однако если вы отзовете разрешение, вы можете обратиться к правительству, и оно вышвырнет этого человека. База данных — это способ для правительства вести учет. Вы не должны доверять какому-то конкретному человеку; вы должны доверять верховенству закона.
С деньгами все примерно так же. Мешки с золотом — это довольно простая форма денег, но они тяжелые. Система, в которой ваш надежный банкир хранит для вас мешки золота и выписывает аккредитивы, которые вы можете использовать в отделениях банка, которыми управляет двоюродный брат вашего банкира — вполне рабочая, но зависит от доверия между вами и банкиром, а также между банкиром и его двоюродным братом. Система обезличенного банковского обслуживания, в которой операционисты — незнакомые люди, да и вы, вероятно, все равно пользуетесь банкоматом, требует доверия к системе, доверия к тому, что банки сдерживаются государственным регулированием, репутацией или рыночными силами, и поэтому будут вести себя правильно.
Говоря, что современная жизнь протекает в базах данных, мы прежде всего имеем в виду, что современная жизнь предполагает большой элемент доверия.
Мы доверяем хранителям баз данных. Иногда это происходит потому, что мы знаем их и считаем их достойными доверия. Чаще это означает, что у нас есть абстрактное чувство доверия к более широкой системе, системе законов. Мы предполагаем, что можем доверять системам, которые используем, потому что это делает жизнь намного проще, чем недоверие к ним, и потому что это предположение в основном срабатывает. Это огромное и недооцененное достижение современности, что мы в основном доверяем хранителям баз данных, и что они (в основном) заслуживают доверия.
B. Что делать, если вас это не устраивает?
i. Недоверие
Но мы не всегда доверяем им, и они не всегда заслуживают доверия.
Иногда таких систем просто нет. Есть банки, которым вы не можете доверять хранение денег, и места, где вы не можете доверять верховенству закона. Есть правительства, которым вы не можете доверять в том, что они не конфискуют ваши деньги у банков, не подделают результаты выборов, не изменят реестр собственности и не заберут ваш дом. Существуют технологические компании, с которыми нельзя быть уверенными, что они не заморозят ваш аккаунт. Большинство людей в США в большинстве случаев живут в мире высокого доверия, где легко и разумно доверять, что посредники, управляющие базами данных, будут вести себя правильно. Но так живут не все.
Даже в США доверие может быть хрупким. Финансовый кризис 2008 года нанес огромный и долговременный ущерб доверию многих людей к банковской системе. Люди доверяли банкам делать хорошие, безопасные, социально продуктивные вещи, а оказалось, что они действовали дико и рискованно, что вызвало экономический кризис. После этого многим людям стало сложнее доверять банкам свои сбережения.
Кроме того, у вас могут быть философские возражения против доверия. Даже если ваш банк имеет безупречную историю, вам этого может быть недостаточно. Банк для вас — это «черный ящик». «Откуда мне знать, что вы вернете мне мои деньги?» — можете спросить вы у банка. И банк ответит что-то вроде: «Вот наша аудированная финансовая отчетность», «Мы регулируемся Федеральной резервной системой и застрахованы Федеральной корпорацией страхования депозитов», «У нас не было случаев, когда мы не возвращали кому-либо деньги». И вы скажете: «Да, да, это все прекрасно, но как я могу знать наверняка?». Вы не можете. Доверие встроено в систему, это необходимое условие. Однако иногда вам нужны доказательства.
Возможно, это современное желание, или, по крайней мере, желание, которое в наше время более интенсивно и которое легче удовлетворить. В мире без интернета, без Википедии, без ПО с открытым исходным кодом и т.д., вам приходилось каждый день принимать на веру миллион фактов; а что ещё можно было сделать, искать им всем доказательства?
ii. Совместимость
Даже если вы в целом не против довериться хранителям современных баз данных, у вас могут быть возражения и сомнения с технической точки зрения. Скажем так, эти базы данных не всегда хороши. Большая часть банковской системы написана на очень старом компьютерном языке Cobol; в США люди все еще часто совершают платежи — электронные переводы между электронными базами данных денег — путем выписывания бумажных чеков и отправки их по почте. Расчеты по сделкам с акциями в США занимают два рабочих дня: если я покупаю у вас акции в понедельник, вы поставляете акции (и я плачу вам) в среду. Это происходит не потому, что ваш брокер должен положить сертификаты акций в мешок и принести их в офис моего брокера, а мой брокер кладет долларовые купюры в мешок и приносит их в офис вашего брокера, а потому, что фактический процесс является потомком описанного выше. Он медленный и ручной, и иногда все идет наперекосяк; многие биржевые сделки проваливаются.
О регистрации собственности лучше даже не начинать говорить. Если вы покупаете дом, то должны поучаствовать в церемонии «закрытия» сделки, где куча людей с должностями типа «юрист титульной компании» бормочут заклинания, которые позволяют вам стать владельцем дома. Это может занять несколько часов.
Если ваши представления о том, как должны работать базы данных, основаны на современных компьютерах, то многочасовые заклинания кажутся безумием. «Должен быть API для этого», — подумаете вы. Должен быть интерфейс прикладного программирования, позволяющий каждой из этих баз данных взаимодействовать с другими. Если ваш банк думает о выдаче вам ипотеки, он должен иметь возможность автоматически запросить базу данных недвижимости и выяснить, что вы владеете своим домом, а не посылать адвоката в офис окружного клерка. Он также должен иметь возможность автоматически запросить реестр Департамента автотранспорта и получить ваши водительские права для идентификации, автоматически запросить ваш брокерский счет и изучить ваши активы.
Современная жизнь состоит из записей в базах данных: что будет, если мы их обновим? Что если переписать их с нуля, на современных компьютерных языках, используя современные принципы программной инженерии, с целью обеспечить их беспрепятственное взаимодействие друг с другом?
Если бы кто-то это сделал, это было бы почти как иметь одну базу данных, базу данных жизни: я могу послать вам деньги в обмен на ваш дом, вы можете послать мне социальную репутацию в обмен на мое участие в онлайн-классе, или что-то еще — все в одной компьютерной системе.
Это было бы удобно, но и страшно. Это оказало бы еще большее давление на доверие. Тот, кто управляет этой базой данных, в некотором смысле управляет всем миром. Кому вы можете доверить такое право?
C. Цифровая наличность
В 2008 году Сатоши Накамото опубликовал метод, с помощью которого каждый мог управлять базой данных, тем самым изобретя «криптовалюту».
Я не уверен, что Сатоши думал, что делает именно это. Непосредственно он изобрел лишь Биткоин: одноранговую систему электронных денег (Bitcoin: Peer-to-Peer Electronic Cash System.) Именно так называется его знаменитый вайтпейпер.
По словам Сатоши, он изобрел своего рода наличные деньги для интернет-транзакций, «электронную платежную систему, основанную на криптографическом доказательстве вместо доверия, позволяющую любым двум желающим сторонам совершать сделки напрямую друг с другом без необходимости в доверенной третьей стороне». Если я хочу купить у вас что-то за цифровые деньги, биткойны, я просто отправляю вам биткойны, а вы отправляете мне вещь; при этом не задействована «доверенная третья сторона», такая как банк.
Когда я так говорю, это звучит так, как будто Сатоши изобрел систему, в которой я могу послать вам биткойн, и никто другой в этом не участвует. На самом деле он изобрел систему, в которой задействовано множество других людей.
i. Отступление: Что вы вообще читаете? Зачем вы это читаете? Зачем я это пишу?
Привет! Я Мэтт, бывший юрист и инвестиционный банкир. Сейчас я обозреватель Bloomberg Opinion. На своей основной работе я пишу о финансах. Мне нравятся финансы. О них интересно писать. Это своеобразный взгляд на мир, ряд головоломок, набор структур, которые люди наложили на экономическую реальность. Часто эти структуры заумные и непонятные, и приятно понять, что они значат. В финансах все накладывается поверх множества других вещей. Все странно и контринтуитивно, и часто нужно иметь представление об истории финансов и рыночной практике, чтобы понять, почему кто-то делает те или иные вещи.
В последние несколько лет самым полярным и поляризующим явлением в финансах были «криптовалюты» — набор идей, продуктов и технологий, которые выросли из вайтпейпера Биткойна. Но это также, давайте начистоту, набор линий на графиках, которые идут вверх. Когда Сатоши изобрел биткойн, один биткойн стоил ноль долларов: это была просто идея, которую он придумал. В ноябре 2021 года, на пике роста, один биткойн стоил более 67 000 долларов, а общая стоимость всех криптовалют в обращении составляла около 3 триллионов долларов. Многие люди, которые рано вошли в криптовалюты, очень быстро разбогатели и многих этим раздражали. Они покупали «ламбы» и острова. Они были довольны собой: думали, что криптовалюты — это будущее, и они строят это будущее, получая достойное вознаграждение. Людям, не владеющим криптовалютой, они говорили что-нибудь вроде «веселитесь, оставаясь бедными» (Have Fun Staying Poor) и NGMI (Not Gonna Make It, «у вас не получится»). Они были правы и богаты и хотели, чтобы все это знали.
Многие другие люди не увлекались криптовалютами. У них сложилось не совсем обоснованное впечатление, что они в основном используются для преступности или схем Понци. Они задавали вопросы типа «Для чего это нужно?», или «Откуда взялись все эти деньги?», или «Если вы строите будущее, то какую именно работу вы выполняете?», или «Если вы строите будущее, то почему оно кажется таким мрачным и ужасным?». И криптовалютчики часто отвечали: «Веселитесь, оставаясь бедными».
А потом, в 2022 году, все линии на графиках пошли вниз. Цена одного биткоина упала ниже $20 000; общая стоимость криптовалют снизилась с $3 трлн до $1 трлн; несколько крупных криптовалютных компаний потерпели крах. Если вы криптоскептик, то это было очень приятно наблюдать, не только с точки зрения скептицизма, но и потому, что, возможно, теперь все забудут о криптовалютах, и вы сможете вернуться к миру без хайпа вокруг них. Для энтузиастов криптовалют это был повод удвоить усилия: крах встряхнет случайных поклонников и оставит истинно верующих строить будущее вместе.
В каком-то смысле это худшее время для разговоров о криптовалютах, потому что графики пошли вниз. Но на самом деле это как раз лучшее время для такого разговора. Наступила пауза; наступило некоторое затишье. Что бы ни осталось в криптовалюте, сейчас это не просто спекуляции и схемы быстрого обогащения. Мы можем действительно поразмышлять о том, что значит криптовалюта — немного отвлекаясь от графиков, стремящихся вверх.
Я не отношусь ни к одному из лагерей, спорящих о ценности криптовалют. Мне нравятся финансы. Я думаю, что это интересная сфера. И если вам нравятся финансы, если нравится понимать структуры, которые люди создают для организации экономической реальности, — криптовалюты это поразительно. Это лаборатория для экспериментов. За последние 14 лет криптовалюты построили целую финансовую систему с нуля. Крипта постоянно изобретала или открывала заново то, что финансы делали на протяжении веков. Иногда она находила новые и более эффективные способы.
Часто появлялись способы похуже, которые заканчивались тупиками. Многие из них традиционные финансы пытались использовать десятилетия назад со смехотворными результатами.
Регулярно находились более или менее те же решения, что и в традиционных финансах, но с новыми названиями и новыми объяснениями. Вы можете посмотреть на какую-нибудь криптовалюту и выяснить, какие элементы традиционных финансов она копирует. Так вы сможете узнать что-либо о криптовалютной финансовой системе — например, сможете сделать обоснованное предположение о том, как всё может пойти не так. Но также вы сможете узнать что-то и о традиционной финансовой системе: репликация её криптовалютами дает новое представление об оригинале.
Кроме того, я должен сказать, что как человек, пишущий о финансах, я неравнодушен к историям о мошенничестве, манипулировании рынком и умных людях, надувающих чуть менее умных. Часто такие истории интересны, поучительны и, не без этого, смешны. В криптовалюте очень высокая плотность таких историй. Поэтому сейчас я много пишу о криптовалютах.
Я должен предупредить вас о некоторых моментах. Во-первых, я не пишу о криптовалютах как глубоко убежденный эксперт. Я не являюсь истинным адептом. У меня не было ни одной монеты, пока я не начал работать над этой статьей; сейчас я владею примерно 100 долларами в крипте. Я пишу о криптовалютах как человек, которому нравится человеческая изобретательность и человеческая глупость, и который находит в криптовалютах много того и другого.
В то же время, я сел и написал 40 000 слов не для того, чтобы просто сказать, что криптовалюта бесполезна и исчезнет без следа. Это было бы странным применением времени. Моя цель не в том, чтобы убедить вас, что за криптовалютами будущее и те, кто останутся за бортом, останутся нищими. Моя цель — убедить вас в том, что криптовалюты интересны, что они нашли новые способы говорить о старых проблемах, и что даже когда эти способы ошибочны, они довольно поучительны.
Кроме того, я финансист. Мне кажется, что за 14 лет криптовалюта обзавелась довольно хорошо развитой финансовой системой, и я собираюсь говорить о ней довольно много, потому что она хорошо развита и потому что я люблю финансы.
Но вообще-то никого не должна настолько сильно волновать финансовая система. Финансовая система — это, ну, серия баз данных. Это способ организовать претензии на материальные вещи; это дополнение к реальному миру. Финансовая система хороша, если она облегчает фермерам выращивание пищи, семьям — владение домами, а предприятиям — создание потрясающих компьютерных игр, если она помогает создавать и распределять изобилие в реальной жизни. Финансовая система плоха, если она торгует абстрактными требованиями таким образом, что обогащает людей, занимающихся торговлей, но не помогает никому другому.
За последние 14 лет основным вопросом в криптовалюте был: для чего она нужна? Если вы попросите привести пример бизнеса, который действительно использует криптовалюту, ответы, которые вы получите, в основном будут касаться финансового сектора: «Ну, мы создали отличную биржу для торговли криптовалютами». Круто, хорошо. Иногда эти ответы правдоподобно касаются создания или распределения богатства: «Криптовалюта позволяет эмигрантам дешево и быстро отправлять денежные переводы». Это хорошо. Часто речь идет об эффективных азартных играх. Азартные игры — это весело, ничего против них не имею. Но финансовая система, ориентированная исключительно на азартные игры, была бы несколько ограниченной.
Между тем, самые ярые сторонники криптовалют говорят, что криптовалюты — это создание реальных, полезных вещей. Криптовалюта переосмыслит социальные отношения, игры и компьютеры. Она создаст метавселенную. Криптовалюта является жизненно важным компонентом следующего скачка развития интернета; криптовалюта создаст "Web3", который заменит наш нынешний "Web2". Если вы попросите привести пример бизнеса, который действительно использует криптовалюту, вы получите тонну прибыльных финансовых бизнесов, а затем какие-то туманные теоретические размышления типа «Ну, возможно, мы могли бы построить социальную сеть в Web3?».
Пока для этого еще рано. Может быть, кто-то построит действительно хорошую социальную сеть в Web3. Может быть, через 10 лет криптовалюты, блокчейн и токены будут занимать центральное место во всем, что делается в интернете, а интернет будет (даже больше, чем сейчас) занимать центральное место во всем, что делается в жизни человека, и криптовалютные первопроходцы будут правы и богаты, а остальные будут веселиться, оставаясь бедными, и школьники будут говорить: «Не могу поверить, что кто-то сомневался в важности Dogecoin».
Я не хочу сбрасывать со счетов такую возможность, поэтому немного порассуждаю об этом, набросаю картину того, что это может означать. Я не собираюсь описывать дорожную карту того, как мы к этому придем. Я не технический специалист и не истинный «верующий». Но стоит хотя бы попытаться понять, что криптовалюта может означать для будущего интернета, потому что эти последствия иногда утопичны, иногда антиутопичны, а иногда просто представляют собой более эффективный базовый слой для действий, которые вы и так регулярно делаете. К тому же финансы — это круто.
ii. Отступление: Названия и люди
Прежде чем мы продолжим, позвольте мне сказать несколько слов о некоторых терминах. Во-первых, «крипто». То, чему посвящён этот текст: для этого нет идеального названия. Стандартное обозначение, которое я буду часто использовать, это «крипто», что, я полагаю, сокращенно означает «криптовалюта». Это не лучшее название, потому что 1) в нём есть валюта, а многое в крипте не особенно связано с валютами, и 2) в нём есть акцент на криптографии, и хотя криптовалюты в каком-то глубоком смысле связаны с криптографией, большинство людей в них ею не занимаются. Вы можете быть криптоэкспертом, криптомиллиардером или просто заметной фигурой в криптоиндустрии, не зная почти ничего о криптографии, и поэтому эксперты в криптографии иногда немного раздражаются из-за того, что представители криптоиндустрии «крадут» их приставку.
Существуют и другие названия для различных разделов крипто — и они иногда широко используются для обозначения многого из того, что происходит в отрасли, но у них тоже много оговорок. Поэтому я буду в основном придерживаться термина «крипто» как общего термина.
Во-вторых, «Сатоши Накамото». Это псевдоним, и тот, кто написал тот самый вайтпейпер, с тех пор проделал достаточно хорошую работу, чтобы сохранить свою псевдонимность. Существует множество предположений о том, кто может быть автором. Среди самых смешных версий — Илон Маск и случайный разработчик с реальным именем Сатоши Накамото. Я буду называть Сатоши Накамото «Сатоши» и упоминать его в мужском роде, потому что так делает большинство людей.
Связанный момент. Кроме (возможно) Сатоши, практически все, кто занимается криптовалютами, обладают уморительно яркими личностями. Можно с уверенностью сказать, что если вы читаете статью о криптовалютах, в ней будут фигурировать дикие персонажи. В одной из статей в Bloomberg Businessweek говорилось об «отправке миллиардов американских долларов в багамский банк соавтора “Инспектора Гаджета” в обмен на цифровые токены, придуманные парнем из “Могучих уток” и управляемые людьми, находящимися под следствием в США". Единственное исключение — статья, которую вы сейчас читаете. В ней не будет ни одного интересного человека. Моя цель здесь — объяснить криптовалюту, чтобы, прочитав о парне с уткой, который занимается криптовалютой, вы могли понять, что именно он делает.
iii. Отступление: Криптография в криптовалютах
Криптография — это изучение секретных сообщений, их кодирования и декодирования. Большая часть того, о чем я буду говорить в этой статье, будет не о криптографии; она будет о Понци. Но базовый слой криптовалюты действительно связан с криптографией, поэтому будет полезно узнать немного о ней.
Основная вещь, которая происходит в криптографии, заключается в том, что у вас есть информация на входе (число, слово, строка текста), вы запускаете некоторую функцию, и на выходе получается другое число, слово или что-то еще. Функцией может быть шифр Цезаря (сдвиг каждой буквы слова на одно или несколько мест в алфавите, так что «Caesar» становится «Dbftbs»), или свиная латынь (сдвиг первых согласных в слове к концу и добавление «-ay», так что «Caesar» становится "Aesar-say"), или что-то более сложное.
Полезным свойством криптографической функции является ее односторонность. Это означает, что входную строку легко превратить в выходную, но трудно сделать это в обратном направлении. Классический пример — умножение двух больших простых чисел это довольно просто; факторизация огромного числа на два больших простых числа — это сложно. Шифр Цезаря прост в применении и легко обратим, но некоторые формы шифрования просты в применении и гораздо труднее обратимы. Это делает их более подходящими для секретных шифров.
Одним из примеров этого является функция хеширования, которая принимает некоторый входной текст и превращает его в длинное число фиксированного размера. Я могу запустить функцию хэширования этой статьи — самая популярная разновидность называется SHA-256, она была изобретена Агентством национальной безопасности США — и сгенерировать из нее длинное непонятное число. Чтобы сделать его еще более непонятным, принято записывать это число в шестнадцатеричной системе, чтобы в нем были цифры от нуля до 9, а также от «a» до «f». Я могу послать вам это число и сказать: «Я написал статью, прогнал ее через алгоритм хэширования SHA-256, и в результате получилось это число». Вы получили бы число, но не смогли бы понять, что оно значит. В частности, вы не сможете поместить его в компьютерную программу и расшифровать, превратив хэш обратно в статью.
Функция хеширования является односторонней; хеш ничего не говорит вам о статье, даже если вы знаете саму функцию. Хэширование по сути, перемешивает данные в статье: функция берет каждую букву, представленную в виде двоичного числа, и перемешивает 0 и 1 много раз, пока они не станут беспорядочными и неузнаваемыми. Функция дает четкие пошаговые инструкции по перемешиванию битов, но она не работают в обратном направлении. Это похоже на перемешивание сливок в кофе: сделать легко, отменить трудно.
Вот простой пример. Один из способов смешивания данных называется функцией XOR, что означает «исключающее или». Если применить XOR к двум битам (1 или 0), она возвращает 1, если один из этих битов равен 1, и 0, если оба или ни один из них не равен 1. Допустим, вы выполнили XOR для чисел 1100 и 0101, применив его сначала к цифрам в первой позиции каждого числа (1 и 0), затем к цифрам во второй позиции (1 и 1) и так далее. В результате получится 1001. Зная входные данные, легко вычислить выход. Но если вы знаете, что на выходе будет 1001, вы не узнаете входа: это могут быть 1100 и 0101, или 0011 и 1010, или 1001 и 0000, или 1111 и 0110, и т.д. Если вы возьмете половину этой статьи и пропустите через XOR другую половину, у вас получится беспорядочный набор, который трудно превратить обратно в статью. Если вы проделаете это десятки раз, у вас получится криптография.
Применение алгоритма SHA-256 создаёт 64-значное число для данных любого размера, который вы только можете себе представить. Вот хэш всего текста 730-страничного романа Джеймса Джойса «Улисс»:
3f120ea0d42bb6af2c3b858a08be9f737dd422f5e92c04f82cb9c40f06865d0e. Он занимает столько же места, что и хэш фразы «Привет! Я Мэтт»: 86d5e02e7e3d0a012df389f727373b1f0b1828e07eb757a2269fe73870bbd044. Но что если я напишу «Привет, я Мэтт» через запятую? Тогда хэш будет выглядеть так: 9f53386fc98a51b78135ff88d19f1ced2aa153846aa492851db84dc6946f558b.
Как видите, нет никакой очевидной связи между числами для «Привет! Я Мэтт» и «Привет, я Мэтт». Два исходных входа были почти полностью идентичны, а хэш-выходы дико отличаются. Это критическая часть односторонности функции хэширования: если бы похожие входы отображались на похожие выходы, то было бы слишком легко обратить функцию и расшифровать сообщения. Но для практических целей каждый входной сигнал соответствует случайному выходу.
В чем смысл секретного кода, который невозможно расшифровать? Во-первых, это способ проверки. Если бы я послал вам хэш этой статьи, он не дал бы вам информации, необходимой для её воссоздания. Но если бы я послал вам статью, вы могли бы поместить ее в компьютерную программу (алгоритм SHA-256) и сгенерировать хэш. И хэш, который вы сгенерируете, будет точно соответствовать номеру, который я вам послал. И вы скажете: «Ага, да, вы правильно хэшировали эту статью». Невозможно расшифровать хэш, но легко проверить, правильно ли он закодирован.
Для статьи делать подобное не имеет смысла, но у этого подхода есть применения. Простое и повседневное — это пароли. Если у меня есть компьютерная система, а у вас пароль для входа в систему, мне нужно иметь возможность проверить правильность вашего пароля. Один из способов сделать это — хранить в моей системе ваш пароль и сверять то, что вы вводите, с хранимыми данными. Скажем, у меня есть текстовый файл со всеми паролями, и в нем рядом с вашим именем пользователя написано «Password123». Вы вводите «Password123» на экране входа в систему, моя система сверяет введенный вами пароль с файлом, видит, что они совпадают, и позволяет вам залогиниться. Но это опасная система: если кто-то украдет файл, у него будут все пароли. Поэтому лучше их хэшировать. Вы вводите «Password123» в качестве пароля, я прогоняю его через хэш-функцию, получаю ответ: 008c70392e3abfbd0fa47bbc2ed96aa99bd49e159727fcba0f2e6abeb3a9d601, — и сохраняю его в своем списке. Когда вы пытаетесь войти в систему, вы вводите пароль, он снова хэшируется, и если результат совпадает с хэшем в моем списке, я вас впускаю. Если кто-то украдет список, он не сможет войти в систему, поскольку не сможет расшифровать ваш пароль по хэшу.
Существуют и другие, более криптозадротские способы использования хэширования. Один из них — это своего рода штамп времени. Допустим, вы предсказываете какое-то событие в будущем и хотите получить вознаграждение, когда оно произойдет. Но вы не хотите делать это публично, чтобы не опозориться, не повлиять на результат или по другим причинам. Вы можете написать прогноз на листке бумаги, положить его в конверт, запечатать и попросить меня хранить его до даты события, после чего либо открыть конверт, либо сжечь его. Но это требует, чтобы вы и все остальные мне доверяли.
Альтернативный вариант, не требующий доверия — это ввести свой прогноз в криптографический генератор хэшей. Он выдаст результат, который вы и опубликуете. Всех это выбесит, но никто не сможет расшифровать предсказание. А через некоторое время, когда событие наступит, вы сможете сказать: «Вот видите, я угадал!». Если кто-то захочет, он может обратиться к калькулятору хэшей и проверить, действительно ли хэш соответствует вашему прогнозу.
Помимо хэширования, еще одной важной односторонней функцией является шифрование с открытым ключом. У меня есть два числа, называемые «открытый ключ» и «закрытый ключ». Это длинные числа, которые выглядят случайными, но связаны друг с другом: используя общедоступный алгоритм, одно число можно использовать для шифрования сообщения, а другое — для его расшифровки. Система двух ключей решает классическую проблему с кодами: если ключ, который я использую для шифрования, используется и для расшифровки, то любой, кто украдет ключ при передаче, сможет прочитать сообщения.
При шифровании с открытым ключом этот самый открытый ключ является публичным. Его можно послать кому угодно, опубликовать в Twitter и т.д. Секретным является закрытый ключ и вот его нельзя никому передавать. Если вы хотите отправить секретное сообщение, то пишете его и пропускаете его через алгоритм шифрования, который использует 1) само сообщение и 2) мой открытый ключ (который есть у вас) для создания зашифрованного сообщения, которое вы отправляете. Затем я прогоняю сообщение через программу расшифровки, которая использует 1) зашифрованное сообщение и 2) мой закрытый ключ (который есть только у меня) для воссоздания оригинального сообщения, которое я могу прочитать. Вы можете зашифровать сообщение с помощью открытого ключа, но расшифровать его только с открытым ключом никто не сможет, для этого понадобится закрытый ключ.
Схожая идея — «цифровая подпись». Опять же, у меня есть открытый и закрытый ключи. Мой открытый ключ размещен публично. Я хочу отправить вам сообщение и хочу, чтобы вы знали, что его написал я. Я прогоняю сообщение через программу шифрования, которая использует 1) сообщение и 2) мой закрытый ключ. Затем я отправляю вам 1) оригинальное сообщение и 2) зашифрованное сообщение. Вы используете программу расшифровки, которая использует 1) зашифрованное сообщение и 2) мой открытый ключ. Если расшифрованное сообщение совпадает с оригинальным, это доказывает, что зашифровал сообщение именно я.
Представьте себе простую банковскую систему, в которой банковские счета являются открытыми. Существует их публичный список, и каждый из счетов имеет публичный баланс и публичный ключ. Я говорю вам: «Я контролирую счет № 00123456789, на котором лежит 250 долларов, и я собираюсь отправить вам 50 долларов». Я посылаю вам сообщение с цифровой подписью: «Вот $50», а вы расшифровываете это сообщение, используя открытый ключ счета. Таким образом вы знаете, что я действительно контролирую этот счет. Это основная идея, лежащая в основе биткойна, хотя в нём есть и более сложные концепции.
iv. Как работает биткойн
В простой форме биткойн работает следующим образом. Существует большой публичный список адресов, каждый из которых имеет уникальную метку, похожую на случайные цифры и буквы, и некоторый остаток биткойна на нем: например, "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa" и баланс в 68,6 BTC. Адрес действует как открытый ключ. Если я «владею» этими биткоинами, это означает, что я владею закрытым ключом, соответствующим этому адресу, то есть фактически паролем ко счету.
Поскольку у меня есть закрытый ключ, я могу отправить вам биткойн, подписав сообщение своим закрытым ключом. Вы можете сверить эту подпись с моим открытым ключом и с открытым списком адресов и балансов биткоинов. Этой информации достаточно для подтверждения того, что я контролирую биткойн, который я вам посылаю, но недостаточно для того, чтобы вы могли узнать мой закрытый ключ и украсть остаток BTC. Это означает, что я могу отправить вам биткоин, не требуя доверия с вашей стороны, или с моей вам, или доверия кого-либо из нас банку. «Мы определяем электронную монету как цепочку цифровых подписей, — писал Сатоши. Комбинации публичного адреса и закрытого ключа достаточно для определения монеты. Криптовалюта называется криптовалютой, потому что это валюта, созданная на основе криптографии.
Вы заметите, что все, что мы здесь сделали, — это обменялись сообщениями, и каким-то образом назвали результат этого обмена валютой. Традиционная финансовая система не сильно отличается: банки не перемещают мешки с золотом или бумажными купюрами. Они хранят базы данных. Когда я плачу вам 100 долларов, мой банк посылает вашему банку сообщение с просьбой обновить бухгалтерскую книгу.
Аналогично, в биткойне сообщения изменяют (публичную) бухгалтерскую книгу с записями о том, кто чем владеет. Но кто ее ведет? Приблизительный ответ заключается в том, что это сеть биткойна — тысячи людей, которые его используют и запускают его программное обеспечение на своих компьютерах. Существуют тысячи копий бухгалтерской книги; каждый узел сети имеет свой собственный список того, сколько биткоинов находится на каждом адресе.
Когда мы проводим транзакцию, мы не просто делаем это в частном порядке, а передаем по всей сети, чтобы каждый мог обновить свои списки. Если я отправлю вам биткоин со своего адреса, и моя подпись на транзакции будет действительной, все обновят свои бухгалтерские книги, чтобы добавить один биткойн на ваш адрес и вычесть один из моего. Поэтому такая «бухгалтерская книга» это не совсем список адресов и их балансов; это запись каждой отдельной транзакции.
Здорово! Но теперь вместо того, чтобы доверять вести учет ваших денег банку, вы доверяете тысячам анонимных незнакомцев. Безопасно ли это? На самом деле, все не так плохо. Каждая транзакция доказательно корректна: если я отправлю биткойн со своего адреса на ваш и подпишу его своим закрытым ключом, сеть включит транзакцию в бухгалтерскую книгу; если я попытаюсь отправить биткойн с чужого адреса на ваш и не буду иметь закрытого ключа, все в сети увидят, что это подделка, и транзакцию не запишут. Все программное обеспечение для обновления бухгалтерской книги существует с открытым исходным кодом, который можно проверить. Вы можете в любой момент времени доказать, что каждая транзакция в книге достоверна, поэтому вам не нужно слишком доверять представителям сети по отдельности или вместе.
Когда я говорю, что «каждый» представитель сети ведет бухгалтерскую книгу, здесь нужно сделать оговорку. Вероятно, это было примерно так в начале жизни биткойна, но не теперь. Есть тысячи людей, управляющих «полными узлами», которые загружают, поддерживают и проверяют всю бухгалтерскую книгу биткойна самостоятельно, используя официальное ПО. Но есть еще миллионы людей, которые не делают этого, а просто имеют немного BTC и доверяют, что остальные будут поддерживать систему. Однако основа их доверия несколько отличается от основы вашего доверия к своему банку. В принципе, они могут проверить, что каждый, кто проверяет транзакции, проверяет их правильно.
Заметьте также, что существует финансовый стимул для всех быть честными: если все честны, то это работающая платежная система со своей ценностью. Если же многие люди будут нечестны и внесут в свои бухгалтерские книги фальшивые транзакции, то никто не будет доверять биткойну, и он станет бесполезным. Какой смысл красть биткойн, если его ценность равна нулю? Это стандартный подход в криптовалютах: они пытаются использовать экономические стимулы, чтобы заставить людей действовать честно, а не доверять им.
Это большая часть истории, но она оставляет некоторые пробелы. Откуда вообще берётся биткойн? Удобно говорить, что каждый участник сети ведет учет всех операций, которые когда-либо происходили, и ваш биткойн можно отследить по серии предыдущих транзакций. Но что именно отслеживать? Где начинается эта бухгалтерская книга?
Ещё один вопрос заключается в том, что важен порядок транзакций. Если у меня на счету один биткойн, я отправляю его сначала вам, а затем кому-то еще, у кого он находится на самом дела. Это кажется почти тривиальным, но всё довольно сложно. Биткоин — это децентрализованная сеть, которая работает путем рассылки транзакций на тысячи узлов, и нет никакой гарантии, что все они придут в одном и том же порядке. И если не все согласны с порядком, могут произойти плохие вещи — например, «двойная трата», когда люди отправляют один и тот же биткойн в два разных места. «Транзакции должны публично объявляться, — писал Сатоши, — и нам нужна система, чтобы участники могли договориться о единой истории порядка, в котором они были получены».
Такой системой, должен с прискорбием сообщить вам, является блокчейн.
v. А-а-а, блокче-е-ейн
Каждая транзакция с биткоином транслируется в сеть. Некоторые компьютеры в этой сети — их называют «майнерами» — собирают транзакции по мере их поступления в группу, называемую «блок». В определенный момент версия блока становится, так сказать, официальной: список транзакций в этом блоке становится каноническим, частью официальной записи биткойна. В таком случае говорится, что блок был «добыт». В Биткойне новый блок добывается примерно каждые 10 минут.
Если занудствовать, то стоит отметить что блок становится действительно каноническим, когда у него есть пять «подтверждений», то есть когда сначала был добыт он сам, затем добыт другой блок, который ссылается на него, а затем ещё один блок, и так пять раз.
Готовый блок можно посмотреть в интернете на любом сайте — «эксплорере блоков» (block explorer). Например, блок 755965, добытый 27 сентября, представляет собой список из 2 466 транзакций между различными адресами. Адрес, начинающийся с bc1qns, отправил 0,0052 биткойна на адрес, начинающийся с 16qZC7; 39VgGL разделил 0,012 биткойна между 14NrDK и 37o1E3; и так далее.
Затем майнеры начинают составлять новый блок, который в конечном итоге также будет добыт и станет официальным. Вот где становится важным хэширование. Новый блок будет ссылаться на предыдущий с помощью его хэша — это подтверждает, что предыдущий блок 1) правильный и принят сетью и 2) появился раньше него по времени. Каждый блок ссылается на предыдущий блок в цепочке — вот и получается блокчейн (буквально — «цепочка блоков»). Блокчейн создает официальную запись о том, какие транзакции были согласованы сетью и в каком порядке. А хэши — это метки времени; они создают согласованный порядок транзакций.
Можно представить это в виде простой системы. Каждые 10 минут майнер предлагает список транзакций, и все компьютеры в сети Биткойн голосуют за него. Если список набирает большинство голосов, он становится официальным и вносится в блокчейн. Однако это слишком упрощённый вид. Нет никаких правил относительно того, кто может присоединиться к сети Биткойна: это может сделать любой, кто подключит компьютер и запустит программу. Вам не нужно доказывать, что вы хороший человек или вообще человек. Вы можете подключить тысячу компьютеров, если захотите.
Это создает риск того, что иногда называют «атакой Сивиллы», названной в честь книги 1973 года о женщине, которая утверждала, что у нее несколько личностей (а книга, в свою очередь, получила своё название от древнегреческих прорицательниц). Идея атаки Сивиллы заключается в том, что в системе, где бухгалтерская книга коллективно ведется группой и любой может присоединиться к ней без разрешения, вы можете запустить кучу компьютерных узлов так, что они будут выглядеть как тысячи людей. Затем вы начинаете подтверждать «плохие» транзакции в своих интересах, и все принимают их как консенсус большинства. Либо вам удается украсть деньги, либо вы, как минимум, ввергаете всю систему в хаос.
Решение этой проблемы заключается в том, чтобы сделать проверку транзакций дорогостоящей. Чтобы добыть блок, майнеры Биткойна делают абсурдную ресурсоёмкую вещь. Опять же, она связана с хэшированием. Каждый майнер берет сводный список транзакций в блоке, а также хэш предыдущего блока. Затем майнер вставляет в конец списка еще одно произвольное число, называемое «нонсом» (nonce). Майнер прогоняет все это (список плюс нонс) через алгоритм хэширования SHA-256. В результате генерируется 64-значное шестнадцатеричное число. Если это число достаточно мало, значит, майнер добыл блок. Если нет, майнер повторяет попытку с другим нонсом.
Что такое «достаточно малое число», устанавливается алгоритмом Биткойна и может корректироваться, чтобы облегчить или затруднить добычу блоков. Цель всегда является один блок каждые 10 минут; чем больше майнеров и чем быстрее их компьютеры, тем сложнее добывать блоки. Сейчас «достаточно малый» означает, что хэш должен начинаться с 19 нулей. Недавний успешный хэш выглядел следующим образом: 00000000000000000006c9f1194ce7ff75c5f265d5520878e9e9392c3c8ff203.
Это похоже на игру из 20 вопросов, за которые вам нужно угадать число. За исключением того, что вы не получаете подсказок, и угадываний тут во много, много, много раз больше, чем 20. Исчезающе маловероятно, что любые отдельно взятые входные данные — любой список транзакций плюс нонс — в результате хэширования будут приведены к числу, начинающемуся с 19 нулей. Шансы этого примерно 1 к 75 секстиллионам (16 в 19 степени, число с 21 нулём, миллиард триллионов). Поэтому майнеры запускают алгоритм хэширования снова и снова, триллионы раз, каждый раз с новым нонсом, пока не получат нужный хэш. Общая скорость хэширования в сети Биткойн составляет около 200 миллионов терахэшей, то есть 200 квинтиллионов вычислений хэша в секунду, что 1) много, но 2) намного меньше 75 секстиллионов. Чтобы угадать правильный нонс и добыть блок, требуется много секунд — в среднем 600 — при 200 квинтиллионах хэшей в секунду.
Это гонка. Только один майнер может добыть блок, и этот майнер получает вознаграждение в виде биткойна. Добыть блок — это также «добыть» новые монеты — вытолкнуть их из системы после долгих вычислений, как будто найти пласт золота после ковыряния в породе. Отсюда и метафора (англ. miner — «шахтёр»).
Когда майнеры находят нужное количество нулей, они публикуют блок и его хэш в сети Биткойна. Все остальные рассматривают блок и решают, является ли он действительным, или валидным. Это означает, что все транзакции в списке действительны, хэш верен, в нем нужное количество нулей и т.д. Если это так, то начинается работа над следующим блоком: майнеры берут хэш предыдущего блока, плюс новые транзакции, плюс новый нонс, и пытаются найти новый хэш. Каждый блок строится на основе предыдущего.
vi. Майнинг
Все это невероятно дорого: майнерам требуется специальное оборудование для выполнения всех этих хеширующих вычислений, и в наши дни для этого работают огромные фермы постоянно включенных устройств. Майнинг биткоина потребляет столько же электроэнергии, сколько некоторые страны среднего размера. Это не лучшим образом сказывается на окружающей среде. Самым известным описанием биткойна, приписываемым одному из пользователей Twitter, может быть следующее:
«Представьте, что ваша машина стояла бы заведённой 24/7, выдавая решения судоку, который можно было бы обменять на героин».
И это в некотором смысле чистое расточительство. Люди иногда говорят, что майнеры биткойна решают сложные математические задачи, но на самом деле это не так. Они перебором угадывают квинтиллионы чисел в секунду, пытаясь получить правильный хэш. Эти квинтиллионы угадываний не решают никаких математических задач и ничего не добавляют к мировому знанию.
Но майнеры решают важную для Биткойна проблему — проблему обеспечения безопасности сети и книги учета транзакций. Подтверждение транзакций Биткойна требует значительных затрат, поэтому его трудно подделать, трудно провести атаку Сивиллы. Вот почему Сатоши, да и все остальные, называют этот метод подтверждения транзакций «доказательством работы» (Proof-of-Work). Если вы создаете правильный хэш для блока, это доказывает, что вы проделали много дорогостоящей компьютерной работы. Вы бы не стали делать это просто так.
Майнинг с доказательством работы — это механизм создания консенсуса между людьми, имеющими экономическую заинтересованность в системе, но не знающими ничего друг о друге. Вы бы никогда не стали добывать Биткойн, если бы не хотели, чтобы он был ценным. Если вы майнер Биткойна, значит, вы каким-то образом инвестировали в него; купили компьютеры, заплатили за электричество и сделали дорогую и изнурительную ставку на этот актив. Вы доказали, что вам не все равно, поэтому вы получаете право голоса при проверке бухгалтерской книги. И вы получаете деньги — вам платят биткоины, которые делают вашу заинтересованность ещё более глубокой.
Эти Биткойны берутся из ниоткуда; они генерируются в результате майнинга, с помощью программного обеспечения. Фактически, все биткоины генерируются в результате майнинга; не было первоначального распределения биткоинов ни для Сатоши Накамото, ни для ранних инвесторов, ни для кого-либо еще. Это и есть ответ на вопрос, откуда взялись Биткоины: они все были добыты.
Первоначально вознаграждение за майнинг, устанавливаемое программным обеспечением, составляло 50 биткоинов за блок; в настоящее время оно равняется 6,25 биткойна. Важным моментом в отношении вознаграждения является то, что оно стоит пользователям Биткоина денег. Каждый блок — примерно каждые 10 минут — из ниоткуда появляется 6,25 новых биткоинов, которые выплачиваются майнерам за обеспечение безопасности сети. Это более 6 миллиардов долларов в год. Это косвенные расходы: они представляют собой форму инфляции, и по мере роста предложения биткоинов каждая монета в теории немного дешевеет при прочих равных условиях. В настоящее время сеть Биткойн выплачивает майнерам около 1,5% от своей стоимости в год. Это меньше, чем темпы инфляции доллара США.
Однако, как известно, существует только 21 миллион биткоинов. Это записано в коде. Что же произойдет, когда этот лимит будет достигнут? Какой стимул может быть у майнеров, чтобы поддерживать сеть Биткойн в рабочем состоянии? Плата за транзакции. Код Биткойна также позволяет майнерам получать часть от каждой транзакции, и это станет единственным способом вознаграждения после того, как будет добыта последняя монета. По текущим оценкам, это произойдет не раньше 2140 года.
Если можно заработать много денег на добыче Биткойна, многие люди захотят это делать. Таким образом, одному человеку будет сложнее накопить большую часть мощностей для майнинга. Если один человек или группа людей получит большинство мощностей, они могут натворить бед: добыть плохой блок, дважды потратить монеты, отменить недавние транзакции и т.д. Это называется «атака 51%». Когда майнеры претендуют на миллиарды долларов ежегодно, люди будут вкладывать много денег в майнинг, и конкуренция будет повышаться. А если вы вложили миллиарды долларов в оборудование для майнинга, вы, вероятно, будете заботиться о поддержании стоимости Биткойна, и вряд ли станете использовать свои силы во зло.