Что такое блокчейн и как он работает
Рассказываем о том, как устроена самая популярная криптотехнология, где её применяют и какие у неё есть недостатки.
Иллюстрация: Катя Павловская для Skillbox Media
Блокчейн сейчас везде — на нём работают криптовалюты, мессенджеры, сложные банковские системы и модные токены с собачками. Выпускникам МФТИ выдают дипломы в виде NFT, а Эрмитаж продаёт виртуальные картины Ван Гога на блокчейн-аукционах. Самое время разобраться, что это за технология, как она устроена, зачем нужна и не пирамида ли это.
Технология блокчейн простыми словами
Блокчейн — это реестр для хранения и передачи цифровых активов. Активы могут быть любые: деньги, акции, игровые персонажи, произведения искусства — всё что угодно. Идея в том, что блокчейн позволяет взять какую-то вещь в Сети и сказать: «Это моё». И никто не сможет её у вас украсть, взломать или переписать.
Все записи в блокчейне хранятся в виде блоков, связанных между собой специальными ключами. Если изменить какую-то запись, ключи у блоков не совпадут, и цепочка разрушится. Поэтому блоки в блокчейне нельзя удалять и редактировать — можно лишь посмотреть, что находится внутри. Кстати, с английского blockchain так и переводится — «цепочка блоков».
Изначально блокчейн был нишевой технологией для подписания цифровых документов. А потом энтузиасты догадались использовать его для перевода денег между людьми — без банков, WebMoney и прочих посредников. Так появилась криптовалюта биткоин — пока что самое известное воплощение технологии.
Как работает блокчейн
Допустим, вы программист в европейской компании. Приближается Международный день пожилых людей, и вы решили поздравить свою бабушку, которая живёт в России, — отправить ей немного денег на новое пальто.
Можно сделать это по-старинке — через обычный банк:
- Открываете приложение банка.
- Отправляете деньги бабушке на карту.
- Банк списывает деньги с вашего счёта.
- Зачисляет на счёт бабушке.
Звучит вроде просто и привычно, но есть загвоздка. Вся информация о переводе лежит на сервере в виде обычной строки в базе данных. Если кто-то взломает этот сервер и перепишет строку, бабушка денег не получит. Если банк вдруг схлопнется из-за кризиса, денег лишатся вообще все.
А теперь посмотрите, как изящно все эти проблемы решает блокчейн:
- Вы подключаетесь к блокчейн-сети.
- Заводите бабушке кошелёк и отправляете туда деньги.
- Перевод заносится в блокчейн и шифруется.
- Информацию о переводе получают все участники сети — а в крупных блокчейнах это миллионы человек.
Если кто-то захочет удалить данные о вашем переводе, ему придётся делать это сразу на всех компьютерах сети — а не на одном каком-то сервере. Такая фишка блокчейна называется децентрализацией. Представьте себе банк, где у каждого клиента есть копия всех платежей и переводов — вот это и будет блокчейн.
Из чего состоит блокчейн
Итак, мы оформили перевод — в цепочке сразу появился новый блок. Если бабушка захочет отправить вам деньги обратно, это будет уже новый блок — мы помним, что удалять и редактировать записи в блокчейне нельзя.
Чтобы соединять между собой звенья цепочки, разработчики придумали хитрость — в каждый новый блок добавляется хеш предыдущего блока. Хеш — это зашифрованные данные о сделке в виде уникального набора букв и цифр. Если поменять какую-то запись, хеши у блоков не совпадут, и сеть не примет изменения.
Например, в биткоине все операции хешируются алгоритмом SHA-256. Он превращает любую информацию в строку размером 256 бит. Без разницы, будет ли это «Война и мир» Толстого или строчка из песни Михаила Боярского — на выходе получится шифрованная колбаса весом в 256 бит. Выглядит она примерно так:
c9f9053e2fb3fcec35ceeafab7bda50ece7d924f886c117b142dfa2df1d63574
В нашем случае, если перевести эту колбасу на русский, выйдет что-то вроде: «Петя Иванов отправил Зинаиде Степановне Ивановой 5000 рублей 1 октября 2022 года в 14:30».
Тут есть нюанс: если Петю заменить, скажем, на Диму, получится совершенно другой хеш. Следующий блок заметит изменения и отправит сигнал всем участникам сети: «Что-то тут нечисто, нас хотят взломать». И если большинство компьютеров знать не знают никакого Диму, блок останется неизменным.
Вернёмся к нашей Зинаиде Степановне. Предположим, деньги ей не особо нужны, и она решает отправить их вашему брату, который учится на первом курсе в Москве. Вот как система будет работать в таком случае:
Шаг 1. Блокчейн возьмёт хеш предыдущего блока.
Шаг 2. Добавит к нему новые данные:
3e84907df11600de355a07de0e255fcae469522c418f4f12945b586f619bedc6
+
«Данные о сделке Зинаиды Степановны и Васи».
Шаг 3. В таком виде запись снова хешируется, и получится ещё один блок:
0118b7211febd23303ed123e3c441301dba8062fa1dcaaa4bb682ef4b8fcc3fe
Этот процесс можно сравнить со старой детской игрой в снежный ком, когда каждый по очереди называет своё имя плюс имена предыдущих участников. Если кто-то сбился или назвал не все имена, цепочка прерывается и игрок выбывает.
Кто создаёт новые блоки
Сама по себе транзакция — это просто набор данных, вроде записи в тетради. Чтобы превратить её в блок, нужны вычислительные мощности — и чем больше сеть, тем больше железа она требует для работы. Поэтому созданием новых блоков в больших блокчейнах занимаются специальные люди с мощными компьютерами — майнеры.
Вот как выглядит день из жизни обычного майнера:
- Взять транзакцию из общей очереди.
- Подобрать для неё уникальный хеш.
- Соединить его с хешем предыдущей транзакции.
- Всё это дело снова хешировать и сделать новый блок.
В награду за свой труд майнеры получают кусочек от общего цифрового пирога — например, в случае биткоина это, внезапно, биткоины. Но не стоит думать, что майнинг — золотое дно. Чтобы хоть что-то заработать на добыче цифровой валюты, нужны ресурсы — в основном электричество и графические процессоры.
Если раньше майнить биткоины можно было на обычном компьютере, то теперь для этого строят целые заводы по вычислению хеша — майнинговые фермы. Выглядят они жутковато:
Как и в каких крупных компаниях применяют блокчейн
Так как блокчейн трудно взломать или подделать, его часто применяют для защиты цифровых активов: файлов, документов, сделок или транзакций. Например, можно составить и заверить ипотечный договор без обращения к нотариусу. Или оформить права собственности на землю и недвижимость, как это уже делают в Грузии.
Вот для чего используют блокчейн крупные российские и зарубежные компании:
- Сбербанк — для учёта ипотечных закладных и других ценных бумаг.
- S7 Airlines — для продажи авиабилетов без посредников.
- «Норникель» — для выпуска токенов, обеспеченных полезными ископаемыми.
- Maersk — для отслеживания морских перевозок.
- Renault — для сертификации автомобильных запчастей.
- IBM — для разработки системы межбанковских переводов (аналога Swift).
А вот наиболее распространённые сферы, которые без блокчейна уже трудно представить:
Криптовалюты. Если вы были в интернете в последние пять лет, то наверняка слышали про пиринговые валюты: Bitcoin, Litecoin, Ethereum и другие. Интерес к ним сейчас не шквальный, но их по-прежнему ценят фрилансеры, блогеры, программисты, цифровые кочевники и все, кому важен свободный обмен деньгами без посредников.
Смарт-контракты. С помощью блокчейна можно заключить безопасный договор с любым контрагентом — например, арендатором квартиры. Штука в том, что такой договор можно настроить на какое-то действие и добавить в прошивку умного устройства. Допустим, кто-то давно не платит проценты по кредиту за машину — блокчейн передаёт эти данные на сервер, и доступ к машине блокируется до уплаты долга.
Государственное управление. После того как взлетел биткоин, блокчейн перестал быть забавой для гиков и технократов — теперь его внедряют банки, госкомпании и даже некоторые государства. Например, правительство Тайваня использует блокчейн на базе Ethereum для защиты от кибератак со стороны Китая.
Медицина. Данные о здоровье — лакомый кусочек для мошенников, хакеров и фармацевтических компаний. Чтобы избежать утечек, многие клиники переносят медицинские карты пациентов в блокчейн — так их невозможно украсть, взломать или подделать. Ещё такие карты удобно заполнять и передавать между учреждениями.
Интернет вещей. Любое умное устройство работает в паре с каким-то сервером: передаёт данные, скачивает обновления, обращается к условной «Алисе». Если этот сервер взломает хакер, он может управлять устройством удалённо — например, установить во всём доме температуру 32 °C. Чтобы этого избежать, многие компании хранят данные пользователей децентрализованно — то есть в блокчейн-сетях.
Что такое блокчейн-платформа
Представьте, что вы решили испечь торт. Можно взять в магазине готовые коржи и поиграться с начинкой — добавить крем, фрукты или варенье. А можно сделать основу самостоятельно и получить такой торт, какой захотите, — например, двухметровый шоколадный торт в виде зайца Багз Банни.
В случае с блокчейном принцип тот же — если вам не хочется писать код с нуля, можно взять готовую платформу и настроить под свои задачи. Вы продумываете общую идею, название и логотип, прописываете некоторые фишки, а платформа берёт на себя все технические вещи: логику, безопасность, проведение транзакций.
Самые известные платформы:
- Ethereum — позволяет создавать приложения на основе смарт-контрактов в разных сферах: финансы, страхование, инвестфонды, онлайн-игры. Широко используется в России — например, Сбербанком и Минцифры.
- Bitcoin — финансовая платформа для выпуска одноимённой криптовалюты. На механизмах Bitcoin работают и другие валюты — тот же Dogecoin, который активно поддерживает Илон Маск.
- Hyperledger — блокчейн-платформа от Linux Foundation. Есть фреймворки для создания цифровых паспортов, облачных сервисов и бухгалтерских книг.
- Corda — система для хранения и передачи активов между финансовыми организациями: акций, облигаций, кредитов и других обязательств.
- Solana — блокчейн-фреймворк, нацеленный на скорость: может проводить 65 000 транзакций в секунду (для сравнения, Ethereum — всего 30). Из минусов — не всегда стабильная работа и ограниченная децентрализация.
- Polkadot — позволяет объединять несколько блокчейнов в одну экосистему. Проект от создателя Ethereum Гэвина Вуда.
Далеко не у всех блокчейнов есть свои собственные платформы — к примеру, криптовалюта Litecoin работает на блокчейн-сети Bitcoin. Это не хорошо и не плохо, просто так сложилось. Если вы захотите сделать свой блокчейн, можете взять за основу готовый фреймворк — исходный код большинства платформ лежит на GitHub.
Если интересно узнать, как разрабатывают блокчейны, почитайте нашу статью про создание блокчейнов на языке C# — рассказываем, как всё устроено и пробуем запустить первый проект.
На каких языках программирования пишут блокчейны
Выбор зависит от конкретной задачи. Допустим, вам надо написать блокчейн-сеть с нуля. Для этого лучше использовать языки низкого уровня вроде Rust, Go и C++. Они дают программисту полный доступ к «железу» и памяти, поэтому хорошо подходят для создания высоконагруженных систем.
Помимо этого, есть две группы языков, на которых обычно пишут блокчейны.
Языки общего назначения: Java, C#, Python или Kotlin. Это универсальный вариант: можно создать новую сеть, а можно написать приложение для какой-то платформы. Например, Java-код легко компилируется под Ethereum, Hyperledger и Quorum. При этом на базе Java работают некоторые известные платформы — скажем, NEM и IOTA.
Языки, заточенные под блокчейн. Если нужно написать приложение в рамках какой-то платформы, часто используют специальные блокчейн-языки. Делают их обычно так: берут за основу популярный язык, урезают некоторые функции и добавляют фишки для создания умных контрактов. В результате можно писать хороший код для блокчейн-сетей, но где-то ещё его запустить очень сложно.
Возьмём, к примеру, язык Solidity для платформы Ethereum. Так как создатели взяли синтаксис от JavaScript, внешне языки очень похожи:
Разница в том, что JavaScript исполняется в браузере, а Solidity — в виртуальной машине Ethereum. Если этой машины нет, код на Solidity работать не будет. Поэтому его редко запускают где-то кроме блокчейн-платформы — для этого пришлось бы под каждое «железо» писать свою машину. Проще взять язык вроде Java, чья виртуалка есть на любом утюге.
Solidity — не единственный язык программирования смарт-контрактов. Как минимум есть ещё Simplicity, Vyper и Rholang. Если интересно, как вся эта кухня устроена изнутри, читайте наше интервью с блокчейн-разработчиком.
Недостатки технологии
Как и у любой технологии, у блокчейна есть уязвимости и слабые стороны. Давайте разберём их по порядку.
Атака 51%. Чтобы в блокчейне появился новый блок, его должны одобрить больше половины участников. Но если к сети подключится хакер с достаточно мощным «железом», он сможет проталкивать в неё фальшивые блоки и обналичивать их на криптовалютных биржах. На практике этим редко кто занимается, и вот почему:
- Дорого — «железо» должно быть мощнее, чем у 50% всех майнеров вместе взятых. Например, в случае биткоина будет выгоднее майнить валюту, чем создавать поддельную.
- Сложно — в большинстве блокчейнов есть механизмы защиты от хакерских атак: Proof of Work и Proof of Stake.
Необратимость транзакции. Допустим, вашего соседа обманул мошенник и заставил отправить деньги на неизвестный счёт. Если сосед пользовался обычным банком, транзакцию можно попробовать отменить — обратиться в техподдержку или полицию. В случае с блокчейном отменить перевод нельзя технически, да и с точки зрения закона никакой защиты нет.
Приватные ключи. Чтобы зайти в свой аккаунт в блокчейне, нужно знать специальный хеш-ключ. Если его потерять, восстановить деньги будет очень сложно — достаточно вспомнить историю британца, который уже девять лет ищет на свалке жёсткий диск с биткоинами на сумму 176 млн долларов.
Дорогое обслуживание. Создание полноценного блокчейна требует много ресурсов: электричество, оборудование, время. Каждый участник сети должен хранить сотни гигабайт данных на своём компьютере. Поэтому для большинства задач гораздо проще и разумнее написать обычное клиент-серверное приложение, чем вкладываться в блокчейн.
Что дальше
По словам экспертов, к 2027 году в блокчейне будет храниться до 10% мирового ВВП. Например, цифровые дистрибьюторы смогут лицензировать фильмы, музыку и книги через NFT-токены. А государства полностью переведут в блокчейн выборы, закупки, регистрацию недвижимости и другие процедуры.
Что из этого сбудется — сложно сказать. Если интересно, как технология будет развиваться дальше, подпишитесь на нашу рассылку — будем больше рассказывать о мире блокчейнов, токенов и криптовалют. А если хотите попробовать себя в роли блокчейн-разработчика, загляните на наш бесплатный интенсив — расскажем, как написать блокчейн на Python за три дня.