Что такое Биткоин и разбираемся, как он работает
Биткоин: что это такое и как его майнят? Что вообще значит «майнить», и как устроена система работы с криптовалютами? Рассказываем.
Суть и появление
Биткоин (он же Биткойн или Bitcoin) – это полностью цифровая валюта, которая не выпускается ни одним государством. Также для управления счетами и подтверждения операций не нужен банк. Его создатель Сатоси Накамото – это или человек, или даже группа людей, которая смогла разработать протокол данной криптовалюты, но все-таки достоверно неизвестно, кто именно является создателем Биткоина.
Чтобы понять важность и технические особенности Биткоина, рассмотрим ситуацию, в которой мы сами могли бы изобрести собственную версию криптовалюты.
Назначение
Представьте, что вы с друзьями записываете платежи в общий журнал. Но со временем теряется доверие, и возникает идея применить криптографию, которая и является основой для появления криптовалюты. Биткоин – это лишь один из видов такой валюты. Существует множество других.
Разбор создания собственной криптовалюты поможет понять действия новых игроков этого рынка и осознать, зачем вообще нужно такое разнообразие. Мы не будем строить догадки о курсах в будущем, но каждый, кто хочет купить или добыть криптовалюту, должен понимать, с чем имеет дело. Поговорим о конкретных действиях компьютера, когда мы отправляем, получаем или создаем криптовалюту.
Но, поймите правильно, даже если мы сейчас копнем очень глубоко, вам необязательно знать все это, если ваша цель – просто использовать цифровую валюту. Это как работа с терминалом: зачем знать о его механизме, если нужно просто воспользоваться кредиткой?
Принцип работы
Основа системы – не банк. Децентрализацию обеспечивает хитрый механизм, он работает не с доверием к участникам или кому-либо еще, а с математическими принципами, которые берут начало в криптографии.
Давайте обратимся к реестрам и подписям. Допустим, если вы с друзьями часто обмениваетесь деньгами, оплачивая обед или одалживая, постоянно работать с наличкой неудобно. Проще завести публичный список со всеми суммами, расчет по которым производится в конце каждого месяца.
Но есть загвоздка: список открытый, и написать в нем можно что угодно. На помощь приходят цифровые подписи – первое изобретение криптографии: с ними человек подписывает те свои операции, которые подтверждает.
Но и здесь не все гладко, ведь современные технологии позволяют копировать любые данные. Идея в том, что каждый получает «ключевую пару» – открытый (pk) и закрытый (секретный, sk) ключ в виде цепочки битов. В этом случае даже малейшее изменение в сообщении полностью изменяет подпись. sk позволяет делать подпись только вам, и так как она зависит от сообщения, никто не сможет ее скопировать из одного сообщения и подделать для другого. Плюс у каждой записи есть уникальный ID.
Открытый ключ выдает только true или false в зависимости от того, была ли подпись создана на базе закрытого ключа. Суть в том, что невозможно подобрать правильную подпись без доступа к закрытому ключу. Лучшая стратегия – перебор и проверка случайных подписей, используя открытый ключ. Но подписи длиной в 256 бит – это 2 в 256 степени подписей. Астрономически большое количество!
Окей, но что если человек не захочет ставить подписи, не будет ничего оплачивать и просто исчезнет? Вы создадите систему, при которой люди не будут тратить намного больше того, что получают. Нужно просто отклонять операции, в которых кто-то тратит больше, чем получил согласно списку. Для этого нужно знать полную историю операций. Примерно так и работают криптовалюты, в т. ч. Биткоин.
Биткоин, реальные деньги и доверие
Но вот в чем вопрос: что если кто-то одолжил реальные деньги, а ему их возвращают в криптовалюте? Можно провести параллель с любой конвертацией на рынке валют. Это просто независимые операции. В этом первая идея всех криптовалют: история операций – это и есть валюта. Только в случае с Биткоином деньги не попадают в реестр после покупки за наличные.
Для начала давайте разберемся в отличиях между нашей системой и настоящими криптовалютами. Реестр находится в открытом доступе, например, на сайте. Но это означало бы, что нужно доверять центральной организации, на сервере которой размещен сайт. Чтобы необходимости в доверии не было, у каждого должна быть своя копия реестра. Вот только как можно быть уверенным, что все записывают точно те же операции в точно том же порядке?
Можно ли придумать протокол, по которому принимать или отклонять операции, и в каком порядке это делать, чтобы все копии реестров выглядели одинаково? Изначальный документ о Биткоине как раз описывает эту проблему.
Решение
Решение, которое предлагает Биткоин, – доверять реестру, над которым проводилось больше вычислительной работы. Речь о криптографической хеш-функции. Если использовать вычислительную работу как основу доверия, можно сделать так, что поддельные операции и реестры с несоответствиями потребуют почти нереальных по времени вычислений.
Так что же такое хеш-функция? Аргументом такой функции может быть сообщение, файл или что угодно. А значение – цепочка битов определенной длины, например, 256 бит. Выходное значение функции – «хэш» или «дайджест» сообщения. Значение, по идее, случайное, но это не совсем так: значение всегда одно и то же для определенного аргумента. План таков, что если хотя бы 1 символ аргумента изменится, полученный хэш будет другим.
Эта функция не простая, а криптографическая. Значит, ее расчет в обратном направлении требует невыполнимых вычислений. Опять же, подбор из 2^256 вариантов требует колоссального объема вычислений.
Безопасность
Быть может, если хорошо разобраться, как именно работает эта функция, можно путем обратной разработки получить аргумент и ничего не подбирать. Только пока еще никто не догадался, как это сделать. Но не доказано и то, что обратные вычисления слишком сложны. И все равно современная защита полагается на криптографические хеш-функции.
Если вы взглянете на алгоритмы, обеспечивающие безопасное соединение, вы наверняка где-нибудь заметите SHA256 – ту самую функцию. Но как SHA256 может доказать, что список операций потребует колоссальных вычислительных усилий? Где гарантия безопасности?
Допустим, человек говорит вам, что хэш начинается с 30 нулей. Вероятность этого составляет 1 из 2^30 (примерно из миллиарда). Поскольку это криптографическая функция, единственный выход проверить – перебирать и проверять варианты (где-то миллиард чисел). Но когда число известно, его легко проверить, просто подставив в хэш-функцию и посчитав количество нулей. Грубо говоря, человек, который это сделал, провел невероятно сложные вычисления, и вам уже не нужно их повторять. Это называется доказательством выполненной работы.
Важно, что проделанная работа связана со списком операций. Если хоть одну из операций немного подкорректируют, это полностью изменит хеш, и вычислять придется по новой.
Итак, все транслируют друг другу сообщения об операциях, и нужно согласовать правильный реестр, а Биткоин основывается на доверии к реестру, над которым проведено больше всего вычислений. Как это работает?
Блокчейн: что за зверь такой?
Сперва реестр делится на блоки. В каждом блоке список операций и доказательства выполнения работы (числа, вместе с которыми хеш блока начинается с какого-то количества нулей). Допустим, он должен начинаться с 60 нулей. По аналогии с операцией, которая подтверждается подписью, блок действителен, если в нем есть доказательство выполнения работы.
Чтобы упорядочить блоки, мы сделаем так, что каждый блок должен содержать хеш предыдущего блока в заголовке. Так что если вам захочется изменить какой-то блок или поменять их местами, от этого изменится и следующий блок, и его хеш, и так далее. Для этого потребовалось бы обнулить всю работу и начать ее заново, найти особое число, с которым хеш блока начинается с 60 нулей. Эти блоки образуют цепочку, так что вместо слова «журнал» используют «блокчейн» (Block Chain).
Биткоин как награда и майнинг
По нашему обновленному протоколу мы разрешаем кому угодно создавать блоки. Все эти люди будут следить за трансляцией операций, собирать их в блок и проделывать над ним вычисления, чтобы найти нужное число. Как только нашли – транслируют полученный блок. Чтобы наградить создателя блока за его работу, когда он создаст блок, мы разрешим ему добавить к блоку специальную операцию, в которой он получит, скажем, 10 виртуальных монет как бы из воздуха.
Эта награда (за блок) – исключение из обычных правил подтверждения транзакций. Ее не выплачивают, поэтому и операцию не нужно подписывать. С каждым новым блоком количество денег в экономике растет. Создание блоков называют «майнингом». Так что майнер – это тот, кто следит за операциями, создает блоки, транслирует их и получает за это награду.
Для каждого майнера блок – это небольшая лотерея, где все наперегонки подбирают числа, пока счастливчику не попадется особенное число. Те же, кто просто использует систему для платежей, не следят за каждой операцией, а просто получают от майнеров трансляцию о блоках и обновляют свои копии блокчейна. Если вы получили информацию о 2-х блокчейнах, где истории операций не совпадают, вы просто выбираете самый длинный, над которым проводилось больше вычислений.
Таким образом, все соглашаются выбирать блокчейн с наибольшим объемом работы, и доверие самой длинной цепочке исключает возможность обвести кого-то вокруг пальца. Но почему?
Защита
Допустим, кто-то решил подделать свой блок и транслировать его конкретному участнику, а не всем. В этом случае это станет ответвлением цепочки, ведь остальные участники будут продолжать транслировать другую информацию. И так как один человек вряд ли сможет сосредоточить у себя половину всех вычислительных мощностей, чтобы обогнать остальных, – цепочка подлинная, от других участников, будет больше, и человек, которого хотели обмануть, попросту откажется от меньшего по размеру блокчейна.
Поэтому сразу доверять новому блоку никак нельзя. Лучше дождаться, когда к нему добавится несколько других блоков. Так что самый длинный блокчейн – это тот, над которым работают все и ему можно доверять.
Это и есть механизм, по которому работают Биткоин и другие криптовалюты.