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

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

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

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

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

Защита

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

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

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

Источник

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

Johnny B
24 сентября 2019

Как подключить на сайт прием криптовалют? Обзор сервиса PayKassa.pro

Давно мечтали о платежной системе, которая работала бы с криптой? Тогда вы ...
Библиотека программиста
29 января 2018

Создаем первый смарт-контракт на Ethereum менее чем за 60 минут

Расскажем, как создать смарт-контракт на блокчейне Ethereum при помощи серв...