Третий закон Артура Кларка гласит: «Любая достаточно развитая технология неотличима от магии». Вещи, которые биткоин делает возможными, могут показаться на первый взгляд почти магическими или просто невозможными (иногда даже похожими на мошенничество). Ниже описаны основные технические элементы, лежащие в основе биткоина, и то, как он совмещает их, что складывается впечатление чего-то магического.
Второй закон Кларка гласит: «Единственный способ обнаружения пределов возможного состоит в том, чтобы отважиться сделать шаг в невозможное». И это мы видим в ретроспективе – то, что сделал создатель биткоина Сатоши Накамото. Мало кто в то время даже среди лучших умов в соответствующих областях мог подумать, что ЭТО действительно может сработать.
ЭТО сработало
Одна из причин, по которой многие люди имеют трудности в понимании биткоина в том, что он задействует несколько ключевых технологических направлений и методов, каждое из которых появилось лишь совсем недавно. Они включают в себя: программное обеспечение с открытым исходным кодом, p2p сети, цифровые подписи и алгоритмы хеширования. Самые первые разработки в каждой из этих областей произошли в период с 1970 по 1990 годы. Такие вещи не существовали 40 лет назад, что в историческом смысле сравни микросекундам, однако в эволюции цифровых технологий – это целая эпоха.
Некоторыми характерными вехами начала каждой из областей были: для программного обеспечения с открытым исходным кодом — проект GNU (1983) и проект Linux(1991); для p2pсетей — ARPANET (1979) и Napster (1999); для цифровых подписей — теория Диффи-Хеллмана (1976) и первая тестовая концепция RSA (1978); а для алгоритмов хеширования — самые ранние идеи (примерно 1953) и ключевые структуры Меркла-Дамгарда (1979). Биткоин объединяет в себе последние наилучшие наработки в каждой из областей, чтобы сделать возможным нечто новое.
С учетом того, что мало кто из основной массы людей понимает особенности функционирования стоящих за биткоином технологий, которые объединены вместе, а их результат удивляет даже экспертов, неудивительно, что понять биткоин без предварительного изучения весьма трудная задача. Мало того, что большинство людей не понимают, как биткоин работает технически, они даже не понимают ни одной из частей его составляющей! Впрочем, целью является не вводить пользователя в детали каждого из этих технических направлений, но предоставить такое объяснение, которое было бы доступно для понимания широкой общественности.
Биткоин одним словом – верификация
Это может помочь сосредоточиться не на деталях каждой области отдельно, а на том, как каждая часть стратегически способствует центральной функции биткоина. Это необходимо для создания и поддержания единичной записи, которая показывает присвоение каждого биткоин-блока конкретному адресу. Эта запись представлена в виде комбинированной цепочки блоков транзакций. Протокол биткоина, сеть, и все его части поддерживают работоспособность блокчейна и обновляют его, регистрируя новые записи о транзакциях таким образом, что любой желающий может проверить их достоверность. Биткоин пересматривает русскую поговорку «доверяй, но проверяй», до просто «проверяй».
Если бы можно было описать одним словом то, что делает биткоин-сеть, это слово было бы – верификация. Для трансграничной глобальной валюты опираться на доверие было бы конечно плохой идеей. Предыдущие денежные системы не оставляли пользователю иного выбора, кроме как полагаться на некоторую доверенную третью сторону.
Во-первых, ядро программного обеспечения биткоин поставляется с открытым исходным кодом и бесплатно. Любой человек может использовать его, изучить его, предлагать изменения или создать собственное ответвление под другим именем. В самом деле, большое количество вариаций биткоин с незначительными различиями уже существовали в течение некоторого времени. Подход с открытым исходным кодом может быть особенно полезным для безопасности, потому что больше одной пары глаз, скорее всего, быстрее найдут слабые места и увидят пути улучшения.
Открытый исходный код также имеет тенденцию способствовать естественной меритократии. Авторы, которые склонны использовать оптимальные суждения, как правило, имеют больше взносов, отражаемых в течение долгого времени. Нескончаемые дискуссии и споры на форумах являются особенностью, а не ошибкой. Они сосредотачивают внимание на проблемах – как реальных, так и воображаемых – которые помогают быть более уверенным, что все, что реализуется уже проверено и испытано с различных сторон.
На многих компьютерах по всему миру запущено программное обеспечение, реализующее протокол биткоин. Протокол примерно похож на разговорный язык. Участники должны говорить на этом языке, и они должны говорить на нем достаточно хорошо, чтобы их понимали другие. Новые протоколы могут быть сделаны, но также, как и в случае изобретения новых языков – это довольно непродуктивно. Такие вещи могут стать полезными, если достаточное количество людей увидят преимущества участия в них.
Во-вторых, сеть равноправных узлов не имеет центра. Любой желающий может скачать базовое программное обеспечение биткоин и создать новый узел. Этот узел будет находить и общаться с другими узлами. Ни один из узлов не имеет никакого специального органа или должности. Каждый соединяется с не менее чем восемью такими же как он, но иногда еще больше. Некоторые из узлов быстрее других, некоторые постоянно включены и пропускают большее количество информации, но это не предоставляет им никакого особого статуса. Любой узел может подключаться и отключаться от сети в любое время. Пользователь не должен запускать и поддерживать полноценный узел для того, чтобы использовать биткоин для обычных целей: покупка, трансфер денег и т.п..
В общем можно сказать, что биткоин является децентрализованным, то есть не имеет центра. Но тогда, где он находится? Тысячи активных пиринговых узлов расположены в самых разных странах мира, и каждый содержит свою свежую копию всего блокчейна.
Некоторые узлы не только передают действительные сделки и блоки, но и присоединяются к процессу выявления и добавления новых блоков в цепи. Такая майнинговая деятельность обеспечивает окончательное подтверждение сделок и назначает владение нового биткоин на участвующие узлы в качестве награды. Понимание основ работы майнинга требуется для того, чтобы взглянуть на различные функции нескольких типов криптографии.
Криптография биткоина
В биткоине используется два разных типа криптографии, которые мало кто понимает. Оба нелогичны в том, что они делают возможным. Когда большинство людей слышат слово «криптография», они думают о сохранении частной информации и ее кодирование с помощью шифрования. Шифрование файлов можно использовать для обеспечения безопасности файлов биткоин-кошелька пользователя, также как это может использоваться для защиты любых других файлов. Это называется шифрованием с симметричным ключом, которое означает, что тот же ключ используется для шифрования и дешифрования (AES256 является общим в этой роли). Шифрование также может быть использовано для безопасной связи между пользователями при совершении транзакций, как и обезопасить любой другой вид трафика. Это называется асимметричным ключом, который означает, что открытый ключ шифрует сообщение и соответствующий ему приватный ключ расшифровывает его на другом конце.
Тем не менее, все это вторично. Ничто внутри биткоин-протокола и сети не шифруется. Вместо этого используются два совершенно различных типа криптографии. Они не для хранения секретов, но для того чтобы говорить правду. Биткоин является надежной глобальной системой проверки истины. Именно в этом смысле он противоположен «дыре памяти» Джорджа Оруэлла 1984; это «цепочка памяти».
Первый тип криптографии в биткоине используется для создания профиля сообщения или, по простому говоря, «хеша». Биткоин использует хеширование на различных уровнях (самый центральный из них SHA256 выполняется дважды). Второй тип шифрования используется для создания и проверки электронной цифровой подписи. При этом используются пары ключей — подписи и проверки (ECDSAspec256k1 для подписей).
Ключи от царства
Несмотря на интуитивные ощущения пользователей, биткоин-кошельки не содержат биткоинов! Они только содержат пары ключей и адресов, позволяющие осуществлять цифровые подписи и верификации. Программа кошелька просматривает блокчейн для поиска ссылок на адреса, которые она содержит и использует историю транзакций чтобы показать пользователю живой баланс. Некоторые из, казалось бы, волшебных вещей, которые можно сделать с биткоином, например, как доступ к хранилищу из различных источников, являются результатом того, что пользователь имеет дело только с ключами, в то время как сами биткоины «существуют» только в контексте протокола блокчейна, а не в кошельках. Это всего лишь несколько копий ключей, которые могут храниться в разных местах в одно и тоже время. Тем не менее, эффективное владение монетами, то есть, способность использовать их, остается с теми, кто имеет соответствующие ключи подписи.
В то время как разработчики программного обеспечения усиленно работают над тем, чтобы убрать длинные и сложные строки чисел на задний план и заменить их или дополнить их интуитивно понятными именами пользователей и так далее, наша цель в том, чтобы коснуться некоторых технических деталей, как работает система, ниже приведен пример набора ключей биткоин. Это ключ от реальной подписи (не использовать!):
5JWJASjTYCS9N2niU8X9W8DNVVSYdRvYywNsEzhHJozErBqMC3H
Исходя из этого, уникальный публичный ключ, криптографически сгенерированный (сжатая версия):
03F33DECCF1FCDEE4007A0B8C71F18A8C916974D1BA2D81F1639D95B1314515BFC
Этот верификационный ключ затем хешируется в публичный адрес, по которому может быть отправлен биткоин. В этом случае:
12ctspmoULfwmeva9aZCmLFMkEssZ5CM3x
Так как этот ключ был обнародован публично, в нем нельзя быть уверенным – это необходимая жертва делу обучения основам биткоина.
Во второй части мы обсудим хеширование и то, насколько важную роль оно играет в технической структуре биткоина, а также как система была разработана, чтобы быть самофинансируемой с самого начала и на неопределенное будущее.
Конрад Граф, Bitcoin Magazine