Неизменность данных, блокчейн и биткоин
В этой статье мы рассмотрим понятие блокчейна и его связь с биткоином, а также коснемся вопроса об изменяемости данных блокчейна. Поделиться
Говоря о блокчейне, сложно не коснуться темы неизменности данных. По этому вопросу есть разные мнения, однако в общем и целом все хотят узнать ответ на один простой вопрос: неизменны ли блокчейн и биткоин? Если вкратце, то да, данные блокчейна и биткоины изменить нельзя. Если же дать более подробный ответ, то… вам все равно нужно понимать, почему данные неизменны.
Для начала следует разобраться с общими понятиями, лежащими в основе самой технологии «блокчейн». Впрочем, это очень большая и сложная тема, так что даже общие понятия мы объясним на пальцах. Итак, что такое блокчейн? Многие люди называют блокчейном биткоины, а биткоинами — блокчейн. Они ошибаются. Блокчейн — это концепция, идея, а биткоин — ее первая и основная реализация. А могут быть и другие реализации блокчейна, не имеющие ничего общего с биткоинами. Откровенно говоря, есть очень интересные наработки в области смарт-контрактов и межбанковских переводов, куда более интересные, чем биткоин.
По сути, блокчейн представляет собой распределенный реестр записей. Блокчейн позволяет создать сеть, в которой не будет элементов, этой сетью управляющих, что служит альтернативой привычной парадигме «есть один ведущий, и есть много ведомых». Блокчейн избавляет от необходимости «доверять» какому-то элементу сети, так как никто не сможет взять контроль над системой (шанс на это буквально исчезающе мал). Оценить преимущества подобной децентрализации не составит труда.
В свою очередь, биткоин — это криптовалюта, основанная на технологии блокчейн и никем не регулируемая. Транзакции выполняются мгновенно, а комиссии минимальны, поэтому биткоин стал очень популярным способом оплаты товаров и услуг по всему миру. Но есть один момент: биткоин ничем не поддерживается (ни золотом, ни ресурсами, ни обязательствами), он ничего не стоит сам по себе. Стоимость биткоинов полностью зависит от того, сколько люди готовы за них заплатить, и непосредственно коррелирует с доверием людей к самой системе. Именно поэтому курс биткоина падает всякий раз, когда появляются плохие новости, связанные с этой криптовалютой. Подробнее про биткоин написано здесь.
Причем же здесь неизменность данных? Почему это важно? Если в общих словах, то неизменность означает, что данные не могут быть изменены после создания. Люди, связанные с разработкой ПО, наверняка знают всю важность неизменности данных. В контексте блокчейна неизменность данных приобретает огромную важность. Почему так? Давайте рассмотрим это на примере биткоина.
Все транзакции с биткоинами (откуда бы их ни совершили) записаны распределенным образом в сети в виде множества копий соответствующих блоков данных. Здесь можно представить себе звенья цепи, соединенные друг с другом воедино. Теперь давайте представим, что данные в этих блоках можно менять. В таком случае любой желающий может изменить историю транзакций и стать миллиардером, просто лишь исправив пару-тройку строк! Соответственно, неизменность данных в блоках становится очень важным моментом. Далее — немного деталей.
Чтобы провести новую транзакцию, вы передаете в сеть сообщение с данными транзакции (например, «Заплатить Васе 9 биткоинов»). Но как становится известно, что транзакцию провели именно вы, а не ваш сосед? Для этого биткоин-кошелек или другая программа для работы с биткоинами, которую вы используете, создает цифровую подпись из вашего приватного ключа, которая известна только вам (вашей системе) и уникальна для каждой транзакции. Другие будут использовать соответствующий публичный ключ, чтобы расшифровать ваше сообщение. Рисунок ниже изображает этот процесс в общих чертах:
Тем не менее, транзакция проводится через сети и компьютеры, которым нельзя однозначно доверять. Как же достигается неизменность данных, как убедиться, что злоумышленники не подредактируют ваше сообщение? Принцип действия цифровой подписи заключается в следующем: если сообщение изменяется, подпись становится недействительной, и тогда всем сразу становится видно, что запись меняли. Далее ваша транзакция попадает в список (пул) неподтвержденных. Люди, поддерживающие биткоин-сеть, случайным образом получают транзакции из этого списка и пытаются добавить их в существующий блок. Но для этого надо решить математическое уравнение (хэш SHA256, если точнее). На поиск ответа уходит время, с чем связана очень важная особенность биткоин-инфраструктуры, которую мы рассмотрим чуть позже. Далее над решением уравнения начинают работу сразу несколько человек. Тот, кто первый найдет ответ и запишет транзакцию в существующий блок, получит небольшое вознаграждение от сети в виде биткоинов. Этот процесс схематично проиллюстрирован на рисунке ниже. Обратите внимание, что у последней транзакции есть указатель на предшествующую транзакцию, формирующий блок данных.
Из-за особенностей инфраструктуры биткоин-сети блокчейн может разделяться и как бы разветвляться, причем его ветви могут содержать информацию, конфликтующую между собой. И как в таком случае выбрать, каким же именно данным следует доверять? Принцип прост: доверять следует более длинной ветви данных, а более короткая ветвь возвращается обратно в список неподтвержденных транзакций. Именно поэтому у каждой биткоин-транзакции есть свой «период ожидания»: в самом начале она еще не подтверждена и считается рискованной. Именно поэтому некоторые биткоин-кошельки помечают такие транзакции красным цветом.
Но вернемся к вопросу, заданному в самом начале статьи. Действительно ли нельзя изменить данные в блокчейне? Может ли злоумышленник изменить данные блока в своих интересах? Ответ таков: 100%-я неизменность данных не гарантируется, однако благодаря необходимости решать математические уравнения, о чем мы рассказали чуть ранее, неизменность данных все же близка к абсолютной. Чтобы злоумышленнику удалось исправить данные в блоке, ему нужно создать цепь блоков, которая была бы длиннее всех прочих. Распределенность и длительность процесса решения уравнений сводит шансы на успех в данном случае к нулю.
Но что насчет блоков, которые уже приняты? Можно ли изменить их? Да, это возможно. Однако речь идет про распределенную сеть, так что злоумышленникам придется для этого взять под свой контроль большую часть компьютеров, к ней подключенных. Точнее говоря, для изменения данных уже принятого блока нужно взять под контроль 51% компьютеров сети. Это называется «атака 51%». Но тут уместно подумать вот о чем: имея в своем распоряжении столько компьютеров, было бы куда выгоднее зарабатывать честным майнингом, а не пытаться обмануть систему.
В общем, можно с чистой совестью сказать, что данные в блокчейне практически невозможно изменить, покуда к сети подключено достаточно большое количество компьютеров. Тем не менее, важно знать и причины, по которым данные практически невозможно изменить.
Пожалуйста, прокомментируйте, как улучшить эту статью. Ваш отзыв имеет значение!