Перевод
Это вольный перевод материала: https://www.bloomberg.com/features/2022-the-crypto-story
Введение
Не так давно был момент, когда я подумал: «А что, если я всё неправильно понимаю в криптовалютах?». Я — сомневающийся нормальный человек, который, если быть честным, не всегда понимал эту альтернативную вселенную, просачивающуюся и расширяющуюся уже более десяти лет. Если вы ученик, то это новое измерение — будущее. Если вы скептик, то этот перевёрнутый мир — просто современная схема Понци, которая плохо кончится, и недавняя «крипто-зима» — свидетельство её давно назревшего конца. Но криптовалюты прочно обосновались в финансах, в технологиях и в наших головах. И если криптовалюты не исчезнут, нам лучше попытаться понять их. Именно поэтому мы попросили лучшего финансового писателя в мире, Мэтта Левина из Bloomberg Opinion, написать выпуск Bloomberg Businessweek от корки до корки, что один автор делал только один раз за 93-летнюю историю журнала («Что такое код?», Пол Форд). Далее следует его блестящее объяснение того, что означает эта безумная, часто абсурдная и всегда увлекательная технология и куда она может прийти. -Джоэл Вебер, редактор, Bloomberg Businessweek
I. Леджеры, биткойн, блокчейн
A. Жизнь в базах данных
Если у вас есть деньги, то то, что у вас есть, — это запись в базе данных вашего банка о том, сколько у вас денег. Если у вас есть акция, то, как правило, это запись в списке, который ведёт компания или, что более вероятно, какой-то централизованный посредник, о том, кто владеет акциями.
Примечание №01: К таким посредникам относится, например, Depository Trust & Clearing Corp., которая владеет большинством акций большинства американских компаний от имени всех остальных. Если вы владеете акциями, то у вас есть запись в списке DTCC, дающая вам право на некоторые из акций, которыми владеет DTCC, а у неё есть запись в списке компании о том, сколько акций ей принадлежит.
Если вы владеете домом, всё обстоит несколько иначе. Дом есть. Но ваше право собственности на этот дом, вероятно, записано в какой-то базе данных: в США это часто означает, что есть запись о покупке вами дома — ваше право собственности — в картотеке в подвале офиса окружного клерка. (Это не очень хорошая база данных.) Во многих отношениях главное здесь — это дом:
- у вас есть ключ от входной двери;
- ваши вещи находятся там;
- ваши соседи не удивятся, увидев, как вы выходите из дома утром, и удивятся, увидев, как кто-то другой возвращается обратно.
Но во многих других случаях важна запись в базе данных. Банк захочет убедиться, что у вас есть право собственности, прежде чем выдать вам ипотечный кредит; покупатель захочет провести соответствующие процедуры с этой записью, прежде чем заплатить вам за дом. Ключа будет недостаточно.
Многое другое. Большая часть современной жизни происходит в Интернете. Не совсем верно (сказать), что ваша социальная жизнь, ваша карьера и ваша репутация состоят из записей в базах данных мета-платформ, таких как Google и Microsoft, но и не совсем неверно.
Некоторые из этих вещей связаны с компьютерами. Гораздо удобнее, чтобы деньги были компьютерными записями, чем мешками золота или даже бумажными купюрами. Однако некоторые из этих вещей гораздо глубже. Что может означать владение домом? Один из вариантов — натуральное состояние: Владение домом означает, что 1) вы находитесь в доме, и 2) если кто-то другой попытается въехать, вы больше его, поэтому можете выгнать его.
Но если они больше вас, то теперь дом принадлежит им.
Другая возможность — то, что вы можете представить себе как деревню. Владение домом означает, что вы там живёте, и ваши соседи знают, что вы там живете, и если кто-то другой пытается въехать, то вы и ваши соседи вместе взятые больше, чем они.
Владение (домом) в социальном плане опосредовано сетью равных с высоким уровнем доверия.
Третья возможность — это то, о чем вы можете думать как о правительстве. Владение домом означает, что правительство считает вас владельцем этого дома, и если кто-то другой попытается въехать в него, то правительство выгонит его. Владение домом опосредуется в социальном плане правительством.
База данных — это способ для правительства вести учёт. Вы не должны доверять какому-то конкретному человеку: вы должны доверять верховенству закона.
Примечание №02: вам не нужно жить (в конкретном доме), потому что знаний правительства (об этом конкретном доме) достаточно. Вы можете сдавать дом в аренду: кто-то другой может въехать в дом с вашего разрешения. Если вы отзовёте разрешение, вы можете обратиться к правительству, и оно — при условии соблюдения закона об аренде и найме жилья и т.д. — вышвырнет этого человека.
Деньги тоже в некотором роде таковы.
Мешки с золотом — довольно простая форма денег, но они тяжелые. Система, в которой ваш надёжный банкир хранит для вас ваши мешки и выписывает вам аккредитивы, а вы можете использовать эти аккредитивы в отделениях банка, которыми управляет двоюродный брат вашего банкира, — довольно хорошая система, хотя она опирается на доверие между вами и банкиром, а также между банкиром и двоюродным братом банкира. Система обезличенного банковского обслуживания, в которой операционисты — незнакомые люди, а вы, вероятно, всё равно пользуетесь банкоматом, требует доверия к системе, доверия к тому, что банки сдерживаются государственным регулированием, репутацией или рыночными силами и поэтому будут вести себя правильно.
Говоря, что современная жизнь протекает в базах данных, мы прежде всего имеем в виду, что современная жизнь предполагает большое доверие.
Вывод прост: МЫ ДОВЕРЯЕМ ХРАНИТЕЛЯМ БАЗ ДАННЫХ.
Иногда это происходит потому, что мы знаем их и считаем их достойными доверия. Чаще это означает, что у нас есть абстрактное чувство доверия к более широкой системе, системе законов, баз данных и самого доверия. Мы предполагаем, что можем доверять системам, которые используем, потому что это делает жизнь намного проще, чем недоверие к ним, и потому что это предположение в основном срабатывает. Это огромное и недооцененное достижение современности, что мы в основном доверяем хранителям баз данных, и что они в основном заслуживают доверия.
B. Что если вам это не нравится?
i. Недоверие
Но мы не всегда доверяем им, и они не всегда заслуживают доверия.
Иногда их просто нет. Есть банки, которым вы не можете доверять, чтобы они хранили ваши деньги, и места, где вы не можете доверять верховенству закона, чтобы регулировать их. Есть правительства, которым вы не можете доверять в том, что они не конфискуют ваши деньги у банков, не подделают результаты выборов, не изменят реестр собственности и не заберут ваш дом. Есть компании социальных сетей, которым вы не можете доверять, что они не заморозят ваш аккаунт произвольно. Большинство людей в США в большинстве случаев живут в мире высокого доверия, где легко и разумно доверять, что посредники, управляющие базами данных, которые определяют нашу жизнь, будут вести себя правильно.
Но так живут не все.
Даже в США доверие может быть хрупким. Финансовый кризис 2008 года нанёс огромный и долговременный ущерб доверию многих людей к банковской системе. Люди доверяли банкам делать хорошие, безопасные, социально продуктивные вещи, а оказалось, что они делали дикие, рискованные вещи, которые вызвали экономический кризис. После этого многим людям стало сложнее доверять банкам свои сбережения.
Кроме того, у вас могут быть философские возражения против доверия. Даже если ваш банк имеет абсолютно безупречную историю хранения ваших денег, вам этого может быть недостаточно. Ваш банк для вас — это «чёрный ящик». «Откуда мне знать, что вы вернёте мне мои деньги?» — можете спросить вы у банка. И банк ответит что-то вроде: «Вот наша аудированная финансовая отчетность», «Мы регулируемся Федеральной резервной системой и застрахованы Федеральной корпорацией страхования депозитов», «Мы никогда никому не возвращали деньги». И вы скажете: «Да, да, это всё прекрасно, но откуда я знаю (что мне вы всё вернёте)?». Вы не знаете. Доверие встроено в систему, это необходимое условие. Возможно, вам нужны доказательства.
Примечание №03: возможно, это современное желание, или, по крайней мере, желание, которое в наше время более интенсивно и легче удовлетворить. В мире без Интернета, без Википедии, без ссылок, без программного обеспечения с открытым исходным кодом и т.д. вам приходилось каждый день принимать на веру миллион фактов; что вы собирались делать, искать их все?
ii. Сопоставимость
Даже если вы в целом не против довериться хранителям современных баз данных, у вас могут быть более технические возражения. Эти базы данных не всегда очень хороши. Большая часть банковской системы написана на очень старом компьютерном языке Cobol; в США люди всё ещё часто осуществляют платежи — электронные переводы между электронными базами данных денег — путём выписывания бумажных чеков и отправки их по почте. Расчёты по сделкам с акциями в США занимают два рабочих дня: если я покупаю у вас акции в понедельник, вы поставляете акции (и я плачу вам) в среду. Это происходит не потому, что ваш брокер должен положить сертификаты акций в мешок и принести их в офис моего брокера, а мой брокер кладёт долларовые купюры в мешок и приносит их в офис вашего брокера, а потому, что фактический процесс является потомком описанного. Он медленный и ручной, и иногда в нём случаются ошибки: (проще говоря) многие биржевые сделки «проваливаются».
(Поэтому) даже не начинайте рассказывать мне о реестре собственности. Если вы покупаете дом, вы должны пойти на церемонию — «закрытие» — где куча людей с должностями вроде «юрист титульной компании» бормочут заклинания, позволяющие вам стать владельцем дома. Это может занять несколько часов.
Если ваша модель работы базы данных основана на современных компьютерах, то многочасовые заклинания кажутся безумием. «Должен быть API», — подумаете вы: должен быть интерфейс прикладного программирования, позволяющий каждой из этих баз данных взаимодействовать с другими. Если ваш банк думает о выдаче вам ипотечного кредита, он должен иметь возможность автоматически запросить базу данных недвижимости и выяснить, что вы владеете своим домом, а не посылать адвоката в офис окружного клерка. Он также должен иметь возможность автоматически запросить реестр Департамента автотранспорта и получить ваши водительские права для идентификации, автоматически запросить ваш брокерский счёт и изучить ваши активы.
Что если бы мы переписали все базы данных с нуля, на современных компьютерных языках, используя современные принципы программной инженерии, с целью обеспечить их беспрепятственное взаимодействие друг с другом?
Если бы вы это сделали, это было бы почти как иметь одну базу данных, базу данных жизни: я могу послать вам деньги в обмен на ваш дом, или вы можете послать мне социальную “репутацию” в обмен на моё участие в онлайн-классе, или что-то ещё — всё в одной компьютерной системе.
Что если бы существовала одна база данных, и все работали с ней? Это было бы удобно и мощно, но это было бы и страшно. Это оказало бы ещё большее давление на доверие. Тот, кто управляет этой базой данных, в некотором смысле управляет всем миром.
Кому вы можете доверить это?
C. Цифровая наличность
В 2008 году Сатоши Накамото опубликовал метод, с помощью которого каждый мог бы управлять базой данных, и тем самым изобрёл «криптовалюту».
Я не уверен, что Сатоши думал, что делает именно это. Скорее всего, он изобрёл Bitcoin: Peer-to-Peer Electronic Cash System — именно так называется его знаменитая «Белая книга».
По словам Сатоши, он изобрёл своего рода наличные деньги для интернет-транзакций: «электронную платежную систему, основанную на криптографическом доказательстве вместо доверия, позволяющую любым двум желающим сторонам совершать сделки напрямую друг с другом без необходимости в доверенной третьей стороне». Если я хочу купить у вас что-то за цифровые деньги — биткоины, я просто отправляю вам биткоины, а вы отправляете мне вещь; при этом не задействована «доверенная третья сторона», такая как банк.
Когда я так говорю, это звучит так, как будто Сатоши изобрёл систему, в которой я могу послать вам биткоин, и никто другой в этом не участвует. На самом деле он изобрёл систему, в которой задействовано множество других людей.
Отступление №00
Что вы вообще читаете? Зачем вы это читаете? Зачем я это пишу? Привет! Я Мэтт. Я бывший юрист и инвестиционный банкир. Сейчас я колумнист в Bloomberg Opinion. На своей основной работе я пишу о финансах. Мне нравятся финансы. О них интересно писать. Это своеобразный взгляд на мир, ряд головоломок, набор структур, которые люди наложили на экономическую реальность. Часто эти структуры заумные и непонятные, и приятно понять, что они задумали. Всё в финансах накладывается поверх множества других вещей в финансах. Всё странно и контринтуитивно, и часто нужно иметь представление об истории финансов и рыночной практике, чтобы понять, почему кто-то делает те или иные вещи, которые он делает.
В последние несколько лет самым популярным явлением в финансах были криптовалюты. Криптовалюта — набор идей, продуктов и технологий, которые выросли из «белой книги» о биткоине. Но это также, давайте начистоту, набор линий на графиках, которые пошли вверх. Когда Сатоши изобрёл биткоин, один биткоин стоил ноль долларов: это была просто идея, которую он придумал. На пике в ноябре прошлого года один биткоин стоил более 67 000 долларов, а общая стоимость всех криптовалют в обращении составляла около 3 триллионов долларов. Многие люди, которые рано занялись криптовалютами, очень быстро разбогатели и были очень раздражены этим. Они покупали Lamborghinis и острова. Они были довольны собой: они думали, что криптовалюты — это будущее, и они строят это будущее, получая за это достойное и большое вознаграждение. Людям, не владеющим криптовалютой, они говорили такие вещи, как «веселитесь, оставаясь бедными» и «NGMI» («не получится»). Они были правы и богаты и хотели, чтобы вы это знали.
Многие другие люди не увлекались криптовалютами. У них сложилось не совсем обоснованное впечатление, что они в основном полезны для преступности или для схем Понци. Они задавали вопросы типа «Для чего это нужно?» или «Откуда взялись все эти деньги?» или «Если вы строите будущее, то что на самом деле вы делаете?» или «Если вы строите будущее, то почему оно кажется таким мрачным и ужасным?». И криптовалютчики часто отвечают: «Получайте удовольствие, оставаясь бедными».
А потом, в этом году, эти линии на графиках пошли вниз. Цена одного биткоина упала ниже $20 000; общая стоимость криптовалют снизилась с $3 трлн до $1 трлн; несколько крупных криптовалютных компаний потерпели крах. Если вы крипто-скептик, то это было очень приятно, не только с точки зрения скептицизма, но и потому, что, возможно, теперь все замолчат о криптовалютах, и вы сможете вернуться к тому, чтобы не обращать на них внимания. Для энтузиастов криптовалют это был просто повод удвоить усилия: крах потрясет случайных поклонников и оставит истинно верующих строить будущее вместе.
В каком-то смысле это глупое время для разговоров о криптовалютах, потому что линии пошли вниз. Но на самом деле это хорошее время для разговора о криптовалютах. Наступила пауза; наступило некоторое успокоение. Всё, что осталось в криптовалюте, — это не просто спекуляции и схемы обогащения. Мы можем подумать о том, что значит криптовалюта — немного отвлекаясь от линий, уходящих вверх.
У меня нет сильных чувств по поводу ценности криптовалют. Мне нравятся финансы. Я думаю, что это интересно. И если вам нравятся финансы — если вам нравится понимать структуры, которые люди создают для организации экономической реальности, — криптовалюты просто удивительны. Это лаборатория для финансовых интуиций. За последние 14 лет криптовалюты построили целую финансовую систему с нуля. Крипто постоянно изобретал или открывал заново то, что финансы делали на протяжении веков. Иногда она находила новые и лучшие способы делать вещи.
Часто он находил худшие способы, направляясь в тупики, которые традиционные финансы пытались использовать десятилетия назад с (никчёмными) результатами.
Зачастую это более или менее те же решения, которые были найдены традиционными финансами, но под новыми названиями и с новыми объяснениями. Вы можете посмотреть на какую-нибудь криптовалюту и выяснить, какие именно вещи традиционных финансов она копирует. Если вы это сделаете, вы сможете узнать кое-что о криптовалютной финансовой системе — например, вы сможете сделать обоснованное предположение о том, как криптовалюта может пойти не так, но вы также сможете узнать кое-что о традиционной финансовой системе:
Репликация криптовалюты даёт вам новое представление о финансовом оригинале.
Кроме того, я должен сказать, что как человек, пишущий о финансах, я неравнодушен к историям о мошенничестве, манипулировании рынком и умных людях, надувающих чуть менее умных. Часто эти истории интересны, поучительны и, особенно, смешны. В криптовалюте очень высокая плотность таких историй.
Поэтому сейчас я много пишу о криптовалютах. В том числе довольно много вот здесь.
Я должен предупредить вас о некоторых моментах. Во-первых, я не пишу о криптовалютах как глубоко убежденный эксперт по криптовалютам. Я не являюсь истинным верующим. У меня не было ни одной криптовалюты, пока я не начал работать над этой статьей; сейчас я владею примерно 100 долларами. Я пишу о криптовалютах как человек, которому нравится человеческая изобретательность и человеческая глупость, и который находит в криптовалютах много того и другого.
И наоборот, я не сел и не написал 40 000 слов, чтобы сказать вам, что криптовалюта глупа и ничего не стоит и теперь исчезнет без следа. Это было бы странным использованием времени. Моя цель здесь не в том, чтобы убедить вас в том, что криптовалюты строят будущее и что если вы не встанете на борт, то останетесь нищими. Моя цель — убедить вас в том, что криптовалюты интересны, что они нашли несколько новых вещей, которые можно сказать о некоторых старых проблемах, и что даже когда эти вещи ошибочны, они ошибочны в освещающем смысле.
Кроме того, я — финансист. Мне кажется, что за 14 лет криптовалюта имеет довольно хорошо развитую финансовую систему, и я собираюсь говорить о ней довольно много, потому что она довольно хорошо развита и потому что я люблю финансы.
[А теперь — вернёмся назад: к основному тексту].
НИКТО НЕ ДОЛЖЕН ТАК СИЛЬНО ЗАБОТИТЬСЯ О ФИНАНСОВОЙ СИСТЕМЕ.
Финансовая система — это серия баз данных. Это способ перетасовать претензии на материальные вещи; это дополнение к реальному миру. Финансовая система хороша, если она облегчает фермерам выращивание пищи, семьям — владение домами, а предприятиям — создание потрясающих компьютерных игр, если она помогает создавать и распределять изобилие в реальной жизни. Финансовая система плоха, если она торгует абстрактными требованиями таким образом, что обогащает людей, занимающихся торговлей, но не помогает никому другому.
Я… э-э-э… э-э-э… За последние 14 лет основным вопросом в криптовалюте был: для чего она нужна? Если вы попросите привести пример бизнеса, который действительно использует криптовалюту, ответы, которые вы получите, в основном будут касаться финансового бизнеса: «Ну, мы создали действительно отличную биржу для торговли криптовалютами». Круто, хорошо. Иногда эти ответы правдоподобно касаются создания или распределения изобилия: «Криптовалюта позволяет эмигрантам дёшево и быстро отправлять денежные переводы». Это хорошо. Часто речь идёт об эффективных азартных играх. Азартные игры — это весело, ничего против этого не имею. Но финансовая система, ориентированная исключительно на азартные игры, была бы несколько ограниченной.
Между тем, самые ярые сторонники криптовалют говорят, что криптовалюты — это создание реальных, полезных вещей. Криптовалюта переосмысляет социальные отношения, игры и компьютеры. Она создаст метавселенную. Криптовалюта — жизненно важный компонент следующего скачка в Интернете; криптовалюта создаст «web3», который заменит наш нынешний «web2». Может быть? Если вы попросите привести пример бизнеса, который действительно использует криптовалюту, вы получите тонну реальных, прибыльных финансовых бизнесов, а затем какие-то туманные теоретические размышления типа «Ну, может быть, мы могли бы построить социальную сеть на web3?».
Пока ещё рано. Может быть, кто-то построит действительно хорошую социальную сеть на web3. Может быть, через 10 лет криптовалюты, блокчейн и токены будут занимать центральное место во всем, что делается в интернете, а интернет будет (даже больше, чем сейчас) занимать центральное место во всем, что делается в жизни человека, и криптовалютные первопроходцы будут все правы и богаты, а остальные будут веселиться, оставаясь бедными, и школьники будут говорить: «Не могу поверить, что кто-то сомневался в важности Dogecoin».
Я не хочу сбрасывать со счетов такую возможность, и я хочу немного порассуждать об этом, возможно, набросать картину того, что это может означать. Я не собираюсь давать вам дорожную карту, как мы к этому придём. Я не технический специалист, и я не истинный верующий. Но стоит попытаться понять, что криптовалюта может означать для будущего интернета, потому что последствия иногда утопичны, иногда антиутопичны, а иногда просто скромно более эффективный базовый слой для вещей, которые вы и так делаете. К тому же финансы — это круто, и это круто сейчас.
ii. Имена, понятия и люди
Прежде чем мы продолжим, позвольте мне сказать несколько слов о некоторых понятиях. Во-первых, «крипто». Это то, о чём я здесь пишу: для неё нет подходящего названия. Стандартное название, которое буду часто использовать, это «крипто», что, я полагаю, сокращённо означает «криптовалюта». Это не лучшее название, потому что 1) оно подчёркивает валюту, а многие криптовалюты не особенно связаны с валютой, и 2) оно подчёркивает криптографию, и хотя криптовалюты в каком-то глубоком смысле связаны с криптографией, большинство людей в криптовалютах не занимаются криптографией. Вы можете быть крипто-экспертом, крипто-миллиардером или ведущей фигурой в криптоиндустрии, не зная многого о криптографии, и люди, которые являются экспертами в криптографии, иногда немного раздражаются из-за того, что люди в криптоиндустрии крадут их приставку.
Существуют и другие названия для различных тем в крипто. Например:
- «блокчейн»;
- «DeFi»;
- «web3»;
- «токены»;
- «метавселенная».
И эти понятия (названия) иногда широко используются для обозначения многого из того, что происходит в крипто-сфере, но нельзя сказать, что они тоже хороши. Поэтому я буду в основном придерживаться термина «криптовалюта» как общего понятия.
Во-вторых, «Сатоши Накамото». Это псевдоним, и тот, кто написал его Белую книгу, с тех пор проделал достаточно хорошую работу, чтобы сохранить себя самого, себя-нескольких или себя под псевдонимом (в условной анонимности).
(Существует множество предположений о том, кто может быть автором Биткоин. Среди наиболее смешных предположений — Илон Маск и случайный компьютерный инженер по имени Сатоши Накамото. Я буду называть Сатоши Накамото «Сатоши» и использовать местоимения «он/она», потому что так делает большинство людей).
Связанный момент. Кроме (возможно?) Сатоши, практически все, кто занимается криптовалютами, являются выдающимися, но странными личностями. Можно с уверенностью сказать, что если вы читаете статью о криптовалютах, в ней будут фигурировать дикие персонажи.
(В одной из статей в Bloomberg Businessweek в прошлом году говорилось об «отправке миллиардов совершенно хороших американских долларов в багамский банк соавтора «Инспектора Гаджета» в обмен на цифровые токены, придуманные парнем из «Могучих уток» и управляемые руководителями, которые являются объектами уголовного расследования в США»). Кроме того! Во всей этой истории не будет ни одного интересного человека. Моя цель здесь — объяснить криптовалюту, чтобы, прочитав о том, как парень с утками занимается криптовалютой, вы могли понять, что именно он делает.
Отступление №03. «Крипто» в криптографии
Криптография — это изучение секретных сообщений, кодирования и декодирования.
Большая часть того, о чём я буду говорить в этой статье, будет не о криптографии; она будет о, ну, вы знаете, о схемах Понци. Но базовый слой крипто-сферы действительно связан с криптографией, поэтому будет полезно узнать немного о ней.
Основная вещь, которая происходит в криптографии, заключается в том, что у вас есть вход (число, слово, строка текста), вы запускаете некоторую функцию, и на выходе получается другое число, слово или что-то ещё. Функция может быть шифром Цезаря (сдвиг каждой буквы слова на одно или несколько мест в алфавите, так что «Цезарь» становится «Dbftbs»), или поросячьей латынью (сдвиг первых согласных в слове к концу и добавление «-ay», так что «Цезарь» становится «Aesar-say»), или чем-то более сложным.
Полезным свойством криптографической функции является ее «односторонность” (точнее — односторонняя направленность) . Это означает, что входную строку легко превратить в выходную, но трудно сделать это в обратном направлении; легко вычислить функцию в одном направлении, но невозможно в другом. (Классический пример — умножение двух больших простых чисел довольно просто; факторизация огромного числа на два больших простых числа — сложно). Шифр Цезаря прост в применении и легко обратим, но некоторые формы кодирования просты в применении и гораздо труднее обратимы. Это делает их более подходящими для секретных шифров.
Это имеет более техническое значение, чем то, которое я использую здесь. То, что я называю односторонней функцией в тексте, более строго — это функция, которая, как мы надеемся, является односторонней, исходя из современного понимания компьютерных технологий, математики и криптографии.
Одним из примеров этого является функция «хеширования«, которая принимает некоторый входной текст и превращает его в длинное число фиксированного размера. Поэтому я могу запустить функцию хэширования этой статьи — популярная функция называется SHA-256, она была изобретена Агентством национальной безопасности SHA — и сгенерировать из неё длинное, непонятное число. (Чтобы сделать его ещё более непонятным, принято записывать это число в шестнадцатеричной системе, чтобы в нём были цифры от нуля до 9, а также буквы — от «a» до «f»). Я могу послать вам номер и сказать: «Я написал статью, прогнал её через алгоритм хэширования SHA-256, и в результате получилось вот это число». Вы получили бы число, но не смогли бы понять, что это за число. В частности, вы не сможете поместить его в компьютерную программу и расшифровать, превратив хэш обратно в эту статью.
Если вы хотите попробовать сами, в Интернете есть различные калькуляторы SHA256; один из них находится на сайте Xorbin.com. Если же вы хотите запрограммировать его самостоятельно или выполнить хэширование с помощью карандаша и бумаги, существует публикация правительства США (FIPS PUB 180-4), в которой описывается алгоритм. (Или это есть в Википедии).
Функция хеширования является односторонней; хеш ничего не говорит вам о статье, даже если вы знаете функцию хеширования. Функция хэширования в основном перемешивает данные в статье: она берёт каждую букву статьи, представленную в виде двоичного числа (серии битов, 0 и 1), а затем перемешивает 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
Нет никакой видимой связи между числами для «Привет! Я Мэтт» и «Привет, я Мэтт». Два исходных входа были почти полностью идентичны, а хэш-выходы дико отличаются. Это критическая часть того, что функция хэширования является односторонней: если бы похожие входы отображались на похожие выходы, то было бы слишком легко обратить функцию и расшифровать сообщения. Но для практических целей каждый входной сигнал соответствует случайному выходу.
Поскольку хэши выдают фиксированное количество цифр, существует вероятность того, что два разных входных сигнала могут привести к одному и тому же хэшу. Это называется коллизией.
Но 64-значное шестнадцатеричное число позволяет получить множество различных хэшей — 16 ^ 64, или около 10 ^ 77, что во много миллиардов раз больше, чем количество атомов на Земле.
Какой смысл в секретном коде, который невозможно расшифровать?
Во-первых, это способ проверки. Если бы я послал вам хэш этой статьи, он не дал бы вам информации, необходимой для воссоздания статьи. Но если бы я послал вам статью, вы могли бы поместить её в компьютерную программу (алгоритм SHA-256) и сгенерировать хэш. И хэш, который вы сгенерируете, будет точно соответствовать номеру, который я вам послал. И вы скажете: «ага, да, вы правильно хэшировали эту статью». Вам невозможно расшифровать хэш, но вам легко проверить, правильно ли я его закодировал.
Упражнение для читателя: я включил хэши некоторых текстов в эту статью, и я говорил о хэше этой статьи, но я не включил хэш этой статьи в статью. Почему? (Поверьте, я хотел.)
Это было бы глупо делать в данной статье, но (описанный) принцип имеет своё применение. Простое, повседневное — это пароли. Если у меня есть компьютерная система и у вас есть пароль для входа в систему, мне нужно иметь возможность проверить правильность вашего пароля. Один из способов сделать это — хранить в моей системе ваш пароль и сверять то, что вы вводите, с тем, что я храню: у меня есть небольшой текстовый файл со всеми паролями, в котором рядом с вашим именем пользователя написано «Password123», и вы вводите «Password123» на экране входа в систему, а моя система сверяет введенный вами пароль с файлом, видит, что они совпадают, и позволяет вам войти в систему. Но это опасная система: если кто-то украдёт файл, у него будет пароль каждого (пользователя моей системы). Лучше хэшировать пароли. Вы вводите «Password123» в качестве пароля при создании учетной записи, я прогоняю его через хэш-функцию и получаю ответ 008c70392e3….. и я сохраняю его в своём списке. Когда вы пытаетесь войти в систему, вы вводите свой пароль, я хэширую его снова, и если он совпадает с хэшем в моем списке, я вас пропускаю. Если кто-то украдёт список, он не сможет расшифровать ваш пароль по хэшу, поэтому он не сможет войти в систему.
Примечание: это выходит за рамки данной статьи, но есть много других криптографических развлечений — «радужные таблицы», «соль» и т.д., — связанных с победой или укреплением такого рода безопасности.
Существуют и другие, более крипто-нервные способы использования хэширования.
Один из них — это своего рода штамп времени. Допустим, вы предсказываете какое-то будущее событие и хотите получить вознаграждение, когда оно произойдёт. Если. Но вы не хотите просто зайти в Twitter и сказать: «Я предсказываю, что Джетс выиграют Суперкубок в 2024 году», чтобы не опозориться, не повлиять на результат или что-то ещё. Вы можете написать «Джетс выиграют Суперкубок в 2024 году» на листке бумаги, положить его в конверт, запечатать конверт и попросить меня хранить его до Суперкубка 2024 года, после чего вы скажете мне либо открыть конверт, либо сжечь его. Но это требует, чтобы вы и все остальные доверяли мне.
Ещё одна вещь, не требующая доверия, которую вы можете сделать, это ввести «Джетс выиграют Суперкубок в 2024 году» в криптографический хэш-генератор, и он выдаст:
64b70b0494580b278d7f1f551d482a3fb952a4b018b43090ffeb87b662d34847
а затем вы можете написать тви: «Вот SHA-256 хэш предсказания, которое я делаю: 64b70b0494580b278d7f1f551d482a3fb952a4b018b43090ffeb87b662d34847».
Все скажут: «Ну разве ты не надоедливый?», но не смогут расшифровать твоё предсказание. А через некоторое время, когда «Джетс» выиграют Суперкубок, вы сможете сказать: «Вот видите, я угадал!». Вы ретвитнете хэшированный твит и обычный текст вашего предсказания. Если кто-то захочет, он может обратиться к калькулятору хэшей и проверить, действительно ли хэш соответствует вашему предсказанию. Тогда вся слава достанется вам.
Ключ
Помимо хэширования, еще одной важной односторонней функцией является шифрование с открытым ключом.
У меня есть два числа, называемые «открытый ключ» и «закрытый ключ». Эти числа длинные и выглядят случайными, но они связаны друг с другом: используя общедоступный алгоритм, одно число можно использовать для блокировки сообщения, а другое — для его разблокировки. Система двух ключей решает классическую проблему с кодами: если ключ, который я использую для шифрования сообщения, тот же самый, который понадобится вам для его расшифровки, то в какой-то момент я должен буду послать вам этот ключ. Любой, кто украдёт ключ при передаче, сможет прочитать наши сообщения.
При шифровании с открытым ключом никому не нужно делиться секретным ключом.
Открытый ключ является публичным: я могу послать его всем, опубликовать в своём Twitter и т.д. Закрытый ключ является секретным, и я никому его не передаю.
Вы хотите отправить мне секретное сообщение. Вы пишете сообщение и прогоняете его через алгоритм шифрования, который использует 1) сообщение и 2) мой открытый ключ (который есть у вас) для создания зашифрованного сообщения, которое вы отправляете мне. Затем я прогоняю сообщение через программу расшифровки, которая использует 1) зашифрованное сообщение и 2) мой закрытый ключ (который есть только у меня) для создания оригинального сообщения, которое я могу прочитать.
Вы можете зашифровать сообщение, используя мой открытый ключ, но никто не может расшифровать его, используя открытый ключ. Только я могу расшифровать его с помощью моего закрытого ключа. (Функция является односторонней, насколько это возможно для вас, но я могу обратить её с помощью своего закрытого ключа).
Мини-брелок
Связанная идея (с обозначенными выше) — это «цифровая подпись». Опять же, у меня есть открытый ключ и закрытый ключ. Мой открытый ключ размещен в моей биографии в Twitter. Я хочу отправить вам сообщение и хочу, чтобы вы знали, что его написал я. Я прогоняю сообщение через программу шифрования, которая использует 1) сообщение и 2) мой закрытый ключ. Затем я отправляю вам 1) оригинальное сообщение и 2) зашифрованное сообщение.
Вы используете программу расшифровки, которая использует 1) зашифрованное сообщение и 2) мой открытый ключ для расшифровки сообщения. Расшифрованное сообщение совпадает с оригинальным. Это доказывает вам, что я зашифровал сообщение. Таким образом, вы знаете, что я написал его. Я мог бы просто послать вам сообщение в Twitter, но это более криптографично.
Представьте себе простую банковскую систему, в которой банковские счета являются открытыми: существует публичный список счетов, и каждый из них имеет (публичный) баланс и публичный ключ. Я говорю вам: «я контролирую счёт № 00123456789, на котором лежит 250 долларов, и я собираюсь отправить вам 50 долларов». Я посылаю вам сообщение с цифровой подписью: «Вот $50», а вы расшифровываете это сообщение, используя открытый ключ счета, и тогда вы знаете, что я действительно контролирую этот счёт и всё подтверждается.
Это основная идея, лежащая в основе Биткоина, хотя есть и более сложные идеи.
iv. Как работает Биткоин
В простой форме Биткоин работает следующим образом.
Существует большой публичный список адресов, каждый из которых имеет уникальную метку, похожую на случайные цифры и буквы, и некоторый остаток биткоина на нём.
Адрес может иметь метку «1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa» (примечание: Это известный в криптоистории адрес, по которому был получен первый Биткойн. Предположительно он принадлежит Сатоши Накамото) и баланс в 68,6 биткоина. Адрес действует как открытый ключ.Если я «владею» этими Биткоинами, это означает, что я владею закрытым ключом, соответствующим этому адресу, то есть фактически паролем доступа к счёту.
На самом деле адрес является хэшем открытого ключа.
Но «на самом деле совершенно законной криптографической терминологией является обращение к хэшу pubkey как к самому открытому ключу», — написал Виталик Бутерин, создатель Ethereum, ещё одного крупного блокчейна, в своей «Белой книге» 2014 года, объясняющей этот проект. Раз это достаточно хорошо для Виталика, достаточно хорошо для меня.
Поскольку у меня есть закрытый ключ, я могу отправить вам биткоин, подписав сообщение своим закрытым ключом.
Вы можете сверить эту подпись с моим открытым ключом и с открытым списком адресов и балансов биткоинов. Этой информации достаточно для подтверждения того, что я контролирую биткоин, который я вам посылаю, но недостаточно для того, чтобы вы могли узнать мой закрытый ключ и украсть (мой) остаток биткоина.
Это означает, что я могу отправить вам биткоин без того, чтобы вы доверяли мне, или я доверял вам, или кто-то из нас доверял банку, чтобы проверить, что у меня есть деньги. «Мы определяем электронную монету как цепочку цифровых подписей, — писал Сатоши. Комбинации публичного адреса и закрытого ключа достаточно для определения монеты».
Криптовалюта называется криптовалютой, потому что это валюта, созданная на основе криптографии.
Сатоши сказал, что биткоин — это, по сути, цепочка подписей. Вы могли заметить, что всё, что мы здесь сделали, — это обменялись сообщениями и каким-то образом назвали результат этого обмена валютой. Традиционная финансовая система не так уж отличается: банки не перевозят мешки с золотом или даже очень много бумажных купюр. Они хранят базы данных. Когда я плачу вам 100 долларов, мой банк посылает вашему банку сообщение с просьбой обновить бухгалтерскую книгу.
Аналогично, в Биткоине сообщения изменяют (публичную) бухгалтерскую книгу о том, кто чем владеет.
Но кто её ведет? Приблизительный ответ заключается в том, что сеть Биткоина — это тысячи людей, которые используют Биткоин и запускают его программное обеспечение на своих компьютерах — они и ведут бухгалтерскую книгу совместно и без излишеств. Существуют тысячи копий бухгалтерской книги; каждый узел сети имеет свой собственный список того, сколько биткоинов находится в каждом адресе.
Затем, когда мы проводим транзакцию — когда я посылаю вам биткоин — мы не просто делаем это в частном порядке; мы передаём это по всей сети, чтобы каждый мог обновить свои списки. Если я отправлю вам биткоин со своего адреса, и моя подпись на транзакции будет действительной, все обновят свои бухгалтерские книги, чтобы добавить один биткойн на ваш адрес и вычесть один из моего.
На самом деле бухгалтерская книга — это не просто список адресов и их балансов; это запись каждой отдельной транзакции. Бухгалтерская книга ведётся всеми участниками сети, отслеживающими каждую транзакцию для себя.
В техническом документе Биткоина есть раздел под названием «Восстановление дискового пространства» о том, как сеть может сжимать некоторые данные о старых транзакциях, используя деревья Меркла. Всё это выходит за рамки данной статьи, но люди в криптовалюте часто говорят «деревья Меркла«, так что вот так.
Это здорово! Но теперь, вместо того чтобы доверять банку вести учёт ваших денег, вы доверяете тысячам анонимных незнакомцев.
Чего мы добились?
Всё не так уж плохо. Каждая транзакция доказательно корректна: если я отправлю биткойн со своего адреса на ваш и подпишу его своим закрытым ключом, сеть включит транзакцию; если я попытаюсь отправить биткоин с чужого адреса на ваш и не буду иметь закрытого ключа, все в сети увидят, что это подделка, и не включат транзакцию. Все запускают программное обеспечение с открытым исходным кодом, чтобы обновлять бухгалтерскую книгу для транзакций, которые можно проверить.
Все хранят бухгалтерскую книгу, но вы можете доказать, что каждая транзакция в книге достоверна, поэтому вам не нужно слишком доверять им.
Кстати, я говорю, что «каждый» ведёт бухгалтерскую книгу, и это, вероятно, было примерно так в начале жизни Биткоина, но не теперь. Существуют тысячи людей, управляющих «полными узлами» (полными нодами), которые загружают, поддерживают и проверяют всю бухгалтерскую книгу Биткоина самостоятельно, используя официальное программное обеспечение Биткойна с открытым исходным кодом. Но есть ещё миллионы людей, которые не делают этого, а просто имеют немного Биткоина и доверяют, что все остальные будут поддерживать систему правильно. Однако основа их доверия несколько отличается от основы вашего доверия к своему банку.
В принципе, они могут проверить, что каждый, кто проверяет транзакции, проверяет их правильно.
Заметьте также, что существует финансовый стимул для всех быть честными: если все честны, то это работающая платёжная система, которая может быть ценной. Если же многие люди будут нечестны и внесут в свои бухгалтерские книги фальшивые транзакции, то никто не будет доверять Биткоину, и он станет бесполезным.
Какой смысл воровать биткоин [Прим. Menaskop: ещё раз: биткоин — монета, Биткоин — сеть: если написано где-то иначе — опечатка по тексту], если ценность биткоина равна нулю?
Это стандартный подход в криптовалютах: криптосистемы пытаются использовать экономические стимулы, чтобы заставить людей действовать честно, а не доверять им, чтобы они действовали честно.
Это большая часть истории, но она оставляет некоторые небольшие проблемы.
Откуда взялся весь Биткоин? Неплохо сказать, что каждый участник сети ведёт учёт всех транзакций с биткоинами, которые когда-либо происходили, и ваш биткоин можно отследить по серии предыдущих транзакций.
Но что именно можно отследить? Как завести бухгалтерскую книгу?
Другая проблема заключается в том, что порядок транзакций имеет значение: если у меня на счету один биткоин, я отправляю его вам, а затем отправляю его кому-то ещё, то у кого на самом деле находится Биткойн? Это кажется почти тривиальным, но это непросто.
Биткоин — децентрализованная сеть, которая работает путём рассылки транзакций на тысячи узлов, и нет никакой гарантии, что все они придут в одном и том же порядке. И если все не согласны с порядком, могут произойти плохие вещи — «двойные траты» (двойное расходование). «Транзакции должны быть публично объявлены», — писал Сатоши, — «и нам нужна система, чтобы участники могли договориться о единой истории порядка их получения».
Такой системой, к сожалению, является блокчейн.
v. Блокчейн
Каждая транзакция Bitcoin транслируется в сеть. Некоторые компьютеры в сети — их называют «майнерами» — собирают транзакции по мере их поступления в группу, называемую «блок». В определённый момент версия блока становится, так сказать, официальной: список транзакций в этом блоке, в том порядке, в котором они перечислены, становится каноническим, частью официальной записи Биткоина. Мы говорим, что блок был «добыт». В Биткоине новый блок добывается примерно каждые 10 минут.
На самом деле, блок становится действительно каноническим, когда у него есть «пять подтверждений»: когда он был добыт, а затем был добыт другой блок, который ссылается на него, а затем был добыт другой блок, ссылающийся на этот блок, и т.д., пять раз, так что цепочка продолжилась через пять блоков после рассматриваемого блока. [Примечание Menaskop: хотя на деле используется 6 и более подтверждений].
Готовый блок можно посмотреть в Интернете на любом сайте «block explorer».
Например, блок 755965, добытый 27 сентября, представляет собой список из 2 466 транзакций между различными адресами. Адрес, начинающийся с bc1qns, отправил 0,0052 биткойна на адрес, начинающийся с 16qZC7; 39VgGL разделил 0,012 биткойна между 14NrDK и 37o1E3; и так далее.
Затем майнеры начинают составлять новый блок, который в конечном итоге также будет добыт и станет официальным. Вот где хеширование становится важным.
Новый блок будет ссылаться на предыдущий блок, содержа хэш этого блока — это подтверждает, что предыдущий блок 1) правильный и принят сетью и 2) появился раньше него по времени. Каждый блок будет ссылаться на предыдущий блок в цепочке — о, да, (это и есть) блокчейн. Блокчейн создает официальную запись о том, какие транзакции были согласованы сетью и в каком порядке. Хэши — это метки времени; они создают согласованный порядок транзакций.
Можно представить себе простую систему для этого.
Каждые 10 минут майнер предлагает список транзакций, и все компьютеры в сети Биткойн голосуют за него. Если список набирает большинство голосов, он становится официальным и вносится в блокчейн.
К сожалению, это слишком просто. Нет никаких правил относительно того, кто может присоединиться к сети Биткоин: Это может сделать любой, кто подключит компьютер и запустит программное обеспечение Bitcoin с открытым исходным кодом. Вам не нужно доказывать, что вы хороший человек или вообще человек. Вы можете подключить тысячу компьютеров, если хотите.
Это создаёт риск того, что иногда называют «атакой Сивиллы«, названной не в честь древнегреческих пророчиц, а в честь книги 1973 года о женщине, которая утверждала, что у неё несколько личностей.
Идея атаки Sybil заключается в том, что в системе, где бухгалтерская книга коллективно ведётся группой и любой может присоединиться к ней без разрешения, вы можете раскрутить кучу компьютерных узлов так, чтобы выглядеть как тысячи людей. Затем вы проверяете плохие транзакции для себя, и все говорят: «А, ну посмотрите, все эти люди проверяют транзакции», — и они принимают ваши транзакции как консенсус большинства, и вам либо удается украсть немного денег, либо вы, по крайней мере, ввергаете всю систему в хаос.
Решение этой проблемы заключается в том, чтобы сделать проверку транзакций дорогостоящей.
Чтобы добыть блок, майнеры Bitcoin делают абсурдную и дорогостоящую вещь.
Опять же, это связано с хешированием. Каждый майнер берёт сводный список транзакций в блоке, а также хэш предыдущего блока. Затем майнер вставляет в конец списка ещё одно произвольное число, называемое «nonce«.
Майнер прогоняет всё это (список плюс nonce) через алгоритм хэширования SHA-256. В результате генерируется 64-значное шестнадцатеричное число. Если это число достаточно мало, значит, майнер добыл блок. Если нет, майнер повторяет попытку с другим кодом.
Что значит «достаточно маленькое», устанавливается программным обеспечением Биткоина и может быть скорректировано, чтобы облегчить или затруднить добычу блока. (Цель — в среднем добыть один блок каждые 10 минут; чем больше майнеров и чем быстрее их компьютеры, тем сложнее добывать блок). Сейчас «достаточно маленький» означает, что хэш должен начинаться с 19 нулей.
Недавняя успешная добыча выглядела следующим образом:
00000000000000000006c9f1194ce7ff75c5f265d5520878e9e9392c3c8ff203
Это похоже на игру «20 вопросов», где вы постоянно угадываете число, которое сработает. Только вы не получаете подсказок, и это во много, много, много раз больше, чем 20 угадываний. Исчезающе, исчезающе маловероятно, что любой конкретный вход — любой список транзакций плюс кодовый ключ — приведёт к хешированию числа, начинающегося с 19 нулей.
Шансы примерно 75 секстиллионов к 1 против.
Поэтому майнеры запускают алгоритм хэширования снова и снова, триллионы раз, каждый раз угадывая другой nonce, пока не получат хэш с нужным количеством нулей. Общая скорость хэширования в сети Биткоин составляет около 200 миллионов тера-хешей в секунду, то есть 200 квинтиллионов вычислений хэша в секунду, что 1) много, но 2) намного меньше 75 секстиллионов. Чтобы угадать правильный nonce и добыть блок, требуется много секунд — в среднем 600 — при 200 квинтиллионах хэшей в секунду.
И снова дам слово Виталику: «поскольку SHA256 разработан как совершенно непредсказуемая псевдослучайная функция, единственный способ создать правильный блок — это просто метод проб и ошибок, многократно увеличивая nonce и проверяя, совпадает ли новый хэш».
Это гонка. Только один майнер добывает блок, и этот майнер получает вознаграждение в виде биткоина. Добыть блок — это также «добыть» новые монеты — вырвать их из системы после долгих вычислений, как найти пласт золота после ковыряния в породе. Отсюда и метафора.
Когда майнеры находят нужное количество нулей, они публикуют блок и его хэш в сети Биткоин. Все остальные рассматривают блок и решают, является ли он действительным. («Действителен» означает, что все транзакции в списке действительны, хэш правильный, в нём нужное количество нулей и т.д.) Если да, то начинается работа над следующим блоком: они берут хэш предыдущего блока, плюс транзакции, поступившие с тех пор, плюс новый nonce, и пытаются найти новый хэш. Каждый блок строится на основе предыдущего.
[Продолжение следует]
vi. Mining
…