В децентрализованной системе такого произойти не может, поскольку отсутствует центральный орган, контролирующий открытие счетов, а значит, и руководящий ими. Никто не может отказать вам в доступе или что-либо от вас потребовать. Но как в таком случае избежать ситуации появления двух и более человек в системе, обладающих одним и тем же «счетом»?
Решить проблему повторения адресов удалось благодаря криптографии, а именно – приватному ключу и публичному адресу.
Приватный ключ – секретная информация, дающая право доступа к средствам кошелька.
Поскольку в блокчейне нет централизованной базы, при регистрации вы не сами выбираете себе идентификатор – он выдается в виде случайного числа, так называемого приватного ключа, который является набором букв, цифр или случайных слов. В случае биткоина, самой распространенной криптовалюты, вы получите ключ из диапазона от 0 до 2А256. Общее количество ключей – число, состоящее из единицы и 80 нулей.
Количество возможных вариаций настолько большое, что вы можете создать столько счетов, сколько атомов находится в видимой части Вселенной.
Обычно приватный ключ отображается в шестнадцатеричной форме, состоящей из 64 цифр / букв.
Приватный ключ нужен для того, чтобы передавать деньги, точно так же, как вам нужен пароль, чтобы войти в аккаунт электронной почты и отправить письмо. Но в случае криптовалюты появляется существенное различие: так называемый публичный адрес своего счета указываете не вы, он высчитывается математически с помощью приватного ключа.
Публичный адрес – математически сгенерированный криптографический хеш открытого ключа для проведения операций с криптовалютами.
Просто представьте, что в Яндекс Почте вам нужно только придумать пароль, а адрес автоматически генерируется из него. В биткоине это реализуется с помощью эллиптической криптографии, а также функций SHA 256 и RIPEMD 160.
Что касается этих математических функций, то главный нюанс состоит в том, что практически невозможно подобрать «пароль» (приватный ключ), если вы знаете только «адрес почты» (публичный адрес). Но при этом очень просто и быстро можно получить публичный адрес, если вы знаете свой приватный ключ.
Попробуем объяснить это упрощенно. Представьте, что приватный ключ – это случайное число, а связанный с ним публичный адрес – это его квадрат. Например, если приватный ключ равняется 8, то публичный адрес был бы 8 в квадрате, или 64. Да, большинство из нас может провести такие вычисления самостоятельно на листе бумаги. Но давайте попробуем пойти в обратную сторону. Каково это – подбирать корень числа, состоящего из 50 или больше цифр. Возвести в квадрат – дело пяти секунд, но обратная операция займет у вас много времени.
Я напомню, что возведение в квадрат было просто упрощенным примером, поскольку на самом деле в криптовалютах этот процесс в бесконечное количество раз более сложен.
Даже если бросить ресурсы всех компьютеров на выполнение этой задачи, Вселенная прекратит свое существование прежде, чем они найдут решение.
Приведу другую аналогию: что более безопасно – хранить свои миллиарды долларов в сейфе, местоположение которого известно всем, и нужно лишь взломать систему безопасности, либо же иметь бесконечное количество совершенно открытых сейфов?!
Что значит open source?
Open source, или открытый источник, означает, что полный код программы, или блокчейна, общедоступен, и его в любой момент могут посмотреть все желающие.
Это дает возможность взаимопроверки, консультаций по вопросам улучшения, а также предупреждает появление ошибочных или мошеннических сервисов.
В случае блокчейна и криптовалют для открытого и полноценного сообщества открытый источник критически важен.
Благодаря данной технологии система открыта на 100 %. Она позволяет любому человеку или роботу присоединиться к сообществу блокчейна.
Ничто и никто не может заблокировать вам доступ, ведь все, что нужно сделать, – это получить приватный ключ и с его помощью вычислить свой публичный адрес. Если мы вспомним о названных ранее преимуществах децентрализованной валюты, становится понятно, насколько важна эта особенность.
Итак, у каждого из участников есть один или несколько счетов для отправления и получения денег в сис теме. Следующее, что нам нужно понять, – это процесс определения правильного текущего баланса на счете. Здесь в игру вступает майнинг.
Что такое майнинг?
Что такое консенсус?
Консенсус – это соглашение, достигнутое по всей истории транзакций.
Под консенсусом мы подразумеваем соглашение о том, какое количество денег связано с тем или иным приватным ключом или счетом.
В централизованной системе только банк следит за тем, сколько у вас денег и сколько вы можете заплатить за тот или иной товар.
В децентрализованных системах каждый участник наблюдает за всеми остальными и подтверждает или отклоняет сделку в зависимости от того, есть у вас деньги на счете или нет.
Роли в блокчейне
Пользователи (или «легкие» узлы) – большинство участников децентрализованной сети. Они совершают и принимают платежи и должны отчислять майнерам малый процент (иногда комиссия бывает и нулевой) за проверку осуществляемых транзакций.
Ноды (или полные узлы) – это постоянно работающие компьютеры, узлы, перенаправляющие полученную информацию остальным пользователям, что делает ее доступной для всех, а саму систему – децентрализованной. То есть ноды обеспечивают всех одинаковой актуальной информацией об истории транзакции (блокчейне).
Майнеры – это люди или специальные компьютеры, осуществляющие проверку точности и подтверждение сделки.
Большинство людей, использующих криптовалюту, являются простыми пользователями: они отправляют, получают деньги и полагаются на майнеров и на ноды.
В результате вместо одной центральной организации мы получаем огромную группу людей, цель работы которых – поддерживать консенсус.
Шаги для достижения консенсуса
У технологии блокчейна есть очень изящное решение для достижения консенсуса.
Шаг 1. Когда нужно передать кому-то деньги, вы используете свой приватный ключ для «подписания» транзакции. Фактически это значит, что отправка денег происходит от одного публичного адреса к другому. Никто другой не сможет отправлять деньги, пока доступ к приватному ключу есть только у вас.
Шаг 2. Далее ваш кошелек автоматически передает информацию об этой транзакции нескольким узлам, к которым он подключен.
Шаг 3. После этого ноды передают информацию другим узлам и майнерам и так далее по цепочке. Получается экспоненциально растущая волна, которой понадобится всего несколько миллисекунд, чтобы все участники сообщества узнали о вашей транзакции.
Шаг 4. Когда майнер получает сообщение о транзакции, он проверяет наличие у вас нужного количества монет в принципе.
Поскольку каждую секунду накапливается нехилая очередь транзакций, можно дать майнерам «взятку» в виде небольшой платы, то есть поднять процент комиссии, чтобы они сначала проверили вашу операцию.
Теоретически платить эти взносы вы не обязаны, но одновременно происходит столько транзакций, что до вашей дело может так и не дойти, поскольку предпочтение всегда отдается обработке и включению в блокчейн (историю операций) тех заявок, которые приносят прибыль.
Что такое алгоритм консенсуса?
Казало бы, если все, что требуется для проведения транзакции, – это подтверждение майнеров, то почему бы просто не создать тысячи собственных майнеров? Они смогут сколько угодно подтверждать, что кто-то отправил вам миллионы долларов.
Криптовалюты разработали механизмы консенсуса, которые позволяют решать проблемы мошенничества децентрализованно.
Множество алгоритмов консенсуса находятся еще в процессе создания, а наибольшую популярность приобрел Proof of Work, или доказательство выполнения работы. Именно его следует рассмотреть более детально.
Proof of Work
Proof of Work (PoW) – самый популярный алгоритм, нацелен на доказательство выполнения работы.
Большинство криптовалют использует именно его из-за неоднократно доказанной на деле эффективности и надежности. Майнерам требуется просто доказать, что работа выполнена.
Тот майнер, который первый решит криптографическую задачу, будет определять статус транзакции и получит вознаграждение.
Как подтверждаются транзакции?
Рассмотрим на примере системы Биткойн. Для перевода денег вы передаете информацию о новом владельце криптовалюты нодам и майнерам, которые пускают ее дальше по цепочке. Транзакция подтверждается не сразу, а только после включения в так называемый «блок», во избежание разночтений.
Блок – звено цепочки блокчейна с записями информации о транзакциях.
В Proof of Work состав блока определяется тем участником, который первым завершил работу. В этот момент происходит первое подтверждение транзакции. Майнеры мониторят сеть на предмет новых транзакций. Каждая новая транзакция добавляется в пул неподтвержденных транзакций.
Майнеры занимаются обратным расчетом сложного криптографического алгоритма, который можно вычислить только путем проб и ошибок.
Представим себе блокчейн в виде головоломки. Каждый участник получает определенное количество кусочков, а победителем становится тот, кто соберет
Как найти nonce?
Nonce – это случайный фрагмент, который подлежит включению в блок, вычислением которого и занимается майнер. Правильный nonce определяет окончательный вид блока.
Представьте, что это последний кусочек головоломки. В зависимости от того, как выглядят другие ее детали и как майнер их складывает, nonce имеет определенную форму. Проблема в том, что майнер не знает, подходит ли этот кусочек. Необходимо перебрать буквально миллиарды nonce, пока верное решение будет найдено. На языке блокчейна это называется «
Как только майнер вычислит новый блок, этот блок передается другим нодам и майнерам, которые проверяют его правильность и только после этого направляют остальным участникам.
На готовом блоке ставится временная метка. Майнер, нашедший блок, получает комиссию за все транзакции блока и дополнительное вознаграждение (вознаграждение это – по сути, добытые путем решения таких головоломок новые монеты). Транзакции, включенные в блок, подтверждаются впервые. В течение нескольких миллисекунд тысячи или даже миллионы майнеров копируют этот блок и начинают искать новый блок, добавляя новые кусочки головоломки к уже имеющимся и пытаясь найти правильный nonce. Каждый новый блок включает в себя часть предыдущего – и так до бесконечности.
Любой новый блок ставится поверх старого блока и нумеруется.
Структура блокчейна
Генезис-блок – это первый блок любого блокчейна.
В блокчейне Биткойн его создал Сатоши 3 января 2009 года. Сегодня блокчейн состоит из сотен тысяч криптографически связанных между собой блоков. Любое изменение повлияет на все последующие блоки. Отсюда тезис о неизменности блокчейна.
Чтобы изменить один из блоков, вам придется отменить все последующие блоки (головоломки) и начать с нуля.
Изменение единственной транзакции изменит весь блок и следующие за ним блоки.
В случае с биткойном транзакция считается неизменной после 4 или 5 подтверждений (3–4 последующих блока). Это занимает около 40–50 минут. Следовательно, транзакция достаточно безопасна даже с одним подтверждением, особенно если размер транзакции небольшой.
Сохраненную таким образом информацию в блокчейне абсолютно невозможно изменить. Чем больше участников, тем выше уровень стабильности и безопасности криптовалюты, так как становится все сложнее переиграть других. Валюта, которой пользуются всего 50 человек, нестабильна. Но только представьте силу биткойна с миллионами участников.
Что такое хешрейт?
Хешрейт – это количество попыток в секунду, необходимых для получения правильного значения nonce.
Для сравнения, хешрейт человека составляет около 0,00003 Н/с (хешей в секунду). Поэтому, если вы решите майнить вручную (сложить головоломку), на 1 nonce уйдет 9–10 часов.
В блокчейне Биткойн общий хешрейт – количество попыток вычислить блок. Он составляет миллионы триллионов в секунду (= хеши тэга[3]). Это бесконечно большие цифры: 10 000 000 000 000 000 000 000 хешей в секунду. У человека всего 0,00003. Шансы вычислить блок рассчитываются как отношение вашего хешрейта к общему хешрейту сети.
Так как популярность криптовалюты растет, майнеров становится все больше. Именно поэтому вычислительная мощность будет постоянно увеличиваться.
В самом начале истории Биткоина Сатоши добывал биткоины с помощью своего персонального компьютера в одиночестве. Ему принадлежало 100 % хешрейта. Со временем к нему присоединились другие майнеры, оттянув на себя часть хешрейта и вознаграждения. С ростом интереса к криптовалюте возросли и требования к компьютеру.
Вместо стандартного ПК появилось специализированное оборудование, так называемые ASIC-майнеры.
ASIC-майнеры – это компьютеры, которые занимаются исключительно хешированием и делают это быстрей других. Больше они ничего не могут.
Например, компании Bitmain или BitFury, крупнейшие производители ASIC-чипов, по всей видимости, стоят миллиарды долларов. ASIC выполняют
Проблема масштабирования блокчейна
В основном банки проводят около 2000 транзакций в секунду (Tx/s). Технологии блокчейна столкнулись с большим препятствием: поскольку каждая нода в сети должна фиксировать данные всей сети, скорость сети ограничена скоростью самой медленной ноды. Блокчейн ограничивает количество транзакций в секунду во избежание централизации вычислительной мощности большими и сильными нодами, которые могут хранить и обрабатывать более крупные блоки, а также для ограничения скорости роста цепочки.
Жаркие дебаты в криптосообществе ведутся на тему размера блока, так как чем больше блок, тем выше Tx/s.
Для увеличения Tx нужно либо уменьшить размер транзакции (меньше данных на Tx), либо увеличить размер блока (больше хранимых данных).
SegWit частично решает эту проблему с точки зрения размера блока.
Что такое SegWit?
В августе 2017 года для улучшения масштабирования биткойна было представлено обновление.
Segregated Witness (SegWit), «отделенный свидетель», – обновление протокола, при котором транзакции обрели иную структуру, исключив из нее подпись приватного ключа в отдельную структуру.
Как в проведенной аналогии с головоломкой, первая часть головоломки представляет собой информацию о транзакции, а вторая – подпись приватного ключа.
При SegWit необходимость хранить кусочек головоломки, не хранящий информацию и применяемый только для подтверждения, отпала. Эта информация теперь может храниться отдельно, например, как цвет кусочка головоломки. Вот откуда пошло название «отделенный свидетель». Раз кусочки уменьшились вдвое (подпись больше не занимает места), в одном 1 МБ блоке можно сохранить в два раза больше транзакций SegWit (около 8400 кусочков SegWit могут закончить головоломку).
Как можно решить вопрос о масштабировании?
Никто не знает, как будет выглядеть окончательное решение, но пока многообещающим является технология DAG (Directed Acyclic Graph – «направленный ацикличный график»). Новый тип распределенного реестра IOTA применяет принцип локализованного узла. Еще один вариант – это технология HashGraph.
Группа Биткойн работает над проектом Lightning, группа Ethereum – над Raiden. Оба проекта объединяют пользователей «вне сети», когда члены группы доверяют друг другу и могут производить транзакции безопасно, не информируя об этом других.
Как появляется криптовалюта?
В централизованной системе центральный орган власти контролирует эмиссию валюты.
В децентрализованной системе криптографический алгоритм устанавливает правила создания валюты, а участники соглашаются с ним.
Многие считают, что криптовалюта создается только путем майнинга, но на самом деле существует три способа.
1. Майнинг. Этот процесс стимулирует стабилизацию сети. Биткойн – наиболее известный пример. В начале его существования за каждый блок майнер получал 50 биткоинов. Каждые 210 000 блоков, или около четырех лет, вознаграждение за блок уменьшается вдвое. Итак, в 2009 году оно составляло 50 биткоинов, в 2012 году – 25, а с 2016 года всего 12,5 биткойнов. Предположительно в 2020 году, в зависимости от того, как долго займет формирование следующих 210 000 блоков, вознаграждение сократится до 6,25 биткойнов. В общей сложности оно может быть сокращено в 64 раза. Когда вознаграждение составит 1 сатоши, процесс остановится. Теоретически это произойдет в 2140 году; однако в зависимости от хешрейта может произойти и раньше.