Криптовалюта: использует технологию блокчейн, с помощью которой хранится вся история транзакций и, следовательно, точная сумма валюты, которой владеет каждый участник сообщества.
Биткоин (с прописной буквы): так обозначается концепция и протокол первой децентрализованной криптовалюты, использующей технологию блокчейн.
биткоин(-ы) – со строчной: валюта сама по себе.
Какая была первая децентрализованная валюта?
Во всем мире было несколько культур, которые отказались от централизованной денежной системы. Хотя очень сложно сказать, какая из них была самой большой или первой, но идею блокчейна и децентрализованной валюты очень хорошо передают камни Раи на острове Яп.[8] У островитян не было золота в достаточном количестве, поэтому, чтобы иметь хоть какую-то валюту, доступную каждому, они вырезали огромные круглые камни из известняка, которые потом использовали в качестве валюты. Теоретически, каждый островитянин мог бы это делать, но добыча камней стала узкоспециализированной задачей, которую выполняли несколько человек, в то время как другие предпочли продавать товары или услуги, чтобы получить такие камни взамен. Система была децентрализованной, поскольку она была полностью открыта для всех, кто хотел присоединиться, и у всех участников были одинаковые права.
Однако если вы посмотрите на критерии хорошей валюты, о которых мы говорили ранее, то видна одна большая проблема: транспортировка. Перевозка этих камней из одного места в другое превращалась в кошмар. И какое же было решение? Вместо того чтобы физически транспортировать камни, островитяне хранили их в определенных местах, например, перед церковью, домом и т. д., а затем передавали их в виртуальную собственность. Это срабатывало благодаря тому, что островитяне информировали всех остальных членов сообщества, кому они только что дали в собственность один из камней Раи. Камни стали не только отличным средством сохранения стоимости и мерой стоимости, но и хорошим методом транспортировки – без их фактического перемещения из одного места в другое. Он был основан на децентрализованной системе, где каждый островитянин знал, кому принадлежит конкретный камень.
Взглянув на блокчейн и криптовалюты, вы скоро поймете, насколько в действительности близка их идея с идеей камней Раи, но с той разницей, что камни Раи являются физическими, а криптовалюты – цифровыми. И поэтому криптовалюты нуждаются в блокчейне, как в базовой технологии. В этом распределенном реестре избегается двойная трата, поскольку каждая монета в блокчейне отслеживается всеми участниками. На острове Яп три задачи денежной системы (доступ к деньгам, отправка и получение денег, а также денежные средства) были децентрализованы за счет того, что камни Раи было сложно изготовить, но в конечном итоге они легко транспортировались (посредством виртуальной собственности).
Криптовалюты также обладают этими свойствами, и в следующей главе мы последовательно их рассмотрим.
Глава 3
Закрытые ключи и публичные адреса
Первое, с чем нам нужно определиться в цифровой денежной системе, когда мы хотим отправить деньги от одного человека другому, – это счета.
Как работает децентрализованное управление счетами?
В банковской системе у вас есть номер счета для того, чтобы люди могли отправлять вам деньги. Номер вашего банковского счета уникален; такой числовой последовательности нет ни у кого больше. Иначе, если вы дали кому-то свой номер счета для перевода денег, они бы пришли кому-то другому. То же самое справедливо и в отношении электронной почты: когда вы регистрируетесь, например, в Gmail, сервис во избежание конфликта адресов проверяет, не занят ли уже такой адрес. Банк или Gmail являются централизованными службами и поэтому работают именно так. Пока они хорошо выполняют свою работу, все хорошо. Но что, если банк вдруг решит закрыть ваш счет, или Gmail больше не предоставит вам доступа к вашим письмам? Что делать, если централизованная служба злоупотребляет своей властью?
В децентрализованной системе этого точно не произойдет, потому что центральная сторона, которая владеет базой данных счетов, отсутствует. Она не может закрыть вас или взять что-нибудь от вас. Но как избежать двух адресов в системе, заканчивающихся одинаково? Есть несколько настоящих прорывов в блокчейн-технологиях, о которых большинство людей не знают. Это решение относительно адресов является одной из вещей, которая по-настоящему волнует меня каждый раз, когда я об этом думаю. Решение дает криптография с закрытым ключом и публичным адресом.
Что такое закрытый ключ и публичный адрес?
Поскольку в системе отсутствует централизованная база данных, то при регистрации вы просто получаете случайное число, так называемый закрытый ключ, или сид (seed), который представляет собой строку из букв, цифр или набор случайных слов. В случае Биткоина, который является самой известной криптовалютой, вы получаете случайное число из 2256 вероятностей. Такое число выглядит как единица с восьмьюдесятью нулями:
Количество возможных номеров счета чудовищно велико! Примерно столько же, сколько атомов в наблюдаемой части Вселенной. Обычно этот закрытый ключ отображается не в виде числа, а в шестнадцатеричном представлении из 64 цифр/букв. Например, так:
E9873D79C6D87DC0FB6A5778633389F4453213303DA61 F20BD67FC233AA33262
Большинство людей в криптосистеме не генерируют этот закрытый ключ самостоятельно, а позволяют это делать компьютерной программе. Закрытый ключ нужен для отправки денег так же, как нужен пароль для входа в учетную запись, чтобы отправить электронное письмо.
Здесь кроется важное отличие криптовалюты от регистрации в почте: публичный адрес выбираете не вы сами – он математически выводится из закрытого ключа. Представьте, что, когда вы входите в почту, все, что вам нужно ввести, – это пароль, а адрес электронной почты для этого конкретного пароля назначается автоматически. В Биткоине это работает с помощью эллиптической криптографии и функций SHA-256 и RIPEMD-160. Если вы хотите углубиться в эту тему, то введите в поисковике «Julian Hosp cryptography». У меня есть много видео и постов в соцсетях, где я объясняю эти тонкости.
В этих математических функциях важно то, что невозможно угадать «пароль» (закрытый ключ), если вы просто знаете «адрес электронной почты» (публичный адрес). Однако с математической точки зрения очень просто добраться до публичного адреса, если вы знаете свой закрытый ключ.
Проще говоря, представьте себе, что закрытый ключ – это случайное число, а связанный с ним публичный адрес – квадрат этого числа. То есть если ваш закрытый ключ это 8, то публичный адрес будет 8 во второй степени, или 64. Большинство из нас может вычислить это на бумаге. Но давайте пойдем от обратного. Если бы я сказал вам, что мой публичный адрес это 289, какой был бы тогда мой закрытый ключ? Если у вас нет калькулятора, то единственный способ это узнать – это подбор значений: что такое квадратный корень из 289? 15? Нет, слишком мало. 20? Нет, слишком много. Где-то между. 17. Верно. Теперь представьте, что это делается с числами, которые содержат 50 или более цифр. Было бы легко возвести любое из этих чисел в квадрат, но потребовалось бы много времени, чтобы произвести обратную операцию.
Возведение в квадрат было просто упрощением, потому что в реальных криптовалютах этот процесс в миллиарды раз сложнее. Даже если бы вы объединили все компьютеры для решения этих проблем, Вселенная схлопнулась бы раньше, чем вы смогли бы найти решение. Существует такое количество вероятностей, как и атомов в известной Вселенной. И вывести из публичного адреса закрытый ключ так сложно, что статистически более вероятно, что вы сможете бегать по стенам, а все ваши атомы одновременно подвергнутся квантовому туннелированию,[9] позволяя вам пройти через стену. Вы когда-нибудь испытывали подобное или видели, как это делает кто-то другой? Вот и я тоже нет. Поэтому никто не сможет угадать ваш закрытый ключ, а у двух людей он не может быть одинаковым. Опять же, более вероятно, что вы начнете бегать по стенам, не касаясь их, чем получите случайно закрытый ключ, который кто-то использовал для хранения биткоинов. Если вы мне не верите, то попробуйте пробежаться по стене. ☺
Вы можете спросить: «Что безопаснее – хранить миллиарды долларов в сейфе, место которого известно, и чтобы вскрыть его, нужно только прорвать систему безопасности (централизованную систему: банковскую или почтовую), или иметь огромное количество полностью открытых сейфов, внутри которых могут быть миллиарды долларов, но чтобы вскрыть такой сейф, понадобится времени столько, сколько существует Вселенная?» Пока это все не так хорошо знакомо, и мысль о случайном числе, которое теоретически может быть таким же, как и у кого-то другого, не вызывает доверия, особенно когда мы слышим новости о том, что некоторые суперкомпьютеры пытаются генерировать адреса с деньгами и преуспевают в этом. Как это возможно математически? Оказывается, изначальные создатели адресов не использовали систему с надлежащим генератором случайных адресов. Вот почему особенно важно использовать только сервисы с открытым исходным кодом, которые постоянно тестируются. А если вы не делаете этого, то похожи на человека, который в качестве пароля использует 1234.
[СОВЕТ]
В главе о кошельках вы узнаете об отличных сервисах, в которых нет такой проблемы, и генерация адресов там действительно случайна.
Для тех из вас, кто хочет понять настоящий криптографический процесс, ниже приведено описание такого процесса для биткоина. Эту часть можно пропустить, если вас не интересуют математические подробности.
1. Начать со случайно выбранного закрытого ключа от 1 до 2256.
2. Использовать криптографию на эллиптической кривой, где закрытый ключ является «множителем».
3. Это ваш публичный ключ.
4. Выполнить функцию «Hash160» с помощью алгоритма хеширования SHA256, а затем функцию RIPEMD160.
5. Записать ключ в формате кодирования Base58 Check как «контрольную сумму» (аналогично, например, проверке номера кредитной карты).
6. Это ваш публичный адрес.
Например, биткоин-адрес начинается с 1 или 3 и может содержать 34 символа:
1HFSx5TPYYzQTQmBXeJNcMhUDT6FNGF11q
(Этот адрес является рандомным, поэтому НЕ посылайте туда никаких средств.)
Что означает открытый исходный код?
Открытый исходный код (open source) означает, что код программы или блокчейна является общедоступным и может быть кем-либо проверен. Это позволяет другим проверять, сообщать об улучшениях, а также предупреждать, являются ли сервисы неисправными или вредоносными. В блокчейне и криптовалютах этот аспект необходим для открытого и инклюзивного сообщества.
Зачем нам нужны закрытые ключи и публичные адреса?
Эта система на 100 % инклюзивна. Это значит, что любой, или даже кто угодно, может присоединиться к сообществу блокчейн. Ничто и никто не может вас заблокировать, так как все, что вам нужно сделать, это создать закрытый ключ и получить с его помощью публичный адрес. При взгляде на некоторые из преимуществ децентрализованной валюты становится ясно, насколько ценна эта функция, особенно если смотреть на регионы мира, где традиционные банковские системы все еще очень ограничены. Любой человек может знать ваш публичный адрес («ваш адрес электронной почты»), чтобы вы могли получать деньги, но только ваш закрытый ключ (например, пароль от почты) необходим для отправки денег, связанных с публичным адресом. По аналогии, любой может отправить вам электронное письмо, но только тот, кто знает пароль, может отправить письмо с определенной учетной записи. Да, хакеры пытаются завладеть паролем с помощью фишинговых писем, но вы поняли основную мысль.
Самый важный урок, который нужно извлечь из этой главы:
Я не могу так часто это повторять. Существуют сайты, которые продают особые публичные адреса – например, с вашим именем внутри адреса: 1HFSx5JULIANHOSPXeJNcMhUDT6FNGF11q. Это работает на веб-сайтах, которые перепробовали триллионы закрытых ключей, пока не нашли такой привлекательный публичный адрес. Хотя кажется, что при использовании таких сервисов существует огромный риск для безопасности, поскольку, если кто-то знает ваш закрытый ключ, это как будто бы они знают ваш пароль от электронной почты.
Итак, что будет после того, как у каждого участника будет одна или несколько учетных записей для отправки и получения денег в этой системе? Следующее, что нужно решить (лично для меня это было настоящим открытием!) – это сколько денег фактически будет находиться в любой заданной учетной записи. Это вопрос, с которого мы начали эту главу: как вы можете избежать двойной траты, если центральная сторона не следит за учетными записями? Именно здесь вступает в игру процесс под названием «майнинг».
Глава 4
Майнинг
Майнинг – это одна из наиболее непонятных вещей в мире криптовалют. Большинство людей думают, что майнинг – это процесс создания валют, например биткоинов. Это верно лишь отчасти.
Что такое майнинг?
Консенсус – это соглашение о том, сколько денег будет привязано к тому или иному закрытому ключу. В основном, сколько денег на счету каждого участника. В централизованной системе, как в случае с бумажными деньгами, центральное учреждение – банк – следит за тем, сколько денег у вас есть и действительно ли вы можете заплатить за что-то или нет. В децентрализованных системах каждый участник наблюдает за всеми остальными, а затем подтверждает или отклоняет транзакцию на основе того, есть ли у вас деньги или нет.
Кто такие пользователи, ноды и майнеры?
Пользователи (также называются «легкие ноды», light-nodes): большинство людей в децентрализованной сети являются пользователями. Они производят и получают платежи и выплачивают майнерам небольшую плату (эта плата также может быть нулевой) для проверки действительности их транзакций.
Полные ноды: ноды (узлы) пересылают информацию, которую они получают, и обеспечивают всех участников одинаковой информацией. Таким образом сеть остается децентрализованной.
Майнеры: майнеры проверяют и подтверждают транзакции, которые хотят сделать пользователи. Они создают консенсус. Теоретически, любой может выполнять все эти три вещи: майнить (проверять транзакции), пересылать информацию другим (полная нода) и использовать систему (пользователь). Однако эти роли более специализированы. Большинство людей, использующих криптовалюту, присоединяются к пользователю, чтобы отправлять и получать деньги.
Другие функции выполняют майнеры, чтобы убедиться, что транзакции верны и что полные ноды перенаправляют транзакции внутри сети, чтобы каждый имел одинаковую информацию о том, как выглядит история транзакций (блокчейн). Полные ноды настроены в качестве контрольных точек и фактически не участвуют в реальных транзакциях. В результате не одно центральное учреждение, а большая группа людей создает консенсус.
Что такое консенсус?
Консенсус – это соглашение о том, что есть и чего не произошло. Как это работает в децентрализованной системе? Какие шансы, что чем больше участников (майнеров), тем больше разногласий? Технологии блокчейн имеют элегантное решение для создания консенсуса. Как только вы решите совершить платеж, то должны использовать свой закрытый ключ, чтобы «подписать» эту транзакцию. Это означает, что вы отправляете деньги с одного публичного адреса на другой. Поскольку только у вас (я надеюсь!) есть закрытый ключ, связанный с публичным адресом, то монеты можете отправить только вы и никто другой. Поскольку нет центрального органа, который просматривает транзакции, то вы должны транслировать эту транзакцию на несколько полных нод, к которым подключен ваш кошелек, – кошелек делает это автоматически. Затем ноды перенаправляют эту информацию на другие ноды и майнеров, которые делают то же самое. В течение нескольких миллисекунд возникает экспоненциальная волна, и вскоре каждый член сообщества знает о вашей транзакции.
Всякий раз, когда майнеры получают транзакцию, они проверяют, действительно ли транзакция была правильно подписана закрытым ключом и, самое главное, есть ли у вас монеты. Поскольку каждую секунду появляются новые транзакции, вы можете за небольшую плату «подкупить» майнеров, чтобы они в первую очередь выбрали и «проверили» ваши транзакции. Теоретически, вам не нужно платить какие-либо сборы, но так как одновременно происходит очень много транзакций, майнеры не станут обрабатывать вашу транзакцию, чтобы включить ее в блокчейн (историю транзакций). Майнеры зарабатывают больше при обработке тех транзакций, от которых получают плату. Каждая законная криптовалюта имеет множество криптографических правил, которые гарантируют, что майнеры не смогут ничего подделать. Например, они не могут просто создавать поддельные транзакции и кредитовать себя миллионами долларов.
Как именно определяют, какой майнер получает ваш сбор, ведь плату должен получить только один? А что, если вы попробуете совершить атаку двойной траты, передавая одну транзакцию одному майнеру, а другую транзакцию с теми же деньгами – другому? Какая транзакция действительна, а какая нет? Несмотря на то что среди майнеров существует демократическая система, если кто-то просто проголосует за транзакции по своему усмотрению, это будет довольно хаотично. Кроме того, раз все, что вам нужно для вашей транзакции, – это подтвердить ее действительность другими майне-рами, то почему бы не создать тысячи майнеров самостоятельно? Они, в свою очередь, могли бы подтвердить, что кто-то послал вам миллионы долларов. Это можно было бы назвать атакой Сивиллы, и мы поговорим об этом, когда будем говорить об атаках криптовалюты.
Что такое алгоритм консенсуса?
Чтобы избежать всего этого хаоса, легальные криптовалюты разработали механизмы консенсуса, которые регулируют проблемы в децентрализованной системе:
1. Противоречивая информация – один майнер говорит одно, а второй – другое.
2. Возможность создания фейковых майнеров, которые работают в ваших интересах и позволяют осуществлять мошеннические действия.
3. Механизмы стимулирования мотивации большего числа людей участвовать в консенсусе не только в качестве пользователя.
Хотя в процессе создания консенсуса есть еще много алгоритмов, которые могут быть обозначены по-разному в разных криптовалютах, есть три наиболее важных:
1. Доказательство значимости (Proof of Importance).
2. Доказательство доли владения (Proof of Stake).
3. Доказательство выполнения работы (Proof of Work).
Это один из наименее используемых до сих пор механизмов. Его можно было бы использовать более широко, но чаще всего используется алгоритм «Доказательство выполнения работ». С помощью алгоритма консенсуса «Доказательство значимости» участник с «наибольшей важностью» может сказать, какие транзакции произошли, и он также чаще всего получает вознаграждение. Поскольку такое лицо не будет единственным участником с наибольшей важностью, то все сводится к вероятностному сочетанию того, у кого из них наилучшая репутация. Насколько важно это установить? У криптовалют для этого есть разные механизмы, но одним из факторов является время, когда кто-то является частью системы вместе с количеством других майнеров, доверяющих им и решивших получить от них информацию.
Сравните это с социальными сетями. Вы, скорее всего, добавите в друзья в «Фейсбук» кого-то, кто там уже довольно давно, имеет не фейковую с виду страницу, и на этого человека уже подписаны многие из ваших друзей. Примерно так же работает «Доказательство значимости» в мире децентрализации. Коэффициент важности каждого человека основывается на ценности, которую определяет система, она решает, сколько у участников есть «полномочий», как часто они обрабатывают транзакции и как часто получают за это вознаграждение. Плюсом такой системы является то, что буквально любой участник, независимо от состояния счета, может достичь высокого уровня важности. Недостаток же в том, что эту систему можно обмануть, просто создав подставных участников, которые будут голосовать друг за друга, тем самым создавая важность. Это как фейковый аккаунт в соцсетях – люди начинают подписываться на него только потому, что на него уже подписалось много человек. Некоторые блокчейн-алгоритмы используют этот механизм, но ему, вероятно, еще нужны некоторые дополнительные функции.
Идею важности можно распространить еще дальше, когда важность заключается в деньгах. Тот, кто контролирует больше денег в системе, имеет большее значение. Как вы могли догадаться, у этой системы много критиков, поскольку встает вопрос, как такая сеть может быть децентрализована, если консенсус распределен между несколькими богатыми счетами. Пока что только несколько блокчейн-систем используют этот механизм, однако у тех, кто это делает, он работает хорошо. Риск одного крупного игрока, управляющего всем, является высоким, но у этой системы есть и преимущества:
• Механизм понимания вашего права формирования блока в системе предельно прост: сумма денег, которую вы ставите (доказательство ваших денег, заблокированных в специальном контракте на определенный период времени), делится на общую сумму, установленную сообществом. Таким образом, существует вероятность того, что, хотя у кого-то может быть много денег, у них все еще может не быть права голоса, потому что они тратят деньги на регулярной основе и не ставят их в качестве доказательства своей собственности. Математика понятна и проста. Если вы, например, владеете 1000 монет, а в общей сложности есть 100 000 монет, то у вас есть 1 % голосов, и, как ожидается, вы получите 1 % голосов и 1 % вознаграждений.
• Так как вознаграждения в системе транзакций находятся в общем доступе, то тот, кто владеет бо́льшим количеством денег, получит больший процент вознаграждений. Таким образом, вы можете рассчитать точную прибыль от своих денег на ежегодной основе, что может быть интересной инвестиционной возможностью. Например, вы знаете, что блокчейн может вознаградить вас 5 % от вашего фиксированного капитала в год. Вы владеете тысячей монет и ежегодно получаете 50 монет за участие в алгоритме консенсуса. В зависимости от стоимости монет, вознаграждение может быть большим.
• Поскольку в законных блокчейн-системах деньги не могут создаваться из воздуха, то возможность мошенничества, как и при алгоритме «Доказательство значимости», довольно низкая.
Конечно, есть и недостатки. Кроме богатых, становящихся еще богаче, – существует риск атаки фор-ка. Мы обсудим это чуть позже, но сейчас я кратко это опишу: в случае алгоритма «Доказательство доли владения», если в блокчейне появляется форк (разветвление), то вы автоматически управляете монетами на обеих новых ветвях. Вы только удвоили свои монеты, на которых вы можете продолжать формировать блоки. Разработчики все еще ищут варианты решения этой проблемы. Это отличается от алгоритма «Доказательство выполнения работ», так как здесь вы должны принять решение о том, в какую цепочку вы вкладываете свою работу.
Последний, третий алгоритм консенсуса – наиболее часто и давно используемый. Большинство крупных криптовалют используют его, потому что в последние годы он был широко протестирован и наиболее устойчив к вышеупомянутым атакам форков. Вместо того чтобы доказывать значимость или долю владения, вам нужно доказать, что вы проделали работу. Тот, кто первым выполнит эту работу, первым выбирает статус транзакции, а также получает награду за майнинг. Эта награда состоит из всех транзакционных сборов за добычу блока и, в зависимости от криптовалюты, из дополнительного стимула. Например, награда в системе Биткоин составляет 12,5 биткоина за блок. Давайте углубимся в эту концепцию, потому что она также объясняет много других важных идей одновременно. Мы могли бы сделать это на любом другом примере, но Биткоин – старейший и наиболее проверенный блокчейн, поэтому имеет смысл исследовать «Мать Всех Криптовалют».
Как подтверждается транзакция?
В системе Биткоин, если вы хотите отправить биткоин кому-то, это будет похоже на «отправку» камней Рай островитянами Япа. Вместо того чтобы фактически отправлять биткоины, вы уведомляете узлы и майнеров о том, кто является новым владельцем монет в блокчейне. Затем они передают эту информацию другим; но чтобы избежать какой-либо противоречивой информации, ни одно из ваших намерений не подтверждается сразу – они остаются неподтвержденными. Транзакция подтверждается только после ее включения в так называемый «блок». В алгоритмах «Доказательства доли владения» и «Доказательства значимости» время, когда один из участников, исходя из значимости или суммы ставки, первым может выбрать, какие транзакции включены, является фиксированным. Например, каждые 3 секунды, каждые 60 секунд или через любой другой произвольный интервал времени, заданный в алгоритме блокчейн. В «Доказательстве выполнения работ», тот, кто первым выполнил работу, тот и определяет состав блока, то есть подтверждает транзакцию в первый раз. Давайте рассмотрим это с точки зрения майнеров.
Майнеры наблюдают за транслируемыми транзакциями. Как только они обнаруживают транзакцию, то добавляют ее в свой пул[10] неподтвержденных транзакций. В то же время майнеры должны выполнить определенную работу. Все это полностью автоматизировано и происходит в фоновом режиме с молниеносной скоростью. Работа, которую они должны выполнить, – это вычисление сложных криптографических значений, которые можно сделать только путем повторения. Это похоже на сборку пазла. Каждый получает пазл с определенным количеством кусочков, и кто первым собирает пазл, тот побеждает. Кусочки пазла – это транзакции, которые не только состоят из нескольких фиксированных точек, но и содержат множество переменных. Например, один кусочек – это последняя часть пазла, которая была собрана первой. Каждый майнер использует тот же самый кусочек пазла для новой попытки. Затем майнеры выбирают транзакции, которые они хотят включить в этот пазл, и пытаются собрать его. Поскольку большинство блокчейн-систем разрешают только определенное количество транзакций на блок, майнеры должны выбирать транзакции. Скорее всего, они выбирают транзакции с самым высоким вознаграждением, которое они могут получить, если они выиграют.
Существует много возможностей, поэтому шансы того, что разные майнеры собирают разные пазлы (блоки), очень высоки. Блоки-пазлы структурированы таким образом, что они не могут быть собраны без добавления так называемого числа
Как находить блоки?
[РЕЖИМ БОТАНА]
Фактически майнеру удалось вычислить несколько криптографических алгоритмов SHA256, угадывая рандомный вход для фиксированного выхода.
[РЕЖИМ БОТАНА ВЫКЛЮЧЕН]