Что такое Биткоин и разбираемся, как он работает

Биткоин: что это такое и как его майнят? Что вообще значит «майнить», и как устроена система работы с криптовалютами? Рассказываем.

Биткоин

Суть и появление

Биткоин (он же Биткойн или 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-х блокчейнах, где истории операций не совпадают, вы просто выбираете самый длинный, над которым проводилось больше вычислений.

Биткоин

Таким образом, все соглашаются выбирать блокчейн с наибольшим объемом работы, и доверие самой длинной цепочке исключает возможность обвести кого-то вокруг пальца. Но почему?

Защита

Допустим, кто-то решил подделать свой блок и транслировать его конкретному участнику, а не всем. В этом случае это станет ответвлением цепочки, ведь остальные участники будут продолжать транслировать другую информацию. И так как один человек вряд ли сможет сосредоточить у себя половину всех вычислительных мощностей, чтобы обогнать остальных, – цепочка подлинная, от других участников, будет больше, и человек, которого хотели обмануть, попросту откажется от меньшего по размеру блокчейна.

Биткоин

Поэтому сразу доверять новому блоку никак нельзя. Лучше дождаться, когда к нему добавится несколько других блоков. Так что самый длинный блокчейн – это тот, над которым работают все и ему можно доверять.

Это и есть механизм, по которому работают Биткоин и другие криптовалюты.

Источник

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ